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

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

Issue 1836353002: Remove IFDE_XML* classes. (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Created 4 years, 8 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
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 "xfa/fde/xml/fde_xml_imp.h"
9 #include "xfa/fgas/crt/fgas_codepage.h" 10 #include "xfa/fgas/crt/fgas_codepage.h"
10 #include "xfa/fxfa/fm2js/xfa_fm2jsapi.h" 11 #include "xfa/fxfa/fm2js/xfa_fm2jsapi.h"
11 #include "xfa/fxfa/parser/xfa_basic_imp.h" 12 #include "xfa/fxfa/parser/xfa_basic_imp.h"
12 #include "xfa/fxfa/parser/xfa_docdata.h" 13 #include "xfa/fxfa/parser/xfa_docdata.h"
13 #include "xfa/fxfa/parser/xfa_doclayout.h" 14 #include "xfa/fxfa/parser/xfa_doclayout.h"
14 #include "xfa/fxfa/parser/xfa_document.h" 15 #include "xfa/fxfa/parser/xfa_document.h"
15 #include "xfa/fxfa/parser/xfa_localemgr.h" 16 #include "xfa/fxfa/parser/xfa_localemgr.h"
16 #include "xfa/fxfa/parser/xfa_object.h" 17 #include "xfa/fxfa/parser/xfa_object.h"
17 #include "xfa/fxfa/parser/xfa_parser.h" 18 #include "xfa/fxfa/parser/xfa_parser.h"
18 #include "xfa/fxfa/parser/xfa_script.h" 19 #include "xfa/fxfa/parser/xfa_script.h"
(...skipping 12 matching lines...) Expand all
31 m_pFactory(pFactory), 32 m_pFactory(pFactory),
32 m_pRootNode(nullptr), 33 m_pRootNode(nullptr),
33 m_ePacketID(XFA_XDPPACKET_UNKNOWN), 34 m_ePacketID(XFA_XDPPACKET_UNKNOWN),
34 m_bDocumentParser(bDocumentParser) {} 35 m_bDocumentParser(bDocumentParser) {}
35 CXFA_SimpleParser::~CXFA_SimpleParser() { 36 CXFA_SimpleParser::~CXFA_SimpleParser() {
36 CloseParser(); 37 CloseParser();
37 } 38 }
38 void CXFA_SimpleParser::SetFactory(IXFA_ObjFactory* pFactory) { 39 void CXFA_SimpleParser::SetFactory(IXFA_ObjFactory* pFactory) {
39 m_pFactory = pFactory; 40 m_pFactory = pFactory;
40 } 41 }
41 static IFDE_XMLNode* XFA_FDEExtension_GetDocumentNode( 42 static CFDE_XMLNode* XFA_FDEExtension_GetDocumentNode(
42 IFDE_XMLDoc* pXMLDoc, 43 CFDE_XMLDoc* pXMLDoc,
43 FX_BOOL bVerifyWellFormness = FALSE) { 44 FX_BOOL bVerifyWellFormness = FALSE) {
44 if (!pXMLDoc) { 45 if (!pXMLDoc) {
45 return NULL; 46 return NULL;
46 } 47 }
47 IFDE_XMLNode* pXMLFakeRoot = pXMLDoc->GetRoot(); 48 CFDE_XMLNode* pXMLFakeRoot = pXMLDoc->GetRoot();
48 for (IFDE_XMLNode* pXMLNode = 49 for (CFDE_XMLNode* pXMLNode =
49 pXMLFakeRoot->GetNodeItem(IFDE_XMLNode::FirstChild); 50 pXMLFakeRoot->GetNodeItem(CFDE_XMLNode::FirstChild);
50 pXMLNode; pXMLNode = pXMLNode->GetNodeItem(IFDE_XMLNode::NextSibling)) { 51 pXMLNode; pXMLNode = pXMLNode->GetNodeItem(CFDE_XMLNode::NextSibling)) {
51 if (pXMLNode->GetType() == FDE_XMLNODE_Element) { 52 if (pXMLNode->GetType() == FDE_XMLNODE_Element) {
52 if (bVerifyWellFormness) { 53 if (bVerifyWellFormness) {
53 for (IFDE_XMLNode* pNextNode = 54 for (CFDE_XMLNode* pNextNode =
54 pXMLNode->GetNodeItem(IFDE_XMLNode::NextSibling); 55 pXMLNode->GetNodeItem(CFDE_XMLNode::NextSibling);
55 pNextNode; 56 pNextNode;
56 pNextNode = pNextNode->GetNodeItem(IFDE_XMLNode::NextSibling)) { 57 pNextNode = pNextNode->GetNodeItem(CFDE_XMLNode::NextSibling)) {
57 if (pNextNode->GetType() == FDE_XMLNODE_Element) { 58 if (pNextNode->GetType() == FDE_XMLNODE_Element) {
58 return FALSE; 59 return FALSE;
59 } 60 }
60 } 61 }
61 } 62 }
62 return pXMLNode; 63 return pXMLNode;
63 } 64 }
64 } 65 }
65 return NULL; 66 return NULL;
66 } 67 }
67 int32_t CXFA_SimpleParser::StartParse(IFX_FileRead* pStream, 68 int32_t CXFA_SimpleParser::StartParse(IFX_FileRead* pStream,
68 XFA_XDPPACKET ePacketID) { 69 XFA_XDPPACKET ePacketID) {
69 CloseParser(); 70 CloseParser();
70 m_pFileRead = pStream; 71 m_pFileRead = pStream;
71 m_pStream = IFX_Stream::CreateStream( 72 m_pStream = IFX_Stream::CreateStream(
72 pStream, FX_STREAMACCESS_Read | FX_STREAMACCESS_Text); 73 pStream, FX_STREAMACCESS_Read | FX_STREAMACCESS_Text);
73 if (m_pStream == NULL) { 74 if (m_pStream == NULL) {
74 return XFA_PARSESTATUS_StreamErr; 75 return XFA_PARSESTATUS_StreamErr;
75 } 76 }
76 uint16_t wCodePage = m_pStream->GetCodePage(); 77 uint16_t wCodePage = m_pStream->GetCodePage();
77 if (wCodePage != FX_CODEPAGE_UTF16LE && wCodePage != FX_CODEPAGE_UTF16BE && 78 if (wCodePage != FX_CODEPAGE_UTF16LE && wCodePage != FX_CODEPAGE_UTF16BE &&
78 wCodePage != FX_CODEPAGE_UTF8) { 79 wCodePage != FX_CODEPAGE_UTF8) {
79 m_pStream->SetCodePage(FX_CODEPAGE_UTF8); 80 m_pStream->SetCodePage(FX_CODEPAGE_UTF8);
80 } 81 }
81 m_pXMLDoc = IFDE_XMLDoc::Create(); 82 m_pXMLDoc = new CFDE_XMLDoc;
82 if (m_pXMLDoc == NULL) { 83 if (m_pXMLDoc == NULL) {
Tom Sepez 2016/03/29 20:45:07 can't happen
dsinclair 2016/03/29 20:58:47 Done.
83 return XFA_PARSESTATUS_StatusErr; 84 return XFA_PARSESTATUS_StatusErr;
84 } 85 }
85 m_pXMLParser = new CXFA_XMLParser(m_pXMLDoc->GetRoot(), m_pStream); 86 m_pXMLParser = new CXFA_XMLParser(m_pXMLDoc->GetRoot(), m_pStream);
86 if (m_pXMLParser == NULL) { 87 if (m_pXMLParser == NULL) {
87 return XFA_PARSESTATUS_StatusErr; 88 return XFA_PARSESTATUS_StatusErr;
88 } 89 }
89 if (!m_pXMLDoc->LoadXML(m_pXMLParser)) { 90 if (!m_pXMLDoc->LoadXML(m_pXMLParser)) {
90 return XFA_PARSESTATUS_StatusErr; 91 return XFA_PARSESTATUS_StatusErr;
91 } 92 }
92 m_ePacketID = ePacketID; 93 m_ePacketID = ePacketID;
(...skipping 16 matching lines...) Expand all
109 if (m_pStream) { 110 if (m_pStream) {
110 m_pStream->Release(); 111 m_pStream->Release();
111 m_pStream = NULL; 112 m_pStream = NULL;
112 } 113 }
113 if (!m_pRootNode) { 114 if (!m_pRootNode) {
114 return XFA_PARSESTATUS_StatusErr; 115 return XFA_PARSESTATUS_StatusErr;
115 } 116 }
116 return XFA_PARSESTATUS_Done; 117 return XFA_PARSESTATUS_Done;
117 } 118 }
118 int32_t CXFA_SimpleParser::ParseXMLData(const CFX_WideString& wsXML, 119 int32_t CXFA_SimpleParser::ParseXMLData(const CFX_WideString& wsXML,
119 IFDE_XMLNode*& pXMLNode, 120 CFDE_XMLNode*& pXMLNode,
120 IFX_Pause* pPause) { 121 IFX_Pause* pPause) {
121 CloseParser(); 122 CloseParser();
122 pXMLNode = NULL; 123 pXMLNode = NULL;
123 IFX_Stream* pStream = XFA_CreateWideTextRead(wsXML); 124 IFX_Stream* pStream = XFA_CreateWideTextRead(wsXML);
124 if (!pStream) { 125 if (!pStream) {
125 return XFA_PARSESTATUS_StreamErr; 126 return XFA_PARSESTATUS_StreamErr;
126 } 127 }
127 m_pStream = pStream; 128 m_pStream = pStream;
128 m_pXMLDoc = IFDE_XMLDoc::Create(); 129 m_pXMLDoc = new CFDE_XMLDoc;
129 if (m_pXMLDoc == NULL) { 130 if (m_pXMLDoc == NULL) {
Tom Sepez 2016/03/29 20:45:07 can't happen.
dsinclair 2016/03/29 20:58:47 Done.
130 return XFA_PARSESTATUS_StatusErr; 131 return XFA_PARSESTATUS_StatusErr;
131 } 132 }
132 CXFA_XMLParser* pParser = new CXFA_XMLParser(m_pXMLDoc->GetRoot(), m_pStream); 133 CXFA_XMLParser* pParser = new CXFA_XMLParser(m_pXMLDoc->GetRoot(), m_pStream);
133 if (pParser == NULL) { 134 if (pParser == NULL) {
134 return XFA_PARSESTATUS_StatusErr; 135 return XFA_PARSESTATUS_StatusErr;
135 } 136 }
136 137
137 pParser->m_dwCheckStatus = 0x03; 138 pParser->m_dwCheckStatus = 0x03;
138 if (!m_pXMLDoc->LoadXML(pParser)) { 139 if (!m_pXMLDoc->LoadXML(pParser)) {
139 return XFA_PARSESTATUS_StatusErr; 140 return XFA_PARSESTATUS_StatusErr;
(...skipping 10 matching lines...) Expand all
150 } 151 }
151 if (m_pStream) { 152 if (m_pStream) {
152 m_pStream->Release(); 153 m_pStream->Release();
153 m_pStream = NULL; 154 m_pStream = NULL;
154 } 155 }
155 pXMLNode = XFA_FDEExtension_GetDocumentNode(m_pXMLDoc); 156 pXMLNode = XFA_FDEExtension_GetDocumentNode(m_pXMLDoc);
156 return XFA_PARSESTATUS_Done; 157 return XFA_PARSESTATUS_Done;
157 } 158 }
158 159
159 void CXFA_SimpleParser::ConstructXFANode(CXFA_Node* pXFANode, 160 void CXFA_SimpleParser::ConstructXFANode(CXFA_Node* pXFANode,
160 IFDE_XMLNode* pXMLNode) { 161 CFDE_XMLNode* pXMLNode) {
161 XFA_XDPPACKET ePacketID = (XFA_XDPPACKET)pXFANode->GetPacketID(); 162 XFA_XDPPACKET ePacketID = (XFA_XDPPACKET)pXFANode->GetPacketID();
162 if (ePacketID == XFA_XDPPACKET_Datasets) { 163 if (ePacketID == XFA_XDPPACKET_Datasets) {
163 if (pXFANode->GetClassID() == XFA_ELEMENT_DataValue) { 164 if (pXFANode->GetClassID() == XFA_ELEMENT_DataValue) {
164 for (IFDE_XMLNode* pXMLChild = 165 for (CFDE_XMLNode* pXMLChild =
165 pXMLNode->GetNodeItem(IFDE_XMLNode::FirstChild); 166 pXMLNode->GetNodeItem(CFDE_XMLNode::FirstChild);
166 pXMLChild; 167 pXMLChild;
167 pXMLChild = pXMLChild->GetNodeItem(IFDE_XMLNode::NextSibling)) { 168 pXMLChild = pXMLChild->GetNodeItem(CFDE_XMLNode::NextSibling)) {
168 FDE_XMLNODETYPE eNodeType = pXMLChild->GetType(); 169 FDE_XMLNODETYPE eNodeType = pXMLChild->GetType();
169 if (eNodeType == FDE_XMLNODE_Instruction) 170 if (eNodeType == FDE_XMLNODE_Instruction)
170 continue; 171 continue;
171 172
172 if (eNodeType == FDE_XMLNODE_Element) { 173 if (eNodeType == FDE_XMLNODE_Element) {
173 CXFA_Node* pXFAChild = m_pFactory->CreateNode(XFA_XDPPACKET_Datasets, 174 CXFA_Node* pXFAChild = m_pFactory->CreateNode(XFA_XDPPACKET_Datasets,
174 XFA_ELEMENT_DataValue); 175 XFA_ELEMENT_DataValue);
175 if (!pXFAChild) 176 if (!pXFAChild)
176 return; 177 return;
177 178
178 CFX_WideString wsNodeStr; 179 CFX_WideString wsNodeStr;
179 ((IFDE_XMLElement*)pXMLChild)->GetLocalTagName(wsNodeStr); 180 static_cast<CFDE_XMLElement*>(pXMLChild)->GetLocalTagName(wsNodeStr);
Tom Sepez 2016/03/29 20:45:07 nit: might read cleaner if we used a local to hold
dsinclair 2016/03/29 20:58:47 Done.
180 pXFAChild->SetCData(XFA_ATTRIBUTE_Name, wsNodeStr); 181 pXFAChild->SetCData(XFA_ATTRIBUTE_Name, wsNodeStr);
181 CFX_WideString wsChildValue; 182 CFX_WideString wsChildValue;
182 XFA_GetPlainTextFromRichText((IFDE_XMLElement*)pXMLChild, 183 XFA_GetPlainTextFromRichText(static_cast<CFDE_XMLElement*>(pXMLChild),
183 wsChildValue); 184 wsChildValue);
184 if (!wsChildValue.IsEmpty()) 185 if (!wsChildValue.IsEmpty())
185 pXFAChild->SetCData(XFA_ATTRIBUTE_Value, wsChildValue); 186 pXFAChild->SetCData(XFA_ATTRIBUTE_Value, wsChildValue);
186 187
187 pXFANode->InsertChild(pXFAChild); 188 pXFANode->InsertChild(pXFAChild);
188 pXFAChild->SetXMLMappingNode(pXMLChild); 189 pXFAChild->SetXMLMappingNode(pXMLChild);
189 pXFAChild->SetFlag(XFA_NODEFLAG_Initialized, TRUE, FALSE); 190 pXFAChild->SetFlag(XFA_NODEFLAG_Initialized, TRUE, FALSE);
190 break; 191 break;
191 } 192 }
192 } 193 }
193 m_pRootNode = pXFANode; 194 m_pRootNode = pXFANode;
194 } else { 195 } else {
195 m_pRootNode = DataLoader(pXFANode, pXMLNode, TRUE); 196 m_pRootNode = DataLoader(pXFANode, pXMLNode, TRUE);
196 } 197 }
197 } else if (pXFANode->GetObjectType() == XFA_OBJECTTYPE_ContentNode) { 198 } else if (pXFANode->GetObjectType() == XFA_OBJECTTYPE_ContentNode) {
198 ParseContentNode(pXFANode, pXMLNode, ePacketID); 199 ParseContentNode(pXFANode, pXMLNode, ePacketID);
199 m_pRootNode = pXFANode; 200 m_pRootNode = pXFANode;
200 } else { 201 } else {
201 m_pRootNode = NormalLoader(pXFANode, pXMLNode, ePacketID); 202 m_pRootNode = NormalLoader(pXFANode, pXMLNode, ePacketID);
202 } 203 }
203 } 204 }
204 205
205 FX_BOOL XFA_FDEExtension_ResolveNamespaceQualifier( 206 FX_BOOL XFA_FDEExtension_ResolveNamespaceQualifier(
206 IFDE_XMLElement* pNode, 207 CFDE_XMLElement* pNode,
207 const CFX_WideStringC& wsQualifier, 208 const CFX_WideStringC& wsQualifier,
208 CFX_WideString& wsNamespaceURI) { 209 CFX_WideString& wsNamespaceURI) {
209 if (!pNode) { 210 if (!pNode) {
210 return FALSE; 211 return FALSE;
211 } 212 }
212 IFDE_XMLNode* pFakeRoot = pNode->GetNodeItem(IFDE_XMLNode::Root); 213 CFDE_XMLNode* pFakeRoot = pNode->GetNodeItem(CFDE_XMLNode::Root);
213 CFX_WideString wsNSAttribute; 214 CFX_WideString wsNSAttribute;
214 FX_BOOL bRet = FALSE; 215 FX_BOOL bRet = FALSE;
215 if (wsQualifier.IsEmpty()) { 216 if (wsQualifier.IsEmpty()) {
216 wsNSAttribute = FX_WSTRC(L"xmlns"); 217 wsNSAttribute = FX_WSTRC(L"xmlns");
217 bRet = TRUE; 218 bRet = TRUE;
218 } else { 219 } else {
219 wsNSAttribute = FX_WSTRC(L"xmlns:") + wsQualifier; 220 wsNSAttribute = FX_WSTRC(L"xmlns:") + wsQualifier;
220 } 221 }
221 for (; pNode != pFakeRoot; 222 for (; pNode != pFakeRoot; pNode = static_cast<CFDE_XMLElement*>(
222 pNode = (IFDE_XMLElement*)pNode->GetNodeItem(IFDE_XMLNode::Parent)) { 223 pNode->GetNodeItem(CFDE_XMLNode::Parent))) {
223 if (pNode->GetType() != FDE_XMLNODE_Element) { 224 if (pNode->GetType() != FDE_XMLNODE_Element) {
224 continue; 225 continue;
225 } 226 }
226 if (pNode->HasAttribute(wsNSAttribute)) { 227 if (pNode->HasAttribute(wsNSAttribute)) {
227 pNode->GetString(wsNSAttribute, wsNamespaceURI); 228 pNode->GetString(wsNSAttribute, wsNamespaceURI);
228 return TRUE; 229 return TRUE;
229 } 230 }
230 } 231 }
231 wsNamespaceURI.Empty(); 232 wsNamespaceURI.Empty();
232 return bRet; 233 return bRet;
233 } 234 }
234 static inline void XFA_FDEExtension_GetElementTagNamespaceURI( 235 static inline void XFA_FDEExtension_GetElementTagNamespaceURI(
235 IFDE_XMLElement* pElement, 236 CFDE_XMLElement* pElement,
236 CFX_WideString& wsNamespaceURI) { 237 CFX_WideString& wsNamespaceURI) {
237 CFX_WideString wsNodeStr; 238 CFX_WideString wsNodeStr;
238 pElement->GetNamespacePrefix(wsNodeStr); 239 pElement->GetNamespacePrefix(wsNodeStr);
239 if (!XFA_FDEExtension_ResolveNamespaceQualifier(pElement, wsNodeStr, 240 if (!XFA_FDEExtension_ResolveNamespaceQualifier(pElement, wsNodeStr,
240 wsNamespaceURI)) { 241 wsNamespaceURI)) {
241 wsNamespaceURI.Empty(); 242 wsNamespaceURI.Empty();
242 } 243 }
243 } 244 }
244 static FX_BOOL XFA_FDEExtension_MatchNodeName( 245 static FX_BOOL XFA_FDEExtension_MatchNodeName(
245 IFDE_XMLNode* pNode, 246 CFDE_XMLNode* pNode,
246 const CFX_WideStringC& wsLocalTagName, 247 const CFX_WideStringC& wsLocalTagName,
247 const CFX_WideStringC& wsNamespaceURIPrefix, 248 const CFX_WideStringC& wsNamespaceURIPrefix,
248 uint32_t eMatchFlags = XFA_XDPPACKET_FLAGS_NOMATCH) { 249 uint32_t eMatchFlags = XFA_XDPPACKET_FLAGS_NOMATCH) {
249 if (!pNode || pNode->GetType() != FDE_XMLNODE_Element) { 250 if (!pNode || pNode->GetType() != FDE_XMLNODE_Element) {
250 return FALSE; 251 return FALSE;
251 } 252 }
252 IFDE_XMLElement* pElement = reinterpret_cast<IFDE_XMLElement*>(pNode); 253 CFDE_XMLElement* pElement = reinterpret_cast<CFDE_XMLElement*>(pNode);
253 CFX_WideString wsNodeStr; 254 CFX_WideString wsNodeStr;
254 pElement->GetLocalTagName(wsNodeStr); 255 pElement->GetLocalTagName(wsNodeStr);
255 if (wsNodeStr != wsLocalTagName) { 256 if (wsNodeStr != wsLocalTagName) {
256 return FALSE; 257 return FALSE;
257 } 258 }
258 XFA_FDEExtension_GetElementTagNamespaceURI(pElement, wsNodeStr); 259 XFA_FDEExtension_GetElementTagNamespaceURI(pElement, wsNodeStr);
259 if (eMatchFlags & XFA_XDPPACKET_FLAGS_NOMATCH) { 260 if (eMatchFlags & XFA_XDPPACKET_FLAGS_NOMATCH) {
260 return TRUE; 261 return TRUE;
261 } 262 }
262 if (eMatchFlags & XFA_XDPPACKET_FLAGS_PREFIXMATCH) { 263 if (eMatchFlags & XFA_XDPPACKET_FLAGS_PREFIXMATCH) {
263 return wsNodeStr.Left(wsNamespaceURIPrefix.GetLength()) == 264 return wsNodeStr.Left(wsNamespaceURIPrefix.GetLength()) ==
264 wsNamespaceURIPrefix; 265 wsNamespaceURIPrefix;
265 } 266 }
266 return wsNodeStr == wsNamespaceURIPrefix; 267 return wsNodeStr == wsNamespaceURIPrefix;
267 } 268 }
268 static FX_BOOL XFA_FDEExtension_GetAttributeLocalName( 269 static FX_BOOL XFA_FDEExtension_GetAttributeLocalName(
269 const CFX_WideStringC& wsAttributeName, 270 const CFX_WideStringC& wsAttributeName,
270 CFX_WideString& wsLocalAttrName) { 271 CFX_WideString& wsLocalAttrName) {
271 CFX_WideString wsAttrName(wsAttributeName); 272 CFX_WideString wsAttrName(wsAttributeName);
272 FX_STRSIZE iFind = wsAttrName.Find(L':', 0); 273 FX_STRSIZE iFind = wsAttrName.Find(L':', 0);
273 if (iFind < 0) { 274 if (iFind < 0) {
274 wsLocalAttrName = wsAttrName; 275 wsLocalAttrName = wsAttrName;
275 return FALSE; 276 return FALSE;
276 } else { 277 } else {
277 wsLocalAttrName = wsAttrName.Right(wsAttrName.GetLength() - iFind - 1); 278 wsLocalAttrName = wsAttrName.Right(wsAttrName.GetLength() - iFind - 1);
278 return TRUE; 279 return TRUE;
279 } 280 }
280 } 281 }
281 static FX_BOOL XFA_FDEExtension_ResolveAttribute( 282 static FX_BOOL XFA_FDEExtension_ResolveAttribute(
282 IFDE_XMLElement* pElement, 283 CFDE_XMLElement* pElement,
283 const CFX_WideStringC& wsAttributeName, 284 const CFX_WideStringC& wsAttributeName,
284 CFX_WideString& wsLocalAttrName, 285 CFX_WideString& wsLocalAttrName,
285 CFX_WideString& wsNamespaceURI) { 286 CFX_WideString& wsNamespaceURI) {
286 CFX_WideString wsAttrName(wsAttributeName); 287 CFX_WideString wsAttrName(wsAttributeName);
287 CFX_WideString wsNSPrefix; 288 CFX_WideString wsNSPrefix;
288 if (XFA_FDEExtension_GetAttributeLocalName(wsAttributeName, 289 if (XFA_FDEExtension_GetAttributeLocalName(wsAttributeName,
289 wsLocalAttrName)) { 290 wsLocalAttrName)) {
290 wsNSPrefix = wsAttrName.Left(wsAttributeName.GetLength() - 291 wsNSPrefix = wsAttrName.Left(wsAttributeName.GetLength() -
291 wsLocalAttrName.GetLength() - 1); 292 wsLocalAttrName.GetLength() - 1);
292 } 293 }
293 if (wsLocalAttrName == FX_WSTRC(L"xmlns") || 294 if (wsLocalAttrName == FX_WSTRC(L"xmlns") ||
294 wsNSPrefix == FX_WSTRC(L"xmlns") || wsNSPrefix == FX_WSTRC(L"xml")) { 295 wsNSPrefix == FX_WSTRC(L"xmlns") || wsNSPrefix == FX_WSTRC(L"xml")) {
295 return FALSE; 296 return FALSE;
296 } 297 }
297 if (!XFA_FDEExtension_ResolveNamespaceQualifier(pElement, wsNSPrefix, 298 if (!XFA_FDEExtension_ResolveNamespaceQualifier(pElement, wsNSPrefix,
298 wsNamespaceURI)) { 299 wsNamespaceURI)) {
299 wsNamespaceURI.Empty(); 300 wsNamespaceURI.Empty();
300 return FALSE; 301 return FALSE;
301 } 302 }
302 return TRUE; 303 return TRUE;
303 } 304 }
304 static FX_BOOL XFA_FDEExtension_FindAttributeWithNS( 305 static FX_BOOL XFA_FDEExtension_FindAttributeWithNS(
305 IFDE_XMLElement* pElement, 306 CFDE_XMLElement* pElement,
306 const CFX_WideStringC& wsLocalAttributeName, 307 const CFX_WideStringC& wsLocalAttributeName,
307 const CFX_WideStringC& wsNamespaceURIPrefix, 308 const CFX_WideStringC& wsNamespaceURIPrefix,
308 CFX_WideString& wsValue, 309 CFX_WideString& wsValue,
309 FX_BOOL bMatchNSAsPrefix = FALSE) { 310 FX_BOOL bMatchNSAsPrefix = FALSE) {
310 if (!pElement) { 311 if (!pElement) {
311 return FALSE; 312 return FALSE;
312 } 313 }
313 CFX_WideString wsAttrName; 314 CFX_WideString wsAttrName;
314 CFX_WideString wsAttrValue; 315 CFX_WideString wsAttrValue;
315 CFX_WideString wsAttrNS; 316 CFX_WideString wsAttrNS;
(...skipping 25 matching lines...) Expand all
341 } else { 342 } else {
342 if (wsAttrNS != wsNamespaceURIPrefix) { 343 if (wsAttrNS != wsNamespaceURIPrefix) {
343 continue; 344 continue;
344 } 345 }
345 } 346 }
346 wsValue = wsAttrValue; 347 wsValue = wsAttrValue;
347 return TRUE; 348 return TRUE;
348 } 349 }
349 return FALSE; 350 return FALSE;
350 } 351 }
351 CXFA_Node* CXFA_SimpleParser::ParseAsXDPPacket(IFDE_XMLNode* pXMLDocumentNode, 352 CXFA_Node* CXFA_SimpleParser::ParseAsXDPPacket(CFDE_XMLNode* pXMLDocumentNode,
352 XFA_XDPPACKET ePacketID) { 353 XFA_XDPPACKET ePacketID) {
353 switch (ePacketID) { 354 switch (ePacketID) {
354 case XFA_XDPPACKET_UNKNOWN: 355 case XFA_XDPPACKET_UNKNOWN:
355 return NULL; 356 return NULL;
356 case XFA_XDPPACKET_XDP: 357 case XFA_XDPPACKET_XDP:
357 return ParseAsXDPPacket_XDP(pXMLDocumentNode, ePacketID); 358 return ParseAsXDPPacket_XDP(pXMLDocumentNode, ePacketID);
358 case XFA_XDPPACKET_Config: 359 case XFA_XDPPACKET_Config:
359 return ParseAsXDPPacket_Config(pXMLDocumentNode, ePacketID); 360 return ParseAsXDPPacket_Config(pXMLDocumentNode, ePacketID);
360 case XFA_XDPPACKET_Template: 361 case XFA_XDPPACKET_Template:
361 case XFA_XDPPACKET_Form: 362 case XFA_XDPPACKET_Form:
362 return ParseAsXDPPacket_TemplateForm(pXMLDocumentNode, ePacketID); 363 return ParseAsXDPPacket_TemplateForm(pXMLDocumentNode, ePacketID);
363 case XFA_XDPPACKET_Datasets: 364 case XFA_XDPPACKET_Datasets:
364 return ParseAsXDPPacket_Data(pXMLDocumentNode, ePacketID); 365 return ParseAsXDPPacket_Data(pXMLDocumentNode, ePacketID);
365 case XFA_XDPPACKET_Xdc: 366 case XFA_XDPPACKET_Xdc:
366 return ParseAsXDPPacket_Xdc(pXMLDocumentNode, ePacketID); 367 return ParseAsXDPPacket_Xdc(pXMLDocumentNode, ePacketID);
367 case XFA_XDPPACKET_LocaleSet: 368 case XFA_XDPPACKET_LocaleSet:
368 case XFA_XDPPACKET_ConnectionSet: 369 case XFA_XDPPACKET_ConnectionSet:
369 case XFA_XDPPACKET_SourceSet: 370 case XFA_XDPPACKET_SourceSet:
370 return ParseAsXDPPacket_LocaleConnectionSourceSet(pXMLDocumentNode, 371 return ParseAsXDPPacket_LocaleConnectionSourceSet(pXMLDocumentNode,
371 ePacketID); 372 ePacketID);
372 default: 373 default:
373 return ParseAsXDPPacket_User(pXMLDocumentNode, ePacketID); 374 return ParseAsXDPPacket_User(pXMLDocumentNode, ePacketID);
374 } 375 }
375 return NULL; 376 return NULL;
376 } 377 }
377 CXFA_Node* CXFA_SimpleParser::ParseAsXDPPacket_XDP( 378 CXFA_Node* CXFA_SimpleParser::ParseAsXDPPacket_XDP(
378 IFDE_XMLNode* pXMLDocumentNode, 379 CFDE_XMLNode* pXMLDocumentNode,
379 XFA_XDPPACKET ePacketID) { 380 XFA_XDPPACKET ePacketID) {
380 if (!XFA_FDEExtension_MatchNodeName( 381 if (!XFA_FDEExtension_MatchNodeName(
381 pXMLDocumentNode, XFA_GetPacketByIndex(XFA_PACKET_XDP)->pName, 382 pXMLDocumentNode, XFA_GetPacketByIndex(XFA_PACKET_XDP)->pName,
382 XFA_GetPacketByIndex(XFA_PACKET_XDP)->pURI, 383 XFA_GetPacketByIndex(XFA_PACKET_XDP)->pURI,
383 XFA_GetPacketByIndex(XFA_PACKET_XDP)->eFlags)) { 384 XFA_GetPacketByIndex(XFA_PACKET_XDP)->eFlags)) {
384 return nullptr; 385 return nullptr;
385 } 386 }
386 CXFA_Node* pXFARootNode = 387 CXFA_Node* pXFARootNode =
387 m_pFactory->CreateNode(XFA_XDPPACKET_XDP, XFA_ELEMENT_Xfa); 388 m_pFactory->CreateNode(XFA_XDPPACKET_XDP, XFA_ELEMENT_Xfa);
388 if (!pXFARootNode) { 389 if (!pXFARootNode) {
389 return nullptr; 390 return nullptr;
390 } 391 }
391 m_pRootNode = pXFARootNode; 392 m_pRootNode = pXFARootNode;
392 pXFARootNode->SetCData(XFA_ATTRIBUTE_Name, FX_WSTRC(L"xfa")); 393 pXFARootNode->SetCData(XFA_ATTRIBUTE_Name, FX_WSTRC(L"xfa"));
393 { 394 {
394 IFDE_XMLElement* pElement = (IFDE_XMLElement*)pXMLDocumentNode; 395 CFDE_XMLElement* pElement = static_cast<CFDE_XMLElement*>(pXMLDocumentNode);
395 int32_t iAttributeCount = pElement->CountAttributes(); 396 int32_t iAttributeCount = pElement->CountAttributes();
396 for (int32_t i = 0; i < iAttributeCount; i++) { 397 for (int32_t i = 0; i < iAttributeCount; i++) {
397 CFX_WideString wsAttriName, wsAttriValue; 398 CFX_WideString wsAttriName, wsAttriValue;
398 pElement->GetAttribute(i, wsAttriName, wsAttriValue); 399 pElement->GetAttribute(i, wsAttriName, wsAttriValue);
399 if (wsAttriName == FX_WSTRC(L"uuid")) { 400 if (wsAttriName == FX_WSTRC(L"uuid")) {
400 pXFARootNode->SetCData(XFA_ATTRIBUTE_Uuid, wsAttriValue); 401 pXFARootNode->SetCData(XFA_ATTRIBUTE_Uuid, wsAttriValue);
401 } else if (wsAttriName == FX_WSTRC(L"timeStamp")) { 402 } else if (wsAttriName == FX_WSTRC(L"timeStamp")) {
402 pXFARootNode->SetCData(XFA_ATTRIBUTE_TimeStamp, wsAttriValue); 403 pXFARootNode->SetCData(XFA_ATTRIBUTE_TimeStamp, wsAttriValue);
403 } 404 }
404 } 405 }
405 } 406 }
406 IFDE_XMLNode* pXMLConfigDOMRoot = nullptr; 407 CFDE_XMLNode* pXMLConfigDOMRoot = nullptr;
407 CXFA_Node* pXFAConfigDOMRoot = nullptr; 408 CXFA_Node* pXFAConfigDOMRoot = nullptr;
408 { 409 {
409 for (IFDE_XMLNode* pChildItem = 410 for (CFDE_XMLNode* pChildItem =
410 pXMLDocumentNode->GetNodeItem(IFDE_XMLNode::FirstChild); 411 pXMLDocumentNode->GetNodeItem(CFDE_XMLNode::FirstChild);
411 pChildItem; 412 pChildItem;
412 pChildItem = pChildItem->GetNodeItem(IFDE_XMLNode::NextSibling)) { 413 pChildItem = pChildItem->GetNodeItem(CFDE_XMLNode::NextSibling)) {
413 const XFA_PACKETINFO* pPacketInfo = 414 const XFA_PACKETINFO* pPacketInfo =
414 XFA_GetPacketByIndex(XFA_PACKET_Config); 415 XFA_GetPacketByIndex(XFA_PACKET_Config);
415 if (!XFA_FDEExtension_MatchNodeName(pChildItem, pPacketInfo->pName, 416 if (!XFA_FDEExtension_MatchNodeName(pChildItem, pPacketInfo->pName,
416 pPacketInfo->pURI, 417 pPacketInfo->pURI,
417 pPacketInfo->eFlags)) { 418 pPacketInfo->eFlags)) {
418 continue; 419 continue;
419 } 420 }
420 if (pXFARootNode->GetFirstChildByName(pPacketInfo->uHash)) { 421 if (pXFARootNode->GetFirstChildByName(pPacketInfo->uHash)) {
421 return nullptr; 422 return nullptr;
422 } 423 }
423 pXMLConfigDOMRoot = pChildItem; 424 pXMLConfigDOMRoot = pChildItem;
424 pXFAConfigDOMRoot = 425 pXFAConfigDOMRoot =
425 ParseAsXDPPacket_Config(pXMLConfigDOMRoot, XFA_XDPPACKET_Config); 426 ParseAsXDPPacket_Config(pXMLConfigDOMRoot, XFA_XDPPACKET_Config);
426 pXFARootNode->InsertChild(pXFAConfigDOMRoot, NULL); 427 pXFARootNode->InsertChild(pXFAConfigDOMRoot, NULL);
427 } 428 }
428 } 429 }
429 IFDE_XMLNode* pXMLDatasetsDOMRoot = nullptr; 430 CFDE_XMLNode* pXMLDatasetsDOMRoot = nullptr;
430 IFDE_XMLNode* pXMLFormDOMRoot = nullptr; 431 CFDE_XMLNode* pXMLFormDOMRoot = nullptr;
431 IFDE_XMLNode* pXMLTemplateDOMRoot = nullptr; 432 CFDE_XMLNode* pXMLTemplateDOMRoot = nullptr;
432 { 433 {
433 for (IFDE_XMLNode* pChildItem = 434 for (CFDE_XMLNode* pChildItem =
434 pXMLDocumentNode->GetNodeItem(IFDE_XMLNode::FirstChild); 435 pXMLDocumentNode->GetNodeItem(CFDE_XMLNode::FirstChild);
435 pChildItem; 436 pChildItem;
436 pChildItem = pChildItem->GetNodeItem(IFDE_XMLNode::NextSibling)) { 437 pChildItem = pChildItem->GetNodeItem(CFDE_XMLNode::NextSibling)) {
437 if (!pChildItem || pChildItem->GetType() != FDE_XMLNODE_Element) { 438 if (!pChildItem || pChildItem->GetType() != FDE_XMLNODE_Element) {
438 continue; 439 continue;
439 } 440 }
440 if (pChildItem == pXMLConfigDOMRoot) { 441 if (pChildItem == pXMLConfigDOMRoot) {
441 continue; 442 continue;
442 } 443 }
443 IFDE_XMLElement* pElement = 444 CFDE_XMLElement* pElement =
444 reinterpret_cast<IFDE_XMLElement*>(pChildItem); 445 reinterpret_cast<CFDE_XMLElement*>(pChildItem);
445 CFX_WideString wsPacketName; 446 CFX_WideString wsPacketName;
446 pElement->GetLocalTagName(wsPacketName); 447 pElement->GetLocalTagName(wsPacketName);
447 const XFA_PACKETINFO* pPacketInfo = XFA_GetPacketByName(wsPacketName); 448 const XFA_PACKETINFO* pPacketInfo = XFA_GetPacketByName(wsPacketName);
448 if (pPacketInfo && pPacketInfo->pURI) { 449 if (pPacketInfo && pPacketInfo->pURI) {
449 if (!XFA_FDEExtension_MatchNodeName(pElement, pPacketInfo->pName, 450 if (!XFA_FDEExtension_MatchNodeName(pElement, pPacketInfo->pName,
450 pPacketInfo->pURI, 451 pPacketInfo->pURI,
451 pPacketInfo->eFlags)) { 452 pPacketInfo->eFlags)) {
452 pPacketInfo = nullptr; 453 pPacketInfo = nullptr;
453 } 454 }
454 } 455 }
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
505 CXFA_Node* pPacketNode = 506 CXFA_Node* pPacketNode =
506 ParseAsXDPPacket(pXMLFormDOMRoot, XFA_XDPPACKET_Form); 507 ParseAsXDPPacket(pXMLFormDOMRoot, XFA_XDPPACKET_Form);
507 if (pPacketNode) { 508 if (pPacketNode) {
508 pXFARootNode->InsertChild(pPacketNode); 509 pXFARootNode->InsertChild(pPacketNode);
509 } 510 }
510 } 511 }
511 pXFARootNode->SetXMLMappingNode(pXMLDocumentNode); 512 pXFARootNode->SetXMLMappingNode(pXMLDocumentNode);
512 return pXFARootNode; 513 return pXFARootNode;
513 } 514 }
514 CXFA_Node* CXFA_SimpleParser::ParseAsXDPPacket_Config( 515 CXFA_Node* CXFA_SimpleParser::ParseAsXDPPacket_Config(
515 IFDE_XMLNode* pXMLDocumentNode, 516 CFDE_XMLNode* pXMLDocumentNode,
516 XFA_XDPPACKET ePacketID) { 517 XFA_XDPPACKET ePacketID) {
517 if (!XFA_FDEExtension_MatchNodeName( 518 if (!XFA_FDEExtension_MatchNodeName(
518 pXMLDocumentNode, XFA_GetPacketByIndex(XFA_PACKET_Config)->pName, 519 pXMLDocumentNode, XFA_GetPacketByIndex(XFA_PACKET_Config)->pName,
519 XFA_GetPacketByIndex(XFA_PACKET_Config)->pURI, 520 XFA_GetPacketByIndex(XFA_PACKET_Config)->pURI,
520 XFA_GetPacketByIndex(XFA_PACKET_Config)->eFlags)) { 521 XFA_GetPacketByIndex(XFA_PACKET_Config)->eFlags)) {
521 return NULL; 522 return NULL;
522 } 523 }
523 CXFA_Node* pNode = 524 CXFA_Node* pNode =
524 m_pFactory->CreateNode(XFA_XDPPACKET_Config, XFA_ELEMENT_Config); 525 m_pFactory->CreateNode(XFA_XDPPACKET_Config, XFA_ELEMENT_Config);
525 if (!pNode) { 526 if (!pNode) {
526 return NULL; 527 return NULL;
527 } 528 }
528 pNode->SetCData(XFA_ATTRIBUTE_Name, 529 pNode->SetCData(XFA_ATTRIBUTE_Name,
529 XFA_GetPacketByIndex(XFA_PACKET_Config)->pName); 530 XFA_GetPacketByIndex(XFA_PACKET_Config)->pName);
530 if (!NormalLoader(pNode, pXMLDocumentNode, ePacketID)) { 531 if (!NormalLoader(pNode, pXMLDocumentNode, ePacketID)) {
531 return NULL; 532 return NULL;
532 } 533 }
533 pNode->SetXMLMappingNode(pXMLDocumentNode); 534 pNode->SetXMLMappingNode(pXMLDocumentNode);
534 return pNode; 535 return pNode;
535 } 536 }
536 CXFA_Node* CXFA_SimpleParser::ParseAsXDPPacket_TemplateForm( 537 CXFA_Node* CXFA_SimpleParser::ParseAsXDPPacket_TemplateForm(
537 IFDE_XMLNode* pXMLDocumentNode, 538 CFDE_XMLNode* pXMLDocumentNode,
538 XFA_XDPPACKET ePacketID) { 539 XFA_XDPPACKET ePacketID) {
539 CXFA_Node* pNode = NULL; 540 CXFA_Node* pNode = NULL;
540 if (ePacketID == XFA_XDPPACKET_Template) { 541 if (ePacketID == XFA_XDPPACKET_Template) {
541 if (XFA_FDEExtension_MatchNodeName( 542 if (XFA_FDEExtension_MatchNodeName(
542 pXMLDocumentNode, XFA_GetPacketByIndex(XFA_PACKET_Template)->pName, 543 pXMLDocumentNode, XFA_GetPacketByIndex(XFA_PACKET_Template)->pName,
543 XFA_GetPacketByIndex(XFA_PACKET_Template)->pURI, 544 XFA_GetPacketByIndex(XFA_PACKET_Template)->pURI,
544 XFA_GetPacketByIndex(XFA_PACKET_Template)->eFlags)) { 545 XFA_GetPacketByIndex(XFA_PACKET_Template)->eFlags)) {
545 pNode = 546 pNode =
546 m_pFactory->CreateNode(XFA_XDPPACKET_Template, XFA_ELEMENT_Template); 547 m_pFactory->CreateNode(XFA_XDPPACKET_Template, XFA_ELEMENT_Template);
547 if (!pNode) { 548 if (!pNode) {
548 return NULL; 549 return NULL;
549 } 550 }
550 pNode->SetCData(XFA_ATTRIBUTE_Name, 551 pNode->SetCData(XFA_ATTRIBUTE_Name,
551 XFA_GetPacketByIndex(XFA_PACKET_Template)->pName); 552 XFA_GetPacketByIndex(XFA_PACKET_Template)->pName);
552 if (m_bDocumentParser) { 553 if (m_bDocumentParser) {
553 CFX_WideString wsNamespaceURI; 554 CFX_WideString wsNamespaceURI;
554 IFDE_XMLElement* pXMLDocumentElement = 555 CFDE_XMLElement* pXMLDocumentElement =
555 (IFDE_XMLElement*)pXMLDocumentNode; 556 static_cast<CFDE_XMLElement*>(pXMLDocumentNode);
556 pXMLDocumentElement->GetNamespaceURI(wsNamespaceURI); 557 pXMLDocumentElement->GetNamespaceURI(wsNamespaceURI);
557 if (wsNamespaceURI.IsEmpty()) { 558 if (wsNamespaceURI.IsEmpty()) {
558 pXMLDocumentElement->GetString(L"xmlns:xfa", wsNamespaceURI); 559 pXMLDocumentElement->GetString(L"xmlns:xfa", wsNamespaceURI);
559 } 560 }
560 pNode->GetDocument()->RecognizeXFAVersionNumber(wsNamespaceURI); 561 pNode->GetDocument()->RecognizeXFAVersionNumber(wsNamespaceURI);
561 } 562 }
562 if (!NormalLoader(pNode, pXMLDocumentNode, ePacketID)) { 563 if (!NormalLoader(pNode, pXMLDocumentNode, ePacketID)) {
563 return NULL; 564 return NULL;
564 } 565 }
565 } 566 }
566 } else if (ePacketID == XFA_XDPPACKET_Form) { 567 } else if (ePacketID == XFA_XDPPACKET_Form) {
567 if (XFA_FDEExtension_MatchNodeName( 568 if (XFA_FDEExtension_MatchNodeName(
568 pXMLDocumentNode, XFA_GetPacketByIndex(XFA_PACKET_Form)->pName, 569 pXMLDocumentNode, XFA_GetPacketByIndex(XFA_PACKET_Form)->pName,
569 XFA_GetPacketByIndex(XFA_PACKET_Form)->pURI, 570 XFA_GetPacketByIndex(XFA_PACKET_Form)->pURI,
570 XFA_GetPacketByIndex(XFA_PACKET_Form)->eFlags)) { 571 XFA_GetPacketByIndex(XFA_PACKET_Form)->eFlags)) {
571 IFDE_XMLElement* pXMLDocumentElement = (IFDE_XMLElement*)pXMLDocumentNode; 572 CFDE_XMLElement* pXMLDocumentElement =
573 static_cast<CFDE_XMLElement*>(pXMLDocumentNode);
572 CFX_WideString wsChecksum; 574 CFX_WideString wsChecksum;
573 pXMLDocumentElement->GetString(L"checksum", wsChecksum); 575 pXMLDocumentElement->GetString(L"checksum", wsChecksum);
574 if (wsChecksum.GetLength() != 28 || 576 if (wsChecksum.GetLength() != 28 ||
575 m_pXMLParser->m_dwCheckStatus != 0x03) { 577 m_pXMLParser->m_dwCheckStatus != 0x03) {
576 return NULL; 578 return NULL;
577 } 579 }
578 IXFA_ChecksumContext* pChecksum = XFA_Checksum_Create(); 580 IXFA_ChecksumContext* pChecksum = XFA_Checksum_Create();
579 pChecksum->StartChecksum(); 581 pChecksum->StartChecksum();
580 pChecksum->UpdateChecksum(m_pFileRead, m_pXMLParser->m_nStart[0], 582 pChecksum->UpdateChecksum(m_pFileRead, m_pXMLParser->m_nStart[0],
581 m_pXMLParser->m_nSize[0]); 583 m_pXMLParser->m_nSize[0]);
(...skipping 29 matching lines...) Expand all
611 if (!NormalLoader(pNode, pXMLDocumentNode, ePacketID, bUseAttribute)) { 613 if (!NormalLoader(pNode, pXMLDocumentNode, ePacketID, bUseAttribute)) {
612 return NULL; 614 return NULL;
613 } 615 }
614 } 616 }
615 } 617 }
616 if (pNode) { 618 if (pNode) {
617 pNode->SetXMLMappingNode(pXMLDocumentNode); 619 pNode->SetXMLMappingNode(pXMLDocumentNode);
618 } 620 }
619 return pNode; 621 return pNode;
620 } 622 }
621 static IFDE_XMLNode* XFA_GetDataSetsFromXDP(IFDE_XMLNode* pXMLDocumentNode) { 623 static CFDE_XMLNode* XFA_GetDataSetsFromXDP(CFDE_XMLNode* pXMLDocumentNode) {
622 if (XFA_FDEExtension_MatchNodeName( 624 if (XFA_FDEExtension_MatchNodeName(
623 pXMLDocumentNode, XFA_GetPacketByIndex(XFA_PACKET_Datasets)->pName, 625 pXMLDocumentNode, XFA_GetPacketByIndex(XFA_PACKET_Datasets)->pName,
624 XFA_GetPacketByIndex(XFA_PACKET_Datasets)->pURI, 626 XFA_GetPacketByIndex(XFA_PACKET_Datasets)->pURI,
625 XFA_GetPacketByIndex(XFA_PACKET_Datasets)->eFlags)) { 627 XFA_GetPacketByIndex(XFA_PACKET_Datasets)->eFlags)) {
626 return pXMLDocumentNode; 628 return pXMLDocumentNode;
627 } 629 }
628 if (!XFA_FDEExtension_MatchNodeName( 630 if (!XFA_FDEExtension_MatchNodeName(
629 pXMLDocumentNode, XFA_GetPacketByIndex(XFA_PACKET_XDP)->pName, 631 pXMLDocumentNode, XFA_GetPacketByIndex(XFA_PACKET_XDP)->pName,
630 XFA_GetPacketByIndex(XFA_PACKET_XDP)->pURI, 632 XFA_GetPacketByIndex(XFA_PACKET_XDP)->pURI,
631 XFA_GetPacketByIndex(XFA_PACKET_XDP)->eFlags)) { 633 XFA_GetPacketByIndex(XFA_PACKET_XDP)->eFlags)) {
632 return NULL; 634 return NULL;
633 } 635 }
634 for (IFDE_XMLNode* pDatasetsNode = 636 for (CFDE_XMLNode* pDatasetsNode =
635 pXMLDocumentNode->GetNodeItem(IFDE_XMLNode::FirstChild); 637 pXMLDocumentNode->GetNodeItem(CFDE_XMLNode::FirstChild);
636 pDatasetsNode; 638 pDatasetsNode;
637 pDatasetsNode = pDatasetsNode->GetNodeItem(IFDE_XMLNode::NextSibling)) { 639 pDatasetsNode = pDatasetsNode->GetNodeItem(CFDE_XMLNode::NextSibling)) {
638 if (!XFA_FDEExtension_MatchNodeName( 640 if (!XFA_FDEExtension_MatchNodeName(
639 pDatasetsNode, XFA_GetPacketByIndex(XFA_PACKET_Datasets)->pName, 641 pDatasetsNode, XFA_GetPacketByIndex(XFA_PACKET_Datasets)->pName,
640 XFA_GetPacketByIndex(XFA_PACKET_Datasets)->pURI, 642 XFA_GetPacketByIndex(XFA_PACKET_Datasets)->pURI,
641 XFA_GetPacketByIndex(XFA_PACKET_Datasets)->eFlags)) { 643 XFA_GetPacketByIndex(XFA_PACKET_Datasets)->eFlags)) {
642 continue; 644 continue;
643 } 645 }
644 return pDatasetsNode; 646 return pDatasetsNode;
645 } 647 }
646 return NULL; 648 return NULL;
647 } 649 }
648 CXFA_Node* CXFA_SimpleParser::ParseAsXDPPacket_Data( 650 CXFA_Node* CXFA_SimpleParser::ParseAsXDPPacket_Data(
649 IFDE_XMLNode* pXMLDocumentNode, 651 CFDE_XMLNode* pXMLDocumentNode,
650 XFA_XDPPACKET ePacketID) { 652 XFA_XDPPACKET ePacketID) {
651 IFDE_XMLNode* pDatasetsXMLNode = XFA_GetDataSetsFromXDP(pXMLDocumentNode); 653 CFDE_XMLNode* pDatasetsXMLNode = XFA_GetDataSetsFromXDP(pXMLDocumentNode);
652 if (pDatasetsXMLNode) { 654 if (pDatasetsXMLNode) {
653 CXFA_Node* pNode = 655 CXFA_Node* pNode =
654 m_pFactory->CreateNode(XFA_XDPPACKET_Datasets, XFA_ELEMENT_DataModel); 656 m_pFactory->CreateNode(XFA_XDPPACKET_Datasets, XFA_ELEMENT_DataModel);
655 if (!pNode) { 657 if (!pNode) {
656 return NULL; 658 return NULL;
657 } 659 }
658 pNode->SetCData(XFA_ATTRIBUTE_Name, 660 pNode->SetCData(XFA_ATTRIBUTE_Name,
659 XFA_GetPacketByIndex(XFA_PACKET_Datasets)->pName); 661 XFA_GetPacketByIndex(XFA_PACKET_Datasets)->pName);
660 if (!DataLoader(pNode, pDatasetsXMLNode, FALSE)) { 662 if (!DataLoader(pNode, pDatasetsXMLNode, FALSE)) {
661 return NULL; 663 return NULL;
662 } 664 }
663 pNode->SetXMLMappingNode(pDatasetsXMLNode); 665 pNode->SetXMLMappingNode(pDatasetsXMLNode);
664 return pNode; 666 return pNode;
665 } 667 }
666 IFDE_XMLNode* pDataXMLNode = NULL; 668 CFDE_XMLNode* pDataXMLNode = NULL;
667 if (XFA_FDEExtension_MatchNodeName( 669 if (XFA_FDEExtension_MatchNodeName(
668 pXMLDocumentNode, FX_WSTRC(L"data"), 670 pXMLDocumentNode, FX_WSTRC(L"data"),
669 XFA_GetPacketByIndex(XFA_PACKET_Datasets)->pURI, 671 XFA_GetPacketByIndex(XFA_PACKET_Datasets)->pURI,
670 XFA_GetPacketByIndex(XFA_PACKET_Datasets)->eFlags)) { 672 XFA_GetPacketByIndex(XFA_PACKET_Datasets)->eFlags)) {
671 ((IFDE_XMLElement*)pXMLDocumentNode)->RemoveAttribute(L"xmlns:xfa"); 673 static_cast<CFDE_XMLElement*>(pXMLDocumentNode)
674 ->RemoveAttribute(L"xmlns:xfa");
672 pDataXMLNode = pXMLDocumentNode; 675 pDataXMLNode = pXMLDocumentNode;
673 } else { 676 } else {
674 IFDE_XMLElement* pDataElement = 677 CFDE_XMLElement* pDataElement = new CFDE_XMLElement(FX_WSTRC(L"xfa:data"));
675 IFDE_XMLElement::Create(FX_WSTRC(L"xfa:data")); 678 CFDE_XMLNode* pParentXMLNode =
676 IFDE_XMLNode* pParentXMLNode = 679 pXMLDocumentNode->GetNodeItem(CFDE_XMLNode::Parent);
677 pXMLDocumentNode->GetNodeItem(IFDE_XMLNode::Parent);
678 if (pParentXMLNode) { 680 if (pParentXMLNode) {
679 pParentXMLNode->RemoveChildNode(pXMLDocumentNode); 681 pParentXMLNode->RemoveChildNode(pXMLDocumentNode);
680 } 682 }
681 FXSYS_assert(pXMLDocumentNode->GetType() == FDE_XMLNODE_Element); 683 FXSYS_assert(pXMLDocumentNode->GetType() == FDE_XMLNODE_Element);
682 if (pXMLDocumentNode->GetType() == FDE_XMLNODE_Element) { 684 if (pXMLDocumentNode->GetType() == FDE_XMLNODE_Element) {
683 ((IFDE_XMLElement*)pXMLDocumentNode)->RemoveAttribute(L"xmlns:xfa"); 685 static_cast<CFDE_XMLElement*>(pXMLDocumentNode)
686 ->RemoveAttribute(L"xmlns:xfa");
684 } 687 }
685 pDataElement->InsertChildNode(pXMLDocumentNode); 688 pDataElement->InsertChildNode(pXMLDocumentNode);
686 pDataXMLNode = pDataElement; 689 pDataXMLNode = pDataElement;
687 } 690 }
688 if (pDataXMLNode) { 691 if (pDataXMLNode) {
689 CXFA_Node* pNode = 692 CXFA_Node* pNode =
690 m_pFactory->CreateNode(XFA_XDPPACKET_Datasets, XFA_ELEMENT_DataGroup); 693 m_pFactory->CreateNode(XFA_XDPPACKET_Datasets, XFA_ELEMENT_DataGroup);
691 if (!pNode) { 694 if (!pNode) {
692 if (pDataXMLNode != pXMLDocumentNode) { 695 if (pDataXMLNode != pXMLDocumentNode) {
693 pDataXMLNode->Release(); 696 pDataXMLNode->Release();
694 } 697 }
695 return NULL; 698 return NULL;
696 } 699 }
697 CFX_WideString wsLocalName; 700 CFX_WideString wsLocalName;
698 ((IFDE_XMLElement*)pDataXMLNode)->GetLocalTagName(wsLocalName); 701 static_cast<CFDE_XMLElement*>(pDataXMLNode)->GetLocalTagName(wsLocalName);
699 pNode->SetCData(XFA_ATTRIBUTE_Name, wsLocalName); 702 pNode->SetCData(XFA_ATTRIBUTE_Name, wsLocalName);
700 if (!DataLoader(pNode, pDataXMLNode, TRUE)) { 703 if (!DataLoader(pNode, pDataXMLNode, TRUE)) {
701 return NULL; 704 return NULL;
702 } 705 }
703 pNode->SetXMLMappingNode(pDataXMLNode); 706 pNode->SetXMLMappingNode(pDataXMLNode);
704 if (pDataXMLNode != pXMLDocumentNode) { 707 if (pDataXMLNode != pXMLDocumentNode) {
705 pNode->SetFlag(XFA_NODEFLAG_OwnXMLNode, TRUE, FALSE); 708 pNode->SetFlag(XFA_NODEFLAG_OwnXMLNode, TRUE, FALSE);
706 } 709 }
707 return pNode; 710 return pNode;
708 } 711 }
709 return NULL; 712 return NULL;
710 } 713 }
711 CXFA_Node* CXFA_SimpleParser::ParseAsXDPPacket_LocaleConnectionSourceSet( 714 CXFA_Node* CXFA_SimpleParser::ParseAsXDPPacket_LocaleConnectionSourceSet(
712 IFDE_XMLNode* pXMLDocumentNode, 715 CFDE_XMLNode* pXMLDocumentNode,
713 XFA_XDPPACKET ePacketID) { 716 XFA_XDPPACKET ePacketID) {
714 CXFA_Node* pNode = NULL; 717 CXFA_Node* pNode = NULL;
715 if (ePacketID == XFA_XDPPACKET_LocaleSet) { 718 if (ePacketID == XFA_XDPPACKET_LocaleSet) {
716 if (XFA_FDEExtension_MatchNodeName( 719 if (XFA_FDEExtension_MatchNodeName(
717 pXMLDocumentNode, XFA_GetPacketByIndex(XFA_PACKET_LocaleSet)->pName, 720 pXMLDocumentNode, XFA_GetPacketByIndex(XFA_PACKET_LocaleSet)->pName,
718 XFA_GetPacketByIndex(XFA_PACKET_LocaleSet)->pURI, 721 XFA_GetPacketByIndex(XFA_PACKET_LocaleSet)->pURI,
719 XFA_GetPacketByIndex(XFA_PACKET_LocaleSet)->eFlags)) { 722 XFA_GetPacketByIndex(XFA_PACKET_LocaleSet)->eFlags)) {
720 pNode = m_pFactory->CreateNode(XFA_XDPPACKET_LocaleSet, 723 pNode = m_pFactory->CreateNode(XFA_XDPPACKET_LocaleSet,
721 XFA_ELEMENT_LocaleSet); 724 XFA_ELEMENT_LocaleSet);
722 if (!pNode) { 725 if (!pNode) {
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
761 return NULL; 764 return NULL;
762 } 765 }
763 } 766 }
764 } 767 }
765 if (pNode) { 768 if (pNode) {
766 pNode->SetXMLMappingNode(pXMLDocumentNode); 769 pNode->SetXMLMappingNode(pXMLDocumentNode);
767 } 770 }
768 return pNode; 771 return pNode;
769 } 772 }
770 CXFA_Node* CXFA_SimpleParser::ParseAsXDPPacket_Xdc( 773 CXFA_Node* CXFA_SimpleParser::ParseAsXDPPacket_Xdc(
771 IFDE_XMLNode* pXMLDocumentNode, 774 CFDE_XMLNode* pXMLDocumentNode,
772 XFA_XDPPACKET ePacketID) { 775 XFA_XDPPACKET ePacketID) {
773 if (XFA_FDEExtension_MatchNodeName( 776 if (XFA_FDEExtension_MatchNodeName(
774 pXMLDocumentNode, XFA_GetPacketByIndex(XFA_PACKET_Xdc)->pName, 777 pXMLDocumentNode, XFA_GetPacketByIndex(XFA_PACKET_Xdc)->pName,
775 XFA_GetPacketByIndex(XFA_PACKET_Xdc)->pURI, 778 XFA_GetPacketByIndex(XFA_PACKET_Xdc)->pURI,
776 XFA_GetPacketByIndex(XFA_PACKET_Xdc)->eFlags)) { 779 XFA_GetPacketByIndex(XFA_PACKET_Xdc)->eFlags)) {
777 CXFA_Node* pNode = 780 CXFA_Node* pNode =
778 m_pFactory->CreateNode(XFA_XDPPACKET_Xdc, XFA_ELEMENT_Xdc); 781 m_pFactory->CreateNode(XFA_XDPPACKET_Xdc, XFA_ELEMENT_Xdc);
779 if (!pNode) { 782 if (!pNode) {
780 return NULL; 783 return NULL;
781 } 784 }
782 pNode->SetCData(XFA_ATTRIBUTE_Name, 785 pNode->SetCData(XFA_ATTRIBUTE_Name,
783 XFA_GetPacketByIndex(XFA_PACKET_Xdc)->pName); 786 XFA_GetPacketByIndex(XFA_PACKET_Xdc)->pName);
784 pNode->SetXMLMappingNode(pXMLDocumentNode); 787 pNode->SetXMLMappingNode(pXMLDocumentNode);
785 return pNode; 788 return pNode;
786 } 789 }
787 return NULL; 790 return NULL;
788 } 791 }
789 CXFA_Node* CXFA_SimpleParser::ParseAsXDPPacket_User( 792 CXFA_Node* CXFA_SimpleParser::ParseAsXDPPacket_User(
790 IFDE_XMLNode* pXMLDocumentNode, 793 CFDE_XMLNode* pXMLDocumentNode,
791 XFA_XDPPACKET ePacketID) { 794 XFA_XDPPACKET ePacketID) {
792 CXFA_Node* pNode = 795 CXFA_Node* pNode =
793 m_pFactory->CreateNode(XFA_XDPPACKET_XDP, XFA_ELEMENT_Packet); 796 m_pFactory->CreateNode(XFA_XDPPACKET_XDP, XFA_ELEMENT_Packet);
794 if (!pNode) { 797 if (!pNode) {
795 return NULL; 798 return NULL;
796 } 799 }
797 CFX_WideString wsName; 800 CFX_WideString wsName;
798 ((IFDE_XMLElement*)pXMLDocumentNode)->GetLocalTagName(wsName); 801 static_cast<CFDE_XMLElement*>(pXMLDocumentNode)->GetLocalTagName(wsName);
799 pNode->SetCData(XFA_ATTRIBUTE_Name, wsName); 802 pNode->SetCData(XFA_ATTRIBUTE_Name, wsName);
800 if (!UserPacketLoader(pNode, pXMLDocumentNode)) { 803 if (!UserPacketLoader(pNode, pXMLDocumentNode)) {
801 return NULL; 804 return NULL;
802 } 805 }
803 pNode->SetXMLMappingNode(pXMLDocumentNode); 806 pNode->SetXMLMappingNode(pXMLDocumentNode);
804 return pNode; 807 return pNode;
805 } 808 }
806 CXFA_Node* CXFA_SimpleParser::UserPacketLoader(CXFA_Node* pXFANode, 809 CXFA_Node* CXFA_SimpleParser::UserPacketLoader(CXFA_Node* pXFANode,
807 IFDE_XMLNode* pXMLDoc) { 810 CFDE_XMLNode* pXMLDoc) {
808 return pXFANode; 811 return pXFANode;
809 } 812 }
810 static FX_BOOL XFA_FDEExtension_IsStringAllWhitespace(CFX_WideString wsText) { 813 static FX_BOOL XFA_FDEExtension_IsStringAllWhitespace(CFX_WideString wsText) {
811 wsText.TrimRight(L"\x20\x9\xD\xA"); 814 wsText.TrimRight(L"\x20\x9\xD\xA");
812 return wsText.IsEmpty(); 815 return wsText.IsEmpty();
813 } 816 }
814 CXFA_Node* CXFA_SimpleParser::DataLoader(CXFA_Node* pXFANode, 817 CXFA_Node* CXFA_SimpleParser::DataLoader(CXFA_Node* pXFANode,
815 IFDE_XMLNode* pXMLDoc, 818 CFDE_XMLNode* pXMLDoc,
816 FX_BOOL bDoTransform) { 819 FX_BOOL bDoTransform) {
817 ParseDataGroup(pXFANode, pXMLDoc, XFA_XDPPACKET_Datasets); 820 ParseDataGroup(pXFANode, pXMLDoc, XFA_XDPPACKET_Datasets);
818 return pXFANode; 821 return pXFANode;
819 } 822 }
820 CXFA_Node* CXFA_SimpleParser::NormalLoader(CXFA_Node* pXFANode, 823 CXFA_Node* CXFA_SimpleParser::NormalLoader(CXFA_Node* pXFANode,
821 IFDE_XMLNode* pXMLDoc, 824 CFDE_XMLNode* pXMLDoc,
822 XFA_XDPPACKET ePacketID, 825 XFA_XDPPACKET ePacketID,
823 FX_BOOL bUseAttribute) { 826 FX_BOOL bUseAttribute) {
824 FX_BOOL bOneOfPropertyFound = FALSE; 827 FX_BOOL bOneOfPropertyFound = FALSE;
825 for (IFDE_XMLNode* pXMLChild = pXMLDoc->GetNodeItem(IFDE_XMLNode::FirstChild); 828 for (CFDE_XMLNode* pXMLChild = pXMLDoc->GetNodeItem(CFDE_XMLNode::FirstChild);
826 pXMLChild; 829 pXMLChild;
827 pXMLChild = pXMLChild->GetNodeItem(IFDE_XMLNode::NextSibling)) { 830 pXMLChild = pXMLChild->GetNodeItem(CFDE_XMLNode::NextSibling)) {
828 switch (pXMLChild->GetType()) { 831 switch (pXMLChild->GetType()) {
829 case FDE_XMLNODE_Element: { 832 case FDE_XMLNODE_Element: {
830 IFDE_XMLElement* pXMLElement = (IFDE_XMLElement*)pXMLChild; 833 CFDE_XMLElement* pXMLElement = static_cast<CFDE_XMLElement*>(pXMLChild);
831 CFX_WideString wsTagName; 834 CFX_WideString wsTagName;
832 pXMLElement->GetLocalTagName(wsTagName); 835 pXMLElement->GetLocalTagName(wsTagName);
833 const XFA_ELEMENTINFO* pElemInfo = XFA_GetElementByName(wsTagName); 836 const XFA_ELEMENTINFO* pElemInfo = XFA_GetElementByName(wsTagName);
834 if (!pElemInfo) { 837 if (!pElemInfo) {
835 continue; 838 continue;
836 } 839 }
837 const XFA_PROPERTY* pPropertyInfo = XFA_GetPropertyOfElement( 840 const XFA_PROPERTY* pPropertyInfo = XFA_GetPropertyOfElement(
838 pXFANode->GetClassID(), pElemInfo->eName, ePacketID); 841 pXFANode->GetClassID(), pElemInfo->eName, ePacketID);
839 if (pPropertyInfo && 842 if (pPropertyInfo &&
840 ((pPropertyInfo->uFlags & 843 ((pPropertyInfo->uFlags &
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
894 if (IsNeedValue) { 897 if (IsNeedValue) {
895 ParseContentNode(pXFAChild, pXMLElement, ePacketID); 898 ParseContentNode(pXFAChild, pXMLElement, ePacketID);
896 } 899 }
897 break; 900 break;
898 default: 901 default:
899 NormalLoader(pXFAChild, pXMLElement, ePacketID, bUseAttribute); 902 NormalLoader(pXFAChild, pXMLElement, ePacketID, bUseAttribute);
900 break; 903 break;
901 } 904 }
902 } break; 905 } break;
903 case FDE_XMLNODE_Instruction: 906 case FDE_XMLNODE_Instruction:
904 ParseInstruction(pXFANode, (IFDE_XMLInstruction*)pXMLChild, ePacketID); 907 ParseInstruction(pXFANode, static_cast<CFDE_XMLInstruction*>(pXMLChild),
908 ePacketID);
905 break; 909 break;
906 default: 910 default:
907 break; 911 break;
908 } 912 }
909 } 913 }
910 return pXFANode; 914 return pXFANode;
911 } 915 }
912 FX_BOOL XFA_RecognizeRichText(IFDE_XMLElement* pRichTextXMLNode) { 916 FX_BOOL XFA_RecognizeRichText(CFDE_XMLElement* pRichTextXMLNode) {
913 if (pRichTextXMLNode) { 917 if (pRichTextXMLNode) {
914 CFX_WideString wsNamespaceURI; 918 CFX_WideString wsNamespaceURI;
915 XFA_FDEExtension_GetElementTagNamespaceURI(pRichTextXMLNode, 919 XFA_FDEExtension_GetElementTagNamespaceURI(pRichTextXMLNode,
916 wsNamespaceURI); 920 wsNamespaceURI);
917 if (wsNamespaceURI == FX_WSTRC(L"http://www.w3.org/1999/xhtml")) { 921 if (wsNamespaceURI == FX_WSTRC(L"http://www.w3.org/1999/xhtml")) {
918 return TRUE; 922 return TRUE;
919 } 923 }
920 } 924 }
921 return FALSE; 925 return FALSE;
922 } 926 }
923 class RichTextNodeVisitor { 927 class RichTextNodeVisitor {
924 public: 928 public:
925 static inline IFDE_XMLNode* GetFirstChild(IFDE_XMLNode* pNode) { 929 static inline CFDE_XMLNode* GetFirstChild(CFDE_XMLNode* pNode) {
926 return pNode->GetNodeItem(IFDE_XMLNode::FirstChild); 930 return pNode->GetNodeItem(CFDE_XMLNode::FirstChild);
927 } 931 }
928 static inline IFDE_XMLNode* GetNextSibling(IFDE_XMLNode* pNode) { 932 static inline CFDE_XMLNode* GetNextSibling(CFDE_XMLNode* pNode) {
929 return pNode->GetNodeItem(IFDE_XMLNode::NextSibling); 933 return pNode->GetNodeItem(CFDE_XMLNode::NextSibling);
930 } 934 }
931 static inline IFDE_XMLNode* GetParent(IFDE_XMLNode* pNode) { 935 static inline CFDE_XMLNode* GetParent(CFDE_XMLNode* pNode) {
932 return pNode->GetNodeItem(IFDE_XMLNode::Parent); 936 return pNode->GetNodeItem(CFDE_XMLNode::Parent);
933 } 937 }
934 }; 938 };
935 939
936 void XFA_ConvertXMLToPlainText(IFDE_XMLElement* pRootXMLNode, 940 void XFA_ConvertXMLToPlainText(CFDE_XMLElement* pRootXMLNode,
937 CFX_WideString& wsOutput) { 941 CFX_WideString& wsOutput) {
938 for (IFDE_XMLNode* pXMLChild = 942 for (CFDE_XMLNode* pXMLChild =
939 pRootXMLNode->GetNodeItem(IFDE_XMLNode::FirstChild); 943 pRootXMLNode->GetNodeItem(CFDE_XMLNode::FirstChild);
940 pXMLChild; 944 pXMLChild;
941 pXMLChild = pXMLChild->GetNodeItem(IFDE_XMLNode::NextSibling)) { 945 pXMLChild = pXMLChild->GetNodeItem(CFDE_XMLNode::NextSibling)) {
942 switch (pXMLChild->GetType()) { 946 switch (pXMLChild->GetType()) {
943 case FDE_XMLNODE_Element: { 947 case FDE_XMLNODE_Element: {
944 CFX_WideString wsTextData; 948 CFX_WideString wsTextData;
945 ((IFDE_XMLElement*)pXMLChild)->GetTextData(wsTextData); 949 static_cast<CFDE_XMLElement*>(pXMLChild)->GetTextData(wsTextData);
946 wsTextData += FX_WSTRC(L"\n"); 950 wsTextData += FX_WSTRC(L"\n");
947 wsOutput += wsTextData; 951 wsOutput += wsTextData;
948 } break; 952 } break;
949 case FDE_XMLNODE_Text: { 953 case FDE_XMLNODE_Text: {
950 CFX_WideString wsText; 954 CFX_WideString wsText;
951 ((IFDE_XMLText*)pXMLChild)->GetText(wsText); 955 static_cast<CFDE_XMLText*>(pXMLChild)->GetText(wsText);
952 if (XFA_FDEExtension_IsStringAllWhitespace(wsText)) { 956 if (XFA_FDEExtension_IsStringAllWhitespace(wsText)) {
953 continue; 957 continue;
954 } else { 958 } else {
955 wsOutput = wsText; 959 wsOutput = wsText;
956 } 960 }
957 } break; 961 } break;
958 case FDE_XMLNODE_CharData: { 962 case FDE_XMLNODE_CharData: {
959 CFX_WideString wsCharData; 963 CFX_WideString wsCharData;
960 ((IFDE_XMLCharData*)pXMLChild)->GetCharData(wsCharData); 964 static_cast<CFDE_XMLCharData*>(pXMLChild)->GetCharData(wsCharData);
961 if (XFA_FDEExtension_IsStringAllWhitespace(wsCharData)) { 965 if (XFA_FDEExtension_IsStringAllWhitespace(wsCharData)) {
962 continue; 966 continue;
963 } else { 967 } else {
964 wsOutput = wsCharData; 968 wsOutput = wsCharData;
965 } 969 }
966 } break; 970 } break;
967 default: 971 default:
968 FXSYS_assert(FALSE); 972 FXSYS_assert(FALSE);
969 break; 973 break;
970 } 974 }
971 } 975 }
972 } 976 }
973 977
974 void CXFA_SimpleParser::ParseContentNode(CXFA_Node* pXFANode, 978 void CXFA_SimpleParser::ParseContentNode(CXFA_Node* pXFANode,
975 IFDE_XMLNode* pXMLNode, 979 CFDE_XMLNode* pXMLNode,
976 XFA_XDPPACKET ePacketID) { 980 XFA_XDPPACKET ePacketID) {
977 XFA_ELEMENT element = XFA_ELEMENT_Sharptext; 981 XFA_ELEMENT element = XFA_ELEMENT_Sharptext;
978 if (pXFANode->GetClassID() == XFA_ELEMENT_ExData) { 982 if (pXFANode->GetClassID() == XFA_ELEMENT_ExData) {
979 CFX_WideStringC wsContentType = 983 CFX_WideStringC wsContentType =
980 pXFANode->GetCData(XFA_ATTRIBUTE_ContentType); 984 pXFANode->GetCData(XFA_ATTRIBUTE_ContentType);
981 if (wsContentType == FX_WSTRC(L"text/html")) 985 if (wsContentType == FX_WSTRC(L"text/html"))
982 element = XFA_ELEMENT_SharpxHTML; 986 element = XFA_ELEMENT_SharpxHTML;
983 else if (wsContentType == FX_WSTRC(L"text/xml")) 987 else if (wsContentType == FX_WSTRC(L"text/xml"))
984 element = XFA_ELEMENT_Sharpxml; 988 element = XFA_ELEMENT_Sharpxml;
985 } 989 }
986 if (element == XFA_ELEMENT_SharpxHTML) 990 if (element == XFA_ELEMENT_SharpxHTML)
987 pXFANode->SetXMLMappingNode(pXMLNode); 991 pXFANode->SetXMLMappingNode(pXMLNode);
988 992
989 CFX_WideString wsValue; 993 CFX_WideString wsValue;
990 for (IFDE_XMLNode* pXMLChild = 994 for (CFDE_XMLNode* pXMLChild =
991 pXMLNode->GetNodeItem(IFDE_XMLNode::FirstChild); 995 pXMLNode->GetNodeItem(CFDE_XMLNode::FirstChild);
992 pXMLChild; 996 pXMLChild;
993 pXMLChild = pXMLChild->GetNodeItem(IFDE_XMLNode::NextSibling)) { 997 pXMLChild = pXMLChild->GetNodeItem(CFDE_XMLNode::NextSibling)) {
994 FDE_XMLNODETYPE eNodeType = pXMLChild->GetType(); 998 FDE_XMLNODETYPE eNodeType = pXMLChild->GetType();
995 if (eNodeType == FDE_XMLNODE_Instruction) 999 if (eNodeType == FDE_XMLNODE_Instruction)
996 continue; 1000 continue;
997 1001
998 if (element == XFA_ELEMENT_SharpxHTML) { 1002 if (element == XFA_ELEMENT_SharpxHTML) {
999 if (eNodeType != FDE_XMLNODE_Element) 1003 if (eNodeType != FDE_XMLNODE_Element)
1000 break; 1004 break;
1001 1005
1002 if (XFA_RecognizeRichText((IFDE_XMLElement*)pXMLChild)) 1006 if (XFA_RecognizeRichText(static_cast<CFDE_XMLElement*>(pXMLChild)))
1003 XFA_GetPlainTextFromRichText((IFDE_XMLElement*)pXMLChild, wsValue); 1007 XFA_GetPlainTextFromRichText(static_cast<CFDE_XMLElement*>(pXMLChild),
1008 wsValue);
1004 } else if (element == XFA_ELEMENT_Sharpxml) { 1009 } else if (element == XFA_ELEMENT_Sharpxml) {
1005 if (eNodeType != FDE_XMLNODE_Element) 1010 if (eNodeType != FDE_XMLNODE_Element)
1006 break; 1011 break;
1007 XFA_ConvertXMLToPlainText((IFDE_XMLElement*)pXMLChild, wsValue); 1012 XFA_ConvertXMLToPlainText(static_cast<CFDE_XMLElement*>(pXMLChild),
1013 wsValue);
1008 } else { 1014 } else {
1009 if (eNodeType == FDE_XMLNODE_Element) 1015 if (eNodeType == FDE_XMLNODE_Element)
1010 break; 1016 break;
1011 if (eNodeType == FDE_XMLNODE_Text) 1017 if (eNodeType == FDE_XMLNODE_Text)
1012 ((IFDE_XMLText*)pXMLChild)->GetText(wsValue); 1018 static_cast<CFDE_XMLText*>(pXMLChild)->GetText(wsValue);
1013 else if (eNodeType == FDE_XMLNODE_CharData) 1019 else if (eNodeType == FDE_XMLNODE_CharData)
1014 ((IFDE_XMLCharData*)pXMLChild)->GetCharData(wsValue); 1020 static_cast<CFDE_XMLCharData*>(pXMLChild)->GetCharData(wsValue);
1015 } 1021 }
1016 break; 1022 break;
1017 } 1023 }
1018 if (!wsValue.IsEmpty()) { 1024 if (!wsValue.IsEmpty()) {
1019 if (pXFANode->GetObjectType() == XFA_OBJECTTYPE_ContentNode) { 1025 if (pXFANode->GetObjectType() == XFA_OBJECTTYPE_ContentNode) {
1020 CXFA_Node* pContentRawDataNode = 1026 CXFA_Node* pContentRawDataNode =
1021 m_pFactory->CreateNode(ePacketID, element); 1027 m_pFactory->CreateNode(ePacketID, element);
1022 FXSYS_assert(pContentRawDataNode); 1028 FXSYS_assert(pContentRawDataNode);
1023 pContentRawDataNode->SetCData(XFA_ATTRIBUTE_Value, wsValue); 1029 pContentRawDataNode->SetCData(XFA_ATTRIBUTE_Value, wsValue);
1024 pXFANode->InsertChild(pContentRawDataNode); 1030 pXFANode->InsertChild(pContentRawDataNode);
1025 } else { 1031 } else {
1026 pXFANode->SetCData(XFA_ATTRIBUTE_Value, wsValue); 1032 pXFANode->SetCData(XFA_ATTRIBUTE_Value, wsValue);
1027 } 1033 }
1028 } 1034 }
1029 } 1035 }
1030 1036
1031 void CXFA_SimpleParser::ParseDataGroup(CXFA_Node* pXFANode, 1037 void CXFA_SimpleParser::ParseDataGroup(CXFA_Node* pXFANode,
1032 IFDE_XMLNode* pXMLNode, 1038 CFDE_XMLNode* pXMLNode,
1033 XFA_XDPPACKET ePacketID) { 1039 XFA_XDPPACKET ePacketID) {
1034 for (IFDE_XMLNode* pXMLChild = 1040 for (CFDE_XMLNode* pXMLChild =
1035 pXMLNode->GetNodeItem(IFDE_XMLNode::FirstChild); 1041 pXMLNode->GetNodeItem(CFDE_XMLNode::FirstChild);
1036 pXMLChild; 1042 pXMLChild;
1037 pXMLChild = pXMLChild->GetNodeItem(IFDE_XMLNode::NextSibling)) { 1043 pXMLChild = pXMLChild->GetNodeItem(CFDE_XMLNode::NextSibling)) {
1038 switch (pXMLChild->GetType()) { 1044 switch (pXMLChild->GetType()) {
1039 case FDE_XMLNODE_Element: { 1045 case FDE_XMLNODE_Element: {
1040 IFDE_XMLElement* pXMLElement = (IFDE_XMLElement*)pXMLChild; 1046 CFDE_XMLElement* pXMLElement = static_cast<CFDE_XMLElement*>(pXMLChild);
1041 { 1047 {
1042 CFX_WideString wsNamespaceURI; 1048 CFX_WideString wsNamespaceURI;
1043 XFA_FDEExtension_GetElementTagNamespaceURI(pXMLElement, 1049 XFA_FDEExtension_GetElementTagNamespaceURI(pXMLElement,
1044 wsNamespaceURI); 1050 wsNamespaceURI);
1045 if (wsNamespaceURI == 1051 if (wsNamespaceURI ==
1046 FX_WSTRC(L"http://www.xfa.com/schema/xfa-package/") || 1052 FX_WSTRC(L"http://www.xfa.com/schema/xfa-package/") ||
1047 wsNamespaceURI == 1053 wsNamespaceURI ==
1048 FX_WSTRC(L"http://www.xfa.org/schema/xfa-package/") || 1054 FX_WSTRC(L"http://www.xfa.org/schema/xfa-package/") ||
1049 wsNamespaceURI == 1055 wsNamespaceURI ==
1050 FX_WSTRC(L"http://www.w3.org/2001/XMLSchema-instance")) { 1056 FX_WSTRC(L"http://www.w3.org/2001/XMLSchema-instance")) {
(...skipping 22 matching lines...) Expand all
1073 if (XFA_FDEExtension_FindAttributeWithNS( 1079 if (XFA_FDEExtension_FindAttributeWithNS(
1074 pXMLElement, FX_WSTRC(L"contentType"), 1080 pXMLElement, FX_WSTRC(L"contentType"),
1075 FX_WSTRC(L"http://www.xfa.org/schema/xfa-data/1.0/"), 1081 FX_WSTRC(L"http://www.xfa.org/schema/xfa-data/1.0/"),
1076 wsContentType)) { 1082 wsContentType)) {
1077 if (!wsContentType.IsEmpty()) { 1083 if (!wsContentType.IsEmpty()) {
1078 eNodeType = XFA_ELEMENT_DataValue; 1084 eNodeType = XFA_ELEMENT_DataValue;
1079 } 1085 }
1080 } 1086 }
1081 } 1087 }
1082 if (eNodeType == XFA_ELEMENT_DataModel) { 1088 if (eNodeType == XFA_ELEMENT_DataModel) {
1083 for (IFDE_XMLNode* pXMLDataChild = 1089 for (CFDE_XMLNode* pXMLDataChild =
1084 pXMLElement->GetNodeItem(IFDE_XMLNode::FirstChild); 1090 pXMLElement->GetNodeItem(CFDE_XMLNode::FirstChild);
1085 pXMLDataChild; pXMLDataChild = pXMLDataChild->GetNodeItem( 1091 pXMLDataChild; pXMLDataChild = pXMLDataChild->GetNodeItem(
1086 IFDE_XMLNode::NextSibling)) { 1092 CFDE_XMLNode::NextSibling)) {
1087 if (pXMLDataChild->GetType() == FDE_XMLNODE_Element) { 1093 if (pXMLDataChild->GetType() == FDE_XMLNODE_Element) {
1088 if (!XFA_RecognizeRichText((IFDE_XMLElement*)pXMLDataChild)) { 1094 if (!XFA_RecognizeRichText(
1095 static_cast<CFDE_XMLElement*>(pXMLDataChild))) {
1089 eNodeType = XFA_ELEMENT_DataGroup; 1096 eNodeType = XFA_ELEMENT_DataGroup;
1090 break; 1097 break;
1091 } 1098 }
1092 } 1099 }
1093 } 1100 }
1094 } 1101 }
1095 if (eNodeType == XFA_ELEMENT_DataModel) { 1102 if (eNodeType == XFA_ELEMENT_DataModel) {
1096 eNodeType = XFA_ELEMENT_DataValue; 1103 eNodeType = XFA_ELEMENT_DataValue;
1097 } 1104 }
1098 CXFA_Node* pXFAChild = 1105 CXFA_Node* pXFAChild =
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
1161 } else { 1168 } else {
1162 if (bNeedValue) { 1169 if (bNeedValue) {
1163 ParseDataValue(pXFAChild, pXMLChild, XFA_XDPPACKET_Datasets); 1170 ParseDataValue(pXFAChild, pXMLChild, XFA_XDPPACKET_Datasets);
1164 } 1171 }
1165 } 1172 }
1166 pXFAChild->SetXMLMappingNode(pXMLElement); 1173 pXFAChild->SetXMLMappingNode(pXMLElement);
1167 pXFAChild->SetFlag(XFA_NODEFLAG_Initialized, TRUE, FALSE); 1174 pXFAChild->SetFlag(XFA_NODEFLAG_Initialized, TRUE, FALSE);
1168 } 1175 }
1169 continue; 1176 continue;
1170 case FDE_XMLNODE_CharData: { 1177 case FDE_XMLNODE_CharData: {
1171 IFDE_XMLCharData* pXMLCharData = (IFDE_XMLCharData*)pXMLChild; 1178 CFDE_XMLCharData* pXMLCharData =
1179 static_cast<CFDE_XMLCharData*>(pXMLChild);
1172 CFX_WideString wsCharData; 1180 CFX_WideString wsCharData;
1173 pXMLCharData->GetCharData(wsCharData); 1181 pXMLCharData->GetCharData(wsCharData);
1174 if (XFA_FDEExtension_IsStringAllWhitespace(wsCharData)) { 1182 if (XFA_FDEExtension_IsStringAllWhitespace(wsCharData)) {
1175 continue; 1183 continue;
1176 } 1184 }
1177 CXFA_Node* pXFAChild = m_pFactory->CreateNode(XFA_XDPPACKET_Datasets, 1185 CXFA_Node* pXFAChild = m_pFactory->CreateNode(XFA_XDPPACKET_Datasets,
1178 XFA_ELEMENT_DataValue); 1186 XFA_ELEMENT_DataValue);
1179 if (pXFAChild == NULL) { 1187 if (pXFAChild == NULL) {
1180 return; 1188 return;
1181 } 1189 }
1182 pXFAChild->SetCData(XFA_ATTRIBUTE_Value, wsCharData); 1190 pXFAChild->SetCData(XFA_ATTRIBUTE_Value, wsCharData);
1183 pXFANode->InsertChild(pXFAChild); 1191 pXFANode->InsertChild(pXFAChild);
1184 pXFAChild->SetXMLMappingNode(pXMLCharData); 1192 pXFAChild->SetXMLMappingNode(pXMLCharData);
1185 pXFAChild->SetFlag(XFA_NODEFLAG_Initialized, TRUE, FALSE); 1193 pXFAChild->SetFlag(XFA_NODEFLAG_Initialized, TRUE, FALSE);
1186 } 1194 }
1187 continue; 1195 continue;
1188 case FDE_XMLNODE_Text: { 1196 case FDE_XMLNODE_Text: {
1189 IFDE_XMLText* pXMLText = (IFDE_XMLText*)pXMLChild; 1197 CFDE_XMLText* pXMLText = static_cast<CFDE_XMLText*>(pXMLChild);
1190 CFX_WideString wsText; 1198 CFX_WideString wsText;
1191 pXMLText->GetText(wsText); 1199 pXMLText->GetText(wsText);
1192 if (XFA_FDEExtension_IsStringAllWhitespace(wsText)) { 1200 if (XFA_FDEExtension_IsStringAllWhitespace(wsText)) {
1193 continue; 1201 continue;
1194 } 1202 }
1195 CXFA_Node* pXFAChild = m_pFactory->CreateNode(XFA_XDPPACKET_Datasets, 1203 CXFA_Node* pXFAChild = m_pFactory->CreateNode(XFA_XDPPACKET_Datasets,
1196 XFA_ELEMENT_DataValue); 1204 XFA_ELEMENT_DataValue);
1197 if (pXFAChild == NULL) { 1205 if (pXFAChild == NULL) {
1198 return; 1206 return;
1199 } 1207 }
1200 pXFAChild->SetCData(XFA_ATTRIBUTE_Value, wsText); 1208 pXFAChild->SetCData(XFA_ATTRIBUTE_Value, wsText);
1201 pXFANode->InsertChild(pXFAChild); 1209 pXFANode->InsertChild(pXFAChild);
1202 pXFAChild->SetXMLMappingNode(pXMLText); 1210 pXFAChild->SetXMLMappingNode(pXMLText);
1203 pXFAChild->SetFlag(XFA_NODEFLAG_Initialized, TRUE, FALSE); 1211 pXFAChild->SetFlag(XFA_NODEFLAG_Initialized, TRUE, FALSE);
1204 } 1212 }
1205 continue; 1213 continue;
1206 case FDE_XMLNODE_Instruction: 1214 case FDE_XMLNODE_Instruction:
1207 continue; 1215 continue;
1208 default: 1216 default:
1209 continue; 1217 continue;
1210 } 1218 }
1211 } 1219 }
1212 } 1220 }
1213 1221
1214 void CXFA_SimpleParser::ParseDataValue(CXFA_Node* pXFANode, 1222 void CXFA_SimpleParser::ParseDataValue(CXFA_Node* pXFANode,
1215 IFDE_XMLNode* pXMLNode, 1223 CFDE_XMLNode* pXMLNode,
1216 XFA_XDPPACKET ePacketID) { 1224 XFA_XDPPACKET ePacketID) {
1217 CFX_WideTextBuf wsValueTextBuf; 1225 CFX_WideTextBuf wsValueTextBuf;
1218 CFX_WideTextBuf wsCurValueTextBuf; 1226 CFX_WideTextBuf wsCurValueTextBuf;
1219 FX_BOOL bMarkAsCompound = FALSE; 1227 FX_BOOL bMarkAsCompound = FALSE;
1220 IFDE_XMLNode* pXMLCurValueNode = nullptr; 1228 CFDE_XMLNode* pXMLCurValueNode = nullptr;
1221 for (IFDE_XMLNode* pXMLChild = 1229 for (CFDE_XMLNode* pXMLChild =
1222 pXMLNode->GetNodeItem(IFDE_XMLNode::FirstChild); 1230 pXMLNode->GetNodeItem(CFDE_XMLNode::FirstChild);
1223 pXMLChild; 1231 pXMLChild;
1224 pXMLChild = pXMLChild->GetNodeItem(IFDE_XMLNode::NextSibling)) { 1232 pXMLChild = pXMLChild->GetNodeItem(CFDE_XMLNode::NextSibling)) {
1225 FDE_XMLNODETYPE eNodeType = pXMLChild->GetType(); 1233 FDE_XMLNODETYPE eNodeType = pXMLChild->GetType();
1226 if (eNodeType == FDE_XMLNODE_Instruction) 1234 if (eNodeType == FDE_XMLNODE_Instruction)
1227 continue; 1235 continue;
1228 1236
1229 CFX_WideString wsText; 1237 CFX_WideString wsText;
1230 if (eNodeType == FDE_XMLNODE_Text) { 1238 if (eNodeType == FDE_XMLNODE_Text) {
1231 ((IFDE_XMLText*)pXMLChild)->GetText(wsText); 1239 static_cast<CFDE_XMLText*>(pXMLChild)->GetText(wsText);
1232 if (!pXMLCurValueNode) 1240 if (!pXMLCurValueNode)
1233 pXMLCurValueNode = pXMLChild; 1241 pXMLCurValueNode = pXMLChild;
1234 1242
1235 wsCurValueTextBuf << wsText; 1243 wsCurValueTextBuf << wsText;
1236 } else if (eNodeType == FDE_XMLNODE_CharData) { 1244 } else if (eNodeType == FDE_XMLNODE_CharData) {
1237 ((IFDE_XMLCharData*)pXMLChild)->GetCharData(wsText); 1245 static_cast<CFDE_XMLCharData*>(pXMLChild)->GetCharData(wsText);
1238 if (!pXMLCurValueNode) 1246 if (!pXMLCurValueNode)
1239 pXMLCurValueNode = pXMLChild; 1247 pXMLCurValueNode = pXMLChild;
1240 1248
1241 wsCurValueTextBuf << wsText; 1249 wsCurValueTextBuf << wsText;
1242 } else if (XFA_RecognizeRichText((IFDE_XMLElement*)pXMLChild)) { 1250 } else if (XFA_RecognizeRichText(
1243 XFA_GetPlainTextFromRichText((IFDE_XMLElement*)pXMLChild, wsText); 1251 static_cast<CFDE_XMLElement*>(pXMLChild))) {
1252 XFA_GetPlainTextFromRichText(static_cast<CFDE_XMLElement*>(pXMLChild),
1253 wsText);
1244 if (!pXMLCurValueNode) 1254 if (!pXMLCurValueNode)
1245 pXMLCurValueNode = pXMLChild; 1255 pXMLCurValueNode = pXMLChild;
1246 1256
1247 wsCurValueTextBuf << wsText; 1257 wsCurValueTextBuf << wsText;
1248 } else { 1258 } else {
1249 bMarkAsCompound = TRUE; 1259 bMarkAsCompound = TRUE;
1250 if (pXMLCurValueNode) { 1260 if (pXMLCurValueNode) {
1251 CFX_WideStringC wsCurValue = wsCurValueTextBuf.GetWideString(); 1261 CFX_WideStringC wsCurValue = wsCurValueTextBuf.GetWideString();
1252 if (!wsCurValue.IsEmpty()) { 1262 if (!wsCurValue.IsEmpty()) {
1253 CXFA_Node* pXFAChild = 1263 CXFA_Node* pXFAChild =
(...skipping 10 matching lines...) Expand all
1264 wsCurValueTextBuf.Clear(); 1274 wsCurValueTextBuf.Clear();
1265 } 1275 }
1266 pXMLCurValueNode = nullptr; 1276 pXMLCurValueNode = nullptr;
1267 } 1277 }
1268 CXFA_Node* pXFAChild = 1278 CXFA_Node* pXFAChild =
1269 m_pFactory->CreateNode(ePacketID, XFA_ELEMENT_DataValue); 1279 m_pFactory->CreateNode(ePacketID, XFA_ELEMENT_DataValue);
1270 if (!pXFAChild) 1280 if (!pXFAChild)
1271 return; 1281 return;
1272 1282
1273 CFX_WideString wsNodeStr; 1283 CFX_WideString wsNodeStr;
1274 ((IFDE_XMLElement*)pXMLChild)->GetLocalTagName(wsNodeStr); 1284 static_cast<CFDE_XMLElement*>(pXMLChild)->GetLocalTagName(wsNodeStr);
1275 pXFAChild->SetCData(XFA_ATTRIBUTE_Name, wsNodeStr); 1285 pXFAChild->SetCData(XFA_ATTRIBUTE_Name, wsNodeStr);
1276 ParseDataValue(pXFAChild, pXMLChild, ePacketID); 1286 ParseDataValue(pXFAChild, pXMLChild, ePacketID);
1277 pXFANode->InsertChild(pXFAChild); 1287 pXFANode->InsertChild(pXFAChild);
1278 pXFAChild->SetXMLMappingNode(pXMLChild); 1288 pXFAChild->SetXMLMappingNode(pXMLChild);
1279 pXFAChild->SetFlag(XFA_NODEFLAG_Initialized, TRUE, FALSE); 1289 pXFAChild->SetFlag(XFA_NODEFLAG_Initialized, TRUE, FALSE);
1280 CFX_WideStringC wsCurValue = pXFAChild->GetCData(XFA_ATTRIBUTE_Value); 1290 CFX_WideStringC wsCurValue = pXFAChild->GetCData(XFA_ATTRIBUTE_Value);
1281 wsValueTextBuf << wsCurValue; 1291 wsValueTextBuf << wsCurValue;
1282 } 1292 }
1283 } 1293 }
1284 if (pXMLCurValueNode) { 1294 if (pXMLCurValueNode) {
(...skipping 14 matching lines...) Expand all
1299 wsValueTextBuf << wsCurValue; 1309 wsValueTextBuf << wsCurValue;
1300 wsCurValueTextBuf.Clear(); 1310 wsCurValueTextBuf.Clear();
1301 } 1311 }
1302 pXMLCurValueNode = nullptr; 1312 pXMLCurValueNode = nullptr;
1303 } 1313 }
1304 CFX_WideStringC wsNodeValue = wsValueTextBuf.GetWideString(); 1314 CFX_WideStringC wsNodeValue = wsValueTextBuf.GetWideString();
1305 pXFANode->SetCData(XFA_ATTRIBUTE_Value, wsNodeValue); 1315 pXFANode->SetCData(XFA_ATTRIBUTE_Value, wsNodeValue);
1306 } 1316 }
1307 1317
1308 void CXFA_SimpleParser::ParseInstruction(CXFA_Node* pXFANode, 1318 void CXFA_SimpleParser::ParseInstruction(CXFA_Node* pXFANode,
1309 IFDE_XMLInstruction* pXMLInstruction, 1319 CFDE_XMLInstruction* pXMLInstruction,
1310 XFA_XDPPACKET ePacketID) { 1320 XFA_XDPPACKET ePacketID) {
1311 if (!m_bDocumentParser) { 1321 if (!m_bDocumentParser) {
1312 return; 1322 return;
1313 } 1323 }
1314 CFX_WideString wsTargetName; 1324 CFX_WideString wsTargetName;
1315 pXMLInstruction->GetTargetName(wsTargetName); 1325 pXMLInstruction->GetTargetName(wsTargetName);
1316 if (wsTargetName == FX_WSTRC(L"originalXFAVersion")) { 1326 if (wsTargetName == FX_WSTRC(L"originalXFAVersion")) {
1317 CFX_WideString wsData; 1327 CFX_WideString wsData;
1318 if (pXMLInstruction->GetData(0, wsData) && 1328 if (pXMLInstruction->GetData(0, wsData) &&
1319 (pXFANode->GetDocument()->RecognizeXFAVersionNumber(wsData) != 1329 (pXFANode->GetDocument()->RecognizeXFAVersionNumber(wsData) !=
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
1365 } 1375 }
1366 int32_t CXFA_DocumentParser::DoParse(IFX_Pause* pPause) { 1376 int32_t CXFA_DocumentParser::DoParse(IFX_Pause* pPause) {
1367 int32_t nRetStatus = m_nodeParser.DoParse(pPause); 1377 int32_t nRetStatus = m_nodeParser.DoParse(pPause);
1368 if (nRetStatus >= XFA_PARSESTATUS_Done) { 1378 if (nRetStatus >= XFA_PARSESTATUS_Done) {
1369 FXSYS_assert(m_pDocument); 1379 FXSYS_assert(m_pDocument);
1370 m_pDocument->SetRoot(m_nodeParser.GetRootNode()); 1380 m_pDocument->SetRoot(m_nodeParser.GetRootNode());
1371 } 1381 }
1372 return nRetStatus; 1382 return nRetStatus;
1373 } 1383 }
1374 int32_t CXFA_DocumentParser::ParseXMLData(const CFX_WideString& wsXML, 1384 int32_t CXFA_DocumentParser::ParseXMLData(const CFX_WideString& wsXML,
1375 IFDE_XMLNode*& pXMLNode, 1385 CFDE_XMLNode*& pXMLNode,
1376 IFX_Pause* pPause) { 1386 IFX_Pause* pPause) {
1377 CloseParser(); 1387 CloseParser();
1378 int32_t nRetStatus = m_nodeParser.ParseXMLData(wsXML, pXMLNode, NULL); 1388 int32_t nRetStatus = m_nodeParser.ParseXMLData(wsXML, pXMLNode, NULL);
1379 if (nRetStatus == XFA_PARSESTATUS_Done && pXMLNode) { 1389 if (nRetStatus == XFA_PARSESTATUS_Done && pXMLNode) {
1380 m_pDocument = new CXFA_Document(this); 1390 m_pDocument = new CXFA_Document(this);
1381 m_nodeParser.SetFactory(m_pDocument); 1391 m_nodeParser.SetFactory(m_pDocument);
1382 } 1392 }
1383 return nRetStatus; 1393 return nRetStatus;
1384 } 1394 }
1385 void CXFA_DocumentParser::ConstructXFANode(CXFA_Node* pXFANode, 1395 void CXFA_DocumentParser::ConstructXFANode(CXFA_Node* pXFANode,
1386 IFDE_XMLNode* pXMLNode) { 1396 CFDE_XMLNode* pXMLNode) {
1387 if (!pXFANode || !pXMLNode) { 1397 if (!pXFANode || !pXMLNode) {
1388 return; 1398 return;
1389 } 1399 }
1390 m_nodeParser.ConstructXFANode(pXFANode, pXMLNode); 1400 m_nodeParser.ConstructXFANode(pXFANode, pXMLNode);
1391 CXFA_Node* pRootNode = m_nodeParser.GetRootNode(); 1401 CXFA_Node* pRootNode = m_nodeParser.GetRootNode();
1392 if (m_pDocument && pRootNode) { 1402 if (m_pDocument && pRootNode) {
1393 m_pDocument->SetRoot(pRootNode); 1403 m_pDocument->SetRoot(pRootNode);
1394 } 1404 }
1395 } 1405 }
1396 void CXFA_DocumentParser::CloseParser() { 1406 void CXFA_DocumentParser::CloseParser() {
1397 if (m_pDocument) { 1407 if (m_pDocument) {
1398 delete m_pDocument; 1408 delete m_pDocument;
1399 m_pDocument = NULL; 1409 m_pDocument = NULL;
1400 } 1410 }
1401 m_nodeParser.CloseParser(); 1411 m_nodeParser.CloseParser();
1402 } 1412 }
1403 CXFA_XMLParser::CXFA_XMLParser(IFDE_XMLNode* pRoot, IFX_Stream* pStream) 1413 CXFA_XMLParser::CXFA_XMLParser(CFDE_XMLNode* pRoot, IFX_Stream* pStream)
1404 : m_nElementStart(0), 1414 : m_nElementStart(0),
1405 m_dwCheckStatus(0), 1415 m_dwCheckStatus(0),
1406 m_dwCurrentCheckStatus(0), 1416 m_dwCurrentCheckStatus(0),
1407 m_pRoot(pRoot), 1417 m_pRoot(pRoot),
1408 m_pStream(pStream), 1418 m_pStream(pStream),
1409 m_pParser(nullptr), 1419 m_pParser(nullptr),
1410 m_pParent(pRoot), 1420 m_pParent(pRoot),
1411 m_pChild(nullptr), 1421 m_pChild(nullptr),
1412 m_NodeStack(16), 1422 m_NodeStack(16),
1413 m_dwStatus(FDE_XMLSYNTAXSTATUS_None) { 1423 m_dwStatus(FDE_XMLSYNTAXSTATUS_None) {
1414 ASSERT(m_pParent && m_pStream); 1424 ASSERT(m_pParent && m_pStream);
1415 m_NodeStack.Push(m_pParent); 1425 m_NodeStack.Push(m_pParent);
1416 m_pParser = IFDE_XMLSyntaxParser::Create(); 1426 m_pParser = new CFDE_XMLSyntaxParser;
1417 m_pParser->Init(m_pStream, 32 * 1024, 1024 * 1024); 1427 m_pParser->Init(m_pStream, 32 * 1024, 1024 * 1024);
1418 } 1428 }
1419 CXFA_XMLParser::~CXFA_XMLParser() { 1429 CXFA_XMLParser::~CXFA_XMLParser() {
1420 if (m_pParser) { 1430 if (m_pParser) {
1421 m_pParser->Release(); 1431 m_pParser->Release();
1422 } 1432 }
1423 m_NodeStack.RemoveAll(); 1433 m_NodeStack.RemoveAll();
1424 m_ws1.Empty(); 1434 m_ws1.Empty();
1425 m_ws2.Empty(); 1435 m_ws2.Empty();
1426 } 1436 }
(...skipping 25 matching lines...) Expand all
1452 } 1462 }
1453 break; 1463 break;
1454 case FDE_XMLSYNTAXSTATUS_ElementBreak: 1464 case FDE_XMLSYNTAXSTATUS_ElementBreak:
1455 break; 1465 break;
1456 case FDE_XMLSYNTAXSTATUS_ElementClose: 1466 case FDE_XMLSYNTAXSTATUS_ElementClose:
1457 if (m_pChild->GetType() != FDE_XMLNODE_Element) { 1467 if (m_pChild->GetType() != FDE_XMLNODE_Element) {
1458 m_dwStatus = FDE_XMLSYNTAXSTATUS_Error; 1468 m_dwStatus = FDE_XMLSYNTAXSTATUS_Error;
1459 break; 1469 break;
1460 } 1470 }
1461 m_pParser->GetTagName(m_ws1); 1471 m_pParser->GetTagName(m_ws1);
1462 ((IFDE_XMLElement*)m_pChild)->GetTagName(m_ws2); 1472 static_cast<CFDE_XMLElement*>(m_pChild)->GetTagName(m_ws2);
1463 if (m_ws1.GetLength() > 0 && !m_ws1.Equal(m_ws2)) { 1473 if (m_ws1.GetLength() > 0 && !m_ws1.Equal(m_ws2)) {
1464 m_dwStatus = FDE_XMLSYNTAXSTATUS_Error; 1474 m_dwStatus = FDE_XMLSYNTAXSTATUS_Error;
1465 break; 1475 break;
1466 } 1476 }
1467 m_NodeStack.Pop(); 1477 m_NodeStack.Pop();
1468 if (m_NodeStack.GetSize() < 1) { 1478 if (m_NodeStack.GetSize() < 1) {
1469 m_dwStatus = FDE_XMLSYNTAXSTATUS_Error; 1479 m_dwStatus = FDE_XMLSYNTAXSTATUS_Error;
1470 break; 1480 break;
1471 } else if (m_dwCurrentCheckStatus != 0 && m_NodeStack.GetSize() == 2) { 1481 } else if (m_dwCurrentCheckStatus != 0 && m_NodeStack.GetSize() == 2) {
1472 m_nSize[m_dwCurrentCheckStatus - 1] = 1482 m_nSize[m_dwCurrentCheckStatus - 1] =
1473 m_pParser->GetCurrentBinaryPos() - 1483 m_pParser->GetCurrentBinaryPos() -
1474 m_nStart[m_dwCurrentCheckStatus - 1]; 1484 m_nStart[m_dwCurrentCheckStatus - 1];
1475 m_dwCurrentCheckStatus = 0; 1485 m_dwCurrentCheckStatus = 0;
1476 } 1486 }
1477 1487
1478 m_pParent = (IFDE_XMLNode*)*m_NodeStack.GetTopElement(); 1488 m_pParent = (CFDE_XMLNode*)*m_NodeStack.GetTopElement();
Tom Sepez 2016/03/29 20:45:07 nit: static cast.
dsinclair 2016/03/29 20:58:47 Done.
1479 m_pChild = m_pParent; 1489 m_pChild = m_pParent;
1480 iCount++; 1490 iCount++;
1481 break; 1491 break;
1482 case FDE_XMLSYNTAXSTATUS_TargetName: 1492 case FDE_XMLSYNTAXSTATUS_TargetName:
1483 m_pParser->GetTargetName(m_ws1); 1493 m_pParser->GetTargetName(m_ws1);
1484 if (m_ws1 == FX_WSTRC(L"originalXFAVersion") || 1494 if (m_ws1 == FX_WSTRC(L"originalXFAVersion") ||
1485 m_ws1 == FX_WSTRC(L"acrobat")) { 1495 m_ws1 == FX_WSTRC(L"acrobat")) {
1486 m_pChild = IFDE_XMLInstruction::Create(m_ws1); 1496 m_pChild = new CFDE_XMLInstruction(m_ws1);
1487 m_pParent->InsertChildNode(m_pChild); 1497 m_pParent->InsertChildNode(m_pChild);
1488 } else { 1498 } else {
1489 m_pChild = NULL; 1499 m_pChild = NULL;
1490 } 1500 }
1491 m_ws1.Empty(); 1501 m_ws1.Empty();
1492 break; 1502 break;
1493 case FDE_XMLSYNTAXSTATUS_TagName: 1503 case FDE_XMLSYNTAXSTATUS_TagName:
1494 m_pParser->GetTagName(m_ws1); 1504 m_pParser->GetTagName(m_ws1);
1495 m_pChild = IFDE_XMLElement::Create(m_ws1); 1505 m_pChild = new CFDE_XMLElement(m_ws1);
1496 m_pParent->InsertChildNode(m_pChild); 1506 m_pParent->InsertChildNode(m_pChild);
1497 m_NodeStack.Push(m_pChild); 1507 m_NodeStack.Push(m_pChild);
1498 m_pParent = m_pChild; 1508 m_pParent = m_pChild;
1499 1509
1500 if (m_dwCheckStatus != 0x03 && m_NodeStack.GetSize() == 3) { 1510 if (m_dwCheckStatus != 0x03 && m_NodeStack.GetSize() == 3) {
1501 CFX_WideString wsTag; 1511 CFX_WideString wsTag;
1502 ((IFDE_XMLElement*)m_pChild)->GetLocalTagName(wsTag); 1512 static_cast<CFDE_XMLElement*>(m_pChild)->GetLocalTagName(wsTag);
1503 if (wsTag == FX_WSTRC(L"template")) { 1513 if (wsTag == FX_WSTRC(L"template")) {
1504 m_dwCheckStatus |= 0x01; 1514 m_dwCheckStatus |= 0x01;
1505 m_dwCurrentCheckStatus = 0x01; 1515 m_dwCurrentCheckStatus = 0x01;
1506 m_nStart[0] = m_pParser->GetCurrentBinaryPos() - 1516 m_nStart[0] = m_pParser->GetCurrentBinaryPos() -
1507 (m_pParser->GetCurrentPos() - m_nElementStart); 1517 (m_pParser->GetCurrentPos() - m_nElementStart);
1508 } else if (wsTag == FX_WSTRC(L"datasets")) { 1518 } else if (wsTag == FX_WSTRC(L"datasets")) {
1509 m_dwCheckStatus |= 0x02; 1519 m_dwCheckStatus |= 0x02;
1510 m_dwCurrentCheckStatus = 0x02; 1520 m_dwCurrentCheckStatus = 0x02;
1511 m_nStart[1] = m_pParser->GetCurrentBinaryPos() - 1521 m_nStart[1] = m_pParser->GetCurrentBinaryPos() -
1512 (m_pParser->GetCurrentPos() - m_nElementStart); 1522 (m_pParser->GetCurrentPos() - m_nElementStart);
1513 } 1523 }
1514 } 1524 }
1515 break; 1525 break;
1516 case FDE_XMLSYNTAXSTATUS_AttriName: 1526 case FDE_XMLSYNTAXSTATUS_AttriName:
1517 m_pParser->GetAttributeName(m_ws1); 1527 m_pParser->GetAttributeName(m_ws1);
1518 break; 1528 break;
1519 case FDE_XMLSYNTAXSTATUS_AttriValue: 1529 case FDE_XMLSYNTAXSTATUS_AttriValue:
1520 if (m_pChild) { 1530 if (m_pChild) {
1521 m_pParser->GetAttributeName(m_ws2); 1531 m_pParser->GetAttributeName(m_ws2);
1522 if (m_pChild->GetType() == FDE_XMLNODE_Element) { 1532 if (m_pChild->GetType() == FDE_XMLNODE_Element) {
1523 ((IFDE_XMLElement*)m_pChild)->SetString(m_ws1, m_ws2); 1533 static_cast<CFDE_XMLElement*>(m_pChild)->SetString(m_ws1, m_ws2);
1524 } 1534 }
1525 } 1535 }
1526 m_ws1.Empty(); 1536 m_ws1.Empty();
1527 break; 1537 break;
1528 case FDE_XMLSYNTAXSTATUS_Text: 1538 case FDE_XMLSYNTAXSTATUS_Text:
1529 m_pParser->GetTextData(m_ws1); 1539 m_pParser->GetTextData(m_ws1);
1530 m_pChild = IFDE_XMLText::Create(m_ws1); 1540 m_pChild = new CFDE_XMLText(m_ws1);
1531 m_pParent->InsertChildNode(m_pChild); 1541 m_pParent->InsertChildNode(m_pChild);
1532 m_pChild = m_pParent; 1542 m_pChild = m_pParent;
1533 break; 1543 break;
1534 case FDE_XMLSYNTAXSTATUS_CData: 1544 case FDE_XMLSYNTAXSTATUS_CData:
1535 m_pParser->GetTextData(m_ws1); 1545 m_pParser->GetTextData(m_ws1);
1536 m_pChild = IFDE_XMLCharData::Create(m_ws1); 1546 m_pChild = new CFDE_XMLCharData(m_ws1);
1537 m_pParent->InsertChildNode(m_pChild); 1547 m_pParent->InsertChildNode(m_pChild);
1538 m_pChild = m_pParent; 1548 m_pChild = m_pParent;
1539 break; 1549 break;
1540 case FDE_XMLSYNTAXSTATUS_TargetData: 1550 case FDE_XMLSYNTAXSTATUS_TargetData:
1541 if (m_pChild) { 1551 if (m_pChild) {
1542 if (m_pChild->GetType() != FDE_XMLNODE_Instruction) { 1552 if (m_pChild->GetType() != FDE_XMLNODE_Instruction) {
1543 m_dwStatus = FDE_XMLSYNTAXSTATUS_Error; 1553 m_dwStatus = FDE_XMLSYNTAXSTATUS_Error;
1544 break; 1554 break;
1545 } 1555 }
1546 if (!m_ws1.IsEmpty()) { 1556 if (!m_ws1.IsEmpty()) {
1547 ((IFDE_XMLInstruction*)m_pChild)->AppendData(m_ws1); 1557 static_cast<CFDE_XMLInstruction*>(m_pChild)->AppendData(m_ws1);
1548 } 1558 }
1549 m_pParser->GetTargetData(m_ws1); 1559 m_pParser->GetTargetData(m_ws1);
1550 ((IFDE_XMLInstruction*)m_pChild)->AppendData(m_ws1); 1560 static_cast<CFDE_XMLInstruction*>(m_pChild)->AppendData(m_ws1);
1551 } 1561 }
1552 m_ws1.Empty(); 1562 m_ws1.Empty();
1553 break; 1563 break;
1554 default: 1564 default:
1555 break; 1565 break;
1556 } 1566 }
1557 if (m_dwStatus == FDE_XMLSYNTAXSTATUS_Error || 1567 if (m_dwStatus == FDE_XMLSYNTAXSTATUS_Error ||
1558 m_dwStatus == FDE_XMLSYNTAXSTATUS_EOS) { 1568 m_dwStatus == FDE_XMLSYNTAXSTATUS_EOS) {
1559 break; 1569 break;
1560 } 1570 }
1561 if (pPause && iCount > 500 && pPause->NeedToPauseNow()) { 1571 if (pPause && iCount > 500 && pPause->NeedToPauseNow()) {
1562 break; 1572 break;
1563 } 1573 }
1564 } 1574 }
1565 return (m_dwStatus == FDE_XMLSYNTAXSTATUS_Error || m_NodeStack.GetSize() != 1) 1575 return (m_dwStatus == FDE_XMLSYNTAXSTATUS_Error || m_NodeStack.GetSize() != 1)
1566 ? -1 1576 ? -1
1567 : m_pParser->GetStatus(); 1577 : m_pParser->GetStatus();
1568 } 1578 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698