diff options
Diffstat (limited to 'xfa')
-rw-r--r-- | xfa/fxfa/include/fxfa_basic.h | 2 | ||||
-rw-r--r-- | xfa/fxfa/parser/xfa_basic_imp.cpp | 15 | ||||
-rw-r--r-- | xfa/fxfa/parser/xfa_object_imp.cpp | 19 | ||||
-rw-r--r-- | xfa/fxfa/parser/xfa_parser_imp.cpp | 15 | ||||
-rw-r--r-- | xfa/fxfa/parser/xfa_script_imp.cpp | 11 | ||||
-rw-r--r-- | xfa/fxfa/parser/xfa_script_nodehelper.cpp | 9 | ||||
-rw-r--r-- | xfa/fxfa/parser/xfa_script_resolveprocessor.cpp | 9 |
7 files changed, 35 insertions, 45 deletions
diff --git a/xfa/fxfa/include/fxfa_basic.h b/xfa/fxfa/include/fxfa_basic.h index 51d81cd157..9fe2650ffc 100644 --- a/xfa/fxfa/include/fxfa_basic.h +++ b/xfa/fxfa/include/fxfa_basic.h @@ -938,7 +938,7 @@ struct XFA_ELEMENTINFO { XFA_ObjectType eObjectType; }; -const XFA_ELEMENTINFO* XFA_GetElementByName(const CFX_WideStringC& wsName); +XFA_Element XFA_GetElementTypeForName(const CFX_WideStringC& wsName); const XFA_ELEMENTINFO* XFA_GetElementByID(XFA_Element eName); enum XFA_ATTRIBUTETYPE { diff --git a/xfa/fxfa/parser/xfa_basic_imp.cpp b/xfa/fxfa/parser/xfa_basic_imp.cpp index 6896299a0e..67a110b4e5 100644 --- a/xfa/fxfa/parser/xfa_basic_imp.cpp +++ b/xfa/fxfa/parser/xfa_basic_imp.cpp @@ -174,9 +174,9 @@ CXFA_Measurement XFA_GetAttributeDefaultValue_Measure(XFA_Element eElement, return CXFA_Measurement(); } -const XFA_ELEMENTINFO* XFA_GetElementByName(const CFX_WideStringC& wsName) { +XFA_Element XFA_GetElementTypeForName(const CFX_WideStringC& wsName) { if (wsName.IsEmpty()) - return nullptr; + return XFA_Element::Unknown; uint32_t uHash = FX_HashCode_GetW(wsName, false); int32_t iStart = 0; @@ -184,15 +184,14 @@ const XFA_ELEMENTINFO* XFA_GetElementByName(const CFX_WideStringC& wsName) { do { int32_t iMid = (iStart + iEnd) / 2; const XFA_ELEMENTINFO* pInfo = g_XFAElementData + iMid; - if (uHash == pInfo->uHash) { - return pInfo; - } else if (uHash < pInfo->uHash) { + if (uHash == pInfo->uHash) + return pInfo->eName; + if (uHash < pInfo->uHash) iEnd = iMid - 1; - } else { + else iStart = iMid + 1; - } } while (iStart <= iEnd); - return nullptr; + return XFA_Element::Unknown; } const XFA_ELEMENTINFO* XFA_GetElementByID(XFA_Element eName) { return eName == XFA_Element::Unknown diff --git a/xfa/fxfa/parser/xfa_object_imp.cpp b/xfa/fxfa/parser/xfa_object_imp.cpp index 06ffb10a18..47b244fce5 100644 --- a/xfa/fxfa/parser/xfa_object_imp.cpp +++ b/xfa/fxfa/parser/xfa_object_imp.cpp @@ -881,9 +881,8 @@ void CXFA_Node::Script_NodeClass_GetElement(CFXJSE_Arguments* pArguments) { CFX_WideString::FromUTF8(pArguments->GetUTF8String(0).AsStringC()); if (iLength >= 2) iValue = pArguments->GetInt32(1); - const XFA_ELEMENTINFO* pElementInfo = - XFA_GetElementByName(wsExpression.AsStringC()); - CXFA_Node* pNode = GetProperty(iValue, pElementInfo->eName); + CXFA_Node* pNode = + GetProperty(iValue, XFA_GetElementTypeForName(wsExpression.AsStringC())); pArguments->GetReturnValue()->Assign( m_pDocument->GetScriptContext()->GetJSValueFromMap(pNode)); } @@ -911,14 +910,13 @@ void CXFA_Node::Script_NodeClass_IsPropertySpecified( if (pAttributeInfo) bHas = HasAttribute(pAttributeInfo->eName); if (!bHas) { - const XFA_ELEMENTINFO* pElementInfo = - XFA_GetElementByName(wsExpression.AsStringC()); - bHas = !!GetProperty(iIndex, pElementInfo->eName); + XFA_Element eType = XFA_GetElementTypeForName(wsExpression.AsStringC()); + bHas = !!GetProperty(iIndex, eType); if (!bHas && bParent && m_pParent) { // Also check on the parent. bHas = m_pParent->HasAttribute(pAttributeInfo->eName); if (!bHas) - bHas = !!m_pParent->GetProperty(iIndex, pElementInfo->eName); + bHas = !!m_pParent->GetProperty(iIndex, eType); } } CFXJSE_Value* pValue = pArguments->GetReturnValue(); @@ -2628,14 +2626,13 @@ void CXFA_Node::Script_Template_CreateNode(CFXJSE_Arguments* pArguments) { strNameSpace = CFX_WideString::FromUTF8(bsNameSpace.AsStringC()); } } - const XFA_ELEMENTINFO* pElement = - XFA_GetElementByName(strTagName.AsStringC()); - CXFA_Node* pNewNode = CreateSamePacketNode(pElement->eName); + XFA_Element eType = XFA_GetElementTypeForName(strTagName.AsStringC()); + CXFA_Node* pNewNode = CreateSamePacketNode(eType); if (!pNewNode) { pArguments->GetReturnValue()->SetNull(); } else { if (!strName.IsEmpty()) { - if (XFA_GetAttributeOfElement(pElement->eName, XFA_ATTRIBUTE_Name, + if (XFA_GetAttributeOfElement(eType, XFA_ATTRIBUTE_Name, XFA_XDPPACKET_UNKNOWN)) { pNewNode->SetAttribute(XFA_ATTRIBUTE_Name, strName.AsStringC(), true); if (pNewNode->GetPacketID() == XFA_XDPPACKET_Datasets) { diff --git a/xfa/fxfa/parser/xfa_parser_imp.cpp b/xfa/fxfa/parser/xfa_parser_imp.cpp index 38fdbbb662..20964053f5 100644 --- a/xfa/fxfa/parser/xfa_parser_imp.cpp +++ b/xfa/fxfa/parser/xfa_parser_imp.cpp @@ -833,13 +833,12 @@ CXFA_Node* CXFA_SimpleParser::NormalLoader(CXFA_Node* pXFANode, CFDE_XMLElement* pXMLElement = static_cast<CFDE_XMLElement*>(pXMLChild); CFX_WideString wsTagName; pXMLElement->GetLocalTagName(wsTagName); - const XFA_ELEMENTINFO* pElemInfo = - XFA_GetElementByName(wsTagName.AsStringC()); - if (!pElemInfo) { + XFA_Element eType = XFA_GetElementTypeForName(wsTagName.AsStringC()); + if (eType == XFA_Element::Unknown) continue; - } + const XFA_PROPERTY* pPropertyInfo = XFA_GetPropertyOfElement( - pXFANode->GetElementType(), pElemInfo->eName, ePacketID); + pXFANode->GetElementType(), eType, ePacketID); if (pPropertyInfo && ((pPropertyInfo->uFlags & (XFA_PROPERTYFLAG_OneOf | XFA_PROPERTYFLAG_DefaultOneOf)) != 0)) { @@ -848,8 +847,7 @@ CXFA_Node* CXFA_SimpleParser::NormalLoader(CXFA_Node* pXFANode, } bOneOfPropertyFound = TRUE; } - CXFA_Node* pXFAChild = - m_pFactory->CreateNode(ePacketID, pElemInfo->eName); + CXFA_Node* pXFAChild = m_pFactory->CreateNode(ePacketID, eType); if (pXFAChild == NULL) { return NULL; } @@ -881,8 +879,7 @@ CXFA_Node* CXFA_SimpleParser::NormalLoader(CXFA_Node* pXFANode, pXFAChild->SetAttribute(lpAttrInfo->eName, wsAttrValue.AsStringC()); } pXFANode->InsertChild(pXFAChild); - if (pElemInfo->eName == XFA_Element::Validate || - pElemInfo->eName == XFA_Element::Locale) { + if (eType == XFA_Element::Validate || eType == XFA_Element::Locale) { if (ePacketID == XFA_XDPPACKET_Config) { ParseContentNode(pXFAChild, pXMLElement, ePacketID); } else { diff --git a/xfa/fxfa/parser/xfa_script_imp.cpp b/xfa/fxfa/parser/xfa_script_imp.cpp index ee7576ebf1..2afa5fcdec 100644 --- a/xfa/fxfa/parser/xfa_script_imp.cpp +++ b/xfa/fxfa/parser/xfa_script_imp.cpp @@ -319,13 +319,12 @@ void CXFA_ScriptContext::NormalPropertySetter(CFXJSE_Value* pOriginalValue, } CXFA_Node* pNode = ToNode(pObject); CXFA_Node* pPropOrChild = nullptr; - const XFA_ELEMENTINFO* lpElementInfo = - XFA_GetElementByName(wsPropName.AsStringC()); - if (lpElementInfo) { - pPropOrChild = pNode->GetProperty(0, lpElementInfo->eName); - } else { + XFA_Element eType = XFA_GetElementTypeForName(wsPropName.AsStringC()); + if (eType != XFA_Element::Unknown) + pPropOrChild = pNode->GetProperty(0, eType); + else pPropOrChild = pNode->GetFirstChildByName(wsPropName.AsStringC()); - } + if (pPropOrChild) { CFX_WideString wsDefaultName(L"{default}"); const XFA_SCRIPTATTRIBUTEINFO* lpAttrInfo = diff --git a/xfa/fxfa/parser/xfa_script_nodehelper.cpp b/xfa/fxfa/parser/xfa_script_nodehelper.cpp index 0fd5ff21d5..42f406e48a 100644 --- a/xfa/fxfa/parser/xfa_script_nodehelper.cpp +++ b/xfa/fxfa/parser/xfa_script_nodehelper.cpp @@ -376,13 +376,12 @@ FX_BOOL CXFA_NodeHelper::XFA_ResolveNodes_CreateNode( XFA_CreateNode_ForCondition(wsCondition); } if (bIsClassName) { - const XFA_ELEMENTINFO* lpElement = XFA_GetElementByName(wsName.AsStringC()); - if (lpElement == NULL) { + XFA_Element eType = XFA_GetElementTypeForName(wsName.AsStringC()); + if (eType == XFA_Element::Unknown) return FALSE; - } + for (int32_t iIndex = 0; iIndex < m_iCreateCount; iIndex++) { - CXFA_Node* pNewNode = - m_pCreateParent->CreateSamePacketNode(lpElement->eName); + CXFA_Node* pNewNode = m_pCreateParent->CreateSamePacketNode(eType); if (pNewNode) { m_pCreateParent->InsertChild(pNewNode); if (iIndex == m_iCreateCount - 1) { diff --git a/xfa/fxfa/parser/xfa_script_resolveprocessor.cpp b/xfa/fxfa/parser/xfa_script_resolveprocessor.cpp index a78ad7bb6b..bcfaa113d4 100644 --- a/xfa/fxfa/parser/xfa_script_resolveprocessor.cpp +++ b/xfa/fxfa/parser/xfa_script_resolveprocessor.cpp @@ -362,11 +362,10 @@ int32_t CXFA_ResolveProcessor::XFA_ResolveNodes_Normal( pProp = pInstanceManager->GetProperty(0, XFA_Element::Occur, TRUE); } } else { - const XFA_ELEMENTINFO* pElement = - XFA_GetElementByName(wsName.AsStringC()); - if (pElement) { - pProp = curNode->AsNode()->GetProperty( - 0, pElement->eName, pElement->eName != XFA_Element::PageSet); + XFA_Element eType = XFA_GetElementTypeForName(wsName.AsStringC()); + if (eType != XFA_Element::Unknown) { + pProp = curNode->AsNode()->GetProperty(0, eType, + eType != XFA_Element::PageSet); } } if (pProp) { |