| OLD | NEW |
| 1 // Copyright 2014 PDFium Authors. All rights reserved. | 1 // Copyright 2014 PDFium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
| 6 | 6 |
| 7 #include "xfa/fxfa/parser/xfa_document_datamerger_imp.h" | 7 #include "xfa/fxfa/parser/xfa_document_datamerger_imp.h" |
| 8 | 8 |
| 9 #include "core/fxcrt/include/fx_ext.h" | 9 #include "core/fxcrt/include/fx_ext.h" |
| 10 #include "xfa/fxfa/fm2js/xfa_fm2jsapi.h" | 10 #include "xfa/fxfa/fm2js/xfa_fm2jsapi.h" |
| (...skipping 322 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 333 case XFA_ELEMENT_Signature: | 333 case XFA_ELEMENT_Signature: |
| 334 case XFA_ELEMENT_TextEdit: | 334 case XFA_ELEMENT_TextEdit: |
| 335 default: | 335 default: |
| 336 XFA_DataMerge_FormValueNode_SetChildContent( | 336 XFA_DataMerge_FormValueNode_SetChildContent( |
| 337 defValue.GetNode(), wsNormailizeValue, XFA_ELEMENT_Text); | 337 defValue.GetNode(), wsNormailizeValue, XFA_ELEMENT_Text); |
| 338 break; | 338 break; |
| 339 } | 339 } |
| 340 } | 340 } |
| 341 } | 341 } |
| 342 static CXFA_Node* XFA_DataMerge_GetGlobalBinding(CXFA_Document* pDocument, | 342 static CXFA_Node* XFA_DataMerge_GetGlobalBinding(CXFA_Document* pDocument, |
| 343 FX_DWORD dwNameHash) { | 343 uint32_t dwNameHash) { |
| 344 CXFA_Node* pNode = NULL; | 344 CXFA_Node* pNode = NULL; |
| 345 pDocument->m_rgGlobalBinding.Lookup(dwNameHash, pNode); | 345 pDocument->m_rgGlobalBinding.Lookup(dwNameHash, pNode); |
| 346 return pNode; | 346 return pNode; |
| 347 } | 347 } |
| 348 static void XFA_DataMerge_RegisterGlobalBinding(CXFA_Document* pDocument, | 348 static void XFA_DataMerge_RegisterGlobalBinding(CXFA_Document* pDocument, |
| 349 FX_DWORD dwNameHash, | 349 uint32_t dwNameHash, |
| 350 CXFA_Node* pDataNode) { | 350 CXFA_Node* pDataNode) { |
| 351 pDocument->m_rgGlobalBinding.SetAt(dwNameHash, pDataNode); | 351 pDocument->m_rgGlobalBinding.SetAt(dwNameHash, pDataNode); |
| 352 } | 352 } |
| 353 static void XFA_DataMerge_ClearGlobalBinding(CXFA_Document* pDocument) { | 353 static void XFA_DataMerge_ClearGlobalBinding(CXFA_Document* pDocument) { |
| 354 pDocument->m_rgGlobalBinding.RemoveAll(); | 354 pDocument->m_rgGlobalBinding.RemoveAll(); |
| 355 } | 355 } |
| 356 static CXFA_Node* XFA_DataMerge_ScopeMatchGlobalBinding( | 356 static CXFA_Node* XFA_DataMerge_ScopeMatchGlobalBinding( |
| 357 CXFA_Node* pDataScope, | 357 CXFA_Node* pDataScope, |
| 358 FX_DWORD dwNameHash, | 358 uint32_t dwNameHash, |
| 359 XFA_ELEMENT eMatchDataNodeType, | 359 XFA_ELEMENT eMatchDataNodeType, |
| 360 FX_BOOL bUpLevel = TRUE) { | 360 FX_BOOL bUpLevel = TRUE) { |
| 361 for (CXFA_Node *pCurDataScope = pDataScope, *pLastDataScope = NULL; | 361 for (CXFA_Node *pCurDataScope = pDataScope, *pLastDataScope = NULL; |
| 362 pCurDataScope && pCurDataScope->GetPacketID() == XFA_XDPPACKET_Datasets; | 362 pCurDataScope && pCurDataScope->GetPacketID() == XFA_XDPPACKET_Datasets; |
| 363 pLastDataScope = pCurDataScope, | 363 pLastDataScope = pCurDataScope, |
| 364 pCurDataScope = | 364 pCurDataScope = |
| 365 pCurDataScope->GetNodeItem(XFA_NODEITEM_Parent)) { | 365 pCurDataScope->GetNodeItem(XFA_NODEITEM_Parent)) { |
| 366 for (CXFA_Node* pDataChild = pCurDataScope->GetFirstChildByName(dwNameHash); | 366 for (CXFA_Node* pDataChild = pCurDataScope->GetFirstChildByName(dwNameHash); |
| 367 pDataChild; | 367 pDataChild; |
| 368 pDataChild = pDataChild->GetNextSameNameSibling(dwNameHash)) { | 368 pDataChild = pDataChild->GetNextSameNameSibling(dwNameHash)) { |
| (...skipping 18 matching lines...) Expand all Loading... |
| 387 if (!bUpLevel) { | 387 if (!bUpLevel) { |
| 388 break; | 388 break; |
| 389 } | 389 } |
| 390 } | 390 } |
| 391 return NULL; | 391 return NULL; |
| 392 } | 392 } |
| 393 static CXFA_Node* XFA_DataMerge_FindGlobalDataNode(CXFA_Document* pDocument, | 393 static CXFA_Node* XFA_DataMerge_FindGlobalDataNode(CXFA_Document* pDocument, |
| 394 CFX_WideStringC wsName, | 394 CFX_WideStringC wsName, |
| 395 CXFA_Node* pDataScope, | 395 CXFA_Node* pDataScope, |
| 396 XFA_ELEMENT eMatchNodeType) { | 396 XFA_ELEMENT eMatchNodeType) { |
| 397 FX_DWORD dwNameHash = | 397 uint32_t dwNameHash = |
| 398 wsName.IsEmpty() ? 0 : FX_HashCode_String_GetW(wsName.GetPtr(), | 398 wsName.IsEmpty() ? 0 : FX_HashCode_String_GetW(wsName.GetPtr(), |
| 399 wsName.GetLength()); | 399 wsName.GetLength()); |
| 400 if (dwNameHash != 0) { | 400 if (dwNameHash != 0) { |
| 401 CXFA_Node* pBounded = XFA_DataMerge_GetGlobalBinding(pDocument, dwNameHash); | 401 CXFA_Node* pBounded = XFA_DataMerge_GetGlobalBinding(pDocument, dwNameHash); |
| 402 if (!pBounded) { | 402 if (!pBounded) { |
| 403 pBounded = XFA_DataMerge_ScopeMatchGlobalBinding(pDataScope, dwNameHash, | 403 pBounded = XFA_DataMerge_ScopeMatchGlobalBinding(pDataScope, dwNameHash, |
| 404 eMatchNodeType); | 404 eMatchNodeType); |
| 405 if (pBounded) { | 405 if (pBounded) { |
| 406 XFA_DataMerge_RegisterGlobalBinding(pDocument, dwNameHash, pBounded); | 406 XFA_DataMerge_RegisterGlobalBinding(pDocument, dwNameHash, pBounded); |
| 407 } | 407 } |
| 408 } | 408 } |
| 409 return pBounded; | 409 return pBounded; |
| 410 } | 410 } |
| 411 return NULL; | 411 return NULL; |
| 412 } | 412 } |
| 413 static CXFA_Node* XFA_DataMerge_FindOnceDataNode(CXFA_Document* pDocument, | 413 static CXFA_Node* XFA_DataMerge_FindOnceDataNode(CXFA_Document* pDocument, |
| 414 CFX_WideStringC wsName, | 414 CFX_WideStringC wsName, |
| 415 CXFA_Node* pDataScope, | 415 CXFA_Node* pDataScope, |
| 416 XFA_ELEMENT eMatchNodeType) { | 416 XFA_ELEMENT eMatchNodeType) { |
| 417 FX_DWORD dwNameHash = | 417 uint32_t dwNameHash = |
| 418 wsName.IsEmpty() ? 0 : FX_HashCode_String_GetW(wsName.GetPtr(), | 418 wsName.IsEmpty() ? 0 : FX_HashCode_String_GetW(wsName.GetPtr(), |
| 419 wsName.GetLength()); | 419 wsName.GetLength()); |
| 420 if (dwNameHash != 0) { | 420 if (dwNameHash != 0) { |
| 421 for (CXFA_Node *pCurDataScope = pDataScope, *pLastDataScope = NULL; | 421 for (CXFA_Node *pCurDataScope = pDataScope, *pLastDataScope = NULL; |
| 422 pCurDataScope && | 422 pCurDataScope && |
| 423 pCurDataScope->GetPacketID() == XFA_XDPPACKET_Datasets; | 423 pCurDataScope->GetPacketID() == XFA_XDPPACKET_Datasets; |
| 424 pLastDataScope = pCurDataScope, | 424 pLastDataScope = pCurDataScope, |
| 425 pCurDataScope = | 425 pCurDataScope = |
| 426 pCurDataScope->GetNodeItem(XFA_NODEITEM_Parent)) { | 426 pCurDataScope->GetNodeItem(XFA_NODEITEM_Parent)) { |
| 427 for (CXFA_Node* pDataChild = | 427 for (CXFA_Node* pDataChild = |
| (...skipping 12 matching lines...) Expand all Loading... |
| 440 } | 440 } |
| 441 return NULL; | 441 return NULL; |
| 442 } | 442 } |
| 443 static CXFA_Node* XFA_DataMerge_FindDataRefDataNode(CXFA_Document* pDocument, | 443 static CXFA_Node* XFA_DataMerge_FindDataRefDataNode(CXFA_Document* pDocument, |
| 444 CFX_WideStringC wsRef, | 444 CFX_WideStringC wsRef, |
| 445 CXFA_Node* pDataScope, | 445 CXFA_Node* pDataScope, |
| 446 XFA_ELEMENT eMatchNodeType, | 446 XFA_ELEMENT eMatchNodeType, |
| 447 CXFA_Node* pTemplateNode, | 447 CXFA_Node* pTemplateNode, |
| 448 FX_BOOL bForceBind, | 448 FX_BOOL bForceBind, |
| 449 FX_BOOL bUpLevel = TRUE) { | 449 FX_BOOL bUpLevel = TRUE) { |
| 450 FX_DWORD dFlags = XFA_RESOLVENODE_Children | XFA_RESOLVENODE_BindNew; | 450 uint32_t dFlags = XFA_RESOLVENODE_Children | XFA_RESOLVENODE_BindNew; |
| 451 if (bUpLevel || wsRef != FX_WSTRC(L"name")) { | 451 if (bUpLevel || wsRef != FX_WSTRC(L"name")) { |
| 452 dFlags |= (XFA_RESOLVENODE_Parent | XFA_RESOLVENODE_Siblings); | 452 dFlags |= (XFA_RESOLVENODE_Parent | XFA_RESOLVENODE_Siblings); |
| 453 } | 453 } |
| 454 XFA_RESOLVENODE_RS rs; | 454 XFA_RESOLVENODE_RS rs; |
| 455 pDocument->GetScriptContext()->ResolveObjects(pDataScope, wsRef, rs, dFlags, | 455 pDocument->GetScriptContext()->ResolveObjects(pDataScope, wsRef, rs, dFlags, |
| 456 pTemplateNode); | 456 pTemplateNode); |
| 457 if (rs.dwFlags == XFA_RESOLVENODE_RSTYPE_CreateNodeAll || | 457 if (rs.dwFlags == XFA_RESOLVENODE_RSTYPE_CreateNodeAll || |
| 458 rs.dwFlags == XFA_RESOLVENODE_RSTYPE_CreateNodeMidAll || | 458 rs.dwFlags == XFA_RESOLVENODE_RSTYPE_CreateNodeMidAll || |
| 459 rs.nodes.GetSize() > 1) { | 459 rs.nodes.GetSize() > 1) { |
| 460 return pDocument->GetNotBindNode(rs.nodes); | 460 return pDocument->GetNotBindNode(rs.nodes); |
| 461 } | 461 } |
| 462 if (rs.dwFlags == XFA_RESOLVENODE_RSTYPE_CreateNodeOne) { | 462 if (rs.dwFlags == XFA_RESOLVENODE_RSTYPE_CreateNodeOne) { |
| 463 CXFA_Object* pObject = (rs.nodes.GetSize() > 0) ? rs.nodes[0] : NULL; | 463 CXFA_Object* pObject = (rs.nodes.GetSize() > 0) ? rs.nodes[0] : NULL; |
| 464 CXFA_Node* pNode = ToNode(pObject); | 464 CXFA_Node* pNode = ToNode(pObject); |
| 465 if (!bForceBind && pNode && pNode->HasBindItem()) { | 465 if (!bForceBind && pNode && pNode->HasBindItem()) { |
| 466 pNode = NULL; | 466 pNode = NULL; |
| 467 } | 467 } |
| 468 return pNode; | 468 return pNode; |
| 469 } | 469 } |
| 470 return NULL; | 470 return NULL; |
| 471 } | 471 } |
| 472 CXFA_Node* XFA_DataMerge_FindFormDOMInstance(CXFA_Document* pDocument, | 472 CXFA_Node* XFA_DataMerge_FindFormDOMInstance(CXFA_Document* pDocument, |
| 473 XFA_ELEMENT eClassID, | 473 XFA_ELEMENT eClassID, |
| 474 FX_DWORD dwNameHash, | 474 uint32_t dwNameHash, |
| 475 CXFA_Node* pFormParent) { | 475 CXFA_Node* pFormParent) { |
| 476 CXFA_Node* pFormChild = pFormParent->GetNodeItem(XFA_NODEITEM_FirstChild); | 476 CXFA_Node* pFormChild = pFormParent->GetNodeItem(XFA_NODEITEM_FirstChild); |
| 477 for (; pFormChild; | 477 for (; pFormChild; |
| 478 pFormChild = pFormChild->GetNodeItem(XFA_NODEITEM_NextSibling)) { | 478 pFormChild = pFormChild->GetNodeItem(XFA_NODEITEM_NextSibling)) { |
| 479 if (pFormChild->GetClassID() == eClassID && | 479 if (pFormChild->GetClassID() == eClassID && |
| 480 pFormChild->GetNameHash() == dwNameHash && | 480 pFormChild->GetNameHash() == dwNameHash && |
| 481 pFormChild->HasFlag(XFA_NODEFLAG_UnusedNode)) { | 481 pFormChild->HasFlag(XFA_NODEFLAG_UnusedNode)) { |
| 482 return pFormChild; | 482 return pFormChild; |
| 483 } | 483 } |
| 484 } | 484 } |
| (...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 551 } | 551 } |
| 552 return pNewNode; | 552 return pNewNode; |
| 553 } | 553 } |
| 554 static CXFA_Node* XFA_NodeMerge_CloneOrMergeInstanceManager( | 554 static CXFA_Node* XFA_NodeMerge_CloneOrMergeInstanceManager( |
| 555 CXFA_Document* pDocument, | 555 CXFA_Document* pDocument, |
| 556 CXFA_Node* pFormParent, | 556 CXFA_Node* pFormParent, |
| 557 CXFA_Node* pTemplateNode, | 557 CXFA_Node* pTemplateNode, |
| 558 CXFA_NodeArray& subforms) { | 558 CXFA_NodeArray& subforms) { |
| 559 CFX_WideStringC wsSubformName = pTemplateNode->GetCData(XFA_ATTRIBUTE_Name); | 559 CFX_WideStringC wsSubformName = pTemplateNode->GetCData(XFA_ATTRIBUTE_Name); |
| 560 CFX_WideString wsInstMgrNodeName = FX_WSTRC(L"_") + wsSubformName; | 560 CFX_WideString wsInstMgrNodeName = FX_WSTRC(L"_") + wsSubformName; |
| 561 FX_DWORD dwInstNameHash = | 561 uint32_t dwInstNameHash = |
| 562 FX_HashCode_String_GetW(wsInstMgrNodeName, wsInstMgrNodeName.GetLength()); | 562 FX_HashCode_String_GetW(wsInstMgrNodeName, wsInstMgrNodeName.GetLength()); |
| 563 CXFA_Node* pExistingNode = XFA_DataMerge_FindFormDOMInstance( | 563 CXFA_Node* pExistingNode = XFA_DataMerge_FindFormDOMInstance( |
| 564 pDocument, XFA_ELEMENT_InstanceManager, dwInstNameHash, pFormParent); | 564 pDocument, XFA_ELEMENT_InstanceManager, dwInstNameHash, pFormParent); |
| 565 if (pExistingNode) { | 565 if (pExistingNode) { |
| 566 FX_DWORD dwNameHash = pTemplateNode->GetNameHash(); | 566 uint32_t dwNameHash = pTemplateNode->GetNameHash(); |
| 567 for (CXFA_Node* pNode = | 567 for (CXFA_Node* pNode = |
| 568 pExistingNode->GetNodeItem(XFA_NODEITEM_NextSibling); | 568 pExistingNode->GetNodeItem(XFA_NODEITEM_NextSibling); |
| 569 pNode;) { | 569 pNode;) { |
| 570 XFA_ELEMENT eCurType = pNode->GetClassID(); | 570 XFA_ELEMENT eCurType = pNode->GetClassID(); |
| 571 if (eCurType == XFA_ELEMENT_InstanceManager) { | 571 if (eCurType == XFA_ELEMENT_InstanceManager) { |
| 572 break; | 572 break; |
| 573 } | 573 } |
| 574 if ((eCurType != XFA_ELEMENT_Subform) && | 574 if ((eCurType != XFA_ELEMENT_Subform) && |
| 575 (eCurType != XFA_ELEMENT_SubformSet)) { | 575 (eCurType != XFA_ELEMENT_SubformSet)) { |
| 576 pNode = pNode->GetNodeItem(XFA_NODEITEM_NextSibling); | 576 pNode = pNode->GetNodeItem(XFA_NODEITEM_NextSibling); |
| (...skipping 568 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1145 if (pDataParent != pDataScope) { | 1145 if (pDataParent != pDataScope) { |
| 1146 FXSYS_assert(pDataParent); | 1146 FXSYS_assert(pDataParent); |
| 1147 pDataParent->RemoveChild(pDataNode); | 1147 pDataParent->RemoveChild(pDataNode); |
| 1148 pDataScope->InsertChild(pDataNode); | 1148 pDataScope->InsertChild(pDataNode); |
| 1149 } | 1149 } |
| 1150 } | 1150 } |
| 1151 } | 1151 } |
| 1152 break; | 1152 break; |
| 1153 case XFA_ATTRIBUTEENUM_Global: | 1153 case XFA_ATTRIBUTEENUM_Global: |
| 1154 if (!bDataRef || bParentDataRef) { | 1154 if (!bDataRef || bParentDataRef) { |
| 1155 FX_DWORD dwNameHash = pFormNode->GetNameHash(); | 1155 uint32_t dwNameHash = pFormNode->GetNameHash(); |
| 1156 if (dwNameHash != 0 && !pDataNode) { | 1156 if (dwNameHash != 0 && !pDataNode) { |
| 1157 pDataNode = XFA_DataMerge_GetGlobalBinding(pDocument, dwNameHash); | 1157 pDataNode = XFA_DataMerge_GetGlobalBinding(pDocument, dwNameHash); |
| 1158 if (!pDataNode) { | 1158 if (!pDataNode) { |
| 1159 XFA_ELEMENT eDataNodeType = (eClassID == XFA_ELEMENT_Subform || | 1159 XFA_ELEMENT eDataNodeType = (eClassID == XFA_ELEMENT_Subform || |
| 1160 XFA_FieldIsMultiListBox(pFormNode)) | 1160 XFA_FieldIsMultiListBox(pFormNode)) |
| 1161 ? XFA_ELEMENT_DataGroup | 1161 ? XFA_ELEMENT_DataGroup |
| 1162 : XFA_ELEMENT_DataValue; | 1162 : XFA_ELEMENT_DataValue; |
| 1163 CXFA_Node* pRecordNode = | 1163 CXFA_Node* pRecordNode = |
| 1164 ToNode(pDocument->GetXFAObject(XFA_HASHCODE_Record)); | 1164 ToNode(pDocument->GetXFAObject(XFA_HASHCODE_Record)); |
| 1165 pDataNode = XFA_DataDescription_MaybeCreateDataNode( | 1165 pDataNode = XFA_DataDescription_MaybeCreateDataNode( |
| (...skipping 12 matching lines...) Expand all Loading... |
| 1178 XFA_DataMerge_FormValueNode_MatchNoneCreateChild(pFormNode); | 1178 XFA_DataMerge_FormValueNode_MatchNoneCreateChild(pFormNode); |
| 1179 } | 1179 } |
| 1180 } | 1180 } |
| 1181 break; | 1181 break; |
| 1182 case XFA_ATTRIBUTEENUM_DataRef: { | 1182 case XFA_ATTRIBUTEENUM_DataRef: { |
| 1183 bMatchRef = bDataRef; | 1183 bMatchRef = bDataRef; |
| 1184 bParentDataRef = TRUE; | 1184 bParentDataRef = TRUE; |
| 1185 if (!pDataNode && bDataRef) { | 1185 if (!pDataNode && bDataRef) { |
| 1186 CFX_WideStringC wsRef = | 1186 CFX_WideStringC wsRef = |
| 1187 pTemplateNodeBind->GetCData(XFA_ATTRIBUTE_Ref); | 1187 pTemplateNodeBind->GetCData(XFA_ATTRIBUTE_Ref); |
| 1188 FX_DWORD dFlags = | 1188 uint32_t dFlags = |
| 1189 XFA_RESOLVENODE_Children | XFA_RESOLVENODE_CreateNode; | 1189 XFA_RESOLVENODE_Children | XFA_RESOLVENODE_CreateNode; |
| 1190 XFA_RESOLVENODE_RS rs; | 1190 XFA_RESOLVENODE_RS rs; |
| 1191 pDocument->GetScriptContext()->ResolveObjects(pDataScope, wsRef, rs, | 1191 pDocument->GetScriptContext()->ResolveObjects(pDataScope, wsRef, rs, |
| 1192 dFlags, pTemplateNode); | 1192 dFlags, pTemplateNode); |
| 1193 CXFA_Object* pObject = (rs.nodes.GetSize() > 0) ? rs.nodes[0] : NULL; | 1193 CXFA_Object* pObject = (rs.nodes.GetSize() > 0) ? rs.nodes[0] : NULL; |
| 1194 pDataNode = ToNode(pObject); | 1194 pDataNode = ToNode(pObject); |
| 1195 if (pDataNode) { | 1195 if (pDataNode) { |
| 1196 XFA_DataMerge_CreateDataBinding( | 1196 XFA_DataMerge_CreateDataBinding( |
| 1197 pFormNode, pDataNode, | 1197 pFormNode, pDataNode, |
| 1198 rs.dwFlags == XFA_RESOVENODE_RSTYPE_ExistNodes); | 1198 rs.dwFlags == XFA_RESOVENODE_RSTYPE_ExistNodes); |
| (...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1308 IFDE_XMLElement* pDataRootXMLNode = | 1308 IFDE_XMLElement* pDataRootXMLNode = |
| 1309 IFDE_XMLElement::Create(FX_WSTRC(L"xfa:data")); | 1309 IFDE_XMLElement::Create(FX_WSTRC(L"xfa:data")); |
| 1310 FXSYS_assert(pDataRootXMLNode); | 1310 FXSYS_assert(pDataRootXMLNode); |
| 1311 pDataRoot = CreateNode(XFA_XDPPACKET_Datasets, XFA_ELEMENT_DataGroup); | 1311 pDataRoot = CreateNode(XFA_XDPPACKET_Datasets, XFA_ELEMENT_DataGroup); |
| 1312 pDataRoot->SetCData(XFA_ATTRIBUTE_Name, FX_WSTRC(L"data")); | 1312 pDataRoot->SetCData(XFA_ATTRIBUTE_Name, FX_WSTRC(L"data")); |
| 1313 pDataRoot->SetXMLMappingNode(pDataRootXMLNode); | 1313 pDataRoot->SetXMLMappingNode(pDataRootXMLNode); |
| 1314 pDatasetsRoot->InsertChild(pDataRoot); | 1314 pDatasetsRoot->InsertChild(pDataRoot); |
| 1315 } | 1315 } |
| 1316 CXFA_Node* pDataTopLevel = | 1316 CXFA_Node* pDataTopLevel = |
| 1317 pDataRoot->GetFirstChildByClass(XFA_ELEMENT_DataGroup); | 1317 pDataRoot->GetFirstChildByClass(XFA_ELEMENT_DataGroup); |
| 1318 FX_DWORD dwNameHash = pDataTopLevel ? pDataTopLevel->GetNameHash() : 0; | 1318 uint32_t dwNameHash = pDataTopLevel ? pDataTopLevel->GetNameHash() : 0; |
| 1319 CXFA_Node* pTemplateRoot = | 1319 CXFA_Node* pTemplateRoot = |
| 1320 m_pRootNode->GetFirstChildByClass(XFA_ELEMENT_Template); | 1320 m_pRootNode->GetFirstChildByClass(XFA_ELEMENT_Template); |
| 1321 if (!pTemplateRoot) { | 1321 if (!pTemplateRoot) { |
| 1322 return; | 1322 return; |
| 1323 } | 1323 } |
| 1324 CXFA_Node* pTemplateChosen = | 1324 CXFA_Node* pTemplateChosen = |
| 1325 dwNameHash != 0 ? pTemplateRoot->GetFirstChildByName(dwNameHash) : NULL; | 1325 dwNameHash != 0 ? pTemplateRoot->GetFirstChildByName(dwNameHash) : NULL; |
| 1326 if (!pTemplateChosen || | 1326 if (!pTemplateChosen || |
| 1327 pTemplateChosen->GetClassID() != XFA_ELEMENT_Subform) { | 1327 pTemplateChosen->GetClassID() != XFA_ELEMENT_Subform) { |
| 1328 pTemplateChosen = pTemplateRoot->GetFirstChildByClass(XFA_ELEMENT_Subform); | 1328 pTemplateChosen = pTemplateRoot->GetFirstChildByClass(XFA_ELEMENT_Subform); |
| (...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1420 } | 1420 } |
| 1421 pFormRoot->SetObject(XFA_ATTRIBUTE_BindingNode, NULL); | 1421 pFormRoot->SetObject(XFA_ATTRIBUTE_BindingNode, NULL); |
| 1422 } | 1422 } |
| 1423 XFA_DataMerge_ClearGlobalBinding(this); | 1423 XFA_DataMerge_ClearGlobalBinding(this); |
| 1424 if (bDoDataMerge) { | 1424 if (bDoDataMerge) { |
| 1425 DoDataMerge(); | 1425 DoDataMerge(); |
| 1426 } | 1426 } |
| 1427 CXFA_LayoutProcessor* pLayoutProcessor = GetLayoutProcessor(); | 1427 CXFA_LayoutProcessor* pLayoutProcessor = GetLayoutProcessor(); |
| 1428 pLayoutProcessor->SetForceReLayout(TRUE); | 1428 pLayoutProcessor->SetForceReLayout(TRUE); |
| 1429 } | 1429 } |
| OLD | NEW |