Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(304)

Side by Side Diff: xfa/fxfa/parser/xfa_parser_imp.cpp

Issue 2031873003: Get rid of NULLs in xfa/ (Closed) Base URL: https://pdfium.googlesource.com/pdfium@nullptr_fpdfsdk
Patch Set: Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « xfa/fxfa/parser/xfa_parser_imp.h ('k') | xfa/fxfa/parser/xfa_script.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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_parser_imp.h" 7 #include "xfa/fxfa/parser/xfa_parser_imp.h"
8 8
9 #include <memory> 9 #include <memory>
10 10
(...skipping 26 matching lines...) Expand all
37 CXFA_SimpleParser::~CXFA_SimpleParser() { 37 CXFA_SimpleParser::~CXFA_SimpleParser() {
38 CloseParser(); 38 CloseParser();
39 } 39 }
40 void CXFA_SimpleParser::SetFactory(CXFA_Document* pFactory) { 40 void CXFA_SimpleParser::SetFactory(CXFA_Document* pFactory) {
41 m_pFactory = pFactory; 41 m_pFactory = pFactory;
42 } 42 }
43 static CFDE_XMLNode* XFA_FDEExtension_GetDocumentNode( 43 static CFDE_XMLNode* XFA_FDEExtension_GetDocumentNode(
44 CFDE_XMLDoc* pXMLDoc, 44 CFDE_XMLDoc* pXMLDoc,
45 FX_BOOL bVerifyWellFormness = FALSE) { 45 FX_BOOL bVerifyWellFormness = FALSE) {
46 if (!pXMLDoc) { 46 if (!pXMLDoc) {
47 return NULL; 47 return nullptr;
48 } 48 }
49 CFDE_XMLNode* pXMLFakeRoot = pXMLDoc->GetRoot(); 49 CFDE_XMLNode* pXMLFakeRoot = pXMLDoc->GetRoot();
50 for (CFDE_XMLNode* pXMLNode = 50 for (CFDE_XMLNode* pXMLNode =
51 pXMLFakeRoot->GetNodeItem(CFDE_XMLNode::FirstChild); 51 pXMLFakeRoot->GetNodeItem(CFDE_XMLNode::FirstChild);
52 pXMLNode; pXMLNode = pXMLNode->GetNodeItem(CFDE_XMLNode::NextSibling)) { 52 pXMLNode; pXMLNode = pXMLNode->GetNodeItem(CFDE_XMLNode::NextSibling)) {
53 if (pXMLNode->GetType() == FDE_XMLNODE_Element) { 53 if (pXMLNode->GetType() == FDE_XMLNODE_Element) {
54 if (bVerifyWellFormness) { 54 if (bVerifyWellFormness) {
55 for (CFDE_XMLNode* pNextNode = 55 for (CFDE_XMLNode* pNextNode =
56 pXMLNode->GetNodeItem(CFDE_XMLNode::NextSibling); 56 pXMLNode->GetNodeItem(CFDE_XMLNode::NextSibling);
57 pNextNode; 57 pNextNode;
58 pNextNode = pNextNode->GetNodeItem(CFDE_XMLNode::NextSibling)) { 58 pNextNode = pNextNode->GetNodeItem(CFDE_XMLNode::NextSibling)) {
59 if (pNextNode->GetType() == FDE_XMLNODE_Element) { 59 if (pNextNode->GetType() == FDE_XMLNODE_Element) {
60 return FALSE; 60 return FALSE;
61 } 61 }
62 } 62 }
63 } 63 }
64 return pXMLNode; 64 return pXMLNode;
65 } 65 }
66 } 66 }
67 return NULL; 67 return nullptr;
68 } 68 }
69 int32_t CXFA_SimpleParser::StartParse(IFX_FileRead* pStream, 69 int32_t CXFA_SimpleParser::StartParse(IFX_FileRead* pStream,
70 XFA_XDPPACKET ePacketID) { 70 XFA_XDPPACKET ePacketID) {
71 CloseParser(); 71 CloseParser();
72 m_pFileRead = pStream; 72 m_pFileRead = pStream;
73 m_pStream = IFX_Stream::CreateStream( 73 m_pStream = IFX_Stream::CreateStream(
74 pStream, FX_STREAMACCESS_Read | FX_STREAMACCESS_Text); 74 pStream, FX_STREAMACCESS_Read | FX_STREAMACCESS_Text);
75 if (m_pStream == NULL) { 75 if (!m_pStream)
76 return XFA_PARSESTATUS_StreamErr; 76 return XFA_PARSESTATUS_StreamErr;
77 } 77
78 uint16_t wCodePage = m_pStream->GetCodePage(); 78 uint16_t wCodePage = m_pStream->GetCodePage();
79 if (wCodePage != FX_CODEPAGE_UTF16LE && wCodePage != FX_CODEPAGE_UTF16BE && 79 if (wCodePage != FX_CODEPAGE_UTF16LE && wCodePage != FX_CODEPAGE_UTF16BE &&
80 wCodePage != FX_CODEPAGE_UTF8) { 80 wCodePage != FX_CODEPAGE_UTF8) {
81 m_pStream->SetCodePage(FX_CODEPAGE_UTF8); 81 m_pStream->SetCodePage(FX_CODEPAGE_UTF8);
82 } 82 }
83 m_pXMLDoc = new CFDE_XMLDoc; 83 m_pXMLDoc = new CFDE_XMLDoc;
84 m_pXMLParser = new CXFA_XMLParser(m_pXMLDoc->GetRoot(), m_pStream); 84 m_pXMLParser = new CXFA_XMLParser(m_pXMLDoc->GetRoot(), m_pStream);
85 if (!m_pXMLDoc->LoadXML(m_pXMLParser)) { 85 if (!m_pXMLDoc->LoadXML(m_pXMLParser)) {
86 return XFA_PARSESTATUS_StatusErr; 86 return XFA_PARSESTATUS_StatusErr;
87 } 87 }
88 m_ePacketID = ePacketID; 88 m_ePacketID = ePacketID;
89 return XFA_PARSESTATUS_Ready; 89 return XFA_PARSESTATUS_Ready;
90 } 90 }
91 int32_t CXFA_SimpleParser::DoParse(IFX_Pause* pPause) { 91 int32_t CXFA_SimpleParser::DoParse(IFX_Pause* pPause) {
92 if (m_pXMLDoc == NULL || m_ePacketID == XFA_XDPPACKET_UNKNOWN) { 92 if (!m_pXMLDoc || m_ePacketID == XFA_XDPPACKET_UNKNOWN)
93 return XFA_PARSESTATUS_StatusErr; 93 return XFA_PARSESTATUS_StatusErr;
94 } 94
95 int32_t iRet = m_pXMLDoc->DoLoad(pPause); 95 int32_t iRet = m_pXMLDoc->DoLoad(pPause);
96 if (iRet < 0) { 96 if (iRet < 0) {
97 return XFA_PARSESTATUS_SyntaxErr; 97 return XFA_PARSESTATUS_SyntaxErr;
98 } 98 }
99 if (iRet < 100) { 99 if (iRet < 100) {
100 return iRet / 2; 100 return iRet / 2;
101 } 101 }
102 m_pRootNode = ParseAsXDPPacket(XFA_FDEExtension_GetDocumentNode(m_pXMLDoc), 102 m_pRootNode = ParseAsXDPPacket(XFA_FDEExtension_GetDocumentNode(m_pXMLDoc),
103 m_ePacketID); 103 m_ePacketID);
104 m_pXMLDoc->CloseXML(); 104 m_pXMLDoc->CloseXML();
105 if (m_pStream) { 105 if (m_pStream) {
106 m_pStream->Release(); 106 m_pStream->Release();
107 m_pStream = NULL; 107 m_pStream = nullptr;
108 } 108 }
109 if (!m_pRootNode) { 109 if (!m_pRootNode) {
110 return XFA_PARSESTATUS_StatusErr; 110 return XFA_PARSESTATUS_StatusErr;
111 } 111 }
112 return XFA_PARSESTATUS_Done; 112 return XFA_PARSESTATUS_Done;
113 } 113 }
114 int32_t CXFA_SimpleParser::ParseXMLData(const CFX_WideString& wsXML, 114 int32_t CXFA_SimpleParser::ParseXMLData(const CFX_WideString& wsXML,
115 CFDE_XMLNode*& pXMLNode, 115 CFDE_XMLNode*& pXMLNode,
116 IFX_Pause* pPause) { 116 IFX_Pause* pPause) {
117 CloseParser(); 117 CloseParser();
118 pXMLNode = NULL; 118 pXMLNode = nullptr;
119 IFX_Stream* pStream = XFA_CreateWideTextRead(wsXML); 119 IFX_Stream* pStream = XFA_CreateWideTextRead(wsXML);
120 if (!pStream) { 120 if (!pStream) {
121 return XFA_PARSESTATUS_StreamErr; 121 return XFA_PARSESTATUS_StreamErr;
122 } 122 }
123 m_pStream = pStream; 123 m_pStream = pStream;
124 m_pXMLDoc = new CFDE_XMLDoc; 124 m_pXMLDoc = new CFDE_XMLDoc;
125 CXFA_XMLParser* pParser = new CXFA_XMLParser(m_pXMLDoc->GetRoot(), m_pStream); 125 CXFA_XMLParser* pParser = new CXFA_XMLParser(m_pXMLDoc->GetRoot(), m_pStream);
126 pParser->m_dwCheckStatus = 0x03; 126 pParser->m_dwCheckStatus = 0x03;
127 if (!m_pXMLDoc->LoadXML(pParser)) { 127 if (!m_pXMLDoc->LoadXML(pParser)) {
128 return XFA_PARSESTATUS_StatusErr; 128 return XFA_PARSESTATUS_StatusErr;
129 } 129 }
130 int32_t iRet = m_pXMLDoc->DoLoad(pPause); 130 int32_t iRet = m_pXMLDoc->DoLoad(pPause);
131 if (iRet < 0 || iRet >= 100) { 131 if (iRet < 0 || iRet >= 100) {
132 m_pXMLDoc->CloseXML(); 132 m_pXMLDoc->CloseXML();
133 } 133 }
134 if (iRet < 0) { 134 if (iRet < 0) {
135 return XFA_PARSESTATUS_SyntaxErr; 135 return XFA_PARSESTATUS_SyntaxErr;
136 } 136 }
137 if (iRet < 100) { 137 if (iRet < 100) {
138 return iRet / 2; 138 return iRet / 2;
139 } 139 }
140 if (m_pStream) { 140 if (m_pStream) {
141 m_pStream->Release(); 141 m_pStream->Release();
142 m_pStream = NULL; 142 m_pStream = nullptr;
143 } 143 }
144 pXMLNode = XFA_FDEExtension_GetDocumentNode(m_pXMLDoc); 144 pXMLNode = XFA_FDEExtension_GetDocumentNode(m_pXMLDoc);
145 return XFA_PARSESTATUS_Done; 145 return XFA_PARSESTATUS_Done;
146 } 146 }
147 147
148 void CXFA_SimpleParser::ConstructXFANode(CXFA_Node* pXFANode, 148 void CXFA_SimpleParser::ConstructXFANode(CXFA_Node* pXFANode,
149 CFDE_XMLNode* pXMLNode) { 149 CFDE_XMLNode* pXMLNode) {
150 XFA_XDPPACKET ePacketID = (XFA_XDPPACKET)pXFANode->GetPacketID(); 150 XFA_XDPPACKET ePacketID = (XFA_XDPPACKET)pXFANode->GetPacketID();
151 if (ePacketID == XFA_XDPPACKET_Datasets) { 151 if (ePacketID == XFA_XDPPACKET_Datasets) {
152 if (pXFANode->GetClassID() == XFA_ELEMENT_DataValue) { 152 if (pXFANode->GetClassID() == XFA_ELEMENT_DataValue) {
(...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after
334 } 334 }
335 wsValue = wsAttrValue; 335 wsValue = wsAttrValue;
336 return TRUE; 336 return TRUE;
337 } 337 }
338 return FALSE; 338 return FALSE;
339 } 339 }
340 CXFA_Node* CXFA_SimpleParser::ParseAsXDPPacket(CFDE_XMLNode* pXMLDocumentNode, 340 CXFA_Node* CXFA_SimpleParser::ParseAsXDPPacket(CFDE_XMLNode* pXMLDocumentNode,
341 XFA_XDPPACKET ePacketID) { 341 XFA_XDPPACKET ePacketID) {
342 switch (ePacketID) { 342 switch (ePacketID) {
343 case XFA_XDPPACKET_UNKNOWN: 343 case XFA_XDPPACKET_UNKNOWN:
344 return NULL; 344 return nullptr;
345 case XFA_XDPPACKET_XDP: 345 case XFA_XDPPACKET_XDP:
346 return ParseAsXDPPacket_XDP(pXMLDocumentNode, ePacketID); 346 return ParseAsXDPPacket_XDP(pXMLDocumentNode, ePacketID);
347 case XFA_XDPPACKET_Config: 347 case XFA_XDPPACKET_Config:
348 return ParseAsXDPPacket_Config(pXMLDocumentNode, ePacketID); 348 return ParseAsXDPPacket_Config(pXMLDocumentNode, ePacketID);
349 case XFA_XDPPACKET_Template: 349 case XFA_XDPPACKET_Template:
350 case XFA_XDPPACKET_Form: 350 case XFA_XDPPACKET_Form:
351 return ParseAsXDPPacket_TemplateForm(pXMLDocumentNode, ePacketID); 351 return ParseAsXDPPacket_TemplateForm(pXMLDocumentNode, ePacketID);
352 case XFA_XDPPACKET_Datasets: 352 case XFA_XDPPACKET_Datasets:
353 return ParseAsXDPPacket_Data(pXMLDocumentNode, ePacketID); 353 return ParseAsXDPPacket_Data(pXMLDocumentNode, ePacketID);
354 case XFA_XDPPACKET_Xdc: 354 case XFA_XDPPACKET_Xdc:
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
404 pPacketInfo->pURI, 404 pPacketInfo->pURI,
405 pPacketInfo->eFlags)) { 405 pPacketInfo->eFlags)) {
406 continue; 406 continue;
407 } 407 }
408 if (pXFARootNode->GetFirstChildByName(pPacketInfo->uHash)) { 408 if (pXFARootNode->GetFirstChildByName(pPacketInfo->uHash)) {
409 return nullptr; 409 return nullptr;
410 } 410 }
411 pXMLConfigDOMRoot = pChildItem; 411 pXMLConfigDOMRoot = pChildItem;
412 pXFAConfigDOMRoot = 412 pXFAConfigDOMRoot =
413 ParseAsXDPPacket_Config(pXMLConfigDOMRoot, XFA_XDPPACKET_Config); 413 ParseAsXDPPacket_Config(pXMLConfigDOMRoot, XFA_XDPPACKET_Config);
414 pXFARootNode->InsertChild(pXFAConfigDOMRoot, NULL); 414 pXFARootNode->InsertChild(pXFAConfigDOMRoot, nullptr);
415 } 415 }
416 } 416 }
417 CFDE_XMLNode* pXMLDatasetsDOMRoot = nullptr; 417 CFDE_XMLNode* pXMLDatasetsDOMRoot = nullptr;
418 CFDE_XMLNode* pXMLFormDOMRoot = nullptr; 418 CFDE_XMLNode* pXMLFormDOMRoot = nullptr;
419 CFDE_XMLNode* pXMLTemplateDOMRoot = nullptr; 419 CFDE_XMLNode* pXMLTemplateDOMRoot = nullptr;
420 { 420 {
421 for (CFDE_XMLNode* pChildItem = 421 for (CFDE_XMLNode* pChildItem =
422 pXMLDocumentNode->GetNodeItem(CFDE_XMLNode::FirstChild); 422 pXMLDocumentNode->GetNodeItem(CFDE_XMLNode::FirstChild);
423 pChildItem; 423 pChildItem;
424 pChildItem = pChildItem->GetNodeItem(CFDE_XMLNode::NextSibling)) { 424 pChildItem = pChildItem->GetNodeItem(CFDE_XMLNode::NextSibling)) {
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
500 pXFARootNode->SetXMLMappingNode(pXMLDocumentNode); 500 pXFARootNode->SetXMLMappingNode(pXMLDocumentNode);
501 return pXFARootNode; 501 return pXFARootNode;
502 } 502 }
503 CXFA_Node* CXFA_SimpleParser::ParseAsXDPPacket_Config( 503 CXFA_Node* CXFA_SimpleParser::ParseAsXDPPacket_Config(
504 CFDE_XMLNode* pXMLDocumentNode, 504 CFDE_XMLNode* pXMLDocumentNode,
505 XFA_XDPPACKET ePacketID) { 505 XFA_XDPPACKET ePacketID) {
506 if (!XFA_FDEExtension_MatchNodeName( 506 if (!XFA_FDEExtension_MatchNodeName(
507 pXMLDocumentNode, XFA_GetPacketByIndex(XFA_PACKET_Config)->pName, 507 pXMLDocumentNode, XFA_GetPacketByIndex(XFA_PACKET_Config)->pName,
508 XFA_GetPacketByIndex(XFA_PACKET_Config)->pURI, 508 XFA_GetPacketByIndex(XFA_PACKET_Config)->pURI,
509 XFA_GetPacketByIndex(XFA_PACKET_Config)->eFlags)) { 509 XFA_GetPacketByIndex(XFA_PACKET_Config)->eFlags)) {
510 return NULL; 510 return nullptr;
511 } 511 }
512 CXFA_Node* pNode = 512 CXFA_Node* pNode =
513 m_pFactory->CreateNode(XFA_XDPPACKET_Config, XFA_ELEMENT_Config); 513 m_pFactory->CreateNode(XFA_XDPPACKET_Config, XFA_ELEMENT_Config);
514 if (!pNode) { 514 if (!pNode) {
515 return NULL; 515 return nullptr;
516 } 516 }
517 pNode->SetCData(XFA_ATTRIBUTE_Name, 517 pNode->SetCData(XFA_ATTRIBUTE_Name,
518 XFA_GetPacketByIndex(XFA_PACKET_Config)->pName); 518 XFA_GetPacketByIndex(XFA_PACKET_Config)->pName);
519 if (!NormalLoader(pNode, pXMLDocumentNode, ePacketID)) { 519 if (!NormalLoader(pNode, pXMLDocumentNode, ePacketID)) {
520 return NULL; 520 return nullptr;
521 } 521 }
522 pNode->SetXMLMappingNode(pXMLDocumentNode); 522 pNode->SetXMLMappingNode(pXMLDocumentNode);
523 return pNode; 523 return pNode;
524 } 524 }
525 CXFA_Node* CXFA_SimpleParser::ParseAsXDPPacket_TemplateForm( 525 CXFA_Node* CXFA_SimpleParser::ParseAsXDPPacket_TemplateForm(
526 CFDE_XMLNode* pXMLDocumentNode, 526 CFDE_XMLNode* pXMLDocumentNode,
527 XFA_XDPPACKET ePacketID) { 527 XFA_XDPPACKET ePacketID) {
528 CXFA_Node* pNode = NULL; 528 CXFA_Node* pNode = nullptr;
529 if (ePacketID == XFA_XDPPACKET_Template) { 529 if (ePacketID == XFA_XDPPACKET_Template) {
530 if (XFA_FDEExtension_MatchNodeName( 530 if (XFA_FDEExtension_MatchNodeName(
531 pXMLDocumentNode, XFA_GetPacketByIndex(XFA_PACKET_Template)->pName, 531 pXMLDocumentNode, XFA_GetPacketByIndex(XFA_PACKET_Template)->pName,
532 XFA_GetPacketByIndex(XFA_PACKET_Template)->pURI, 532 XFA_GetPacketByIndex(XFA_PACKET_Template)->pURI,
533 XFA_GetPacketByIndex(XFA_PACKET_Template)->eFlags)) { 533 XFA_GetPacketByIndex(XFA_PACKET_Template)->eFlags)) {
534 pNode = 534 pNode =
535 m_pFactory->CreateNode(XFA_XDPPACKET_Template, XFA_ELEMENT_Template); 535 m_pFactory->CreateNode(XFA_XDPPACKET_Template, XFA_ELEMENT_Template);
536 if (!pNode) { 536 if (!pNode) {
537 return NULL; 537 return nullptr;
538 } 538 }
539 pNode->SetCData(XFA_ATTRIBUTE_Name, 539 pNode->SetCData(XFA_ATTRIBUTE_Name,
540 XFA_GetPacketByIndex(XFA_PACKET_Template)->pName); 540 XFA_GetPacketByIndex(XFA_PACKET_Template)->pName);
541 if (m_bDocumentParser) { 541 if (m_bDocumentParser) {
542 CFX_WideString wsNamespaceURI; 542 CFX_WideString wsNamespaceURI;
543 CFDE_XMLElement* pXMLDocumentElement = 543 CFDE_XMLElement* pXMLDocumentElement =
544 static_cast<CFDE_XMLElement*>(pXMLDocumentNode); 544 static_cast<CFDE_XMLElement*>(pXMLDocumentNode);
545 pXMLDocumentElement->GetNamespaceURI(wsNamespaceURI); 545 pXMLDocumentElement->GetNamespaceURI(wsNamespaceURI);
546 if (wsNamespaceURI.IsEmpty()) { 546 if (wsNamespaceURI.IsEmpty()) {
547 pXMLDocumentElement->GetString(L"xmlns:xfa", wsNamespaceURI); 547 pXMLDocumentElement->GetString(L"xmlns:xfa", wsNamespaceURI);
548 } 548 }
549 pNode->GetDocument()->RecognizeXFAVersionNumber(wsNamespaceURI); 549 pNode->GetDocument()->RecognizeXFAVersionNumber(wsNamespaceURI);
550 } 550 }
551 if (!NormalLoader(pNode, pXMLDocumentNode, ePacketID)) { 551 if (!NormalLoader(pNode, pXMLDocumentNode, ePacketID)) {
552 return NULL; 552 return nullptr;
553 } 553 }
554 } 554 }
555 } else if (ePacketID == XFA_XDPPACKET_Form) { 555 } else if (ePacketID == XFA_XDPPACKET_Form) {
556 if (XFA_FDEExtension_MatchNodeName( 556 if (XFA_FDEExtension_MatchNodeName(
557 pXMLDocumentNode, XFA_GetPacketByIndex(XFA_PACKET_Form)->pName, 557 pXMLDocumentNode, XFA_GetPacketByIndex(XFA_PACKET_Form)->pName,
558 XFA_GetPacketByIndex(XFA_PACKET_Form)->pURI, 558 XFA_GetPacketByIndex(XFA_PACKET_Form)->pURI,
559 XFA_GetPacketByIndex(XFA_PACKET_Form)->eFlags)) { 559 XFA_GetPacketByIndex(XFA_PACKET_Form)->eFlags)) {
560 CFDE_XMLElement* pXMLDocumentElement = 560 CFDE_XMLElement* pXMLDocumentElement =
561 static_cast<CFDE_XMLElement*>(pXMLDocumentNode); 561 static_cast<CFDE_XMLElement*>(pXMLDocumentNode);
562 CFX_WideString wsChecksum; 562 CFX_WideString wsChecksum;
563 pXMLDocumentElement->GetString(L"checksum", wsChecksum); 563 pXMLDocumentElement->GetString(L"checksum", wsChecksum);
564 if (wsChecksum.GetLength() != 28 || 564 if (wsChecksum.GetLength() != 28 ||
565 m_pXMLParser->m_dwCheckStatus != 0x03) { 565 m_pXMLParser->m_dwCheckStatus != 0x03) {
566 return NULL; 566 return nullptr;
567 } 567 }
568 std::unique_ptr<CXFA_ChecksumContext> pChecksum(new CXFA_ChecksumContext); 568 std::unique_ptr<CXFA_ChecksumContext> pChecksum(new CXFA_ChecksumContext);
569 pChecksum->StartChecksum(); 569 pChecksum->StartChecksum();
570 pChecksum->UpdateChecksum(m_pFileRead, m_pXMLParser->m_nStart[0], 570 pChecksum->UpdateChecksum(m_pFileRead, m_pXMLParser->m_nStart[0],
571 m_pXMLParser->m_nSize[0]); 571 m_pXMLParser->m_nSize[0]);
572 pChecksum->UpdateChecksum(m_pFileRead, m_pXMLParser->m_nStart[1], 572 pChecksum->UpdateChecksum(m_pFileRead, m_pXMLParser->m_nStart[1],
573 m_pXMLParser->m_nSize[1]); 573 m_pXMLParser->m_nSize[1]);
574 pChecksum->FinishChecksum(); 574 pChecksum->FinishChecksum();
575 CFX_ByteString bsCheck = pChecksum->GetChecksum(); 575 CFX_ByteString bsCheck = pChecksum->GetChecksum();
576 if (bsCheck != wsChecksum.UTF8Encode()) 576 if (bsCheck != wsChecksum.UTF8Encode())
577 return nullptr; 577 return nullptr;
578 578
579 pNode = m_pFactory->CreateNode(XFA_XDPPACKET_Form, XFA_ELEMENT_Form); 579 pNode = m_pFactory->CreateNode(XFA_XDPPACKET_Form, XFA_ELEMENT_Form);
580 if (!pNode) 580 if (!pNode)
581 return nullptr; 581 return nullptr;
582 582
583 pNode->SetCData(XFA_ATTRIBUTE_Name, 583 pNode->SetCData(XFA_ATTRIBUTE_Name,
584 XFA_GetPacketByIndex(XFA_PACKET_Form)->pName); 584 XFA_GetPacketByIndex(XFA_PACKET_Form)->pName);
585 pNode->SetAttribute(XFA_ATTRIBUTE_Checksum, wsChecksum.AsStringC()); 585 pNode->SetAttribute(XFA_ATTRIBUTE_Checksum, wsChecksum.AsStringC());
586 CXFA_Node* pTemplateRoot = 586 CXFA_Node* pTemplateRoot =
587 m_pRootNode->GetFirstChildByClass(XFA_ELEMENT_Template); 587 m_pRootNode->GetFirstChildByClass(XFA_ELEMENT_Template);
588 CXFA_Node* pTemplateChosen = 588 CXFA_Node* pTemplateChosen =
589 pTemplateRoot 589 pTemplateRoot
590 ? pTemplateRoot->GetFirstChildByClass(XFA_ELEMENT_Subform) 590 ? pTemplateRoot->GetFirstChildByClass(XFA_ELEMENT_Subform)
591 : NULL; 591 : nullptr;
592 FX_BOOL bUseAttribute = TRUE; 592 FX_BOOL bUseAttribute = TRUE;
593 if (pTemplateChosen && 593 if (pTemplateChosen &&
594 pTemplateChosen->GetEnum(XFA_ATTRIBUTE_RestoreState) != 594 pTemplateChosen->GetEnum(XFA_ATTRIBUTE_RestoreState) !=
595 XFA_ATTRIBUTEENUM_Auto) { 595 XFA_ATTRIBUTEENUM_Auto) {
596 bUseAttribute = FALSE; 596 bUseAttribute = FALSE;
597 } 597 }
598 if (!NormalLoader(pNode, pXMLDocumentNode, ePacketID, bUseAttribute)) { 598 if (!NormalLoader(pNode, pXMLDocumentNode, ePacketID, bUseAttribute)) {
599 return NULL; 599 return nullptr;
600 } 600 }
601 } 601 }
602 } 602 }
603 if (pNode) { 603 if (pNode) {
604 pNode->SetXMLMappingNode(pXMLDocumentNode); 604 pNode->SetXMLMappingNode(pXMLDocumentNode);
605 } 605 }
606 return pNode; 606 return pNode;
607 } 607 }
608 static CFDE_XMLNode* XFA_GetDataSetsFromXDP(CFDE_XMLNode* pXMLDocumentNode) { 608 static CFDE_XMLNode* XFA_GetDataSetsFromXDP(CFDE_XMLNode* pXMLDocumentNode) {
609 if (XFA_FDEExtension_MatchNodeName( 609 if (XFA_FDEExtension_MatchNodeName(
610 pXMLDocumentNode, XFA_GetPacketByIndex(XFA_PACKET_Datasets)->pName, 610 pXMLDocumentNode, XFA_GetPacketByIndex(XFA_PACKET_Datasets)->pName,
611 XFA_GetPacketByIndex(XFA_PACKET_Datasets)->pURI, 611 XFA_GetPacketByIndex(XFA_PACKET_Datasets)->pURI,
612 XFA_GetPacketByIndex(XFA_PACKET_Datasets)->eFlags)) { 612 XFA_GetPacketByIndex(XFA_PACKET_Datasets)->eFlags)) {
613 return pXMLDocumentNode; 613 return pXMLDocumentNode;
614 } 614 }
615 if (!XFA_FDEExtension_MatchNodeName( 615 if (!XFA_FDEExtension_MatchNodeName(
616 pXMLDocumentNode, XFA_GetPacketByIndex(XFA_PACKET_XDP)->pName, 616 pXMLDocumentNode, XFA_GetPacketByIndex(XFA_PACKET_XDP)->pName,
617 XFA_GetPacketByIndex(XFA_PACKET_XDP)->pURI, 617 XFA_GetPacketByIndex(XFA_PACKET_XDP)->pURI,
618 XFA_GetPacketByIndex(XFA_PACKET_XDP)->eFlags)) { 618 XFA_GetPacketByIndex(XFA_PACKET_XDP)->eFlags)) {
619 return NULL; 619 return nullptr;
620 } 620 }
621 for (CFDE_XMLNode* pDatasetsNode = 621 for (CFDE_XMLNode* pDatasetsNode =
622 pXMLDocumentNode->GetNodeItem(CFDE_XMLNode::FirstChild); 622 pXMLDocumentNode->GetNodeItem(CFDE_XMLNode::FirstChild);
623 pDatasetsNode; 623 pDatasetsNode;
624 pDatasetsNode = pDatasetsNode->GetNodeItem(CFDE_XMLNode::NextSibling)) { 624 pDatasetsNode = pDatasetsNode->GetNodeItem(CFDE_XMLNode::NextSibling)) {
625 if (!XFA_FDEExtension_MatchNodeName( 625 if (!XFA_FDEExtension_MatchNodeName(
626 pDatasetsNode, XFA_GetPacketByIndex(XFA_PACKET_Datasets)->pName, 626 pDatasetsNode, XFA_GetPacketByIndex(XFA_PACKET_Datasets)->pName,
627 XFA_GetPacketByIndex(XFA_PACKET_Datasets)->pURI, 627 XFA_GetPacketByIndex(XFA_PACKET_Datasets)->pURI,
628 XFA_GetPacketByIndex(XFA_PACKET_Datasets)->eFlags)) { 628 XFA_GetPacketByIndex(XFA_PACKET_Datasets)->eFlags)) {
629 continue; 629 continue;
630 } 630 }
631 return pDatasetsNode; 631 return pDatasetsNode;
632 } 632 }
633 return NULL; 633 return nullptr;
634 } 634 }
635 CXFA_Node* CXFA_SimpleParser::ParseAsXDPPacket_Data( 635 CXFA_Node* CXFA_SimpleParser::ParseAsXDPPacket_Data(
636 CFDE_XMLNode* pXMLDocumentNode, 636 CFDE_XMLNode* pXMLDocumentNode,
637 XFA_XDPPACKET ePacketID) { 637 XFA_XDPPACKET ePacketID) {
638 CFDE_XMLNode* pDatasetsXMLNode = XFA_GetDataSetsFromXDP(pXMLDocumentNode); 638 CFDE_XMLNode* pDatasetsXMLNode = XFA_GetDataSetsFromXDP(pXMLDocumentNode);
639 if (pDatasetsXMLNode) { 639 if (pDatasetsXMLNode) {
640 CXFA_Node* pNode = 640 CXFA_Node* pNode =
641 m_pFactory->CreateNode(XFA_XDPPACKET_Datasets, XFA_ELEMENT_DataModel); 641 m_pFactory->CreateNode(XFA_XDPPACKET_Datasets, XFA_ELEMENT_DataModel);
642 if (!pNode) { 642 if (!pNode) {
643 return NULL; 643 return nullptr;
644 } 644 }
645 pNode->SetCData(XFA_ATTRIBUTE_Name, 645 pNode->SetCData(XFA_ATTRIBUTE_Name,
646 XFA_GetPacketByIndex(XFA_PACKET_Datasets)->pName); 646 XFA_GetPacketByIndex(XFA_PACKET_Datasets)->pName);
647 if (!DataLoader(pNode, pDatasetsXMLNode, FALSE)) { 647 if (!DataLoader(pNode, pDatasetsXMLNode, FALSE)) {
648 return NULL; 648 return nullptr;
649 } 649 }
650 pNode->SetXMLMappingNode(pDatasetsXMLNode); 650 pNode->SetXMLMappingNode(pDatasetsXMLNode);
651 return pNode; 651 return pNode;
652 } 652 }
653 CFDE_XMLNode* pDataXMLNode = NULL; 653 CFDE_XMLNode* pDataXMLNode = nullptr;
654 if (XFA_FDEExtension_MatchNodeName( 654 if (XFA_FDEExtension_MatchNodeName(
655 pXMLDocumentNode, FX_WSTRC(L"data"), 655 pXMLDocumentNode, FX_WSTRC(L"data"),
656 XFA_GetPacketByIndex(XFA_PACKET_Datasets)->pURI, 656 XFA_GetPacketByIndex(XFA_PACKET_Datasets)->pURI,
657 XFA_GetPacketByIndex(XFA_PACKET_Datasets)->eFlags)) { 657 XFA_GetPacketByIndex(XFA_PACKET_Datasets)->eFlags)) {
658 static_cast<CFDE_XMLElement*>(pXMLDocumentNode) 658 static_cast<CFDE_XMLElement*>(pXMLDocumentNode)
659 ->RemoveAttribute(L"xmlns:xfa"); 659 ->RemoveAttribute(L"xmlns:xfa");
660 pDataXMLNode = pXMLDocumentNode; 660 pDataXMLNode = pXMLDocumentNode;
661 } else { 661 } else {
662 CFDE_XMLElement* pDataElement = new CFDE_XMLElement(L"xfa:data"); 662 CFDE_XMLElement* pDataElement = new CFDE_XMLElement(L"xfa:data");
663 CFDE_XMLNode* pParentXMLNode = 663 CFDE_XMLNode* pParentXMLNode =
664 pXMLDocumentNode->GetNodeItem(CFDE_XMLNode::Parent); 664 pXMLDocumentNode->GetNodeItem(CFDE_XMLNode::Parent);
665 if (pParentXMLNode) { 665 if (pParentXMLNode) {
666 pParentXMLNode->RemoveChildNode(pXMLDocumentNode); 666 pParentXMLNode->RemoveChildNode(pXMLDocumentNode);
667 } 667 }
668 ASSERT(pXMLDocumentNode->GetType() == FDE_XMLNODE_Element); 668 ASSERT(pXMLDocumentNode->GetType() == FDE_XMLNODE_Element);
669 if (pXMLDocumentNode->GetType() == FDE_XMLNODE_Element) { 669 if (pXMLDocumentNode->GetType() == FDE_XMLNODE_Element) {
670 static_cast<CFDE_XMLElement*>(pXMLDocumentNode) 670 static_cast<CFDE_XMLElement*>(pXMLDocumentNode)
671 ->RemoveAttribute(L"xmlns:xfa"); 671 ->RemoveAttribute(L"xmlns:xfa");
672 } 672 }
673 pDataElement->InsertChildNode(pXMLDocumentNode); 673 pDataElement->InsertChildNode(pXMLDocumentNode);
674 pDataXMLNode = pDataElement; 674 pDataXMLNode = pDataElement;
675 } 675 }
676 if (pDataXMLNode) { 676 if (pDataXMLNode) {
677 CXFA_Node* pNode = 677 CXFA_Node* pNode =
678 m_pFactory->CreateNode(XFA_XDPPACKET_Datasets, XFA_ELEMENT_DataGroup); 678 m_pFactory->CreateNode(XFA_XDPPACKET_Datasets, XFA_ELEMENT_DataGroup);
679 if (!pNode) { 679 if (!pNode) {
680 if (pDataXMLNode != pXMLDocumentNode) { 680 if (pDataXMLNode != pXMLDocumentNode) {
681 pDataXMLNode->Release(); 681 pDataXMLNode->Release();
682 } 682 }
683 return NULL; 683 return nullptr;
684 } 684 }
685 CFX_WideString wsLocalName; 685 CFX_WideString wsLocalName;
686 static_cast<CFDE_XMLElement*>(pDataXMLNode)->GetLocalTagName(wsLocalName); 686 static_cast<CFDE_XMLElement*>(pDataXMLNode)->GetLocalTagName(wsLocalName);
687 pNode->SetCData(XFA_ATTRIBUTE_Name, wsLocalName); 687 pNode->SetCData(XFA_ATTRIBUTE_Name, wsLocalName);
688 if (!DataLoader(pNode, pDataXMLNode, TRUE)) { 688 if (!DataLoader(pNode, pDataXMLNode, TRUE)) {
689 return NULL; 689 return nullptr;
690 } 690 }
691 pNode->SetXMLMappingNode(pDataXMLNode); 691 pNode->SetXMLMappingNode(pDataXMLNode);
692 if (pDataXMLNode != pXMLDocumentNode) { 692 if (pDataXMLNode != pXMLDocumentNode) {
693 pNode->SetFlag(XFA_NODEFLAG_OwnXMLNode, false); 693 pNode->SetFlag(XFA_NODEFLAG_OwnXMLNode, false);
694 } 694 }
695 return pNode; 695 return pNode;
696 } 696 }
697 return NULL; 697 return nullptr;
698 } 698 }
699 CXFA_Node* CXFA_SimpleParser::ParseAsXDPPacket_LocaleConnectionSourceSet( 699 CXFA_Node* CXFA_SimpleParser::ParseAsXDPPacket_LocaleConnectionSourceSet(
700 CFDE_XMLNode* pXMLDocumentNode, 700 CFDE_XMLNode* pXMLDocumentNode,
701 XFA_XDPPACKET ePacketID) { 701 XFA_XDPPACKET ePacketID) {
702 CXFA_Node* pNode = NULL; 702 CXFA_Node* pNode = nullptr;
703 if (ePacketID == XFA_XDPPACKET_LocaleSet) { 703 if (ePacketID == XFA_XDPPACKET_LocaleSet) {
704 if (XFA_FDEExtension_MatchNodeName( 704 if (XFA_FDEExtension_MatchNodeName(
705 pXMLDocumentNode, XFA_GetPacketByIndex(XFA_PACKET_LocaleSet)->pName, 705 pXMLDocumentNode, XFA_GetPacketByIndex(XFA_PACKET_LocaleSet)->pName,
706 XFA_GetPacketByIndex(XFA_PACKET_LocaleSet)->pURI, 706 XFA_GetPacketByIndex(XFA_PACKET_LocaleSet)->pURI,
707 XFA_GetPacketByIndex(XFA_PACKET_LocaleSet)->eFlags)) { 707 XFA_GetPacketByIndex(XFA_PACKET_LocaleSet)->eFlags)) {
708 pNode = m_pFactory->CreateNode(XFA_XDPPACKET_LocaleSet, 708 pNode = m_pFactory->CreateNode(XFA_XDPPACKET_LocaleSet,
709 XFA_ELEMENT_LocaleSet); 709 XFA_ELEMENT_LocaleSet);
710 if (!pNode) { 710 if (!pNode) {
711 return NULL; 711 return nullptr;
712 } 712 }
713 pNode->SetCData(XFA_ATTRIBUTE_Name, 713 pNode->SetCData(XFA_ATTRIBUTE_Name,
714 XFA_GetPacketByIndex(XFA_PACKET_LocaleSet)->pName); 714 XFA_GetPacketByIndex(XFA_PACKET_LocaleSet)->pName);
715 if (!NormalLoader(pNode, pXMLDocumentNode, ePacketID)) { 715 if (!NormalLoader(pNode, pXMLDocumentNode, ePacketID)) {
716 return NULL; 716 return nullptr;
717 } 717 }
718 } 718 }
719 } else if (ePacketID == XFA_XDPPACKET_ConnectionSet) { 719 } else if (ePacketID == XFA_XDPPACKET_ConnectionSet) {
720 if (XFA_FDEExtension_MatchNodeName( 720 if (XFA_FDEExtension_MatchNodeName(
721 pXMLDocumentNode, 721 pXMLDocumentNode,
722 XFA_GetPacketByIndex(XFA_PACKET_ConnectionSet)->pName, 722 XFA_GetPacketByIndex(XFA_PACKET_ConnectionSet)->pName,
723 XFA_GetPacketByIndex(XFA_PACKET_ConnectionSet)->pURI, 723 XFA_GetPacketByIndex(XFA_PACKET_ConnectionSet)->pURI,
724 XFA_GetPacketByIndex(XFA_PACKET_ConnectionSet)->eFlags)) { 724 XFA_GetPacketByIndex(XFA_PACKET_ConnectionSet)->eFlags)) {
725 pNode = m_pFactory->CreateNode(XFA_XDPPACKET_ConnectionSet, 725 pNode = m_pFactory->CreateNode(XFA_XDPPACKET_ConnectionSet,
726 XFA_ELEMENT_ConnectionSet); 726 XFA_ELEMENT_ConnectionSet);
727 if (!pNode) { 727 if (!pNode) {
728 return NULL; 728 return nullptr;
729 } 729 }
730 pNode->SetCData(XFA_ATTRIBUTE_Name, 730 pNode->SetCData(XFA_ATTRIBUTE_Name,
731 XFA_GetPacketByIndex(XFA_PACKET_ConnectionSet)->pName); 731 XFA_GetPacketByIndex(XFA_PACKET_ConnectionSet)->pName);
732 if (!NormalLoader(pNode, pXMLDocumentNode, ePacketID)) { 732 if (!NormalLoader(pNode, pXMLDocumentNode, ePacketID)) {
733 return NULL; 733 return nullptr;
734 } 734 }
735 } 735 }
736 } else if (ePacketID == XFA_XDPPACKET_SourceSet) { 736 } else if (ePacketID == XFA_XDPPACKET_SourceSet) {
737 if (XFA_FDEExtension_MatchNodeName( 737 if (XFA_FDEExtension_MatchNodeName(
738 pXMLDocumentNode, XFA_GetPacketByIndex(XFA_PACKET_SourceSet)->pName, 738 pXMLDocumentNode, XFA_GetPacketByIndex(XFA_PACKET_SourceSet)->pName,
739 XFA_GetPacketByIndex(XFA_PACKET_SourceSet)->pURI, 739 XFA_GetPacketByIndex(XFA_PACKET_SourceSet)->pURI,
740 XFA_GetPacketByIndex(XFA_PACKET_SourceSet)->eFlags)) { 740 XFA_GetPacketByIndex(XFA_PACKET_SourceSet)->eFlags)) {
741 pNode = m_pFactory->CreateNode(XFA_XDPPACKET_SourceSet, 741 pNode = m_pFactory->CreateNode(XFA_XDPPACKET_SourceSet,
742 XFA_ELEMENT_SourceSet); 742 XFA_ELEMENT_SourceSet);
743 if (!pNode) { 743 if (!pNode) {
744 return NULL; 744 return nullptr;
745 } 745 }
746 pNode->SetCData(XFA_ATTRIBUTE_Name, 746 pNode->SetCData(XFA_ATTRIBUTE_Name,
747 XFA_GetPacketByIndex(XFA_PACKET_SourceSet)->pName); 747 XFA_GetPacketByIndex(XFA_PACKET_SourceSet)->pName);
748 if (!NormalLoader(pNode, pXMLDocumentNode, ePacketID)) { 748 if (!NormalLoader(pNode, pXMLDocumentNode, ePacketID)) {
749 return NULL; 749 return nullptr;
750 } 750 }
751 } 751 }
752 } 752 }
753 if (pNode) { 753 if (pNode) {
754 pNode->SetXMLMappingNode(pXMLDocumentNode); 754 pNode->SetXMLMappingNode(pXMLDocumentNode);
755 } 755 }
756 return pNode; 756 return pNode;
757 } 757 }
758 CXFA_Node* CXFA_SimpleParser::ParseAsXDPPacket_Xdc( 758 CXFA_Node* CXFA_SimpleParser::ParseAsXDPPacket_Xdc(
759 CFDE_XMLNode* pXMLDocumentNode, 759 CFDE_XMLNode* pXMLDocumentNode,
760 XFA_XDPPACKET ePacketID) { 760 XFA_XDPPACKET ePacketID) {
761 if (XFA_FDEExtension_MatchNodeName( 761 if (XFA_FDEExtension_MatchNodeName(
762 pXMLDocumentNode, XFA_GetPacketByIndex(XFA_PACKET_Xdc)->pName, 762 pXMLDocumentNode, XFA_GetPacketByIndex(XFA_PACKET_Xdc)->pName,
763 XFA_GetPacketByIndex(XFA_PACKET_Xdc)->pURI, 763 XFA_GetPacketByIndex(XFA_PACKET_Xdc)->pURI,
764 XFA_GetPacketByIndex(XFA_PACKET_Xdc)->eFlags)) { 764 XFA_GetPacketByIndex(XFA_PACKET_Xdc)->eFlags)) {
765 CXFA_Node* pNode = 765 CXFA_Node* pNode =
766 m_pFactory->CreateNode(XFA_XDPPACKET_Xdc, XFA_ELEMENT_Xdc); 766 m_pFactory->CreateNode(XFA_XDPPACKET_Xdc, XFA_ELEMENT_Xdc);
767 if (!pNode) { 767 if (!pNode) {
768 return NULL; 768 return nullptr;
769 } 769 }
770 pNode->SetCData(XFA_ATTRIBUTE_Name, 770 pNode->SetCData(XFA_ATTRIBUTE_Name,
771 XFA_GetPacketByIndex(XFA_PACKET_Xdc)->pName); 771 XFA_GetPacketByIndex(XFA_PACKET_Xdc)->pName);
772 pNode->SetXMLMappingNode(pXMLDocumentNode); 772 pNode->SetXMLMappingNode(pXMLDocumentNode);
773 return pNode; 773 return pNode;
774 } 774 }
775 return NULL; 775 return nullptr;
776 } 776 }
777 CXFA_Node* CXFA_SimpleParser::ParseAsXDPPacket_User( 777 CXFA_Node* CXFA_SimpleParser::ParseAsXDPPacket_User(
778 CFDE_XMLNode* pXMLDocumentNode, 778 CFDE_XMLNode* pXMLDocumentNode,
779 XFA_XDPPACKET ePacketID) { 779 XFA_XDPPACKET ePacketID) {
780 CXFA_Node* pNode = 780 CXFA_Node* pNode =
781 m_pFactory->CreateNode(XFA_XDPPACKET_XDP, XFA_ELEMENT_Packet); 781 m_pFactory->CreateNode(XFA_XDPPACKET_XDP, XFA_ELEMENT_Packet);
782 if (!pNode) { 782 if (!pNode) {
783 return NULL; 783 return nullptr;
784 } 784 }
785 CFX_WideString wsName; 785 CFX_WideString wsName;
786 static_cast<CFDE_XMLElement*>(pXMLDocumentNode)->GetLocalTagName(wsName); 786 static_cast<CFDE_XMLElement*>(pXMLDocumentNode)->GetLocalTagName(wsName);
787 pNode->SetCData(XFA_ATTRIBUTE_Name, wsName); 787 pNode->SetCData(XFA_ATTRIBUTE_Name, wsName);
788 if (!UserPacketLoader(pNode, pXMLDocumentNode)) { 788 if (!UserPacketLoader(pNode, pXMLDocumentNode)) {
789 return NULL; 789 return nullptr;
790 } 790 }
791 pNode->SetXMLMappingNode(pXMLDocumentNode); 791 pNode->SetXMLMappingNode(pXMLDocumentNode);
792 return pNode; 792 return pNode;
793 } 793 }
794 CXFA_Node* CXFA_SimpleParser::UserPacketLoader(CXFA_Node* pXFANode, 794 CXFA_Node* CXFA_SimpleParser::UserPacketLoader(CXFA_Node* pXFANode,
795 CFDE_XMLNode* pXMLDoc) { 795 CFDE_XMLNode* pXMLDoc) {
796 return pXFANode; 796 return pXFANode;
797 } 797 }
798 static FX_BOOL XFA_FDEExtension_IsStringAllWhitespace(CFX_WideString wsText) { 798 static FX_BOOL XFA_FDEExtension_IsStringAllWhitespace(CFX_WideString wsText) {
799 wsText.TrimRight(L"\x20\x9\xD\xA"); 799 wsText.TrimRight(L"\x20\x9\xD\xA");
(...skipping 28 matching lines...) Expand all
828 if (pPropertyInfo && 828 if (pPropertyInfo &&
829 ((pPropertyInfo->uFlags & 829 ((pPropertyInfo->uFlags &
830 (XFA_PROPERTYFLAG_OneOf | XFA_PROPERTYFLAG_DefaultOneOf)) != 0)) { 830 (XFA_PROPERTYFLAG_OneOf | XFA_PROPERTYFLAG_DefaultOneOf)) != 0)) {
831 if (bOneOfPropertyFound) { 831 if (bOneOfPropertyFound) {
832 break; 832 break;
833 } 833 }
834 bOneOfPropertyFound = TRUE; 834 bOneOfPropertyFound = TRUE;
835 } 835 }
836 CXFA_Node* pXFAChild = 836 CXFA_Node* pXFAChild =
837 m_pFactory->CreateNode(ePacketID, pElemInfo->eName); 837 m_pFactory->CreateNode(ePacketID, pElemInfo->eName);
838 if (pXFAChild == NULL) { 838 if (!pXFAChild)
839 return NULL; 839 return nullptr;
840 } 840
841 if (ePacketID == XFA_XDPPACKET_Config) { 841 if (ePacketID == XFA_XDPPACKET_Config) {
842 pXFAChild->SetAttribute(XFA_ATTRIBUTE_Name, wsTagName.AsStringC()); 842 pXFAChild->SetAttribute(XFA_ATTRIBUTE_Name, wsTagName.AsStringC());
843 } 843 }
844 FX_BOOL IsNeedValue = TRUE; 844 FX_BOOL IsNeedValue = TRUE;
845 for (int32_t i = 0, count = pXMLElement->CountAttributes(); i < count; 845 for (int32_t i = 0, count = pXMLElement->CountAttributes(); i < count;
846 i++) { 846 i++) {
847 CFX_WideString wsAttrQualifiedName; 847 CFX_WideString wsAttrQualifiedName;
848 CFX_WideString wsAttrName; 848 CFX_WideString wsAttrName;
849 CFX_WideString wsAttrValue; 849 CFX_WideString wsAttrValue;
850 pXMLElement->GetAttribute(i, wsAttrQualifiedName, wsAttrValue); 850 pXMLElement->GetAttribute(i, wsAttrQualifiedName, wsAttrValue);
(...skipping 232 matching lines...) Expand 10 before | Expand all | Expand 10 after
1083 break; 1083 break;
1084 } 1084 }
1085 } 1085 }
1086 } 1086 }
1087 } 1087 }
1088 if (eNodeType == XFA_ELEMENT_DataModel) { 1088 if (eNodeType == XFA_ELEMENT_DataModel) {
1089 eNodeType = XFA_ELEMENT_DataValue; 1089 eNodeType = XFA_ELEMENT_DataValue;
1090 } 1090 }
1091 CXFA_Node* pXFAChild = 1091 CXFA_Node* pXFAChild =
1092 m_pFactory->CreateNode(XFA_XDPPACKET_Datasets, eNodeType); 1092 m_pFactory->CreateNode(XFA_XDPPACKET_Datasets, eNodeType);
1093 if (pXFAChild == NULL) { 1093 if (!pXFAChild)
1094 return; 1094 return;
1095 } 1095
1096 CFX_WideString wsNodeName; 1096 CFX_WideString wsNodeName;
1097 pXMLElement->GetLocalTagName(wsNodeName); 1097 pXMLElement->GetLocalTagName(wsNodeName);
1098 pXFAChild->SetCData(XFA_ATTRIBUTE_Name, wsNodeName); 1098 pXFAChild->SetCData(XFA_ATTRIBUTE_Name, wsNodeName);
1099 FX_BOOL bNeedValue = TRUE; 1099 FX_BOOL bNeedValue = TRUE;
1100 if (1) { 1100 if (1) {
1101 for (int32_t i = 0, count = pXMLElement->CountAttributes(); i < count; 1101 for (int32_t i = 0, count = pXMLElement->CountAttributes(); i < count;
1102 i++) { 1102 i++) {
1103 CFX_WideString wsAttrQualifiedName; 1103 CFX_WideString wsAttrQualifiedName;
1104 CFX_WideString wsAttrValue; 1104 CFX_WideString wsAttrValue;
1105 CFX_WideString wsAttrName; 1105 CFX_WideString wsAttrName;
(...skipping 17 matching lines...) Expand all
1123 FX_WSTRC(L"http://www.w3.org/2001/XMLSchema-instance") || 1123 FX_WSTRC(L"http://www.w3.org/2001/XMLSchema-instance") ||
1124 wsAttrNamespaceURI == 1124 wsAttrNamespaceURI ==
1125 FX_WSTRC(L"http://www.xfa.org/schema/xfa-data/1.0/")) { 1125 FX_WSTRC(L"http://www.xfa.org/schema/xfa-data/1.0/")) {
1126 continue; 1126 continue;
1127 } 1127 }
1128 if (0) { 1128 if (0) {
1129 continue; 1129 continue;
1130 } 1130 }
1131 CXFA_Node* pXFAMetaData = m_pFactory->CreateNode( 1131 CXFA_Node* pXFAMetaData = m_pFactory->CreateNode(
1132 XFA_XDPPACKET_Datasets, XFA_ELEMENT_DataValue); 1132 XFA_XDPPACKET_Datasets, XFA_ELEMENT_DataValue);
1133 if (pXFAMetaData == NULL) { 1133 if (!pXFAMetaData)
1134 return; 1134 return;
1135 } 1135
1136 pXFAMetaData->SetCData(XFA_ATTRIBUTE_Name, wsAttrName); 1136 pXFAMetaData->SetCData(XFA_ATTRIBUTE_Name, wsAttrName);
1137 pXFAMetaData->SetCData(XFA_ATTRIBUTE_QualifiedName, 1137 pXFAMetaData->SetCData(XFA_ATTRIBUTE_QualifiedName,
1138 wsAttrQualifiedName); 1138 wsAttrQualifiedName);
1139 pXFAMetaData->SetCData(XFA_ATTRIBUTE_Value, wsAttrValue); 1139 pXFAMetaData->SetCData(XFA_ATTRIBUTE_Value, wsAttrValue);
1140 pXFAMetaData->SetEnum(XFA_ATTRIBUTE_Contains, 1140 pXFAMetaData->SetEnum(XFA_ATTRIBUTE_Contains,
1141 XFA_ATTRIBUTEENUM_MetaData); 1141 XFA_ATTRIBUTEENUM_MetaData);
1142 pXFAChild->InsertChild(pXFAMetaData); 1142 pXFAChild->InsertChild(pXFAMetaData);
1143 pXFAMetaData->SetXMLMappingNode(pXMLElement); 1143 pXFAMetaData->SetXMLMappingNode(pXMLElement);
1144 pXFAMetaData->SetFlag(XFA_NODEFLAG_Initialized, false); 1144 pXFAMetaData->SetFlag(XFA_NODEFLAG_Initialized, false);
1145 } 1145 }
(...skipping 17 matching lines...) Expand all
1163 case FDE_XMLNODE_CharData: { 1163 case FDE_XMLNODE_CharData: {
1164 CFDE_XMLCharData* pXMLCharData = 1164 CFDE_XMLCharData* pXMLCharData =
1165 static_cast<CFDE_XMLCharData*>(pXMLChild); 1165 static_cast<CFDE_XMLCharData*>(pXMLChild);
1166 CFX_WideString wsCharData; 1166 CFX_WideString wsCharData;
1167 pXMLCharData->GetCharData(wsCharData); 1167 pXMLCharData->GetCharData(wsCharData);
1168 if (XFA_FDEExtension_IsStringAllWhitespace(wsCharData)) { 1168 if (XFA_FDEExtension_IsStringAllWhitespace(wsCharData)) {
1169 continue; 1169 continue;
1170 } 1170 }
1171 CXFA_Node* pXFAChild = m_pFactory->CreateNode(XFA_XDPPACKET_Datasets, 1171 CXFA_Node* pXFAChild = m_pFactory->CreateNode(XFA_XDPPACKET_Datasets,
1172 XFA_ELEMENT_DataValue); 1172 XFA_ELEMENT_DataValue);
1173 if (pXFAChild == NULL) { 1173 if (!pXFAChild)
1174 return; 1174 return;
1175 } 1175
1176 pXFAChild->SetCData(XFA_ATTRIBUTE_Value, wsCharData); 1176 pXFAChild->SetCData(XFA_ATTRIBUTE_Value, wsCharData);
1177 pXFANode->InsertChild(pXFAChild); 1177 pXFANode->InsertChild(pXFAChild);
1178 pXFAChild->SetXMLMappingNode(pXMLCharData); 1178 pXFAChild->SetXMLMappingNode(pXMLCharData);
1179 pXFAChild->SetFlag(XFA_NODEFLAG_Initialized, false); 1179 pXFAChild->SetFlag(XFA_NODEFLAG_Initialized, false);
1180 } 1180 }
1181 continue; 1181 continue;
1182 case FDE_XMLNODE_Text: { 1182 case FDE_XMLNODE_Text: {
1183 CFDE_XMLText* pXMLText = static_cast<CFDE_XMLText*>(pXMLChild); 1183 CFDE_XMLText* pXMLText = static_cast<CFDE_XMLText*>(pXMLChild);
1184 CFX_WideString wsText; 1184 CFX_WideString wsText;
1185 pXMLText->GetText(wsText); 1185 pXMLText->GetText(wsText);
1186 if (XFA_FDEExtension_IsStringAllWhitespace(wsText)) { 1186 if (XFA_FDEExtension_IsStringAllWhitespace(wsText)) {
1187 continue; 1187 continue;
1188 } 1188 }
1189 CXFA_Node* pXFAChild = m_pFactory->CreateNode(XFA_XDPPACKET_Datasets, 1189 CXFA_Node* pXFAChild = m_pFactory->CreateNode(XFA_XDPPACKET_Datasets,
1190 XFA_ELEMENT_DataValue); 1190 XFA_ELEMENT_DataValue);
1191 if (pXFAChild == NULL) { 1191 if (!pXFAChild)
1192 return; 1192 return;
1193 } 1193
1194 pXFAChild->SetCData(XFA_ATTRIBUTE_Value, wsText); 1194 pXFAChild->SetCData(XFA_ATTRIBUTE_Value, wsText);
1195 pXFANode->InsertChild(pXFAChild); 1195 pXFANode->InsertChild(pXFAChild);
1196 pXFAChild->SetXMLMappingNode(pXMLText); 1196 pXFAChild->SetXMLMappingNode(pXMLText);
1197 pXFAChild->SetFlag(XFA_NODEFLAG_Initialized, false); 1197 pXFAChild->SetFlag(XFA_NODEFLAG_Initialized, false);
1198 } 1198 }
1199 continue; 1199 continue;
1200 case FDE_XMLNODE_Instruction: 1200 case FDE_XMLNODE_Instruction:
1201 continue; 1201 continue;
1202 default: 1202 default:
1203 continue; 1203 continue;
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after
1327 if (pXMLInstruction->GetData(1, wsData) && 1327 if (pXMLInstruction->GetData(1, wsData) &&
1328 wsData == FX_WSTRC(L"strictScoping")) { 1328 wsData == FX_WSTRC(L"strictScoping")) {
1329 pXFANode->GetDocument()->SetFlag(XFA_DOCFLAG_StrictScoping, TRUE); 1329 pXFANode->GetDocument()->SetFlag(XFA_DOCFLAG_StrictScoping, TRUE);
1330 } 1330 }
1331 } 1331 }
1332 } 1332 }
1333 } 1333 }
1334 void CXFA_SimpleParser::CloseParser() { 1334 void CXFA_SimpleParser::CloseParser() {
1335 if (m_pXMLDoc) { 1335 if (m_pXMLDoc) {
1336 m_pXMLDoc->Release(); 1336 m_pXMLDoc->Release();
1337 m_pXMLDoc = NULL; 1337 m_pXMLDoc = nullptr;
1338 } 1338 }
1339 if (m_pStream) { 1339 if (m_pStream) {
1340 m_pStream->Release(); 1340 m_pStream->Release();
1341 m_pStream = NULL; 1341 m_pStream = nullptr;
1342 } 1342 }
1343 } 1343 }
1344 1344
1345 CXFA_DocumentParser::CXFA_DocumentParser(CXFA_FFNotify* pNotify) 1345 CXFA_DocumentParser::CXFA_DocumentParser(CXFA_FFNotify* pNotify)
1346 : m_nodeParser(NULL, TRUE), m_pNotify(pNotify), m_pDocument(NULL) {} 1346 : m_nodeParser(nullptr, TRUE), m_pNotify(pNotify), m_pDocument(nullptr) {}
1347 CXFA_DocumentParser::~CXFA_DocumentParser() { 1347 CXFA_DocumentParser::~CXFA_DocumentParser() {
1348 CloseParser(); 1348 CloseParser();
1349 } 1349 }
1350 int32_t CXFA_DocumentParser::StartParse(IFX_FileRead* pStream, 1350 int32_t CXFA_DocumentParser::StartParse(IFX_FileRead* pStream,
1351 XFA_XDPPACKET ePacketID) { 1351 XFA_XDPPACKET ePacketID) {
1352 CloseParser(); 1352 CloseParser();
1353 int32_t nRetStatus = m_nodeParser.StartParse(pStream, ePacketID); 1353 int32_t nRetStatus = m_nodeParser.StartParse(pStream, ePacketID);
1354 if (nRetStatus == XFA_PARSESTATUS_Ready) { 1354 if (nRetStatus == XFA_PARSESTATUS_Ready) {
1355 m_pDocument = new CXFA_Document(this); 1355 m_pDocument = new CXFA_Document(this);
1356 m_nodeParser.SetFactory(m_pDocument); 1356 m_nodeParser.SetFactory(m_pDocument);
1357 } 1357 }
1358 return nRetStatus; 1358 return nRetStatus;
1359 } 1359 }
1360 int32_t CXFA_DocumentParser::DoParse(IFX_Pause* pPause) { 1360 int32_t CXFA_DocumentParser::DoParse(IFX_Pause* pPause) {
1361 int32_t nRetStatus = m_nodeParser.DoParse(pPause); 1361 int32_t nRetStatus = m_nodeParser.DoParse(pPause);
1362 if (nRetStatus >= XFA_PARSESTATUS_Done) { 1362 if (nRetStatus >= XFA_PARSESTATUS_Done) {
1363 ASSERT(m_pDocument); 1363 ASSERT(m_pDocument);
1364 m_pDocument->SetRoot(m_nodeParser.GetRootNode()); 1364 m_pDocument->SetRoot(m_nodeParser.GetRootNode());
1365 } 1365 }
1366 return nRetStatus; 1366 return nRetStatus;
1367 } 1367 }
1368 int32_t CXFA_DocumentParser::ParseXMLData(const CFX_WideString& wsXML, 1368 int32_t CXFA_DocumentParser::ParseXMLData(const CFX_WideString& wsXML,
1369 CFDE_XMLNode*& pXMLNode, 1369 CFDE_XMLNode*& pXMLNode,
1370 IFX_Pause* pPause) { 1370 IFX_Pause* pPause) {
1371 CloseParser(); 1371 CloseParser();
1372 int32_t nRetStatus = m_nodeParser.ParseXMLData(wsXML, pXMLNode, NULL); 1372 int32_t nRetStatus = m_nodeParser.ParseXMLData(wsXML, pXMLNode, nullptr);
1373 if (nRetStatus == XFA_PARSESTATUS_Done && pXMLNode) { 1373 if (nRetStatus == XFA_PARSESTATUS_Done && pXMLNode) {
1374 m_pDocument = new CXFA_Document(this); 1374 m_pDocument = new CXFA_Document(this);
1375 m_nodeParser.SetFactory(m_pDocument); 1375 m_nodeParser.SetFactory(m_pDocument);
1376 } 1376 }
1377 return nRetStatus; 1377 return nRetStatus;
1378 } 1378 }
1379 void CXFA_DocumentParser::ConstructXFANode(CXFA_Node* pXFANode, 1379 void CXFA_DocumentParser::ConstructXFANode(CXFA_Node* pXFANode,
1380 CFDE_XMLNode* pXMLNode) { 1380 CFDE_XMLNode* pXMLNode) {
1381 if (!pXFANode || !pXMLNode) { 1381 if (!pXFANode || !pXMLNode) {
1382 return; 1382 return;
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
1472 m_pChild = m_pParent; 1472 m_pChild = m_pParent;
1473 iCount++; 1473 iCount++;
1474 break; 1474 break;
1475 case FDE_XmlSyntaxResult::TargetName: 1475 case FDE_XmlSyntaxResult::TargetName:
1476 m_pParser->GetTargetName(m_ws1); 1476 m_pParser->GetTargetName(m_ws1);
1477 if (m_ws1 == FX_WSTRC(L"originalXFAVersion") || 1477 if (m_ws1 == FX_WSTRC(L"originalXFAVersion") ||
1478 m_ws1 == FX_WSTRC(L"acrobat")) { 1478 m_ws1 == FX_WSTRC(L"acrobat")) {
1479 m_pChild = new CFDE_XMLInstruction(m_ws1); 1479 m_pChild = new CFDE_XMLInstruction(m_ws1);
1480 m_pParent->InsertChildNode(m_pChild); 1480 m_pParent->InsertChildNode(m_pChild);
1481 } else { 1481 } else {
1482 m_pChild = NULL; 1482 m_pChild = nullptr;
1483 } 1483 }
1484 m_ws1.clear(); 1484 m_ws1.clear();
1485 break; 1485 break;
1486 case FDE_XmlSyntaxResult::TagName: 1486 case FDE_XmlSyntaxResult::TagName:
1487 m_pParser->GetTagName(m_ws1); 1487 m_pParser->GetTagName(m_ws1);
1488 m_pChild = new CFDE_XMLElement(m_ws1); 1488 m_pChild = new CFDE_XMLElement(m_ws1);
1489 m_pParent->InsertChildNode(m_pChild); 1489 m_pParent->InsertChildNode(m_pChild);
1490 m_NodeStack.Push(m_pChild); 1490 m_NodeStack.Push(m_pChild);
1491 m_pParent = m_pChild; 1491 m_pParent = m_pChild;
1492 1492
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
1553 } 1553 }
1554 if (pPause && iCount > 500 && pPause->NeedToPauseNow()) { 1554 if (pPause && iCount > 500 && pPause->NeedToPauseNow()) {
1555 break; 1555 break;
1556 } 1556 }
1557 } 1557 }
1558 return (m_syntaxParserResult == FDE_XmlSyntaxResult::Error || 1558 return (m_syntaxParserResult == FDE_XmlSyntaxResult::Error ||
1559 m_NodeStack.GetSize() != 1) 1559 m_NodeStack.GetSize() != 1)
1560 ? -1 1560 ? -1
1561 : m_pParser->GetStatus(); 1561 : m_pParser->GetStatus();
1562 } 1562 }
OLDNEW
« no previous file with comments | « xfa/fxfa/parser/xfa_parser_imp.h ('k') | xfa/fxfa/parser/xfa_script.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698