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/fde/xml/fde_xml_imp.h" | 10 #include "xfa/fde/xml/fde_xml_imp.h" |
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
136 pXMLDataElement->SetString(L"href", wsHref); | 136 pXMLDataElement->SetString(L"href", wsHref); |
137 } | 137 } |
138 } break; | 138 } break; |
139 case XFA_ELEMENT_ChoiceList: | 139 case XFA_ELEMENT_ChoiceList: |
140 defValue.GetChildValueContent(wsValue); | 140 defValue.GetChildValueContent(wsValue); |
141 if (pWidgetData->GetChoiceListOpen() == XFA_ATTRIBUTEENUM_MultiSelect) { | 141 if (pWidgetData->GetChoiceListOpen() == XFA_ATTRIBUTEENUM_MultiSelect) { |
142 CFX_WideStringArray wsSelTextArray; | 142 CFX_WideStringArray wsSelTextArray; |
143 pWidgetData->GetSelectedItemsValue(wsSelTextArray); | 143 pWidgetData->GetSelectedItemsValue(wsSelTextArray); |
144 int32_t iSize = wsSelTextArray.GetSize(); | 144 int32_t iSize = wsSelTextArray.GetSize(); |
145 if (iSize >= 1) { | 145 if (iSize >= 1) { |
146 CXFA_Node* pValue = NULL; | 146 CXFA_Node* pValue = nullptr; |
147 for (int32_t i = 0; i < iSize; i++) { | 147 for (int32_t i = 0; i < iSize; i++) { |
148 pValue = pDataNode->CreateSamePacketNode(XFA_ELEMENT_DataValue); | 148 pValue = pDataNode->CreateSamePacketNode(XFA_ELEMENT_DataValue); |
149 pValue->SetCData(XFA_ATTRIBUTE_Name, L"value"); | 149 pValue->SetCData(XFA_ATTRIBUTE_Name, L"value"); |
150 pValue->CreateXMLMappingNode(); | 150 pValue->CreateXMLMappingNode(); |
151 pDataNode->InsertChild(pValue); | 151 pDataNode->InsertChild(pValue); |
152 pValue->SetCData(XFA_ATTRIBUTE_Value, wsSelTextArray[i]); | 152 pValue->SetCData(XFA_ATTRIBUTE_Value, wsSelTextArray[i]); |
153 } | 153 } |
154 } else { | 154 } else { |
155 CFDE_XMLNode* pXMLNode = pDataNode->GetXMLMappingNode(); | 155 CFDE_XMLNode* pXMLNode = pDataNode->GetXMLMappingNode(); |
156 ASSERT(pXMLNode->GetType() == FDE_XMLNODE_Element); | 156 ASSERT(pXMLNode->GetType() == FDE_XMLNODE_Element); |
157 static_cast<CFDE_XMLElement*>(pXMLNode)->SetString(L"xfa:dataNode", | 157 static_cast<CFDE_XMLElement*>(pXMLNode)->SetString(L"xfa:dataNode", |
158 L"dataGroup"); | 158 L"dataGroup"); |
159 } | 159 } |
160 } else if (!wsValue.IsEmpty()) { | 160 } else if (!wsValue.IsEmpty()) { |
161 pWidgetData->GetFormatDataValue(wsValue, wsFormatedValue); | 161 pWidgetData->GetFormatDataValue(wsValue, wsFormatedValue); |
162 pDataNode->SetAttributeValue(wsValue, wsFormatedValue); | 162 pDataNode->SetAttributeValue(wsValue, wsFormatedValue); |
163 } | 163 } |
164 break; | 164 break; |
165 case XFA_ELEMENT_CheckButton: | 165 case XFA_ELEMENT_CheckButton: |
166 defValue.GetChildValueContent(wsValue); | 166 defValue.GetChildValueContent(wsValue); |
167 if (wsValue.IsEmpty()) { | 167 if (wsValue.IsEmpty()) { |
168 break; | 168 break; |
169 } | 169 } |
170 pWidgetData->GetFormatDataValue(wsValue, wsFormatedValue); | 170 pWidgetData->GetFormatDataValue(wsValue, wsFormatedValue); |
171 pDataNode->SetAttributeValue(wsValue, wsFormatedValue); | 171 pDataNode->SetAttributeValue(wsValue, wsFormatedValue); |
172 break; | 172 break; |
173 case XFA_ELEMENT_ExclGroup: { | 173 case XFA_ELEMENT_ExclGroup: { |
174 CXFA_Node* pChecked = NULL; | 174 CXFA_Node* pChecked = nullptr; |
175 CXFA_Node* pChild = pFormNode->GetNodeItem(XFA_NODEITEM_FirstChild); | 175 CXFA_Node* pChild = pFormNode->GetNodeItem(XFA_NODEITEM_FirstChild); |
176 for (; pChild; pChild = pChild->GetNodeItem(XFA_NODEITEM_NextSibling)) { | 176 for (; pChild; pChild = pChild->GetNodeItem(XFA_NODEITEM_NextSibling)) { |
177 if (pChild->GetClassID() != XFA_ELEMENT_Field) { | 177 if (pChild->GetClassID() != XFA_ELEMENT_Field) { |
178 continue; | 178 continue; |
179 } | 179 } |
180 CXFA_Node* pValue = pChild->GetChild(0, XFA_ELEMENT_Value); | 180 CXFA_Node* pValue = pChild->GetChild(0, XFA_ELEMENT_Value); |
181 if (!pValue) { | 181 if (!pValue) { |
182 continue; | 182 continue; |
183 } | 183 } |
184 CXFA_Value valueChild(pValue); | 184 CXFA_Value valueChild(pValue); |
(...skipping 25 matching lines...) Expand all Loading... |
210 for (; pChild; pChild = pChild->GetNodeItem(XFA_NODEITEM_NextSibling)) { | 210 for (; pChild; pChild = pChild->GetNodeItem(XFA_NODEITEM_NextSibling)) { |
211 if (pChild == pChecked) { | 211 if (pChild == pChecked) { |
212 continue; | 212 continue; |
213 } | 213 } |
214 if (pChild->GetClassID() != XFA_ELEMENT_Field) { | 214 if (pChild->GetClassID() != XFA_ELEMENT_Field) { |
215 continue; | 215 continue; |
216 } | 216 } |
217 CXFA_Node* pValue = pChild->GetProperty(0, XFA_ELEMENT_Value); | 217 CXFA_Node* pValue = pChild->GetProperty(0, XFA_ELEMENT_Value); |
218 CXFA_Node* pItems = pChild->GetChild(0, XFA_ELEMENT_Items); | 218 CXFA_Node* pItems = pChild->GetChild(0, XFA_ELEMENT_Items); |
219 CXFA_Node* pText = | 219 CXFA_Node* pText = |
220 pItems ? pItems->GetNodeItem(XFA_NODEITEM_FirstChild) : NULL; | 220 pItems ? pItems->GetNodeItem(XFA_NODEITEM_FirstChild) : nullptr; |
221 if (pText) { | 221 if (pText) { |
222 pText = pText->GetNodeItem(XFA_NODEITEM_NextSibling); | 222 pText = pText->GetNodeItem(XFA_NODEITEM_NextSibling); |
223 } | 223 } |
224 CFX_WideString wsContent; | 224 CFX_WideString wsContent; |
225 if (pText) { | 225 if (pText) { |
226 pText->TryContent(wsContent); | 226 pText->TryContent(wsContent); |
227 } | 227 } |
228 XFA_DataMerge_FormValueNode_SetChildContent(pValue, wsContent, | 228 XFA_DataMerge_FormValueNode_SetChildContent(pValue, wsContent, |
229 XFA_ELEMENT_Text); | 229 XFA_ELEMENT_Text); |
230 } | 230 } |
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
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 uint32_t dwNameHash) { | 343 uint32_t dwNameHash) { |
344 CXFA_Node* pNode = NULL; | 344 CXFA_Node* pNode = nullptr; |
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 uint32_t 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 uint32_t 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 = nullptr; |
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)) { |
369 if (pDataChild == pLastDataScope || | 369 if (pDataChild == pLastDataScope || |
370 (eMatchDataNodeType != XFA_ELEMENT_DataModel && | 370 (eMatchDataNodeType != XFA_ELEMENT_DataModel && |
371 pDataChild->GetClassID() != eMatchDataNodeType) || | 371 pDataChild->GetClassID() != eMatchDataNodeType) || |
372 pDataChild->HasBindItem()) { | 372 pDataChild->HasBindItem()) { |
373 continue; | 373 continue; |
374 } | 374 } |
375 return pDataChild; | 375 return pDataChild; |
376 } | 376 } |
377 for (CXFA_Node* pDataChild = | 377 for (CXFA_Node* pDataChild = |
378 pCurDataScope->GetFirstChildByClass(XFA_ELEMENT_DataGroup); | 378 pCurDataScope->GetFirstChildByClass(XFA_ELEMENT_DataGroup); |
379 pDataChild; pDataChild = pDataChild->GetNextSameClassSibling( | 379 pDataChild; pDataChild = pDataChild->GetNextSameClassSibling( |
380 XFA_ELEMENT_DataGroup)) { | 380 XFA_ELEMENT_DataGroup)) { |
381 CXFA_Node* pDataNode = XFA_DataMerge_ScopeMatchGlobalBinding( | 381 CXFA_Node* pDataNode = XFA_DataMerge_ScopeMatchGlobalBinding( |
382 pDataChild, dwNameHash, eMatchDataNodeType, FALSE); | 382 pDataChild, dwNameHash, eMatchDataNodeType, FALSE); |
383 if (pDataNode) { | 383 if (pDataNode) { |
384 return pDataNode; | 384 return pDataNode; |
385 } | 385 } |
386 } | 386 } |
387 if (!bUpLevel) { | 387 if (!bUpLevel) { |
388 break; | 388 break; |
389 } | 389 } |
390 } | 390 } |
391 return NULL; | 391 return nullptr; |
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 if (wsName.IsEmpty()) | 397 if (wsName.IsEmpty()) |
398 return nullptr; | 398 return nullptr; |
399 | 399 |
400 uint32_t dwNameHash = FX_HashCode_GetW(wsName, false); | 400 uint32_t dwNameHash = FX_HashCode_GetW(wsName, false); |
401 CXFA_Node* pBounded = XFA_DataMerge_GetGlobalBinding(pDocument, dwNameHash); | 401 CXFA_Node* pBounded = XFA_DataMerge_GetGlobalBinding(pDocument, dwNameHash); |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
449 } | 449 } |
450 XFA_RESOLVENODE_RS rs; | 450 XFA_RESOLVENODE_RS rs; |
451 pDocument->GetScriptContext()->ResolveObjects(pDataScope, wsRef, rs, dFlags, | 451 pDocument->GetScriptContext()->ResolveObjects(pDataScope, wsRef, rs, dFlags, |
452 pTemplateNode); | 452 pTemplateNode); |
453 if (rs.dwFlags == XFA_RESOLVENODE_RSTYPE_CreateNodeAll || | 453 if (rs.dwFlags == XFA_RESOLVENODE_RSTYPE_CreateNodeAll || |
454 rs.dwFlags == XFA_RESOLVENODE_RSTYPE_CreateNodeMidAll || | 454 rs.dwFlags == XFA_RESOLVENODE_RSTYPE_CreateNodeMidAll || |
455 rs.nodes.GetSize() > 1) { | 455 rs.nodes.GetSize() > 1) { |
456 return pDocument->GetNotBindNode(rs.nodes); | 456 return pDocument->GetNotBindNode(rs.nodes); |
457 } | 457 } |
458 if (rs.dwFlags == XFA_RESOLVENODE_RSTYPE_CreateNodeOne) { | 458 if (rs.dwFlags == XFA_RESOLVENODE_RSTYPE_CreateNodeOne) { |
459 CXFA_Object* pObject = (rs.nodes.GetSize() > 0) ? rs.nodes[0] : NULL; | 459 CXFA_Object* pObject = (rs.nodes.GetSize() > 0) ? rs.nodes[0] : nullptr; |
460 CXFA_Node* pNode = ToNode(pObject); | 460 CXFA_Node* pNode = ToNode(pObject); |
461 if (!bForceBind && pNode && pNode->HasBindItem()) { | 461 if (!bForceBind && pNode && pNode->HasBindItem()) { |
462 pNode = NULL; | 462 pNode = nullptr; |
463 } | 463 } |
464 return pNode; | 464 return pNode; |
465 } | 465 } |
466 return NULL; | 466 return nullptr; |
467 } | 467 } |
468 CXFA_Node* XFA_DataMerge_FindFormDOMInstance(CXFA_Document* pDocument, | 468 CXFA_Node* XFA_DataMerge_FindFormDOMInstance(CXFA_Document* pDocument, |
469 XFA_ELEMENT eClassID, | 469 XFA_ELEMENT eClassID, |
470 uint32_t dwNameHash, | 470 uint32_t dwNameHash, |
471 CXFA_Node* pFormParent) { | 471 CXFA_Node* pFormParent) { |
472 CXFA_Node* pFormChild = pFormParent->GetNodeItem(XFA_NODEITEM_FirstChild); | 472 CXFA_Node* pFormChild = pFormParent->GetNodeItem(XFA_NODEITEM_FirstChild); |
473 for (; pFormChild; | 473 for (; pFormChild; |
474 pFormChild = pFormChild->GetNodeItem(XFA_NODEITEM_NextSibling)) { | 474 pFormChild = pFormChild->GetNodeItem(XFA_NODEITEM_NextSibling)) { |
475 if (pFormChild->GetClassID() == eClassID && | 475 if (pFormChild->GetClassID() == eClassID && |
476 pFormChild->GetNameHash() == dwNameHash && | 476 pFormChild->GetNameHash() == dwNameHash && |
477 pFormChild->HasFlag(XFA_NODEFLAG_UnusedNode)) { | 477 pFormChild->HasFlag(XFA_NODEFLAG_UnusedNode)) { |
478 return pFormChild; | 478 return pFormChild; |
479 } | 479 } |
480 } | 480 } |
481 return NULL; | 481 return nullptr; |
482 } | 482 } |
483 static FX_BOOL XFA_NeedGenerateForm(CXFA_Node* pTemplateChild, | 483 static FX_BOOL XFA_NeedGenerateForm(CXFA_Node* pTemplateChild, |
484 FX_BOOL bUseInstanceManager = TRUE) { | 484 FX_BOOL bUseInstanceManager = TRUE) { |
485 XFA_ELEMENT eType = pTemplateChild->GetClassID(); | 485 XFA_ELEMENT eType = pTemplateChild->GetClassID(); |
486 if (eType == XFA_ELEMENT_Variables) { | 486 if (eType == XFA_ELEMENT_Variables) { |
487 return TRUE; | 487 return TRUE; |
488 } | 488 } |
489 if (pTemplateChild->GetObjectType() == XFA_OBJECTTYPE_ContainerNode) { | 489 if (pTemplateChild->GetObjectType() == XFA_OBJECTTYPE_ContainerNode) { |
490 return FALSE; | 490 return FALSE; |
491 } | 491 } |
492 if (eType == XFA_ELEMENT_Proto || | 492 if (eType == XFA_ELEMENT_Proto || |
493 (bUseInstanceManager && eType == XFA_ELEMENT_Occur)) { | 493 (bUseInstanceManager && eType == XFA_ELEMENT_Occur)) { |
494 return FALSE; | 494 return FALSE; |
495 } | 495 } |
496 return TRUE; | 496 return TRUE; |
497 } | 497 } |
498 CXFA_Node* XFA_NodeMerge_CloneOrMergeContainer(CXFA_Document* pDocument, | 498 CXFA_Node* XFA_NodeMerge_CloneOrMergeContainer(CXFA_Document* pDocument, |
499 CXFA_Node* pFormParent, | 499 CXFA_Node* pFormParent, |
500 CXFA_Node* pTemplateNode, | 500 CXFA_Node* pTemplateNode, |
501 FX_BOOL bRecursive, | 501 FX_BOOL bRecursive, |
502 CXFA_NodeArray* pSubformArray) { | 502 CXFA_NodeArray* pSubformArray) { |
503 CXFA_Node* pExistingNode = NULL; | 503 CXFA_Node* pExistingNode = nullptr; |
504 if (pSubformArray == NULL) { | 504 if (!pSubformArray) { |
505 pExistingNode = XFA_DataMerge_FindFormDOMInstance( | 505 pExistingNode = XFA_DataMerge_FindFormDOMInstance( |
506 pDocument, pTemplateNode->GetClassID(), pTemplateNode->GetNameHash(), | 506 pDocument, pTemplateNode->GetClassID(), pTemplateNode->GetNameHash(), |
507 pFormParent); | 507 pFormParent); |
508 } else if (pSubformArray->GetSize() > 0) { | 508 } else if (pSubformArray->GetSize() > 0) { |
509 pExistingNode = pSubformArray->GetAt(0); | 509 pExistingNode = pSubformArray->GetAt(0); |
510 pSubformArray->RemoveAt(0); | 510 pSubformArray->RemoveAt(0); |
511 } | 511 } |
512 if (pExistingNode) { | 512 if (pExistingNode) { |
513 if (pSubformArray) { | 513 if (pSubformArray) { |
514 pFormParent->InsertChild(pExistingNode); | 514 pFormParent->InsertChild(pExistingNode); |
(...skipping 11 matching lines...) Expand all Loading... |
526 if (XFA_NeedGenerateForm(pTemplateChild)) { | 526 if (XFA_NeedGenerateForm(pTemplateChild)) { |
527 XFA_NodeMerge_CloneOrMergeContainer(pDocument, pExistingNode, | 527 XFA_NodeMerge_CloneOrMergeContainer(pDocument, pExistingNode, |
528 pTemplateChild, bRecursive); | 528 pTemplateChild, bRecursive); |
529 } | 529 } |
530 } | 530 } |
531 } | 531 } |
532 pExistingNode->SetFlag(XFA_NODEFLAG_Initialized, true); | 532 pExistingNode->SetFlag(XFA_NODEFLAG_Initialized, true); |
533 return pExistingNode; | 533 return pExistingNode; |
534 } | 534 } |
535 CXFA_Node* pNewNode = pTemplateNode->CloneTemplateToForm(FALSE); | 535 CXFA_Node* pNewNode = pTemplateNode->CloneTemplateToForm(FALSE); |
536 pFormParent->InsertChild(pNewNode, NULL); | 536 pFormParent->InsertChild(pNewNode, nullptr); |
537 if (bRecursive) { | 537 if (bRecursive) { |
538 for (CXFA_Node* pTemplateChild = | 538 for (CXFA_Node* pTemplateChild = |
539 pTemplateNode->GetNodeItem(XFA_NODEITEM_FirstChild); | 539 pTemplateNode->GetNodeItem(XFA_NODEITEM_FirstChild); |
540 pTemplateChild; pTemplateChild = pTemplateChild->GetNodeItem( | 540 pTemplateChild; pTemplateChild = pTemplateChild->GetNodeItem( |
541 XFA_NODEITEM_NextSibling)) { | 541 XFA_NODEITEM_NextSibling)) { |
542 if (XFA_NeedGenerateForm(pTemplateChild)) { | 542 if (XFA_NeedGenerateForm(pTemplateChild)) { |
543 CXFA_Node* pNewChild = pTemplateChild->CloneTemplateToForm(TRUE); | 543 CXFA_Node* pNewChild = pTemplateChild->CloneTemplateToForm(TRUE); |
544 pNewNode->InsertChild(pNewChild, NULL); | 544 pNewNode->InsertChild(pNewChild, nullptr); |
545 } | 545 } |
546 } | 546 } |
547 } | 547 } |
548 return pNewNode; | 548 return pNewNode; |
549 } | 549 } |
550 static CXFA_Node* XFA_NodeMerge_CloneOrMergeInstanceManager( | 550 static CXFA_Node* XFA_NodeMerge_CloneOrMergeInstanceManager( |
551 CXFA_Document* pDocument, | 551 CXFA_Document* pDocument, |
552 CXFA_Node* pFormParent, | 552 CXFA_Node* pFormParent, |
553 CXFA_Node* pTemplateNode, | 553 CXFA_Node* pTemplateNode, |
554 CXFA_NodeArray& subforms) { | 554 CXFA_NodeArray& subforms) { |
(...skipping 30 matching lines...) Expand all Loading... |
585 pExistingNode->ClearFlag(XFA_NODEFLAG_UnusedNode); | 585 pExistingNode->ClearFlag(XFA_NODEFLAG_UnusedNode); |
586 pExistingNode->SetTemplateNode(pTemplateNode); | 586 pExistingNode->SetTemplateNode(pTemplateNode); |
587 return pExistingNode; | 587 return pExistingNode; |
588 } | 588 } |
589 CXFA_Node* pNewNode = pDocument->GetParser()->GetFactory()->CreateNode( | 589 CXFA_Node* pNewNode = pDocument->GetParser()->GetFactory()->CreateNode( |
590 XFA_XDPPACKET_Form, XFA_ELEMENT_InstanceManager); | 590 XFA_XDPPACKET_Form, XFA_ELEMENT_InstanceManager); |
591 ASSERT(pNewNode); | 591 ASSERT(pNewNode); |
592 wsInstMgrNodeName = | 592 wsInstMgrNodeName = |
593 FX_WSTRC(L"_") + pTemplateNode->GetCData(XFA_ATTRIBUTE_Name); | 593 FX_WSTRC(L"_") + pTemplateNode->GetCData(XFA_ATTRIBUTE_Name); |
594 pNewNode->SetCData(XFA_ATTRIBUTE_Name, wsInstMgrNodeName); | 594 pNewNode->SetCData(XFA_ATTRIBUTE_Name, wsInstMgrNodeName); |
595 pFormParent->InsertChild(pNewNode, NULL); | 595 pFormParent->InsertChild(pNewNode, nullptr); |
596 pNewNode->SetTemplateNode(pTemplateNode); | 596 pNewNode->SetTemplateNode(pTemplateNode); |
597 return pNewNode; | 597 return pNewNode; |
598 } | 598 } |
599 static CXFA_Node* XFA_DataMerge_FindMatchingDataNode( | 599 static CXFA_Node* XFA_DataMerge_FindMatchingDataNode( |
600 CXFA_Document* pDocument, | 600 CXFA_Document* pDocument, |
601 CXFA_Node* pTemplateNode, | 601 CXFA_Node* pTemplateNode, |
602 CXFA_Node* pDataScope, | 602 CXFA_Node* pDataScope, |
603 FX_BOOL& bAccessedDataDOM, | 603 FX_BOOL& bAccessedDataDOM, |
604 FX_BOOL bForceBind, | 604 FX_BOOL bForceBind, |
605 CXFA_NodeIteratorTemplate<CXFA_Node, | 605 CXFA_NodeIteratorTemplate<CXFA_Node, |
606 CXFA_TraverseStrategy_XFAContainerNode>* | 606 CXFA_TraverseStrategy_XFAContainerNode>* |
607 pIterator, | 607 pIterator, |
608 FX_BOOL& bSelfMatch, | 608 FX_BOOL& bSelfMatch, |
609 XFA_ATTRIBUTEENUM& eBindMatch, | 609 XFA_ATTRIBUTEENUM& eBindMatch, |
610 FX_BOOL bUpLevel = TRUE) { | 610 FX_BOOL bUpLevel = TRUE) { |
611 FX_BOOL bOwnIterator = FALSE; | 611 FX_BOOL bOwnIterator = FALSE; |
612 if (!pIterator) { | 612 if (!pIterator) { |
613 bOwnIterator = TRUE; | 613 bOwnIterator = TRUE; |
614 pIterator = new CXFA_NodeIteratorTemplate< | 614 pIterator = new CXFA_NodeIteratorTemplate< |
615 CXFA_Node, CXFA_TraverseStrategy_XFAContainerNode>(pTemplateNode); | 615 CXFA_Node, CXFA_TraverseStrategy_XFAContainerNode>(pTemplateNode); |
616 } | 616 } |
617 CXFA_Node* pResult = NULL; | 617 CXFA_Node* pResult = nullptr; |
618 for (CXFA_Node* pCurTemplateNode = pIterator->GetCurrent(); | 618 for (CXFA_Node* pCurTemplateNode = pIterator->GetCurrent(); |
619 pCurTemplateNode;) { | 619 pCurTemplateNode;) { |
620 XFA_ELEMENT eMatchNodeType; | 620 XFA_ELEMENT eMatchNodeType; |
621 switch (pCurTemplateNode->GetClassID()) { | 621 switch (pCurTemplateNode->GetClassID()) { |
622 case XFA_ELEMENT_Subform: | 622 case XFA_ELEMENT_Subform: |
623 eMatchNodeType = XFA_ELEMENT_DataGroup; | 623 eMatchNodeType = XFA_ELEMENT_DataGroup; |
624 break; | 624 break; |
625 case XFA_ELEMENT_Field: { | 625 case XFA_ELEMENT_Field: { |
626 eMatchNodeType = XFA_FieldIsMultiListBox(pCurTemplateNode) | 626 eMatchNodeType = XFA_FieldIsMultiListBox(pCurTemplateNode) |
627 ? XFA_ELEMENT_DataGroup | 627 ? XFA_ELEMENT_DataGroup |
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
746 } | 746 } |
747 } | 747 } |
748 static CXFA_Node* XFA_DataMerge_CopyContainer_SubformSet( | 748 static CXFA_Node* XFA_DataMerge_CopyContainer_SubformSet( |
749 CXFA_Document* pDocument, | 749 CXFA_Document* pDocument, |
750 CXFA_Node* pTemplateNode, | 750 CXFA_Node* pTemplateNode, |
751 CXFA_Node* pFormParentNode, | 751 CXFA_Node* pFormParentNode, |
752 CXFA_Node* pDataScope, | 752 CXFA_Node* pDataScope, |
753 FX_BOOL bOneInstance, | 753 FX_BOOL bOneInstance, |
754 FX_BOOL bDataMerge) { | 754 FX_BOOL bDataMerge) { |
755 XFA_ELEMENT eElement = pTemplateNode->GetClassID(); | 755 XFA_ELEMENT eElement = pTemplateNode->GetClassID(); |
756 CXFA_Node* pOccurNode = NULL; | 756 CXFA_Node* pOccurNode = nullptr; |
757 CXFA_Node* pFirstInstance = NULL; | 757 CXFA_Node* pFirstInstance = nullptr; |
758 FX_BOOL bUseInstanceManager = | 758 FX_BOOL bUseInstanceManager = |
759 pFormParentNode->GetClassID() != XFA_ELEMENT_Area; | 759 pFormParentNode->GetClassID() != XFA_ELEMENT_Area; |
760 CXFA_Node* pInstMgrNode = NULL; | 760 CXFA_Node* pInstMgrNode = nullptr; |
761 CXFA_NodeArray subformArray; | 761 CXFA_NodeArray subformArray; |
762 CXFA_NodeArray* pSearchArray = NULL; | 762 CXFA_NodeArray* pSearchArray = nullptr; |
763 if (!bOneInstance && | 763 if (!bOneInstance && |
764 (eElement == XFA_ELEMENT_SubformSet || eElement == XFA_ELEMENT_Subform)) { | 764 (eElement == XFA_ELEMENT_SubformSet || eElement == XFA_ELEMENT_Subform)) { |
765 pInstMgrNode = | 765 pInstMgrNode = |
766 bUseInstanceManager | 766 bUseInstanceManager |
767 ? XFA_NodeMerge_CloneOrMergeInstanceManager( | 767 ? XFA_NodeMerge_CloneOrMergeInstanceManager( |
768 pDocument, pFormParentNode, pTemplateNode, subformArray) | 768 pDocument, pFormParentNode, pTemplateNode, subformArray) |
769 : NULL; | 769 : nullptr; |
770 if (CXFA_Node* pOccurTemplateNode = | 770 if (CXFA_Node* pOccurTemplateNode = |
771 pTemplateNode->GetFirstChildByClass(XFA_ELEMENT_Occur)) { | 771 pTemplateNode->GetFirstChildByClass(XFA_ELEMENT_Occur)) { |
772 pOccurNode = pInstMgrNode | 772 pOccurNode = pInstMgrNode |
773 ? XFA_NodeMerge_CloneOrMergeContainer( | 773 ? XFA_NodeMerge_CloneOrMergeContainer( |
774 pDocument, pInstMgrNode, pOccurTemplateNode, FALSE) | 774 pDocument, pInstMgrNode, pOccurTemplateNode, FALSE) |
775 : pOccurTemplateNode; | 775 : pOccurTemplateNode; |
776 } else if (pInstMgrNode) { | 776 } else if (pInstMgrNode) { |
777 pOccurNode = pInstMgrNode->GetFirstChildByClass(XFA_ELEMENT_Occur); | 777 pOccurNode = pInstMgrNode->GetFirstChildByClass(XFA_ELEMENT_Occur); |
778 if (pOccurNode) { | 778 if (pOccurNode) { |
779 pOccurNode->ClearFlag(XFA_NODEFLAG_UnusedNode); | 779 pOccurNode->ClearFlag(XFA_NODEFLAG_UnusedNode); |
780 } | 780 } |
781 } | 781 } |
782 if (pInstMgrNode) { | 782 if (pInstMgrNode) { |
783 pInstMgrNode->SetFlag(XFA_NODEFLAG_Initialized, true); | 783 pInstMgrNode->SetFlag(XFA_NODEFLAG_Initialized, true); |
784 pSearchArray = &subformArray; | 784 pSearchArray = &subformArray; |
785 if (pFormParentNode->GetClassID() == XFA_ELEMENT_PageArea) { | 785 if (pFormParentNode->GetClassID() == XFA_ELEMENT_PageArea) { |
786 bOneInstance = TRUE; | 786 bOneInstance = TRUE; |
787 if (subformArray.GetSize() < 1) { | 787 if (subformArray.GetSize() < 1) { |
788 pSearchArray = NULL; | 788 pSearchArray = nullptr; |
789 } | 789 } |
790 } else if ((pTemplateNode->GetNameHash() == 0) && | 790 } else if ((pTemplateNode->GetNameHash() == 0) && |
791 (subformArray.GetSize() < 1)) { | 791 (subformArray.GetSize() < 1)) { |
792 pSearchArray = NULL; | 792 pSearchArray = nullptr; |
793 } | 793 } |
794 } | 794 } |
795 } | 795 } |
796 int32_t iMax = 1, iInit = 1, iMin = 1; | 796 int32_t iMax = 1, iInit = 1, iMin = 1; |
797 if (!bOneInstance) { | 797 if (!bOneInstance) { |
798 XFA_GetOccurInfo(pOccurNode, iMin, iMax, iInit); | 798 XFA_GetOccurInfo(pOccurNode, iMin, iMax, iInit); |
799 } | 799 } |
800 XFA_ATTRIBUTEENUM eRelation = | 800 XFA_ATTRIBUTEENUM eRelation = |
801 eElement == XFA_ELEMENT_SubformSet | 801 eElement == XFA_ELEMENT_SubformSet |
802 ? pTemplateNode->GetEnum(XFA_ATTRIBUTE_Relation) | 802 ? pTemplateNode->GetEnum(XFA_ATTRIBUTE_Relation) |
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
883 XFA_NodeMerge_CloneOrMergeContainer(pDocument, pSubformSetNode, | 883 XFA_NodeMerge_CloneOrMergeContainer(pDocument, pSubformSetNode, |
884 pTemplateChild, TRUE); | 884 pTemplateChild, TRUE); |
885 } else if (pTemplateChild->GetObjectType() == | 885 } else if (pTemplateChild->GetObjectType() == |
886 XFA_OBJECTTYPE_ContainerNode) { | 886 XFA_OBJECTTYPE_ContainerNode) { |
887 bSelfMatch = FALSE; | 887 bSelfMatch = FALSE; |
888 eBindMatch = XFA_ATTRIBUTEENUM_None; | 888 eBindMatch = XFA_ATTRIBUTEENUM_None; |
889 CXFA_Node* pDataMatch; | 889 CXFA_Node* pDataMatch; |
890 if (eRelation != XFA_ATTRIBUTEENUM_Ordered && | 890 if (eRelation != XFA_ATTRIBUTEENUM_Ordered && |
891 (pDataMatch = XFA_DataMerge_FindMatchingDataNode( | 891 (pDataMatch = XFA_DataMerge_FindMatchingDataNode( |
892 pDocument, pTemplateChild, pDataScope, bAccessedDataDOM, | 892 pDocument, pTemplateChild, pDataScope, bAccessedDataDOM, |
893 FALSE, NULL, bSelfMatch, eBindMatch)) != nullptr) { | 893 FALSE, nullptr, bSelfMatch, eBindMatch)) != nullptr) { |
894 XFA_DataMerge_RecurseRecord sNewRecord = {pTemplateChild, | 894 XFA_DataMerge_RecurseRecord sNewRecord = {pTemplateChild, |
895 pDataMatch}; | 895 pDataMatch}; |
896 if (bSelfMatch) { | 896 if (bSelfMatch) { |
897 rgItemMatchList.InsertAt(0, sNewRecord); | 897 rgItemMatchList.InsertAt(0, sNewRecord); |
898 } else { | 898 } else { |
899 rgItemMatchList.Add(sNewRecord); | 899 rgItemMatchList.Add(sNewRecord); |
900 } | 900 } |
901 } else { | 901 } else { |
902 rgItemUnmatchList.Add(pTemplateChild); | 902 rgItemUnmatchList.Add(pTemplateChild); |
903 } | 903 } |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
958 if (iLimit < iMin) { | 958 if (iLimit < iMin) { |
959 iLimit = iInit; | 959 iLimit = iInit; |
960 } | 960 } |
961 } | 961 } |
962 for (; (iLimit < 0 || iCurRepeatIndex < iLimit); iCurRepeatIndex++) { | 962 for (; (iLimit < 0 || iCurRepeatIndex < iLimit); iCurRepeatIndex++) { |
963 if (pInstMgrNode) { | 963 if (pInstMgrNode) { |
964 if (pSearchArray && pSearchArray->GetSize() < 1) { | 964 if (pSearchArray && pSearchArray->GetSize() < 1) { |
965 if (pTemplateNode->GetNameHash() != 0) { | 965 if (pTemplateNode->GetNameHash() != 0) { |
966 break; | 966 break; |
967 } | 967 } |
968 pSearchArray = NULL; | 968 pSearchArray = nullptr; |
969 } | 969 } |
970 } else if (!XFA_DataMerge_FindFormDOMInstance( | 970 } else if (!XFA_DataMerge_FindFormDOMInstance( |
971 pDocument, pTemplateNode->GetClassID(), | 971 pDocument, pTemplateNode->GetClassID(), |
972 pTemplateNode->GetNameHash(), pFormParentNode)) { | 972 pTemplateNode->GetNameHash(), pFormParentNode)) { |
973 break; | 973 break; |
974 } | 974 } |
975 CXFA_Node* pSubformNode = XFA_NodeMerge_CloneOrMergeContainer( | 975 CXFA_Node* pSubformNode = XFA_NodeMerge_CloneOrMergeContainer( |
976 pDocument, pFormParentNode, pTemplateNode, FALSE, pSearchArray); | 976 pDocument, pFormParentNode, pTemplateNode, FALSE, pSearchArray); |
977 ASSERT(pSubformNode); | 977 ASSERT(pSubformNode); |
978 if (!pFirstInstance) { | 978 if (!pFirstInstance) { |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1036 pTemplateNode->GetNodeItem(XFA_NODEITEM_FirstChild); | 1036 pTemplateNode->GetNodeItem(XFA_NODEITEM_FirstChild); |
1037 pTemplateChildNode; pTemplateChildNode = pTemplateChildNode->GetNodeItem( | 1037 pTemplateChildNode; pTemplateChildNode = pTemplateChildNode->GetNodeItem( |
1038 XFA_NODEITEM_NextSibling)) { | 1038 XFA_NODEITEM_NextSibling)) { |
1039 if (XFA_NeedGenerateForm(pTemplateChildNode)) { | 1039 if (XFA_NeedGenerateForm(pTemplateChildNode)) { |
1040 XFA_NodeMerge_CloneOrMergeContainer(pDocument, pFieldNode, | 1040 XFA_NodeMerge_CloneOrMergeContainer(pDocument, pFieldNode, |
1041 pTemplateChildNode, TRUE); | 1041 pTemplateChildNode, TRUE); |
1042 } else if (pTemplateNode->GetClassID() == XFA_ELEMENT_ExclGroup && | 1042 } else if (pTemplateNode->GetClassID() == XFA_ELEMENT_ExclGroup && |
1043 pTemplateChildNode->IsContainerNode()) { | 1043 pTemplateChildNode->IsContainerNode()) { |
1044 if (pTemplateChildNode->GetClassID() == XFA_ELEMENT_Field) { | 1044 if (pTemplateChildNode->GetClassID() == XFA_ELEMENT_Field) { |
1045 XFA_DataMerge_CopyContainer_Field(pDocument, pTemplateChildNode, | 1045 XFA_DataMerge_CopyContainer_Field(pDocument, pTemplateChildNode, |
1046 pFieldNode, NULL, FALSE); | 1046 pFieldNode, nullptr, FALSE); |
1047 } | 1047 } |
1048 } | 1048 } |
1049 } | 1049 } |
1050 if (bDataMerge) { | 1050 if (bDataMerge) { |
1051 FX_BOOL bAccessedDataDOM = FALSE; | 1051 FX_BOOL bAccessedDataDOM = FALSE; |
1052 FX_BOOL bSelfMatch = FALSE; | 1052 FX_BOOL bSelfMatch = FALSE; |
1053 XFA_ATTRIBUTEENUM eBindMatch; | 1053 XFA_ATTRIBUTEENUM eBindMatch; |
1054 CXFA_Node* pDataNode = XFA_DataMerge_FindMatchingDataNode( | 1054 CXFA_Node* pDataNode = XFA_DataMerge_FindMatchingDataNode( |
1055 pDocument, pTemplateNode, pDataScope, bAccessedDataDOM, TRUE, NULL, | 1055 pDocument, pTemplateNode, pDataScope, bAccessedDataDOM, TRUE, nullptr, |
1056 bSelfMatch, eBindMatch, bUpLevel); | 1056 bSelfMatch, eBindMatch, bUpLevel); |
1057 if (pDataNode) { | 1057 if (pDataNode) { |
1058 XFA_DataMerge_CreateDataBinding(pFieldNode, pDataNode); | 1058 XFA_DataMerge_CreateDataBinding(pFieldNode, pDataNode); |
1059 } | 1059 } |
1060 } else { | 1060 } else { |
1061 XFA_DataMerge_FormValueNode_MatchNoneCreateChild(pFieldNode); | 1061 XFA_DataMerge_FormValueNode_MatchNoneCreateChild(pFieldNode); |
1062 } | 1062 } |
1063 return pFieldNode; | 1063 return pFieldNode; |
1064 } | 1064 } |
1065 CXFA_Node* CXFA_Document::DataMerge_CopyContainer(CXFA_Node* pTemplateNode, | 1065 CXFA_Node* CXFA_Document::DataMerge_CopyContainer(CXFA_Node* pTemplateNode, |
(...skipping 16 matching lines...) Expand all Loading... |
1082 return XFA_DataMerge_CopyContainer_Field( | 1082 return XFA_DataMerge_CopyContainer_Field( |
1083 this, pTemplateNode, pFormNode, pDataScope, bDataMerge, bUpLevel); | 1083 this, pTemplateNode, pFormNode, pDataScope, bDataMerge, bUpLevel); |
1084 case XFA_ELEMENT_PageSet: | 1084 case XFA_ELEMENT_PageSet: |
1085 break; | 1085 break; |
1086 case XFA_ELEMENT_Variables: | 1086 case XFA_ELEMENT_Variables: |
1087 break; | 1087 break; |
1088 default: | 1088 default: |
1089 ASSERT(FALSE); | 1089 ASSERT(FALSE); |
1090 break; | 1090 break; |
1091 } | 1091 } |
1092 return NULL; | 1092 return nullptr; |
1093 } | 1093 } |
1094 | 1094 |
1095 static void XFA_DataMerge_UpdateBindingRelations(CXFA_Document* pDocument, | 1095 static void XFA_DataMerge_UpdateBindingRelations(CXFA_Document* pDocument, |
1096 CXFA_Node* pFormNode, | 1096 CXFA_Node* pFormNode, |
1097 CXFA_Node* pDataScope, | 1097 CXFA_Node* pDataScope, |
1098 FX_BOOL bDataRef, | 1098 FX_BOOL bDataRef, |
1099 FX_BOOL bParentDataRef) { | 1099 FX_BOOL bParentDataRef) { |
1100 FX_BOOL bMatchRef = TRUE; | 1100 FX_BOOL bMatchRef = TRUE; |
1101 XFA_ELEMENT eClassID = pFormNode->GetClassID(); | 1101 XFA_ELEMENT eClassID = pFormNode->GetClassID(); |
1102 CXFA_Node* pDataNode = pFormNode->GetBindData(); | 1102 CXFA_Node* pDataNode = pFormNode->GetBindData(); |
1103 if (eClassID == XFA_ELEMENT_Subform || eClassID == XFA_ELEMENT_ExclGroup || | 1103 if (eClassID == XFA_ELEMENT_Subform || eClassID == XFA_ELEMENT_ExclGroup || |
1104 eClassID == XFA_ELEMENT_Field) { | 1104 eClassID == XFA_ELEMENT_Field) { |
1105 CXFA_Node* pTemplateNode = pFormNode->GetTemplateNode(); | 1105 CXFA_Node* pTemplateNode = pFormNode->GetTemplateNode(); |
1106 CXFA_Node* pTemplateNodeBind = | 1106 CXFA_Node* pTemplateNodeBind = |
1107 pTemplateNode ? pTemplateNode->GetFirstChildByClass(XFA_ELEMENT_Bind) | 1107 pTemplateNode ? pTemplateNode->GetFirstChildByClass(XFA_ELEMENT_Bind) |
1108 : NULL; | 1108 : nullptr; |
1109 XFA_ATTRIBUTEENUM eMatch = | 1109 XFA_ATTRIBUTEENUM eMatch = |
1110 pTemplateNodeBind ? pTemplateNodeBind->GetEnum(XFA_ATTRIBUTE_Match) | 1110 pTemplateNodeBind ? pTemplateNodeBind->GetEnum(XFA_ATTRIBUTE_Match) |
1111 : XFA_ATTRIBUTEENUM_Once; | 1111 : XFA_ATTRIBUTEENUM_Once; |
1112 switch (eMatch) { | 1112 switch (eMatch) { |
1113 case XFA_ATTRIBUTEENUM_None: | 1113 case XFA_ATTRIBUTEENUM_None: |
1114 if (!bDataRef || bParentDataRef) { | 1114 if (!bDataRef || bParentDataRef) { |
1115 XFA_DataMerge_FormValueNode_MatchNoneCreateChild(pFormNode); | 1115 XFA_DataMerge_FormValueNode_MatchNoneCreateChild(pFormNode); |
1116 } | 1116 } |
1117 break; | 1117 break; |
1118 case XFA_ATTRIBUTEENUM_Once: | 1118 case XFA_ATTRIBUTEENUM_Once: |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1179 bMatchRef = bDataRef; | 1179 bMatchRef = bDataRef; |
1180 bParentDataRef = TRUE; | 1180 bParentDataRef = TRUE; |
1181 if (!pDataNode && bDataRef) { | 1181 if (!pDataNode && bDataRef) { |
1182 CFX_WideStringC wsRef = | 1182 CFX_WideStringC wsRef = |
1183 pTemplateNodeBind->GetCData(XFA_ATTRIBUTE_Ref); | 1183 pTemplateNodeBind->GetCData(XFA_ATTRIBUTE_Ref); |
1184 uint32_t dFlags = | 1184 uint32_t dFlags = |
1185 XFA_RESOLVENODE_Children | XFA_RESOLVENODE_CreateNode; | 1185 XFA_RESOLVENODE_Children | XFA_RESOLVENODE_CreateNode; |
1186 XFA_RESOLVENODE_RS rs; | 1186 XFA_RESOLVENODE_RS rs; |
1187 pDocument->GetScriptContext()->ResolveObjects(pDataScope, wsRef, rs, | 1187 pDocument->GetScriptContext()->ResolveObjects(pDataScope, wsRef, rs, |
1188 dFlags, pTemplateNode); | 1188 dFlags, pTemplateNode); |
1189 CXFA_Object* pObject = (rs.nodes.GetSize() > 0) ? rs.nodes[0] : NULL; | 1189 CXFA_Object* pObject = |
| 1190 (rs.nodes.GetSize() > 0) ? rs.nodes[0] : nullptr; |
1190 pDataNode = ToNode(pObject); | 1191 pDataNode = ToNode(pObject); |
1191 if (pDataNode) { | 1192 if (pDataNode) { |
1192 XFA_DataMerge_CreateDataBinding( | 1193 XFA_DataMerge_CreateDataBinding( |
1193 pFormNode, pDataNode, | 1194 pFormNode, pDataNode, |
1194 rs.dwFlags == XFA_RESOVENODE_RSTYPE_ExistNodes); | 1195 rs.dwFlags == XFA_RESOVENODE_RSTYPE_ExistNodes); |
1195 } else { | 1196 } else { |
1196 XFA_DataMerge_FormValueNode_MatchNoneCreateChild(pFormNode); | 1197 XFA_DataMerge_FormValueNode_MatchNoneCreateChild(pFormNode); |
1197 } | 1198 } |
1198 } | 1199 } |
1199 } break; | 1200 } break; |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1259 if (!pDatasetsRoot) { | 1260 if (!pDatasetsRoot) { |
1260 CFDE_XMLElement* pDatasetsXMLNode = new CFDE_XMLElement(L"xfa:datasets"); | 1261 CFDE_XMLElement* pDatasetsXMLNode = new CFDE_XMLElement(L"xfa:datasets"); |
1261 pDatasetsXMLNode->SetString(L"xmlns:xfa", | 1262 pDatasetsXMLNode->SetString(L"xmlns:xfa", |
1262 L"http://www.xfa.org/schema/xfa-data/1.0/"); | 1263 L"http://www.xfa.org/schema/xfa-data/1.0/"); |
1263 pDatasetsRoot = CreateNode(XFA_XDPPACKET_Datasets, XFA_ELEMENT_DataModel); | 1264 pDatasetsRoot = CreateNode(XFA_XDPPACKET_Datasets, XFA_ELEMENT_DataModel); |
1264 pDatasetsRoot->SetCData(XFA_ATTRIBUTE_Name, L"datasets"); | 1265 pDatasetsRoot->SetCData(XFA_ATTRIBUTE_Name, L"datasets"); |
1265 m_pRootNode->GetXMLMappingNode()->InsertChildNode(pDatasetsXMLNode); | 1266 m_pRootNode->GetXMLMappingNode()->InsertChildNode(pDatasetsXMLNode); |
1266 m_pRootNode->InsertChild(pDatasetsRoot); | 1267 m_pRootNode->InsertChild(pDatasetsRoot); |
1267 pDatasetsRoot->SetXMLMappingNode(pDatasetsXMLNode); | 1268 pDatasetsRoot->SetXMLMappingNode(pDatasetsXMLNode); |
1268 } | 1269 } |
1269 CXFA_Node *pDataRoot = NULL, *pDDRoot = NULL; | 1270 CXFA_Node *pDataRoot = nullptr, *pDDRoot = nullptr; |
1270 CFX_WideString wsDatasetsURI; | 1271 CFX_WideString wsDatasetsURI; |
1271 pDatasetsRoot->TryNamespace(wsDatasetsURI); | 1272 pDatasetsRoot->TryNamespace(wsDatasetsURI); |
1272 for (CXFA_Node* pChildNode = | 1273 for (CXFA_Node* pChildNode = |
1273 pDatasetsRoot->GetNodeItem(XFA_NODEITEM_FirstChild); | 1274 pDatasetsRoot->GetNodeItem(XFA_NODEITEM_FirstChild); |
1274 pChildNode; | 1275 pChildNode; |
1275 pChildNode = pChildNode->GetNodeItem(XFA_NODEITEM_NextSibling)) { | 1276 pChildNode = pChildNode->GetNodeItem(XFA_NODEITEM_NextSibling)) { |
1276 if (pChildNode->GetClassID() != XFA_ELEMENT_DataGroup) { | 1277 if (pChildNode->GetClassID() != XFA_ELEMENT_DataGroup) { |
1277 continue; | 1278 continue; |
1278 } | 1279 } |
1279 CFX_WideString wsNamespaceURI; | 1280 CFX_WideString wsNamespaceURI; |
(...skipping 26 matching lines...) Expand all Loading... |
1306 } | 1307 } |
1307 CXFA_Node* pDataTopLevel = | 1308 CXFA_Node* pDataTopLevel = |
1308 pDataRoot->GetFirstChildByClass(XFA_ELEMENT_DataGroup); | 1309 pDataRoot->GetFirstChildByClass(XFA_ELEMENT_DataGroup); |
1309 uint32_t dwNameHash = pDataTopLevel ? pDataTopLevel->GetNameHash() : 0; | 1310 uint32_t dwNameHash = pDataTopLevel ? pDataTopLevel->GetNameHash() : 0; |
1310 CXFA_Node* pTemplateRoot = | 1311 CXFA_Node* pTemplateRoot = |
1311 m_pRootNode->GetFirstChildByClass(XFA_ELEMENT_Template); | 1312 m_pRootNode->GetFirstChildByClass(XFA_ELEMENT_Template); |
1312 if (!pTemplateRoot) { | 1313 if (!pTemplateRoot) { |
1313 return; | 1314 return; |
1314 } | 1315 } |
1315 CXFA_Node* pTemplateChosen = | 1316 CXFA_Node* pTemplateChosen = |
1316 dwNameHash != 0 ? pTemplateRoot->GetFirstChildByName(dwNameHash) : NULL; | 1317 dwNameHash != 0 ? pTemplateRoot->GetFirstChildByName(dwNameHash) |
| 1318 : nullptr; |
1317 if (!pTemplateChosen || | 1319 if (!pTemplateChosen || |
1318 pTemplateChosen->GetClassID() != XFA_ELEMENT_Subform) { | 1320 pTemplateChosen->GetClassID() != XFA_ELEMENT_Subform) { |
1319 pTemplateChosen = pTemplateRoot->GetFirstChildByClass(XFA_ELEMENT_Subform); | 1321 pTemplateChosen = pTemplateRoot->GetFirstChildByClass(XFA_ELEMENT_Subform); |
1320 } | 1322 } |
1321 if (!pTemplateChosen) { | 1323 if (!pTemplateChosen) { |
1322 return; | 1324 return; |
1323 } | 1325 } |
1324 CXFA_Node* pFormRoot = m_pRootNode->GetFirstChildByClass(XFA_ELEMENT_Form); | 1326 CXFA_Node* pFormRoot = m_pRootNode->GetFirstChildByClass(XFA_ELEMENT_Form); |
1325 FX_BOOL bEmptyForm = FALSE; | 1327 FX_BOOL bEmptyForm = FALSE; |
1326 if (!pFormRoot) { | 1328 if (!pFormRoot) { |
1327 bEmptyForm = TRUE; | 1329 bEmptyForm = TRUE; |
1328 pFormRoot = CreateNode(XFA_XDPPACKET_Form, XFA_ELEMENT_Form); | 1330 pFormRoot = CreateNode(XFA_XDPPACKET_Form, XFA_ELEMENT_Form); |
1329 ASSERT(pFormRoot); | 1331 ASSERT(pFormRoot); |
1330 pFormRoot->SetCData(XFA_ATTRIBUTE_Name, L"form"); | 1332 pFormRoot->SetCData(XFA_ATTRIBUTE_Name, L"form"); |
1331 m_pRootNode->InsertChild(pFormRoot, NULL); | 1333 m_pRootNode->InsertChild(pFormRoot, nullptr); |
1332 } else { | 1334 } else { |
1333 CXFA_NodeIteratorTemplate<CXFA_Node, CXFA_TraverseStrategy_XFANode> | 1335 CXFA_NodeIteratorTemplate<CXFA_Node, CXFA_TraverseStrategy_XFANode> |
1334 sIterator(pFormRoot); | 1336 sIterator(pFormRoot); |
1335 for (CXFA_Node* pNode = sIterator.MoveToNext(); pNode; | 1337 for (CXFA_Node* pNode = sIterator.MoveToNext(); pNode; |
1336 pNode = sIterator.MoveToNext()) { | 1338 pNode = sIterator.MoveToNext()) { |
1337 pNode->SetFlag(XFA_NODEFLAG_UnusedNode, true); | 1339 pNode->SetFlag(XFA_NODEFLAG_UnusedNode, true); |
1338 } | 1340 } |
1339 } | 1341 } |
1340 CXFA_Node* pSubformSetNode = XFA_NodeMerge_CloneOrMergeContainer( | 1342 CXFA_Node* pSubformSetNode = XFA_NodeMerge_CloneOrMergeContainer( |
1341 this, pFormRoot, pTemplateChosen, FALSE); | 1343 this, pFormRoot, pTemplateChosen, FALSE); |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1402 } | 1404 } |
1403 } | 1405 } |
1404 } | 1406 } |
1405 } | 1407 } |
1406 void CXFA_Document::DoDataRemerge(FX_BOOL bDoDataMerge) { | 1408 void CXFA_Document::DoDataRemerge(FX_BOOL bDoDataMerge) { |
1407 CXFA_Node* pFormRoot = ToNode(GetXFAObject(XFA_HASHCODE_Form)); | 1409 CXFA_Node* pFormRoot = ToNode(GetXFAObject(XFA_HASHCODE_Form)); |
1408 if (pFormRoot) { | 1410 if (pFormRoot) { |
1409 while (CXFA_Node* pNode = pFormRoot->GetNodeItem(XFA_NODEITEM_FirstChild)) { | 1411 while (CXFA_Node* pNode = pFormRoot->GetNodeItem(XFA_NODEITEM_FirstChild)) { |
1410 pFormRoot->RemoveChild(pNode); | 1412 pFormRoot->RemoveChild(pNode); |
1411 } | 1413 } |
1412 pFormRoot->SetObject(XFA_ATTRIBUTE_BindingNode, NULL); | 1414 pFormRoot->SetObject(XFA_ATTRIBUTE_BindingNode, nullptr); |
1413 } | 1415 } |
1414 XFA_DataMerge_ClearGlobalBinding(this); | 1416 XFA_DataMerge_ClearGlobalBinding(this); |
1415 if (bDoDataMerge) { | 1417 if (bDoDataMerge) { |
1416 DoDataMerge(); | 1418 DoDataMerge(); |
1417 } | 1419 } |
1418 CXFA_LayoutProcessor* pLayoutProcessor = GetLayoutProcessor(); | 1420 CXFA_LayoutProcessor* pLayoutProcessor = GetLayoutProcessor(); |
1419 pLayoutProcessor->SetForceReLayout(TRUE); | 1421 pLayoutProcessor->SetForceReLayout(TRUE); |
1420 } | 1422 } |
OLD | NEW |