summaryrefslogtreecommitdiff
path: root/xfa/fxfa/parser/cxfa_node.cpp
diff options
context:
space:
mode:
authorDan Sinclair <dsinclair@chromium.org>2017-11-16 13:42:49 +0000
committerChromium commit bot <commit-bot@chromium.org>2017-11-16 13:42:49 +0000
commitb066704a22ba4f242567f508c12bf2545cbed9e1 (patch)
treeb0ef12e2873bf7018d4b17a41b626428fb789923 /xfa/fxfa/parser/cxfa_node.cpp
parent4011677aed8b258fcf87cf52b0d541ef04c832ff (diff)
downloadpdfium-b066704a22ba4f242567f508c12bf2545cbed9e1.tar.xz
Convert TryCData and TryContent to optionals
This CL changes the TryCData and TryContent to return pdfium::Optional<WideString> values instead of returning a bool and taking an out WideString. Change-Id: I9c9d877803f9f1977191e12d6a907c29784c10b2 Reviewed-on: https://pdfium-review.googlesource.com/18510 Reviewed-by: Tom Sepez <tsepez@chromium.org> Commit-Queue: dsinclair <dsinclair@chromium.org>
Diffstat (limited to 'xfa/fxfa/parser/cxfa_node.cpp')
-rw-r--r--xfa/fxfa/parser/cxfa_node.cpp39
1 files changed, 23 insertions, 16 deletions
diff --git a/xfa/fxfa/parser/cxfa_node.cpp b/xfa/fxfa/parser/cxfa_node.cpp
index 07d9f84916..5a375c7f2a 100644
--- a/xfa/fxfa/parser/cxfa_node.cpp
+++ b/xfa/fxfa/parser/cxfa_node.cpp
@@ -530,31 +530,38 @@ bool CXFA_Node::GetLocaleName(WideString& wsLocaleName) {
CXFA_Node* pForm = GetDocument()->GetXFAObject(XFA_HASHCODE_Form)->AsNode();
CXFA_Node* pTopSubform = pForm->GetFirstChildByClass(XFA_Element::Subform);
ASSERT(pTopSubform);
+
CXFA_Node* pLocaleNode = this;
- bool bLocale = false;
do {
- bLocale = pLocaleNode->JSNode()->TryCData(XFA_Attribute::Locale,
- wsLocaleName, false);
- if (!bLocale) {
- pLocaleNode = pLocaleNode->GetNodeItem(XFA_NODEITEM_Parent);
+ pdfium::Optional<WideString> ret =
+ pLocaleNode->JSNode()->TryCData(XFA_Attribute::Locale, false);
+ if (ret) {
+ wsLocaleName = *ret;
+ return true;
}
- } while (pLocaleNode && pLocaleNode != pTopSubform && !bLocale);
- if (bLocale)
- return true;
+ pLocaleNode = pLocaleNode->GetNodeItem(XFA_NODEITEM_Parent);
+ } while (pLocaleNode && pLocaleNode != pTopSubform);
+
CXFA_Node* pConfig = ToNode(GetDocument()->GetXFAObject(XFA_HASHCODE_Config));
wsLocaleName = GetDocument()->GetLocalMgr()->GetConfigLocaleName(pConfig);
if (!wsLocaleName.IsEmpty())
return true;
- if (pTopSubform && pTopSubform->JSNode()->TryCData(XFA_Attribute::Locale,
- wsLocaleName, false)) {
- return true;
+
+ if (pTopSubform) {
+ pdfium::Optional<WideString> ret =
+ pTopSubform->JSNode()->TryCData(XFA_Attribute::Locale, false);
+ if (ret) {
+ wsLocaleName = *ret;
+ return true;
+ }
}
+
IFX_Locale* pLocale = GetDocument()->GetLocalMgr()->GetDefLocale();
- if (pLocale) {
- wsLocaleName = pLocale->GetName();
- return true;
- }
- return false;
+ if (!pLocale)
+ return false;
+
+ wsLocaleName = pLocale->GetName();
+ return true;
}
XFA_ATTRIBUTEENUM CXFA_Node::GetIntact() {