diff options
author | Dan Sinclair <dsinclair@chromium.org> | 2017-11-16 13:42:49 +0000 |
---|---|---|
committer | Chromium commit bot <commit-bot@chromium.org> | 2017-11-16 13:42:49 +0000 |
commit | b066704a22ba4f242567f508c12bf2545cbed9e1 (patch) | |
tree | b0ef12e2873bf7018d4b17a41b626428fb789923 /xfa/fxfa/parser/cxfa_node.cpp | |
parent | 4011677aed8b258fcf87cf52b0d541ef04c832ff (diff) | |
download | pdfium-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.cpp | 39 |
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() { |