diff options
author | Dan Sinclair <dsinclair@chromium.org> | 2017-11-16 14:23:07 +0000 |
---|---|---|
committer | Chromium commit bot <commit-bot@chromium.org> | 2017-11-16 14:23:07 +0000 |
commit | 3f9549e7f00b649471c4d658bbfb6bf031b8f53e (patch) | |
tree | da0ec4380365c2b3a42b53c1ba291d7529646bd7 /fxjs | |
parent | ce7ccd5f638eff42c6c79da682061fa2c39b028f (diff) | |
download | pdfium-3f9549e7f00b649471c4d658bbfb6bf031b8f53e.tar.xz |
Convert TryNamespace to optional
This CL changes CJX_Node::TryNamespace to return a pdfium::Optional
instead of a bool with an out parameter.
Change-Id: I50ccb3544179108d156d763c25e03abab4306c19
Reviewed-on: https://pdfium-review.googlesource.com/18551
Commit-Queue: dsinclair <dsinclair@chromium.org>
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Diffstat (limited to 'fxjs')
-rw-r--r-- | fxjs/cjx_node.cpp | 39 | ||||
-rw-r--r-- | fxjs/cjx_node.h | 2 |
2 files changed, 19 insertions, 22 deletions
diff --git a/fxjs/cjx_node.cpp b/fxjs/cjx_node.cpp index ac93397b77..17662dada6 100644 --- a/fxjs/cjx_node.cpp +++ b/fxjs/cjx_node.cpp @@ -930,10 +930,8 @@ void CJX_Node::Script_NodeClass_Ns(CFXJSE_Value* pValue, ThrowInvalidPropertyException(); return; } - - WideString wsNameSpace; - TryNamespace(wsNameSpace); - pValue->SetString(wsNameSpace.UTF8Encode().AsStringView()); + pValue->SetString( + TryNamespace().value_or(WideString()).UTF8Encode().AsStringView()); } void CJX_Node::Script_NodeClass_Model(CFXJSE_Value* pValue, @@ -1016,11 +1014,11 @@ void CJX_Node::Script_ModelClass_IsCompatibleNS(CFXJSE_Arguments* pArguments) { wsNameSpace = WideString::FromUTF8(bsNameSpace.AsStringView()); } - WideString wsNodeNameSpace; - TryNamespace(wsNodeNameSpace); CFXJSE_Value* pValue = pArguments->GetReturnValue(); - if (pValue) - pValue->SetBoolean(wsNodeNameSpace == wsNameSpace); + if (!pValue) + return; + + pValue->SetBoolean(TryNamespace().value_or(WideString()) == wsNameSpace); } void CJX_Node::Script_ModelClass_Context(CFXJSE_Value* pValue, @@ -3571,35 +3569,34 @@ pdfium::Optional<WideString> CJX_Node::TryContent(bool bScriptModify, return {}; } -bool CJX_Node::TryNamespace(WideString& wsNamespace) { - wsNamespace.clear(); +pdfium::Optional<WideString> CJX_Node::TryNamespace() { if (GetXFANode()->IsModelNode() || GetXFANode()->GetElementType() == XFA_Element::Packet) { CFX_XMLNode* pXMLNode = GetXFANode()->GetXMLMappingNode(); if (!pXMLNode || pXMLNode->GetType() != FX_XMLNODE_Element) - return false; + return {}; - wsNamespace = static_cast<CFX_XMLElement*>(pXMLNode)->GetNamespaceURI(); - return true; + return {static_cast<CFX_XMLElement*>(pXMLNode)->GetNamespaceURI()}; } if (GetXFANode()->GetPacketID() != XFA_XDPPACKET_Datasets) - return GetXFANode()->GetModelNode()->JSNode()->TryNamespace(wsNamespace); + return GetXFANode()->GetModelNode()->JSNode()->TryNamespace(); CFX_XMLNode* pXMLNode = GetXFANode()->GetXMLMappingNode(); - if (!pXMLNode) - return false; - if (pXMLNode->GetType() != FX_XMLNODE_Element) - return true; + if (!pXMLNode || pXMLNode->GetType() != FX_XMLNODE_Element) + return {}; if (GetXFANode()->GetElementType() == XFA_Element::DataValue && GetEnum(XFA_Attribute::Contains) == XFA_ATTRIBUTEENUM_MetaData) { - return XFA_FDEExtension_ResolveNamespaceQualifier( + WideString wsNamespace; + bool ret = XFA_FDEExtension_ResolveNamespaceQualifier( static_cast<CFX_XMLElement*>(pXMLNode), GetCData(XFA_Attribute::QualifiedName), &wsNamespace); + if (!ret) + return {}; + return {wsNamespace}; } - wsNamespace = static_cast<CFX_XMLElement*>(pXMLNode)->GetNamespaceURI(); - return true; + return {static_cast<CFX_XMLElement*>(pXMLNode)->GetNamespaceURI()}; } CXFA_Node* CJX_Node::GetProperty(int32_t index, diff --git a/fxjs/cjx_node.h b/fxjs/cjx_node.h index cb6b6867fd..686c54c164 100644 --- a/fxjs/cjx_node.h +++ b/fxjs/cjx_node.h @@ -108,7 +108,7 @@ class CJX_Node : public CJX_Object { XFA_MAPDATABLOCKCALLBACKINFO* pCallbackInfo); void* GetObject(XFA_Attribute eAttr); - bool TryNamespace(WideString& wsNamespace); + pdfium::Optional<WideString> TryNamespace(); void MergeAllData(CXFA_Node* pDstModule); |