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_parser_imp.h" | 7 #include "xfa/fxfa/parser/xfa_parser_imp.h" |
8 | 8 |
9 #include <memory> | 9 #include <memory> |
10 | 10 |
(...skipping 29 matching lines...) Expand all Loading... |
40 void CXFA_SimpleParser::Release() { | 40 void CXFA_SimpleParser::Release() { |
41 delete this; | 41 delete this; |
42 } | 42 } |
43 void CXFA_SimpleParser::SetFactory(CXFA_Document* pFactory) { | 43 void CXFA_SimpleParser::SetFactory(CXFA_Document* pFactory) { |
44 m_pFactory = pFactory; | 44 m_pFactory = pFactory; |
45 } | 45 } |
46 static CFDE_XMLNode* XFA_FDEExtension_GetDocumentNode( | 46 static CFDE_XMLNode* XFA_FDEExtension_GetDocumentNode( |
47 CFDE_XMLDoc* pXMLDoc, | 47 CFDE_XMLDoc* pXMLDoc, |
48 FX_BOOL bVerifyWellFormness = FALSE) { | 48 FX_BOOL bVerifyWellFormness = FALSE) { |
49 if (!pXMLDoc) { | 49 if (!pXMLDoc) { |
50 return NULL; | 50 return nullptr; |
51 } | 51 } |
52 CFDE_XMLNode* pXMLFakeRoot = pXMLDoc->GetRoot(); | 52 CFDE_XMLNode* pXMLFakeRoot = pXMLDoc->GetRoot(); |
53 for (CFDE_XMLNode* pXMLNode = | 53 for (CFDE_XMLNode* pXMLNode = |
54 pXMLFakeRoot->GetNodeItem(CFDE_XMLNode::FirstChild); | 54 pXMLFakeRoot->GetNodeItem(CFDE_XMLNode::FirstChild); |
55 pXMLNode; pXMLNode = pXMLNode->GetNodeItem(CFDE_XMLNode::NextSibling)) { | 55 pXMLNode; pXMLNode = pXMLNode->GetNodeItem(CFDE_XMLNode::NextSibling)) { |
56 if (pXMLNode->GetType() == FDE_XMLNODE_Element) { | 56 if (pXMLNode->GetType() == FDE_XMLNODE_Element) { |
57 if (bVerifyWellFormness) { | 57 if (bVerifyWellFormness) { |
58 for (CFDE_XMLNode* pNextNode = | 58 for (CFDE_XMLNode* pNextNode = |
59 pXMLNode->GetNodeItem(CFDE_XMLNode::NextSibling); | 59 pXMLNode->GetNodeItem(CFDE_XMLNode::NextSibling); |
60 pNextNode; | 60 pNextNode; |
61 pNextNode = pNextNode->GetNodeItem(CFDE_XMLNode::NextSibling)) { | 61 pNextNode = pNextNode->GetNodeItem(CFDE_XMLNode::NextSibling)) { |
62 if (pNextNode->GetType() == FDE_XMLNODE_Element) { | 62 if (pNextNode->GetType() == FDE_XMLNODE_Element) { |
63 return FALSE; | 63 return FALSE; |
64 } | 64 } |
65 } | 65 } |
66 } | 66 } |
67 return pXMLNode; | 67 return pXMLNode; |
68 } | 68 } |
69 } | 69 } |
70 return NULL; | 70 return nullptr; |
71 } | 71 } |
72 int32_t CXFA_SimpleParser::StartParse(IFX_FileRead* pStream, | 72 int32_t CXFA_SimpleParser::StartParse(IFX_FileRead* pStream, |
73 XFA_XDPPACKET ePacketID) { | 73 XFA_XDPPACKET ePacketID) { |
74 CloseParser(); | 74 CloseParser(); |
75 m_pFileRead = pStream; | 75 m_pFileRead = pStream; |
76 m_pStream = IFX_Stream::CreateStream( | 76 m_pStream = IFX_Stream::CreateStream( |
77 pStream, FX_STREAMACCESS_Read | FX_STREAMACCESS_Text); | 77 pStream, FX_STREAMACCESS_Read | FX_STREAMACCESS_Text); |
78 if (m_pStream == NULL) { | 78 if (!m_pStream) { |
79 return XFA_PARSESTATUS_StreamErr; | 79 return XFA_PARSESTATUS_StreamErr; |
80 } | 80 } |
81 uint16_t wCodePage = m_pStream->GetCodePage(); | 81 uint16_t wCodePage = m_pStream->GetCodePage(); |
82 if (wCodePage != FX_CODEPAGE_UTF16LE && wCodePage != FX_CODEPAGE_UTF16BE && | 82 if (wCodePage != FX_CODEPAGE_UTF16LE && wCodePage != FX_CODEPAGE_UTF16BE && |
83 wCodePage != FX_CODEPAGE_UTF8) { | 83 wCodePage != FX_CODEPAGE_UTF8) { |
84 m_pStream->SetCodePage(FX_CODEPAGE_UTF8); | 84 m_pStream->SetCodePage(FX_CODEPAGE_UTF8); |
85 } | 85 } |
86 m_pXMLDoc = new CFDE_XMLDoc; | 86 m_pXMLDoc = new CFDE_XMLDoc; |
87 m_pXMLParser = new CXFA_XMLParser(m_pXMLDoc->GetRoot(), m_pStream); | 87 m_pXMLParser = new CXFA_XMLParser(m_pXMLDoc->GetRoot(), m_pStream); |
88 if (!m_pXMLDoc->LoadXML(m_pXMLParser)) { | 88 if (!m_pXMLDoc->LoadXML(m_pXMLParser)) { |
89 return XFA_PARSESTATUS_StatusErr; | 89 return XFA_PARSESTATUS_StatusErr; |
90 } | 90 } |
91 m_ePacketID = ePacketID; | 91 m_ePacketID = ePacketID; |
92 return XFA_PARSESTATUS_Ready; | 92 return XFA_PARSESTATUS_Ready; |
93 } | 93 } |
94 int32_t CXFA_SimpleParser::DoParse(IFX_Pause* pPause) { | 94 int32_t CXFA_SimpleParser::DoParse(IFX_Pause* pPause) { |
95 if (m_pXMLDoc == NULL || m_ePacketID == XFA_XDPPACKET_UNKNOWN) { | 95 if (!m_pXMLDoc || m_ePacketID == XFA_XDPPACKET_UNKNOWN) { |
96 return XFA_PARSESTATUS_StatusErr; | 96 return XFA_PARSESTATUS_StatusErr; |
97 } | 97 } |
98 int32_t iRet = m_pXMLDoc->DoLoad(pPause); | 98 int32_t iRet = m_pXMLDoc->DoLoad(pPause); |
99 if (iRet < 0) { | 99 if (iRet < 0) { |
100 return XFA_PARSESTATUS_SyntaxErr; | 100 return XFA_PARSESTATUS_SyntaxErr; |
101 } | 101 } |
102 if (iRet < 100) { | 102 if (iRet < 100) { |
103 return iRet / 2; | 103 return iRet / 2; |
104 } | 104 } |
105 m_pRootNode = ParseAsXDPPacket(XFA_FDEExtension_GetDocumentNode(m_pXMLDoc), | 105 m_pRootNode = ParseAsXDPPacket(XFA_FDEExtension_GetDocumentNode(m_pXMLDoc), |
106 m_ePacketID); | 106 m_ePacketID); |
107 m_pXMLDoc->CloseXML(); | 107 m_pXMLDoc->CloseXML(); |
108 if (m_pStream) { | 108 if (m_pStream) { |
109 m_pStream->Release(); | 109 m_pStream->Release(); |
110 m_pStream = NULL; | 110 m_pStream = nullptr; |
111 } | 111 } |
112 if (!m_pRootNode) { | 112 if (!m_pRootNode) { |
113 return XFA_PARSESTATUS_StatusErr; | 113 return XFA_PARSESTATUS_StatusErr; |
114 } | 114 } |
115 return XFA_PARSESTATUS_Done; | 115 return XFA_PARSESTATUS_Done; |
116 } | 116 } |
117 int32_t CXFA_SimpleParser::ParseXMLData(const CFX_WideString& wsXML, | 117 int32_t CXFA_SimpleParser::ParseXMLData(const CFX_WideString& wsXML, |
118 CFDE_XMLNode*& pXMLNode, | 118 CFDE_XMLNode*& pXMLNode, |
119 IFX_Pause* pPause) { | 119 IFX_Pause* pPause) { |
120 CloseParser(); | 120 CloseParser(); |
121 pXMLNode = NULL; | 121 pXMLNode = nullptr; |
122 IFX_Stream* pStream = XFA_CreateWideTextRead(wsXML); | 122 IFX_Stream* pStream = XFA_CreateWideTextRead(wsXML); |
123 if (!pStream) { | 123 if (!pStream) { |
124 return XFA_PARSESTATUS_StreamErr; | 124 return XFA_PARSESTATUS_StreamErr; |
125 } | 125 } |
126 m_pStream = pStream; | 126 m_pStream = pStream; |
127 m_pXMLDoc = new CFDE_XMLDoc; | 127 m_pXMLDoc = new CFDE_XMLDoc; |
128 CXFA_XMLParser* pParser = new CXFA_XMLParser(m_pXMLDoc->GetRoot(), m_pStream); | 128 CXFA_XMLParser* pParser = new CXFA_XMLParser(m_pXMLDoc->GetRoot(), m_pStream); |
129 pParser->m_dwCheckStatus = 0x03; | 129 pParser->m_dwCheckStatus = 0x03; |
130 if (!m_pXMLDoc->LoadXML(pParser)) { | 130 if (!m_pXMLDoc->LoadXML(pParser)) { |
131 return XFA_PARSESTATUS_StatusErr; | 131 return XFA_PARSESTATUS_StatusErr; |
132 } | 132 } |
133 int32_t iRet = m_pXMLDoc->DoLoad(pPause); | 133 int32_t iRet = m_pXMLDoc->DoLoad(pPause); |
134 if (iRet < 0 || iRet >= 100) { | 134 if (iRet < 0 || iRet >= 100) { |
135 m_pXMLDoc->CloseXML(); | 135 m_pXMLDoc->CloseXML(); |
136 } | 136 } |
137 if (iRet < 0) { | 137 if (iRet < 0) { |
138 return XFA_PARSESTATUS_SyntaxErr; | 138 return XFA_PARSESTATUS_SyntaxErr; |
139 } | 139 } |
140 if (iRet < 100) { | 140 if (iRet < 100) { |
141 return iRet / 2; | 141 return iRet / 2; |
142 } | 142 } |
143 if (m_pStream) { | 143 if (m_pStream) { |
144 m_pStream->Release(); | 144 m_pStream->Release(); |
145 m_pStream = NULL; | 145 m_pStream = nullptr; |
146 } | 146 } |
147 pXMLNode = XFA_FDEExtension_GetDocumentNode(m_pXMLDoc); | 147 pXMLNode = XFA_FDEExtension_GetDocumentNode(m_pXMLDoc); |
148 return XFA_PARSESTATUS_Done; | 148 return XFA_PARSESTATUS_Done; |
149 } | 149 } |
150 | 150 |
151 void CXFA_SimpleParser::ConstructXFANode(CXFA_Node* pXFANode, | 151 void CXFA_SimpleParser::ConstructXFANode(CXFA_Node* pXFANode, |
152 CFDE_XMLNode* pXMLNode) { | 152 CFDE_XMLNode* pXMLNode) { |
153 XFA_XDPPACKET ePacketID = (XFA_XDPPACKET)pXFANode->GetPacketID(); | 153 XFA_XDPPACKET ePacketID = (XFA_XDPPACKET)pXFANode->GetPacketID(); |
154 if (ePacketID == XFA_XDPPACKET_Datasets) { | 154 if (ePacketID == XFA_XDPPACKET_Datasets) { |
155 if (pXFANode->GetElementType() == XFA_Element::DataValue) { | 155 if (pXFANode->GetElementType() == XFA_Element::DataValue) { |
(...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
349 } | 349 } |
350 wsValue = wsAttrValue; | 350 wsValue = wsAttrValue; |
351 return TRUE; | 351 return TRUE; |
352 } | 352 } |
353 return FALSE; | 353 return FALSE; |
354 } | 354 } |
355 CXFA_Node* CXFA_SimpleParser::ParseAsXDPPacket(CFDE_XMLNode* pXMLDocumentNode, | 355 CXFA_Node* CXFA_SimpleParser::ParseAsXDPPacket(CFDE_XMLNode* pXMLDocumentNode, |
356 XFA_XDPPACKET ePacketID) { | 356 XFA_XDPPACKET ePacketID) { |
357 switch (ePacketID) { | 357 switch (ePacketID) { |
358 case XFA_XDPPACKET_UNKNOWN: | 358 case XFA_XDPPACKET_UNKNOWN: |
359 return NULL; | 359 return nullptr; |
360 case XFA_XDPPACKET_XDP: | 360 case XFA_XDPPACKET_XDP: |
361 return ParseAsXDPPacket_XDP(pXMLDocumentNode, ePacketID); | 361 return ParseAsXDPPacket_XDP(pXMLDocumentNode, ePacketID); |
362 case XFA_XDPPACKET_Config: | 362 case XFA_XDPPACKET_Config: |
363 return ParseAsXDPPacket_Config(pXMLDocumentNode, ePacketID); | 363 return ParseAsXDPPacket_Config(pXMLDocumentNode, ePacketID); |
364 case XFA_XDPPACKET_Template: | 364 case XFA_XDPPACKET_Template: |
365 case XFA_XDPPACKET_Form: | 365 case XFA_XDPPACKET_Form: |
366 return ParseAsXDPPacket_TemplateForm(pXMLDocumentNode, ePacketID); | 366 return ParseAsXDPPacket_TemplateForm(pXMLDocumentNode, ePacketID); |
367 case XFA_XDPPACKET_Datasets: | 367 case XFA_XDPPACKET_Datasets: |
368 return ParseAsXDPPacket_Data(pXMLDocumentNode, ePacketID); | 368 return ParseAsXDPPacket_Data(pXMLDocumentNode, ePacketID); |
369 case XFA_XDPPACKET_Xdc: | 369 case XFA_XDPPACKET_Xdc: |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
419 pPacketInfo->pURI, | 419 pPacketInfo->pURI, |
420 pPacketInfo->eFlags)) { | 420 pPacketInfo->eFlags)) { |
421 continue; | 421 continue; |
422 } | 422 } |
423 if (pXFARootNode->GetFirstChildByName(pPacketInfo->uHash)) { | 423 if (pXFARootNode->GetFirstChildByName(pPacketInfo->uHash)) { |
424 return nullptr; | 424 return nullptr; |
425 } | 425 } |
426 pXMLConfigDOMRoot = pChildItem; | 426 pXMLConfigDOMRoot = pChildItem; |
427 pXFAConfigDOMRoot = | 427 pXFAConfigDOMRoot = |
428 ParseAsXDPPacket_Config(pXMLConfigDOMRoot, XFA_XDPPACKET_Config); | 428 ParseAsXDPPacket_Config(pXMLConfigDOMRoot, XFA_XDPPACKET_Config); |
429 pXFARootNode->InsertChild(pXFAConfigDOMRoot, NULL); | 429 pXFARootNode->InsertChild(pXFAConfigDOMRoot, nullptr); |
430 } | 430 } |
431 } | 431 } |
432 CFDE_XMLNode* pXMLDatasetsDOMRoot = nullptr; | 432 CFDE_XMLNode* pXMLDatasetsDOMRoot = nullptr; |
433 CFDE_XMLNode* pXMLFormDOMRoot = nullptr; | 433 CFDE_XMLNode* pXMLFormDOMRoot = nullptr; |
434 CFDE_XMLNode* pXMLTemplateDOMRoot = nullptr; | 434 CFDE_XMLNode* pXMLTemplateDOMRoot = nullptr; |
435 { | 435 { |
436 for (CFDE_XMLNode* pChildItem = | 436 for (CFDE_XMLNode* pChildItem = |
437 pXMLDocumentNode->GetNodeItem(CFDE_XMLNode::FirstChild); | 437 pXMLDocumentNode->GetNodeItem(CFDE_XMLNode::FirstChild); |
438 pChildItem; | 438 pChildItem; |
439 pChildItem = pChildItem->GetNodeItem(CFDE_XMLNode::NextSibling)) { | 439 pChildItem = pChildItem->GetNodeItem(CFDE_XMLNode::NextSibling)) { |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
515 pXFARootNode->SetXMLMappingNode(pXMLDocumentNode); | 515 pXFARootNode->SetXMLMappingNode(pXMLDocumentNode); |
516 return pXFARootNode; | 516 return pXFARootNode; |
517 } | 517 } |
518 CXFA_Node* CXFA_SimpleParser::ParseAsXDPPacket_Config( | 518 CXFA_Node* CXFA_SimpleParser::ParseAsXDPPacket_Config( |
519 CFDE_XMLNode* pXMLDocumentNode, | 519 CFDE_XMLNode* pXMLDocumentNode, |
520 XFA_XDPPACKET ePacketID) { | 520 XFA_XDPPACKET ePacketID) { |
521 if (!XFA_FDEExtension_MatchNodeName( | 521 if (!XFA_FDEExtension_MatchNodeName( |
522 pXMLDocumentNode, XFA_GetPacketByIndex(XFA_PACKET_Config)->pName, | 522 pXMLDocumentNode, XFA_GetPacketByIndex(XFA_PACKET_Config)->pName, |
523 XFA_GetPacketByIndex(XFA_PACKET_Config)->pURI, | 523 XFA_GetPacketByIndex(XFA_PACKET_Config)->pURI, |
524 XFA_GetPacketByIndex(XFA_PACKET_Config)->eFlags)) { | 524 XFA_GetPacketByIndex(XFA_PACKET_Config)->eFlags)) { |
525 return NULL; | 525 return nullptr; |
526 } | 526 } |
527 CXFA_Node* pNode = | 527 CXFA_Node* pNode = |
528 m_pFactory->CreateNode(XFA_XDPPACKET_Config, XFA_Element::Config); | 528 m_pFactory->CreateNode(XFA_XDPPACKET_Config, XFA_Element::Config); |
529 if (!pNode) { | 529 if (!pNode) { |
530 return NULL; | 530 return nullptr; |
531 } | 531 } |
532 pNode->SetCData(XFA_ATTRIBUTE_Name, | 532 pNode->SetCData(XFA_ATTRIBUTE_Name, |
533 XFA_GetPacketByIndex(XFA_PACKET_Config)->pName); | 533 XFA_GetPacketByIndex(XFA_PACKET_Config)->pName); |
534 if (!NormalLoader(pNode, pXMLDocumentNode, ePacketID)) { | 534 if (!NormalLoader(pNode, pXMLDocumentNode, ePacketID)) { |
535 return NULL; | 535 return nullptr; |
536 } | 536 } |
537 pNode->SetXMLMappingNode(pXMLDocumentNode); | 537 pNode->SetXMLMappingNode(pXMLDocumentNode); |
538 return pNode; | 538 return pNode; |
539 } | 539 } |
540 CXFA_Node* CXFA_SimpleParser::ParseAsXDPPacket_TemplateForm( | 540 CXFA_Node* CXFA_SimpleParser::ParseAsXDPPacket_TemplateForm( |
541 CFDE_XMLNode* pXMLDocumentNode, | 541 CFDE_XMLNode* pXMLDocumentNode, |
542 XFA_XDPPACKET ePacketID) { | 542 XFA_XDPPACKET ePacketID) { |
543 CXFA_Node* pNode = NULL; | 543 CXFA_Node* pNode = nullptr; |
544 if (ePacketID == XFA_XDPPACKET_Template) { | 544 if (ePacketID == XFA_XDPPACKET_Template) { |
545 if (XFA_FDEExtension_MatchNodeName( | 545 if (XFA_FDEExtension_MatchNodeName( |
546 pXMLDocumentNode, XFA_GetPacketByIndex(XFA_PACKET_Template)->pName, | 546 pXMLDocumentNode, XFA_GetPacketByIndex(XFA_PACKET_Template)->pName, |
547 XFA_GetPacketByIndex(XFA_PACKET_Template)->pURI, | 547 XFA_GetPacketByIndex(XFA_PACKET_Template)->pURI, |
548 XFA_GetPacketByIndex(XFA_PACKET_Template)->eFlags)) { | 548 XFA_GetPacketByIndex(XFA_PACKET_Template)->eFlags)) { |
549 pNode = | 549 pNode = |
550 m_pFactory->CreateNode(XFA_XDPPACKET_Template, XFA_Element::Template); | 550 m_pFactory->CreateNode(XFA_XDPPACKET_Template, XFA_Element::Template); |
551 if (!pNode) { | 551 if (!pNode) { |
552 return NULL; | 552 return nullptr; |
553 } | 553 } |
554 pNode->SetCData(XFA_ATTRIBUTE_Name, | 554 pNode->SetCData(XFA_ATTRIBUTE_Name, |
555 XFA_GetPacketByIndex(XFA_PACKET_Template)->pName); | 555 XFA_GetPacketByIndex(XFA_PACKET_Template)->pName); |
556 if (m_bDocumentParser) { | 556 if (m_bDocumentParser) { |
557 CFX_WideString wsNamespaceURI; | 557 CFX_WideString wsNamespaceURI; |
558 CFDE_XMLElement* pXMLDocumentElement = | 558 CFDE_XMLElement* pXMLDocumentElement = |
559 static_cast<CFDE_XMLElement*>(pXMLDocumentNode); | 559 static_cast<CFDE_XMLElement*>(pXMLDocumentNode); |
560 pXMLDocumentElement->GetNamespaceURI(wsNamespaceURI); | 560 pXMLDocumentElement->GetNamespaceURI(wsNamespaceURI); |
561 if (wsNamespaceURI.IsEmpty()) { | 561 if (wsNamespaceURI.IsEmpty()) { |
562 pXMLDocumentElement->GetString(L"xmlns:xfa", wsNamespaceURI); | 562 pXMLDocumentElement->GetString(L"xmlns:xfa", wsNamespaceURI); |
563 } | 563 } |
564 pNode->GetDocument()->RecognizeXFAVersionNumber(wsNamespaceURI); | 564 pNode->GetDocument()->RecognizeXFAVersionNumber(wsNamespaceURI); |
565 } | 565 } |
566 if (!NormalLoader(pNode, pXMLDocumentNode, ePacketID)) { | 566 if (!NormalLoader(pNode, pXMLDocumentNode, ePacketID)) { |
567 return NULL; | 567 return nullptr; |
568 } | 568 } |
569 } | 569 } |
570 } else if (ePacketID == XFA_XDPPACKET_Form) { | 570 } else if (ePacketID == XFA_XDPPACKET_Form) { |
571 if (XFA_FDEExtension_MatchNodeName( | 571 if (XFA_FDEExtension_MatchNodeName( |
572 pXMLDocumentNode, XFA_GetPacketByIndex(XFA_PACKET_Form)->pName, | 572 pXMLDocumentNode, XFA_GetPacketByIndex(XFA_PACKET_Form)->pName, |
573 XFA_GetPacketByIndex(XFA_PACKET_Form)->pURI, | 573 XFA_GetPacketByIndex(XFA_PACKET_Form)->pURI, |
574 XFA_GetPacketByIndex(XFA_PACKET_Form)->eFlags)) { | 574 XFA_GetPacketByIndex(XFA_PACKET_Form)->eFlags)) { |
575 CFDE_XMLElement* pXMLDocumentElement = | 575 CFDE_XMLElement* pXMLDocumentElement = |
576 static_cast<CFDE_XMLElement*>(pXMLDocumentNode); | 576 static_cast<CFDE_XMLElement*>(pXMLDocumentNode); |
577 CFX_WideString wsChecksum; | 577 CFX_WideString wsChecksum; |
578 pXMLDocumentElement->GetString(L"checksum", wsChecksum); | 578 pXMLDocumentElement->GetString(L"checksum", wsChecksum); |
579 if (wsChecksum.GetLength() != 28 || | 579 if (wsChecksum.GetLength() != 28 || |
580 m_pXMLParser->m_dwCheckStatus != 0x03) { | 580 m_pXMLParser->m_dwCheckStatus != 0x03) { |
581 return NULL; | 581 return nullptr; |
582 } | 582 } |
583 std::unique_ptr<CXFA_ChecksumContext> pChecksum(new CXFA_ChecksumContext); | 583 std::unique_ptr<CXFA_ChecksumContext> pChecksum(new CXFA_ChecksumContext); |
584 pChecksum->StartChecksum(); | 584 pChecksum->StartChecksum(); |
585 pChecksum->UpdateChecksum(m_pFileRead, m_pXMLParser->m_nStart[0], | 585 pChecksum->UpdateChecksum(m_pFileRead, m_pXMLParser->m_nStart[0], |
586 m_pXMLParser->m_nSize[0]); | 586 m_pXMLParser->m_nSize[0]); |
587 pChecksum->UpdateChecksum(m_pFileRead, m_pXMLParser->m_nStart[1], | 587 pChecksum->UpdateChecksum(m_pFileRead, m_pXMLParser->m_nStart[1], |
588 m_pXMLParser->m_nSize[1]); | 588 m_pXMLParser->m_nSize[1]); |
589 pChecksum->FinishChecksum(); | 589 pChecksum->FinishChecksum(); |
590 CFX_ByteString bsCheck = pChecksum->GetChecksum(); | 590 CFX_ByteString bsCheck = pChecksum->GetChecksum(); |
591 if (bsCheck != wsChecksum.UTF8Encode()) | 591 if (bsCheck != wsChecksum.UTF8Encode()) |
592 return nullptr; | 592 return nullptr; |
593 | 593 |
594 pNode = m_pFactory->CreateNode(XFA_XDPPACKET_Form, XFA_Element::Form); | 594 pNode = m_pFactory->CreateNode(XFA_XDPPACKET_Form, XFA_Element::Form); |
595 if (!pNode) | 595 if (!pNode) |
596 return nullptr; | 596 return nullptr; |
597 | 597 |
598 pNode->SetCData(XFA_ATTRIBUTE_Name, | 598 pNode->SetCData(XFA_ATTRIBUTE_Name, |
599 XFA_GetPacketByIndex(XFA_PACKET_Form)->pName); | 599 XFA_GetPacketByIndex(XFA_PACKET_Form)->pName); |
600 pNode->SetAttribute(XFA_ATTRIBUTE_Checksum, wsChecksum.AsStringC()); | 600 pNode->SetAttribute(XFA_ATTRIBUTE_Checksum, wsChecksum.AsStringC()); |
601 CXFA_Node* pTemplateRoot = | 601 CXFA_Node* pTemplateRoot = |
602 m_pRootNode->GetFirstChildByClass(XFA_Element::Template); | 602 m_pRootNode->GetFirstChildByClass(XFA_Element::Template); |
603 CXFA_Node* pTemplateChosen = | 603 CXFA_Node* pTemplateChosen = |
604 pTemplateRoot | 604 pTemplateRoot |
605 ? pTemplateRoot->GetFirstChildByClass(XFA_Element::Subform) | 605 ? pTemplateRoot->GetFirstChildByClass(XFA_Element::Subform) |
606 : NULL; | 606 : nullptr; |
607 FX_BOOL bUseAttribute = TRUE; | 607 FX_BOOL bUseAttribute = TRUE; |
608 if (pTemplateChosen && | 608 if (pTemplateChosen && |
609 pTemplateChosen->GetEnum(XFA_ATTRIBUTE_RestoreState) != | 609 pTemplateChosen->GetEnum(XFA_ATTRIBUTE_RestoreState) != |
610 XFA_ATTRIBUTEENUM_Auto) { | 610 XFA_ATTRIBUTEENUM_Auto) { |
611 bUseAttribute = FALSE; | 611 bUseAttribute = FALSE; |
612 } | 612 } |
613 if (!NormalLoader(pNode, pXMLDocumentNode, ePacketID, bUseAttribute)) { | 613 if (!NormalLoader(pNode, pXMLDocumentNode, ePacketID, bUseAttribute)) { |
614 return NULL; | 614 return nullptr; |
615 } | 615 } |
616 } | 616 } |
617 } | 617 } |
618 if (pNode) { | 618 if (pNode) { |
619 pNode->SetXMLMappingNode(pXMLDocumentNode); | 619 pNode->SetXMLMappingNode(pXMLDocumentNode); |
620 } | 620 } |
621 return pNode; | 621 return pNode; |
622 } | 622 } |
623 static CFDE_XMLNode* XFA_GetDataSetsFromXDP(CFDE_XMLNode* pXMLDocumentNode) { | 623 static CFDE_XMLNode* XFA_GetDataSetsFromXDP(CFDE_XMLNode* pXMLDocumentNode) { |
624 if (XFA_FDEExtension_MatchNodeName( | 624 if (XFA_FDEExtension_MatchNodeName( |
625 pXMLDocumentNode, XFA_GetPacketByIndex(XFA_PACKET_Datasets)->pName, | 625 pXMLDocumentNode, XFA_GetPacketByIndex(XFA_PACKET_Datasets)->pName, |
626 XFA_GetPacketByIndex(XFA_PACKET_Datasets)->pURI, | 626 XFA_GetPacketByIndex(XFA_PACKET_Datasets)->pURI, |
627 XFA_GetPacketByIndex(XFA_PACKET_Datasets)->eFlags)) { | 627 XFA_GetPacketByIndex(XFA_PACKET_Datasets)->eFlags)) { |
628 return pXMLDocumentNode; | 628 return pXMLDocumentNode; |
629 } | 629 } |
630 if (!XFA_FDEExtension_MatchNodeName( | 630 if (!XFA_FDEExtension_MatchNodeName( |
631 pXMLDocumentNode, XFA_GetPacketByIndex(XFA_PACKET_XDP)->pName, | 631 pXMLDocumentNode, XFA_GetPacketByIndex(XFA_PACKET_XDP)->pName, |
632 XFA_GetPacketByIndex(XFA_PACKET_XDP)->pURI, | 632 XFA_GetPacketByIndex(XFA_PACKET_XDP)->pURI, |
633 XFA_GetPacketByIndex(XFA_PACKET_XDP)->eFlags)) { | 633 XFA_GetPacketByIndex(XFA_PACKET_XDP)->eFlags)) { |
634 return NULL; | 634 return nullptr; |
635 } | 635 } |
636 for (CFDE_XMLNode* pDatasetsNode = | 636 for (CFDE_XMLNode* pDatasetsNode = |
637 pXMLDocumentNode->GetNodeItem(CFDE_XMLNode::FirstChild); | 637 pXMLDocumentNode->GetNodeItem(CFDE_XMLNode::FirstChild); |
638 pDatasetsNode; | 638 pDatasetsNode; |
639 pDatasetsNode = pDatasetsNode->GetNodeItem(CFDE_XMLNode::NextSibling)) { | 639 pDatasetsNode = pDatasetsNode->GetNodeItem(CFDE_XMLNode::NextSibling)) { |
640 if (!XFA_FDEExtension_MatchNodeName( | 640 if (!XFA_FDEExtension_MatchNodeName( |
641 pDatasetsNode, XFA_GetPacketByIndex(XFA_PACKET_Datasets)->pName, | 641 pDatasetsNode, XFA_GetPacketByIndex(XFA_PACKET_Datasets)->pName, |
642 XFA_GetPacketByIndex(XFA_PACKET_Datasets)->pURI, | 642 XFA_GetPacketByIndex(XFA_PACKET_Datasets)->pURI, |
643 XFA_GetPacketByIndex(XFA_PACKET_Datasets)->eFlags)) { | 643 XFA_GetPacketByIndex(XFA_PACKET_Datasets)->eFlags)) { |
644 continue; | 644 continue; |
645 } | 645 } |
646 return pDatasetsNode; | 646 return pDatasetsNode; |
647 } | 647 } |
648 return NULL; | 648 return nullptr; |
649 } | 649 } |
650 CXFA_Node* CXFA_SimpleParser::ParseAsXDPPacket_Data( | 650 CXFA_Node* CXFA_SimpleParser::ParseAsXDPPacket_Data( |
651 CFDE_XMLNode* pXMLDocumentNode, | 651 CFDE_XMLNode* pXMLDocumentNode, |
652 XFA_XDPPACKET ePacketID) { | 652 XFA_XDPPACKET ePacketID) { |
653 CFDE_XMLNode* pDatasetsXMLNode = XFA_GetDataSetsFromXDP(pXMLDocumentNode); | 653 CFDE_XMLNode* pDatasetsXMLNode = XFA_GetDataSetsFromXDP(pXMLDocumentNode); |
654 if (pDatasetsXMLNode) { | 654 if (pDatasetsXMLNode) { |
655 CXFA_Node* pNode = | 655 CXFA_Node* pNode = |
656 m_pFactory->CreateNode(XFA_XDPPACKET_Datasets, XFA_Element::DataModel); | 656 m_pFactory->CreateNode(XFA_XDPPACKET_Datasets, XFA_Element::DataModel); |
657 if (!pNode) { | 657 if (!pNode) { |
658 return NULL; | 658 return nullptr; |
659 } | 659 } |
660 pNode->SetCData(XFA_ATTRIBUTE_Name, | 660 pNode->SetCData(XFA_ATTRIBUTE_Name, |
661 XFA_GetPacketByIndex(XFA_PACKET_Datasets)->pName); | 661 XFA_GetPacketByIndex(XFA_PACKET_Datasets)->pName); |
662 if (!DataLoader(pNode, pDatasetsXMLNode, FALSE)) { | 662 if (!DataLoader(pNode, pDatasetsXMLNode, FALSE)) { |
663 return NULL; | 663 return nullptr; |
664 } | 664 } |
665 pNode->SetXMLMappingNode(pDatasetsXMLNode); | 665 pNode->SetXMLMappingNode(pDatasetsXMLNode); |
666 return pNode; | 666 return pNode; |
667 } | 667 } |
668 CFDE_XMLNode* pDataXMLNode = NULL; | 668 CFDE_XMLNode* pDataXMLNode = nullptr; |
669 if (XFA_FDEExtension_MatchNodeName( | 669 if (XFA_FDEExtension_MatchNodeName( |
670 pXMLDocumentNode, FX_WSTRC(L"data"), | 670 pXMLDocumentNode, FX_WSTRC(L"data"), |
671 XFA_GetPacketByIndex(XFA_PACKET_Datasets)->pURI, | 671 XFA_GetPacketByIndex(XFA_PACKET_Datasets)->pURI, |
672 XFA_GetPacketByIndex(XFA_PACKET_Datasets)->eFlags)) { | 672 XFA_GetPacketByIndex(XFA_PACKET_Datasets)->eFlags)) { |
673 static_cast<CFDE_XMLElement*>(pXMLDocumentNode) | 673 static_cast<CFDE_XMLElement*>(pXMLDocumentNode) |
674 ->RemoveAttribute(L"xmlns:xfa"); | 674 ->RemoveAttribute(L"xmlns:xfa"); |
675 pDataXMLNode = pXMLDocumentNode; | 675 pDataXMLNode = pXMLDocumentNode; |
676 } else { | 676 } else { |
677 CFDE_XMLElement* pDataElement = new CFDE_XMLElement(L"xfa:data"); | 677 CFDE_XMLElement* pDataElement = new CFDE_XMLElement(L"xfa:data"); |
678 CFDE_XMLNode* pParentXMLNode = | 678 CFDE_XMLNode* pParentXMLNode = |
679 pXMLDocumentNode->GetNodeItem(CFDE_XMLNode::Parent); | 679 pXMLDocumentNode->GetNodeItem(CFDE_XMLNode::Parent); |
680 if (pParentXMLNode) { | 680 if (pParentXMLNode) { |
681 pParentXMLNode->RemoveChildNode(pXMLDocumentNode); | 681 pParentXMLNode->RemoveChildNode(pXMLDocumentNode); |
682 } | 682 } |
683 ASSERT(pXMLDocumentNode->GetType() == FDE_XMLNODE_Element); | 683 ASSERT(pXMLDocumentNode->GetType() == FDE_XMLNODE_Element); |
684 if (pXMLDocumentNode->GetType() == FDE_XMLNODE_Element) { | 684 if (pXMLDocumentNode->GetType() == FDE_XMLNODE_Element) { |
685 static_cast<CFDE_XMLElement*>(pXMLDocumentNode) | 685 static_cast<CFDE_XMLElement*>(pXMLDocumentNode) |
686 ->RemoveAttribute(L"xmlns:xfa"); | 686 ->RemoveAttribute(L"xmlns:xfa"); |
687 } | 687 } |
688 pDataElement->InsertChildNode(pXMLDocumentNode); | 688 pDataElement->InsertChildNode(pXMLDocumentNode); |
689 pDataXMLNode = pDataElement; | 689 pDataXMLNode = pDataElement; |
690 } | 690 } |
691 if (pDataXMLNode) { | 691 if (pDataXMLNode) { |
692 CXFA_Node* pNode = | 692 CXFA_Node* pNode = |
693 m_pFactory->CreateNode(XFA_XDPPACKET_Datasets, XFA_Element::DataGroup); | 693 m_pFactory->CreateNode(XFA_XDPPACKET_Datasets, XFA_Element::DataGroup); |
694 if (!pNode) { | 694 if (!pNode) { |
695 if (pDataXMLNode != pXMLDocumentNode) { | 695 if (pDataXMLNode != pXMLDocumentNode) { |
696 pDataXMLNode->Release(); | 696 pDataXMLNode->Release(); |
697 } | 697 } |
698 return NULL; | 698 return nullptr; |
699 } | 699 } |
700 CFX_WideString wsLocalName; | 700 CFX_WideString wsLocalName; |
701 static_cast<CFDE_XMLElement*>(pDataXMLNode)->GetLocalTagName(wsLocalName); | 701 static_cast<CFDE_XMLElement*>(pDataXMLNode)->GetLocalTagName(wsLocalName); |
702 pNode->SetCData(XFA_ATTRIBUTE_Name, wsLocalName); | 702 pNode->SetCData(XFA_ATTRIBUTE_Name, wsLocalName); |
703 if (!DataLoader(pNode, pDataXMLNode, TRUE)) { | 703 if (!DataLoader(pNode, pDataXMLNode, TRUE)) { |
704 return NULL; | 704 return nullptr; |
705 } | 705 } |
706 pNode->SetXMLMappingNode(pDataXMLNode); | 706 pNode->SetXMLMappingNode(pDataXMLNode); |
707 if (pDataXMLNode != pXMLDocumentNode) { | 707 if (pDataXMLNode != pXMLDocumentNode) { |
708 pNode->SetFlag(XFA_NodeFlag_OwnXMLNode, false); | 708 pNode->SetFlag(XFA_NodeFlag_OwnXMLNode, false); |
709 } | 709 } |
710 return pNode; | 710 return pNode; |
711 } | 711 } |
712 return NULL; | 712 return nullptr; |
713 } | 713 } |
714 CXFA_Node* CXFA_SimpleParser::ParseAsXDPPacket_LocaleConnectionSourceSet( | 714 CXFA_Node* CXFA_SimpleParser::ParseAsXDPPacket_LocaleConnectionSourceSet( |
715 CFDE_XMLNode* pXMLDocumentNode, | 715 CFDE_XMLNode* pXMLDocumentNode, |
716 XFA_XDPPACKET ePacketID) { | 716 XFA_XDPPACKET ePacketID) { |
717 CXFA_Node* pNode = NULL; | 717 CXFA_Node* pNode = nullptr; |
718 if (ePacketID == XFA_XDPPACKET_LocaleSet) { | 718 if (ePacketID == XFA_XDPPACKET_LocaleSet) { |
719 if (XFA_FDEExtension_MatchNodeName( | 719 if (XFA_FDEExtension_MatchNodeName( |
720 pXMLDocumentNode, XFA_GetPacketByIndex(XFA_PACKET_LocaleSet)->pName, | 720 pXMLDocumentNode, XFA_GetPacketByIndex(XFA_PACKET_LocaleSet)->pName, |
721 XFA_GetPacketByIndex(XFA_PACKET_LocaleSet)->pURI, | 721 XFA_GetPacketByIndex(XFA_PACKET_LocaleSet)->pURI, |
722 XFA_GetPacketByIndex(XFA_PACKET_LocaleSet)->eFlags)) { | 722 XFA_GetPacketByIndex(XFA_PACKET_LocaleSet)->eFlags)) { |
723 pNode = m_pFactory->CreateNode(XFA_XDPPACKET_LocaleSet, | 723 pNode = m_pFactory->CreateNode(XFA_XDPPACKET_LocaleSet, |
724 XFA_Element::LocaleSet); | 724 XFA_Element::LocaleSet); |
725 if (!pNode) { | 725 if (!pNode) { |
726 return NULL; | 726 return nullptr; |
727 } | 727 } |
728 pNode->SetCData(XFA_ATTRIBUTE_Name, | 728 pNode->SetCData(XFA_ATTRIBUTE_Name, |
729 XFA_GetPacketByIndex(XFA_PACKET_LocaleSet)->pName); | 729 XFA_GetPacketByIndex(XFA_PACKET_LocaleSet)->pName); |
730 if (!NormalLoader(pNode, pXMLDocumentNode, ePacketID)) { | 730 if (!NormalLoader(pNode, pXMLDocumentNode, ePacketID)) { |
731 return NULL; | 731 return nullptr; |
732 } | 732 } |
733 } | 733 } |
734 } else if (ePacketID == XFA_XDPPACKET_ConnectionSet) { | 734 } else if (ePacketID == XFA_XDPPACKET_ConnectionSet) { |
735 if (XFA_FDEExtension_MatchNodeName( | 735 if (XFA_FDEExtension_MatchNodeName( |
736 pXMLDocumentNode, | 736 pXMLDocumentNode, |
737 XFA_GetPacketByIndex(XFA_PACKET_ConnectionSet)->pName, | 737 XFA_GetPacketByIndex(XFA_PACKET_ConnectionSet)->pName, |
738 XFA_GetPacketByIndex(XFA_PACKET_ConnectionSet)->pURI, | 738 XFA_GetPacketByIndex(XFA_PACKET_ConnectionSet)->pURI, |
739 XFA_GetPacketByIndex(XFA_PACKET_ConnectionSet)->eFlags)) { | 739 XFA_GetPacketByIndex(XFA_PACKET_ConnectionSet)->eFlags)) { |
740 pNode = m_pFactory->CreateNode(XFA_XDPPACKET_ConnectionSet, | 740 pNode = m_pFactory->CreateNode(XFA_XDPPACKET_ConnectionSet, |
741 XFA_Element::ConnectionSet); | 741 XFA_Element::ConnectionSet); |
742 if (!pNode) { | 742 if (!pNode) { |
743 return NULL; | 743 return nullptr; |
744 } | 744 } |
745 pNode->SetCData(XFA_ATTRIBUTE_Name, | 745 pNode->SetCData(XFA_ATTRIBUTE_Name, |
746 XFA_GetPacketByIndex(XFA_PACKET_ConnectionSet)->pName); | 746 XFA_GetPacketByIndex(XFA_PACKET_ConnectionSet)->pName); |
747 if (!NormalLoader(pNode, pXMLDocumentNode, ePacketID)) { | 747 if (!NormalLoader(pNode, pXMLDocumentNode, ePacketID)) { |
748 return NULL; | 748 return nullptr; |
749 } | 749 } |
750 } | 750 } |
751 } else if (ePacketID == XFA_XDPPACKET_SourceSet) { | 751 } else if (ePacketID == XFA_XDPPACKET_SourceSet) { |
752 if (XFA_FDEExtension_MatchNodeName( | 752 if (XFA_FDEExtension_MatchNodeName( |
753 pXMLDocumentNode, XFA_GetPacketByIndex(XFA_PACKET_SourceSet)->pName, | 753 pXMLDocumentNode, XFA_GetPacketByIndex(XFA_PACKET_SourceSet)->pName, |
754 XFA_GetPacketByIndex(XFA_PACKET_SourceSet)->pURI, | 754 XFA_GetPacketByIndex(XFA_PACKET_SourceSet)->pURI, |
755 XFA_GetPacketByIndex(XFA_PACKET_SourceSet)->eFlags)) { | 755 XFA_GetPacketByIndex(XFA_PACKET_SourceSet)->eFlags)) { |
756 pNode = m_pFactory->CreateNode(XFA_XDPPACKET_SourceSet, | 756 pNode = m_pFactory->CreateNode(XFA_XDPPACKET_SourceSet, |
757 XFA_Element::SourceSet); | 757 XFA_Element::SourceSet); |
758 if (!pNode) { | 758 if (!pNode) { |
759 return NULL; | 759 return nullptr; |
760 } | 760 } |
761 pNode->SetCData(XFA_ATTRIBUTE_Name, | 761 pNode->SetCData(XFA_ATTRIBUTE_Name, |
762 XFA_GetPacketByIndex(XFA_PACKET_SourceSet)->pName); | 762 XFA_GetPacketByIndex(XFA_PACKET_SourceSet)->pName); |
763 if (!NormalLoader(pNode, pXMLDocumentNode, ePacketID)) { | 763 if (!NormalLoader(pNode, pXMLDocumentNode, ePacketID)) { |
764 return NULL; | 764 return nullptr; |
765 } | 765 } |
766 } | 766 } |
767 } | 767 } |
768 if (pNode) { | 768 if (pNode) { |
769 pNode->SetXMLMappingNode(pXMLDocumentNode); | 769 pNode->SetXMLMappingNode(pXMLDocumentNode); |
770 } | 770 } |
771 return pNode; | 771 return pNode; |
772 } | 772 } |
773 CXFA_Node* CXFA_SimpleParser::ParseAsXDPPacket_Xdc( | 773 CXFA_Node* CXFA_SimpleParser::ParseAsXDPPacket_Xdc( |
774 CFDE_XMLNode* pXMLDocumentNode, | 774 CFDE_XMLNode* pXMLDocumentNode, |
775 XFA_XDPPACKET ePacketID) { | 775 XFA_XDPPACKET ePacketID) { |
776 if (XFA_FDEExtension_MatchNodeName( | 776 if (XFA_FDEExtension_MatchNodeName( |
777 pXMLDocumentNode, XFA_GetPacketByIndex(XFA_PACKET_Xdc)->pName, | 777 pXMLDocumentNode, XFA_GetPacketByIndex(XFA_PACKET_Xdc)->pName, |
778 XFA_GetPacketByIndex(XFA_PACKET_Xdc)->pURI, | 778 XFA_GetPacketByIndex(XFA_PACKET_Xdc)->pURI, |
779 XFA_GetPacketByIndex(XFA_PACKET_Xdc)->eFlags)) { | 779 XFA_GetPacketByIndex(XFA_PACKET_Xdc)->eFlags)) { |
780 CXFA_Node* pNode = | 780 CXFA_Node* pNode = |
781 m_pFactory->CreateNode(XFA_XDPPACKET_Xdc, XFA_Element::Xdc); | 781 m_pFactory->CreateNode(XFA_XDPPACKET_Xdc, XFA_Element::Xdc); |
782 if (!pNode) { | 782 if (!pNode) { |
783 return NULL; | 783 return nullptr; |
784 } | 784 } |
785 pNode->SetCData(XFA_ATTRIBUTE_Name, | 785 pNode->SetCData(XFA_ATTRIBUTE_Name, |
786 XFA_GetPacketByIndex(XFA_PACKET_Xdc)->pName); | 786 XFA_GetPacketByIndex(XFA_PACKET_Xdc)->pName); |
787 pNode->SetXMLMappingNode(pXMLDocumentNode); | 787 pNode->SetXMLMappingNode(pXMLDocumentNode); |
788 return pNode; | 788 return pNode; |
789 } | 789 } |
790 return NULL; | 790 return nullptr; |
791 } | 791 } |
792 CXFA_Node* CXFA_SimpleParser::ParseAsXDPPacket_User( | 792 CXFA_Node* CXFA_SimpleParser::ParseAsXDPPacket_User( |
793 CFDE_XMLNode* pXMLDocumentNode, | 793 CFDE_XMLNode* pXMLDocumentNode, |
794 XFA_XDPPACKET ePacketID) { | 794 XFA_XDPPACKET ePacketID) { |
795 CXFA_Node* pNode = | 795 CXFA_Node* pNode = |
796 m_pFactory->CreateNode(XFA_XDPPACKET_XDP, XFA_Element::Packet); | 796 m_pFactory->CreateNode(XFA_XDPPACKET_XDP, XFA_Element::Packet); |
797 if (!pNode) { | 797 if (!pNode) { |
798 return NULL; | 798 return nullptr; |
799 } | 799 } |
800 CFX_WideString wsName; | 800 CFX_WideString wsName; |
801 static_cast<CFDE_XMLElement*>(pXMLDocumentNode)->GetLocalTagName(wsName); | 801 static_cast<CFDE_XMLElement*>(pXMLDocumentNode)->GetLocalTagName(wsName); |
802 pNode->SetCData(XFA_ATTRIBUTE_Name, wsName); | 802 pNode->SetCData(XFA_ATTRIBUTE_Name, wsName); |
803 if (!UserPacketLoader(pNode, pXMLDocumentNode)) { | 803 if (!UserPacketLoader(pNode, pXMLDocumentNode)) { |
804 return NULL; | 804 return nullptr; |
805 } | 805 } |
806 pNode->SetXMLMappingNode(pXMLDocumentNode); | 806 pNode->SetXMLMappingNode(pXMLDocumentNode); |
807 return pNode; | 807 return pNode; |
808 } | 808 } |
809 CXFA_Node* CXFA_SimpleParser::UserPacketLoader(CXFA_Node* pXFANode, | 809 CXFA_Node* CXFA_SimpleParser::UserPacketLoader(CXFA_Node* pXFANode, |
810 CFDE_XMLNode* pXMLDoc) { | 810 CFDE_XMLNode* pXMLDoc) { |
811 return pXFANode; | 811 return pXFANode; |
812 } | 812 } |
813 static FX_BOOL XFA_FDEExtension_IsStringAllWhitespace(CFX_WideString wsText) { | 813 static FX_BOOL XFA_FDEExtension_IsStringAllWhitespace(CFX_WideString wsText) { |
814 wsText.TrimRight(L"\x20\x9\xD\xA"); | 814 wsText.TrimRight(L"\x20\x9\xD\xA"); |
(...skipping 26 matching lines...) Expand all Loading... |
841 pXFANode->GetElementType(), eType, ePacketID); | 841 pXFANode->GetElementType(), eType, ePacketID); |
842 if (pPropertyInfo && | 842 if (pPropertyInfo && |
843 ((pPropertyInfo->uFlags & | 843 ((pPropertyInfo->uFlags & |
844 (XFA_PROPERTYFLAG_OneOf | XFA_PROPERTYFLAG_DefaultOneOf)) != 0)) { | 844 (XFA_PROPERTYFLAG_OneOf | XFA_PROPERTYFLAG_DefaultOneOf)) != 0)) { |
845 if (bOneOfPropertyFound) { | 845 if (bOneOfPropertyFound) { |
846 break; | 846 break; |
847 } | 847 } |
848 bOneOfPropertyFound = TRUE; | 848 bOneOfPropertyFound = TRUE; |
849 } | 849 } |
850 CXFA_Node* pXFAChild = m_pFactory->CreateNode(ePacketID, eType); | 850 CXFA_Node* pXFAChild = m_pFactory->CreateNode(ePacketID, eType); |
851 if (pXFAChild == NULL) { | 851 if (!pXFAChild) |
852 return NULL; | 852 return nullptr; |
853 } | 853 if (ePacketID == XFA_XDPPACKET_Config) |
854 if (ePacketID == XFA_XDPPACKET_Config) { | |
855 pXFAChild->SetAttribute(XFA_ATTRIBUTE_Name, wsTagName.AsStringC()); | 854 pXFAChild->SetAttribute(XFA_ATTRIBUTE_Name, wsTagName.AsStringC()); |
856 } | 855 |
857 FX_BOOL IsNeedValue = TRUE; | 856 FX_BOOL IsNeedValue = TRUE; |
858 for (int32_t i = 0, count = pXMLElement->CountAttributes(); i < count; | 857 for (int32_t i = 0, count = pXMLElement->CountAttributes(); i < count; |
859 i++) { | 858 i++) { |
860 CFX_WideString wsAttrQualifiedName; | 859 CFX_WideString wsAttrQualifiedName; |
861 CFX_WideString wsAttrName; | 860 CFX_WideString wsAttrName; |
862 CFX_WideString wsAttrValue; | 861 CFX_WideString wsAttrValue; |
863 pXMLElement->GetAttribute(i, wsAttrQualifiedName, wsAttrValue); | 862 pXMLElement->GetAttribute(i, wsAttrQualifiedName, wsAttrValue); |
864 XFA_FDEExtension_GetAttributeLocalName( | 863 XFA_FDEExtension_GetAttributeLocalName( |
865 wsAttrQualifiedName.AsStringC(), wsAttrName); | 864 wsAttrQualifiedName.AsStringC(), wsAttrName); |
866 if (wsAttrName == FX_WSTRC(L"nil") && | 865 if (wsAttrName == FX_WSTRC(L"nil") && |
(...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1095 break; | 1094 break; |
1096 } | 1095 } |
1097 } | 1096 } |
1098 } | 1097 } |
1099 } | 1098 } |
1100 if (eNodeType == XFA_Element::DataModel) { | 1099 if (eNodeType == XFA_Element::DataModel) { |
1101 eNodeType = XFA_Element::DataValue; | 1100 eNodeType = XFA_Element::DataValue; |
1102 } | 1101 } |
1103 CXFA_Node* pXFAChild = | 1102 CXFA_Node* pXFAChild = |
1104 m_pFactory->CreateNode(XFA_XDPPACKET_Datasets, eNodeType); | 1103 m_pFactory->CreateNode(XFA_XDPPACKET_Datasets, eNodeType); |
1105 if (pXFAChild == NULL) { | 1104 if (!pXFAChild) { |
1106 return; | 1105 return; |
1107 } | 1106 } |
1108 CFX_WideString wsNodeName; | 1107 CFX_WideString wsNodeName; |
1109 pXMLElement->GetLocalTagName(wsNodeName); | 1108 pXMLElement->GetLocalTagName(wsNodeName); |
1110 pXFAChild->SetCData(XFA_ATTRIBUTE_Name, wsNodeName); | 1109 pXFAChild->SetCData(XFA_ATTRIBUTE_Name, wsNodeName); |
1111 FX_BOOL bNeedValue = TRUE; | 1110 FX_BOOL bNeedValue = TRUE; |
1112 if (1) { | 1111 if (1) { |
1113 for (int32_t i = 0, count = pXMLElement->CountAttributes(); i < count; | 1112 for (int32_t i = 0, count = pXMLElement->CountAttributes(); i < count; |
1114 i++) { | 1113 i++) { |
1115 CFX_WideString wsAttrQualifiedName; | 1114 CFX_WideString wsAttrQualifiedName; |
(...skipping 19 matching lines...) Expand all Loading... |
1135 FX_WSTRC(L"http://www.w3.org/2001/XMLSchema-instance") || | 1134 FX_WSTRC(L"http://www.w3.org/2001/XMLSchema-instance") || |
1136 wsAttrNamespaceURI == | 1135 wsAttrNamespaceURI == |
1137 FX_WSTRC(L"http://www.xfa.org/schema/xfa-data/1.0/")) { | 1136 FX_WSTRC(L"http://www.xfa.org/schema/xfa-data/1.0/")) { |
1138 continue; | 1137 continue; |
1139 } | 1138 } |
1140 if (0) { | 1139 if (0) { |
1141 continue; | 1140 continue; |
1142 } | 1141 } |
1143 CXFA_Node* pXFAMetaData = m_pFactory->CreateNode( | 1142 CXFA_Node* pXFAMetaData = m_pFactory->CreateNode( |
1144 XFA_XDPPACKET_Datasets, XFA_Element::DataValue); | 1143 XFA_XDPPACKET_Datasets, XFA_Element::DataValue); |
1145 if (pXFAMetaData == NULL) { | 1144 if (!pXFAMetaData) { |
1146 return; | 1145 return; |
1147 } | 1146 } |
1148 pXFAMetaData->SetCData(XFA_ATTRIBUTE_Name, wsAttrName); | 1147 pXFAMetaData->SetCData(XFA_ATTRIBUTE_Name, wsAttrName); |
1149 pXFAMetaData->SetCData(XFA_ATTRIBUTE_QualifiedName, | 1148 pXFAMetaData->SetCData(XFA_ATTRIBUTE_QualifiedName, |
1150 wsAttrQualifiedName); | 1149 wsAttrQualifiedName); |
1151 pXFAMetaData->SetCData(XFA_ATTRIBUTE_Value, wsAttrValue); | 1150 pXFAMetaData->SetCData(XFA_ATTRIBUTE_Value, wsAttrValue); |
1152 pXFAMetaData->SetEnum(XFA_ATTRIBUTE_Contains, | 1151 pXFAMetaData->SetEnum(XFA_ATTRIBUTE_Contains, |
1153 XFA_ATTRIBUTEENUM_MetaData); | 1152 XFA_ATTRIBUTEENUM_MetaData); |
1154 pXFAChild->InsertChild(pXFAMetaData); | 1153 pXFAChild->InsertChild(pXFAMetaData); |
1155 pXFAMetaData->SetXMLMappingNode(pXMLElement); | 1154 pXFAMetaData->SetXMLMappingNode(pXMLElement); |
(...skipping 19 matching lines...) Expand all Loading... |
1175 case FDE_XMLNODE_CharData: { | 1174 case FDE_XMLNODE_CharData: { |
1176 CFDE_XMLCharData* pXMLCharData = | 1175 CFDE_XMLCharData* pXMLCharData = |
1177 static_cast<CFDE_XMLCharData*>(pXMLChild); | 1176 static_cast<CFDE_XMLCharData*>(pXMLChild); |
1178 CFX_WideString wsCharData; | 1177 CFX_WideString wsCharData; |
1179 pXMLCharData->GetCharData(wsCharData); | 1178 pXMLCharData->GetCharData(wsCharData); |
1180 if (XFA_FDEExtension_IsStringAllWhitespace(wsCharData)) { | 1179 if (XFA_FDEExtension_IsStringAllWhitespace(wsCharData)) { |
1181 continue; | 1180 continue; |
1182 } | 1181 } |
1183 CXFA_Node* pXFAChild = m_pFactory->CreateNode(XFA_XDPPACKET_Datasets, | 1182 CXFA_Node* pXFAChild = m_pFactory->CreateNode(XFA_XDPPACKET_Datasets, |
1184 XFA_Element::DataValue); | 1183 XFA_Element::DataValue); |
1185 if (pXFAChild == NULL) { | 1184 if (!pXFAChild) { |
1186 return; | 1185 return; |
1187 } | 1186 } |
1188 pXFAChild->SetCData(XFA_ATTRIBUTE_Value, wsCharData); | 1187 pXFAChild->SetCData(XFA_ATTRIBUTE_Value, wsCharData); |
1189 pXFANode->InsertChild(pXFAChild); | 1188 pXFANode->InsertChild(pXFAChild); |
1190 pXFAChild->SetXMLMappingNode(pXMLCharData); | 1189 pXFAChild->SetXMLMappingNode(pXMLCharData); |
1191 pXFAChild->SetFlag(XFA_NodeFlag_Initialized, false); | 1190 pXFAChild->SetFlag(XFA_NodeFlag_Initialized, false); |
1192 } | 1191 } |
1193 continue; | 1192 continue; |
1194 case FDE_XMLNODE_Text: { | 1193 case FDE_XMLNODE_Text: { |
1195 CFDE_XMLText* pXMLText = static_cast<CFDE_XMLText*>(pXMLChild); | 1194 CFDE_XMLText* pXMLText = static_cast<CFDE_XMLText*>(pXMLChild); |
1196 CFX_WideString wsText; | 1195 CFX_WideString wsText; |
1197 pXMLText->GetText(wsText); | 1196 pXMLText->GetText(wsText); |
1198 if (XFA_FDEExtension_IsStringAllWhitespace(wsText)) { | 1197 if (XFA_FDEExtension_IsStringAllWhitespace(wsText)) { |
1199 continue; | 1198 continue; |
1200 } | 1199 } |
1201 CXFA_Node* pXFAChild = m_pFactory->CreateNode(XFA_XDPPACKET_Datasets, | 1200 CXFA_Node* pXFAChild = m_pFactory->CreateNode(XFA_XDPPACKET_Datasets, |
1202 XFA_Element::DataValue); | 1201 XFA_Element::DataValue); |
1203 if (pXFAChild == NULL) { | 1202 if (!pXFAChild) { |
1204 return; | 1203 return; |
1205 } | 1204 } |
1206 pXFAChild->SetCData(XFA_ATTRIBUTE_Value, wsText); | 1205 pXFAChild->SetCData(XFA_ATTRIBUTE_Value, wsText); |
1207 pXFANode->InsertChild(pXFAChild); | 1206 pXFANode->InsertChild(pXFAChild); |
1208 pXFAChild->SetXMLMappingNode(pXMLText); | 1207 pXFAChild->SetXMLMappingNode(pXMLText); |
1209 pXFAChild->SetFlag(XFA_NodeFlag_Initialized, false); | 1208 pXFAChild->SetFlag(XFA_NodeFlag_Initialized, false); |
1210 } | 1209 } |
1211 continue; | 1210 continue; |
1212 case FDE_XMLNODE_Instruction: | 1211 case FDE_XMLNODE_Instruction: |
1213 continue; | 1212 continue; |
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1339 if (pXMLInstruction->GetData(1, wsData) && | 1338 if (pXMLInstruction->GetData(1, wsData) && |
1340 wsData == FX_WSTRC(L"strictScoping")) { | 1339 wsData == FX_WSTRC(L"strictScoping")) { |
1341 pXFANode->GetDocument()->SetFlag(XFA_DOCFLAG_StrictScoping, TRUE); | 1340 pXFANode->GetDocument()->SetFlag(XFA_DOCFLAG_StrictScoping, TRUE); |
1342 } | 1341 } |
1343 } | 1342 } |
1344 } | 1343 } |
1345 } | 1344 } |
1346 void CXFA_SimpleParser::CloseParser() { | 1345 void CXFA_SimpleParser::CloseParser() { |
1347 if (m_pXMLDoc) { | 1346 if (m_pXMLDoc) { |
1348 m_pXMLDoc->Release(); | 1347 m_pXMLDoc->Release(); |
1349 m_pXMLDoc = NULL; | 1348 m_pXMLDoc = nullptr; |
1350 } | 1349 } |
1351 if (m_pStream) { | 1350 if (m_pStream) { |
1352 m_pStream->Release(); | 1351 m_pStream->Release(); |
1353 m_pStream = NULL; | 1352 m_pStream = nullptr; |
1354 } | 1353 } |
1355 } | 1354 } |
1356 | 1355 |
1357 CXFA_DocumentParser::CXFA_DocumentParser(CXFA_FFNotify* pNotify) | 1356 CXFA_DocumentParser::CXFA_DocumentParser(CXFA_FFNotify* pNotify) |
1358 : m_nodeParser(NULL, TRUE), m_pNotify(pNotify), m_pDocument(NULL) {} | 1357 : m_nodeParser(nullptr, TRUE), m_pNotify(pNotify), m_pDocument(nullptr) {} |
1359 CXFA_DocumentParser::~CXFA_DocumentParser() { | 1358 CXFA_DocumentParser::~CXFA_DocumentParser() { |
1360 CloseParser(); | 1359 CloseParser(); |
1361 } | 1360 } |
1362 | 1361 |
1363 void CXFA_DocumentParser::Release() { | 1362 void CXFA_DocumentParser::Release() { |
1364 delete this; | 1363 delete this; |
1365 } | 1364 } |
1366 int32_t CXFA_DocumentParser::StartParse(IFX_FileRead* pStream, | 1365 int32_t CXFA_DocumentParser::StartParse(IFX_FileRead* pStream, |
1367 XFA_XDPPACKET ePacketID) { | 1366 XFA_XDPPACKET ePacketID) { |
1368 CloseParser(); | 1367 CloseParser(); |
1369 int32_t nRetStatus = m_nodeParser.StartParse(pStream, ePacketID); | 1368 int32_t nRetStatus = m_nodeParser.StartParse(pStream, ePacketID); |
1370 if (nRetStatus == XFA_PARSESTATUS_Ready) { | 1369 if (nRetStatus == XFA_PARSESTATUS_Ready) { |
1371 m_pDocument = new CXFA_Document(this); | 1370 m_pDocument = new CXFA_Document(this); |
1372 m_nodeParser.SetFactory(m_pDocument); | 1371 m_nodeParser.SetFactory(m_pDocument); |
1373 } | 1372 } |
1374 return nRetStatus; | 1373 return nRetStatus; |
1375 } | 1374 } |
1376 int32_t CXFA_DocumentParser::DoParse(IFX_Pause* pPause) { | 1375 int32_t CXFA_DocumentParser::DoParse(IFX_Pause* pPause) { |
1377 int32_t nRetStatus = m_nodeParser.DoParse(pPause); | 1376 int32_t nRetStatus = m_nodeParser.DoParse(pPause); |
1378 if (nRetStatus >= XFA_PARSESTATUS_Done) { | 1377 if (nRetStatus >= XFA_PARSESTATUS_Done) { |
1379 ASSERT(m_pDocument); | 1378 ASSERT(m_pDocument); |
1380 m_pDocument->SetRoot(m_nodeParser.GetRootNode()); | 1379 m_pDocument->SetRoot(m_nodeParser.GetRootNode()); |
1381 } | 1380 } |
1382 return nRetStatus; | 1381 return nRetStatus; |
1383 } | 1382 } |
1384 int32_t CXFA_DocumentParser::ParseXMLData(const CFX_WideString& wsXML, | 1383 int32_t CXFA_DocumentParser::ParseXMLData(const CFX_WideString& wsXML, |
1385 CFDE_XMLNode*& pXMLNode, | 1384 CFDE_XMLNode*& pXMLNode, |
1386 IFX_Pause* pPause) { | 1385 IFX_Pause* pPause) { |
1387 CloseParser(); | 1386 CloseParser(); |
1388 int32_t nRetStatus = m_nodeParser.ParseXMLData(wsXML, pXMLNode, NULL); | 1387 int32_t nRetStatus = m_nodeParser.ParseXMLData(wsXML, pXMLNode, nullptr); |
1389 if (nRetStatus == XFA_PARSESTATUS_Done && pXMLNode) { | 1388 if (nRetStatus == XFA_PARSESTATUS_Done && pXMLNode) { |
1390 m_pDocument = new CXFA_Document(this); | 1389 m_pDocument = new CXFA_Document(this); |
1391 m_nodeParser.SetFactory(m_pDocument); | 1390 m_nodeParser.SetFactory(m_pDocument); |
1392 } | 1391 } |
1393 return nRetStatus; | 1392 return nRetStatus; |
1394 } | 1393 } |
1395 void CXFA_DocumentParser::ConstructXFANode(CXFA_Node* pXFANode, | 1394 void CXFA_DocumentParser::ConstructXFANode(CXFA_Node* pXFANode, |
1396 CFDE_XMLNode* pXMLNode) { | 1395 CFDE_XMLNode* pXMLNode) { |
1397 if (!pXFANode || !pXMLNode) { | 1396 if (!pXFANode || !pXMLNode) { |
1398 return; | 1397 return; |
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1514 m_pChild = m_pParent; | 1513 m_pChild = m_pParent; |
1515 iCount++; | 1514 iCount++; |
1516 break; | 1515 break; |
1517 case FDE_XmlSyntaxResult::TargetName: | 1516 case FDE_XmlSyntaxResult::TargetName: |
1518 m_pParser->GetTargetName(m_ws1); | 1517 m_pParser->GetTargetName(m_ws1); |
1519 if (m_ws1 == FX_WSTRC(L"originalXFAVersion") || | 1518 if (m_ws1 == FX_WSTRC(L"originalXFAVersion") || |
1520 m_ws1 == FX_WSTRC(L"acrobat")) { | 1519 m_ws1 == FX_WSTRC(L"acrobat")) { |
1521 m_pChild = new CFDE_XMLInstruction(m_ws1); | 1520 m_pChild = new CFDE_XMLInstruction(m_ws1); |
1522 m_pParent->InsertChildNode(m_pChild); | 1521 m_pParent->InsertChildNode(m_pChild); |
1523 } else { | 1522 } else { |
1524 m_pChild = NULL; | 1523 m_pChild = nullptr; |
1525 } | 1524 } |
1526 m_ws1.clear(); | 1525 m_ws1.clear(); |
1527 break; | 1526 break; |
1528 case FDE_XmlSyntaxResult::TagName: | 1527 case FDE_XmlSyntaxResult::TagName: |
1529 m_pParser->GetTagName(m_ws1); | 1528 m_pParser->GetTagName(m_ws1); |
1530 m_pChild = new CFDE_XMLElement(m_ws1); | 1529 m_pChild = new CFDE_XMLElement(m_ws1); |
1531 m_pParent->InsertChildNode(m_pChild); | 1530 m_pParent->InsertChildNode(m_pChild); |
1532 m_NodeStack.Push(m_pChild); | 1531 m_NodeStack.Push(m_pChild); |
1533 m_pParent = m_pChild; | 1532 m_pParent = m_pChild; |
1534 | 1533 |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1595 } | 1594 } |
1596 if (pPause && iCount > 500 && pPause->NeedToPauseNow()) { | 1595 if (pPause && iCount > 500 && pPause->NeedToPauseNow()) { |
1597 break; | 1596 break; |
1598 } | 1597 } |
1599 } | 1598 } |
1600 return (m_syntaxParserResult == FDE_XmlSyntaxResult::Error || | 1599 return (m_syntaxParserResult == FDE_XmlSyntaxResult::Error || |
1601 m_NodeStack.GetSize() != 1) | 1600 m_NodeStack.GetSize() != 1) |
1602 ? -1 | 1601 ? -1 |
1603 : m_pParser->GetStatus(); | 1602 : m_pParser->GetStatus(); |
1604 } | 1603 } |
OLD | NEW |