| OLD | NEW |
| 1 // Copyright 2016 PDFium Authors. All rights reserved. | 1 // Copyright 2016 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/cxfa_simple_parser.h" | 7 #include "xfa/fxfa/parser/cxfa_simple_parser.h" |
| 8 | 8 |
| 9 #include "xfa/fgas/crt/fgas_codepage.h" | 9 #include "xfa/fgas/crt/fgas_codepage.h" |
| 10 #include "xfa/fxfa/include/fxfa.h" | 10 #include "xfa/fxfa/include/fxfa.h" |
| 11 #include "xfa/fxfa/include/xfa_checksum.h" | 11 #include "xfa/fxfa/include/xfa_checksum.h" |
| 12 #include "xfa/fxfa/parser/cxfa_xml_parser.h" | 12 #include "xfa/fxfa/parser/cxfa_xml_parser.h" |
| 13 #include "xfa/fxfa/parser/xfa_document.h" | 13 #include "xfa/fxfa/parser/xfa_document.h" |
| 14 | 14 |
| 15 CXFA_SimpleParser::CXFA_SimpleParser(CXFA_Document* pFactory, | 15 CXFA_SimpleParser::CXFA_SimpleParser(CXFA_Document* pFactory, |
| 16 bool bDocumentParser) | 16 bool bDocumentParser) |
| 17 : m_pXMLParser(nullptr), | 17 : m_pXMLParser(nullptr), |
| 18 m_pXMLDoc(nullptr), | 18 m_pXMLDoc(nullptr), |
| 19 m_pStream(nullptr), | 19 m_pStream(nullptr), |
| 20 m_pFileRead(nullptr), | 20 m_pFileRead(nullptr), |
| 21 m_pFactory(pFactory), | 21 m_pFactory(pFactory), |
| 22 m_pRootNode(nullptr), | 22 m_pRootNode(nullptr), |
| 23 m_ePacketID(XFA_XDPPACKET_UNKNOWN), | 23 m_ePacketID(XFA_XDPPACKET_UNKNOWN), |
| 24 m_bDocumentParser(bDocumentParser) {} | 24 m_bDocumentParser(bDocumentParser) {} |
| 25 | 25 |
| 26 CXFA_SimpleParser::~CXFA_SimpleParser() { | 26 CXFA_SimpleParser::~CXFA_SimpleParser() { |
| 27 CloseParser(); | |
| 28 } | 27 } |
| 29 | 28 |
| 30 void CXFA_SimpleParser::SetFactory(CXFA_Document* pFactory) { | 29 void CXFA_SimpleParser::SetFactory(CXFA_Document* pFactory) { |
| 31 m_pFactory = pFactory; | 30 m_pFactory = pFactory; |
| 32 } | 31 } |
| 33 | 32 |
| 34 static CFDE_XMLNode* XFA_FDEExtension_GetDocumentNode( | 33 static CFDE_XMLNode* XFA_FDEExtension_GetDocumentNode( |
| 35 CFDE_XMLDoc* pXMLDoc, | 34 CFDE_XMLDoc* pXMLDoc, |
| 36 FX_BOOL bVerifyWellFormness = FALSE) { | 35 FX_BOOL bVerifyWellFormness = FALSE) { |
| 37 if (!pXMLDoc) { | 36 if (!pXMLDoc) { |
| (...skipping 12 matching lines...) Expand all Loading... |
| 50 if (pNextNode->GetType() == FDE_XMLNODE_Element) { | 49 if (pNextNode->GetType() == FDE_XMLNODE_Element) { |
| 51 return FALSE; | 50 return FALSE; |
| 52 } | 51 } |
| 53 } | 52 } |
| 54 } | 53 } |
| 55 return pXMLNode; | 54 return pXMLNode; |
| 56 } | 55 } |
| 57 } | 56 } |
| 58 return nullptr; | 57 return nullptr; |
| 59 } | 58 } |
| 59 |
| 60 int32_t CXFA_SimpleParser::StartParse(IFX_FileRead* pStream, | 60 int32_t CXFA_SimpleParser::StartParse(IFX_FileRead* pStream, |
| 61 XFA_XDPPACKET ePacketID) { | 61 XFA_XDPPACKET ePacketID) { |
| 62 CloseParser(); | 62 CloseParser(); |
| 63 m_pFileRead = pStream; | 63 m_pFileRead = pStream; |
| 64 m_pStream = IFX_Stream::CreateStream( | 64 m_pStream.reset(IFX_Stream::CreateStream( |
| 65 pStream, FX_STREAMACCESS_Read | FX_STREAMACCESS_Text); | 65 pStream, FX_STREAMACCESS_Read | FX_STREAMACCESS_Text)); |
| 66 if (!m_pStream) { | 66 if (!m_pStream) |
| 67 return XFA_PARSESTATUS_StreamErr; | 67 return XFA_PARSESTATUS_StreamErr; |
| 68 } | 68 |
| 69 uint16_t wCodePage = m_pStream->GetCodePage(); | 69 uint16_t wCodePage = m_pStream->GetCodePage(); |
| 70 if (wCodePage != FX_CODEPAGE_UTF16LE && wCodePage != FX_CODEPAGE_UTF16BE && | 70 if (wCodePage != FX_CODEPAGE_UTF16LE && wCodePage != FX_CODEPAGE_UTF16BE && |
| 71 wCodePage != FX_CODEPAGE_UTF8) { | 71 wCodePage != FX_CODEPAGE_UTF8) { |
| 72 m_pStream->SetCodePage(FX_CODEPAGE_UTF8); | 72 m_pStream->SetCodePage(FX_CODEPAGE_UTF8); |
| 73 } | 73 } |
| 74 m_pXMLDoc = new CFDE_XMLDoc; | 74 m_pXMLDoc.reset(new CFDE_XMLDoc); |
| 75 m_pXMLParser = new CXFA_XMLParser(m_pXMLDoc->GetRoot(), m_pStream); | 75 m_pXMLParser = new CXFA_XMLParser(m_pXMLDoc->GetRoot(), m_pStream.get()); |
| 76 if (!m_pXMLDoc->LoadXML(m_pXMLParser)) { | 76 if (!m_pXMLDoc->LoadXML(m_pXMLParser)) |
| 77 return XFA_PARSESTATUS_StatusErr; | 77 return XFA_PARSESTATUS_StatusErr; |
| 78 } | 78 |
| 79 m_ePacketID = ePacketID; | 79 m_ePacketID = ePacketID; |
| 80 return XFA_PARSESTATUS_Ready; | 80 return XFA_PARSESTATUS_Ready; |
| 81 } | 81 } |
| 82 |
| 82 int32_t CXFA_SimpleParser::DoParse(IFX_Pause* pPause) { | 83 int32_t CXFA_SimpleParser::DoParse(IFX_Pause* pPause) { |
| 83 if (!m_pXMLDoc || m_ePacketID == XFA_XDPPACKET_UNKNOWN) { | 84 if (!m_pXMLDoc || m_ePacketID == XFA_XDPPACKET_UNKNOWN) |
| 84 return XFA_PARSESTATUS_StatusErr; | 85 return XFA_PARSESTATUS_StatusErr; |
| 85 } | 86 |
| 86 int32_t iRet = m_pXMLDoc->DoLoad(pPause); | 87 int32_t iRet = m_pXMLDoc->DoLoad(pPause); |
| 87 if (iRet < 0) { | 88 if (iRet < 0) |
| 88 return XFA_PARSESTATUS_SyntaxErr; | 89 return XFA_PARSESTATUS_SyntaxErr; |
| 89 } | 90 if (iRet < 100) |
| 90 if (iRet < 100) { | |
| 91 return iRet / 2; | 91 return iRet / 2; |
| 92 } | 92 |
| 93 m_pRootNode = ParseAsXDPPacket(XFA_FDEExtension_GetDocumentNode(m_pXMLDoc), | 93 m_pRootNode = ParseAsXDPPacket( |
| 94 m_ePacketID); | 94 XFA_FDEExtension_GetDocumentNode(m_pXMLDoc.get()), m_ePacketID); |
| 95 m_pXMLDoc->CloseXML(); | 95 m_pXMLDoc->CloseXML(); |
| 96 if (m_pStream) { | 96 m_pStream.reset(); |
| 97 m_pStream->Release(); | 97 |
| 98 m_pStream = nullptr; | 98 if (!m_pRootNode) |
| 99 } | |
| 100 if (!m_pRootNode) { | |
| 101 return XFA_PARSESTATUS_StatusErr; | 99 return XFA_PARSESTATUS_StatusErr; |
| 102 } | |
| 103 return XFA_PARSESTATUS_Done; | 100 return XFA_PARSESTATUS_Done; |
| 104 } | 101 } |
| 102 |
| 105 int32_t CXFA_SimpleParser::ParseXMLData(const CFX_WideString& wsXML, | 103 int32_t CXFA_SimpleParser::ParseXMLData(const CFX_WideString& wsXML, |
| 106 CFDE_XMLNode*& pXMLNode, | 104 CFDE_XMLNode*& pXMLNode, |
| 107 IFX_Pause* pPause) { | 105 IFX_Pause* pPause) { |
| 108 CloseParser(); | 106 CloseParser(); |
| 109 pXMLNode = nullptr; | 107 pXMLNode = nullptr; |
| 110 IFX_Stream* pStream = XFA_CreateWideTextRead(wsXML); | 108 |
| 111 if (!pStream) { | 109 std::unique_ptr<IFX_Stream> pStream(XFA_CreateWideTextRead(wsXML)); |
| 110 if (!pStream) |
| 112 return XFA_PARSESTATUS_StreamErr; | 111 return XFA_PARSESTATUS_StreamErr; |
| 113 } | 112 |
| 114 m_pStream = pStream; | 113 m_pXMLDoc.reset(new CFDE_XMLDoc); |
| 115 m_pXMLDoc = new CFDE_XMLDoc; | 114 CXFA_XMLParser* pParser = |
| 116 CXFA_XMLParser* pParser = new CXFA_XMLParser(m_pXMLDoc->GetRoot(), m_pStream); | 115 new CXFA_XMLParser(m_pXMLDoc->GetRoot(), pStream.get()); |
| 117 pParser->m_dwCheckStatus = 0x03; | 116 pParser->m_dwCheckStatus = 0x03; |
| 118 if (!m_pXMLDoc->LoadXML(pParser)) { | 117 if (!m_pXMLDoc->LoadXML(pParser)) |
| 119 return XFA_PARSESTATUS_StatusErr; | 118 return XFA_PARSESTATUS_StatusErr; |
| 120 } | 119 |
| 121 int32_t iRet = m_pXMLDoc->DoLoad(pPause); | 120 int32_t iRet = m_pXMLDoc->DoLoad(pPause); |
| 122 if (iRet < 0 || iRet >= 100) { | 121 if (iRet < 0 || iRet >= 100) |
| 123 m_pXMLDoc->CloseXML(); | 122 m_pXMLDoc->CloseXML(); |
| 124 } | 123 if (iRet < 0) |
| 125 if (iRet < 0) { | |
| 126 return XFA_PARSESTATUS_SyntaxErr; | 124 return XFA_PARSESTATUS_SyntaxErr; |
| 127 } | 125 if (iRet < 100) |
| 128 if (iRet < 100) { | |
| 129 return iRet / 2; | 126 return iRet / 2; |
| 130 } | 127 |
| 131 if (m_pStream) { | 128 pXMLNode = XFA_FDEExtension_GetDocumentNode(m_pXMLDoc.get()); |
| 132 m_pStream->Release(); | |
| 133 m_pStream = nullptr; | |
| 134 } | |
| 135 pXMLNode = XFA_FDEExtension_GetDocumentNode(m_pXMLDoc); | |
| 136 return XFA_PARSESTATUS_Done; | 129 return XFA_PARSESTATUS_Done; |
| 137 } | 130 } |
| 138 | 131 |
| 139 void CXFA_SimpleParser::ConstructXFANode(CXFA_Node* pXFANode, | 132 void CXFA_SimpleParser::ConstructXFANode(CXFA_Node* pXFANode, |
| 140 CFDE_XMLNode* pXMLNode) { | 133 CFDE_XMLNode* pXMLNode) { |
| 141 XFA_XDPPACKET ePacketID = (XFA_XDPPACKET)pXFANode->GetPacketID(); | 134 XFA_XDPPACKET ePacketID = (XFA_XDPPACKET)pXFANode->GetPacketID(); |
| 142 if (ePacketID == XFA_XDPPACKET_Datasets) { | 135 if (ePacketID == XFA_XDPPACKET_Datasets) { |
| 143 if (pXFANode->GetElementType() == XFA_Element::DataValue) { | 136 if (pXFANode->GetElementType() == XFA_Element::DataValue) { |
| 144 for (CFDE_XMLNode* pXMLChild = | 137 for (CFDE_XMLNode* pXMLChild = |
| 145 pXMLNode->GetNodeItem(CFDE_XMLNode::FirstChild); | 138 pXMLNode->GetNodeItem(CFDE_XMLNode::FirstChild); |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 180 } else { | 173 } else { |
| 181 m_pRootNode = NormalLoader(pXFANode, pXMLNode, ePacketID); | 174 m_pRootNode = NormalLoader(pXFANode, pXMLNode, ePacketID); |
| 182 } | 175 } |
| 183 } | 176 } |
| 184 | 177 |
| 185 CXFA_Node* CXFA_SimpleParser::GetRootNode() const { | 178 CXFA_Node* CXFA_SimpleParser::GetRootNode() const { |
| 186 return m_pRootNode; | 179 return m_pRootNode; |
| 187 } | 180 } |
| 188 | 181 |
| 189 CFDE_XMLDoc* CXFA_SimpleParser::GetXMLDoc() const { | 182 CFDE_XMLDoc* CXFA_SimpleParser::GetXMLDoc() const { |
| 190 return m_pXMLDoc; | 183 return m_pXMLDoc.get(); |
| 191 } | 184 } |
| 192 | 185 |
| 193 FX_BOOL XFA_FDEExtension_ResolveNamespaceQualifier( | 186 FX_BOOL XFA_FDEExtension_ResolveNamespaceQualifier( |
| 194 CFDE_XMLElement* pNode, | 187 CFDE_XMLElement* pNode, |
| 195 const CFX_WideStringC& wsQualifier, | 188 const CFX_WideStringC& wsQualifier, |
| 196 CFX_WideString& wsNamespaceURI) { | 189 CFX_WideString& wsNamespaceURI) { |
| 197 if (!pNode) { | 190 if (!pNode) { |
| 198 return FALSE; | 191 return FALSE; |
| 199 } | 192 } |
| 200 CFDE_XMLNode* pFakeRoot = pNode->GetNodeItem(CFDE_XMLNode::Root); | 193 CFDE_XMLNode* pFakeRoot = pNode->GetNodeItem(CFDE_XMLNode::Root); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 212 continue; | 205 continue; |
| 213 } | 206 } |
| 214 if (pNode->HasAttribute(wsNSAttribute.c_str())) { | 207 if (pNode->HasAttribute(wsNSAttribute.c_str())) { |
| 215 pNode->GetString(wsNSAttribute.c_str(), wsNamespaceURI); | 208 pNode->GetString(wsNSAttribute.c_str(), wsNamespaceURI); |
| 216 return TRUE; | 209 return TRUE; |
| 217 } | 210 } |
| 218 } | 211 } |
| 219 wsNamespaceURI.clear(); | 212 wsNamespaceURI.clear(); |
| 220 return bRet; | 213 return bRet; |
| 221 } | 214 } |
| 215 |
| 222 static inline void XFA_FDEExtension_GetElementTagNamespaceURI( | 216 static inline void XFA_FDEExtension_GetElementTagNamespaceURI( |
| 223 CFDE_XMLElement* pElement, | 217 CFDE_XMLElement* pElement, |
| 224 CFX_WideString& wsNamespaceURI) { | 218 CFX_WideString& wsNamespaceURI) { |
| 225 CFX_WideString wsNodeStr; | 219 CFX_WideString wsNodeStr; |
| 226 pElement->GetNamespacePrefix(wsNodeStr); | 220 pElement->GetNamespacePrefix(wsNodeStr); |
| 227 if (!XFA_FDEExtension_ResolveNamespaceQualifier( | 221 if (!XFA_FDEExtension_ResolveNamespaceQualifier( |
| 228 pElement, wsNodeStr.AsStringC(), wsNamespaceURI)) { | 222 pElement, wsNodeStr.AsStringC(), wsNamespaceURI)) { |
| 229 wsNamespaceURI.clear(); | 223 wsNamespaceURI.clear(); |
| 230 } | 224 } |
| 231 } | 225 } |
| 226 |
| 232 static FX_BOOL XFA_FDEExtension_MatchNodeName( | 227 static FX_BOOL XFA_FDEExtension_MatchNodeName( |
| 233 CFDE_XMLNode* pNode, | 228 CFDE_XMLNode* pNode, |
| 234 const CFX_WideStringC& wsLocalTagName, | 229 const CFX_WideStringC& wsLocalTagName, |
| 235 const CFX_WideStringC& wsNamespaceURIPrefix, | 230 const CFX_WideStringC& wsNamespaceURIPrefix, |
| 236 uint32_t eMatchFlags = XFA_XDPPACKET_FLAGS_NOMATCH) { | 231 uint32_t eMatchFlags = XFA_XDPPACKET_FLAGS_NOMATCH) { |
| 237 if (!pNode || pNode->GetType() != FDE_XMLNODE_Element) { | 232 if (!pNode || pNode->GetType() != FDE_XMLNODE_Element) { |
| 238 return FALSE; | 233 return FALSE; |
| 239 } | 234 } |
| 240 CFDE_XMLElement* pElement = reinterpret_cast<CFDE_XMLElement*>(pNode); | 235 CFDE_XMLElement* pElement = reinterpret_cast<CFDE_XMLElement*>(pNode); |
| 241 CFX_WideString wsNodeStr; | 236 CFX_WideString wsNodeStr; |
| 242 pElement->GetLocalTagName(wsNodeStr); | 237 pElement->GetLocalTagName(wsNodeStr); |
| 243 if (wsNodeStr != wsLocalTagName) { | 238 if (wsNodeStr != wsLocalTagName) { |
| 244 return FALSE; | 239 return FALSE; |
| 245 } | 240 } |
| 246 XFA_FDEExtension_GetElementTagNamespaceURI(pElement, wsNodeStr); | 241 XFA_FDEExtension_GetElementTagNamespaceURI(pElement, wsNodeStr); |
| 247 if (eMatchFlags & XFA_XDPPACKET_FLAGS_NOMATCH) { | 242 if (eMatchFlags & XFA_XDPPACKET_FLAGS_NOMATCH) { |
| 248 return TRUE; | 243 return TRUE; |
| 249 } | 244 } |
| 250 if (eMatchFlags & XFA_XDPPACKET_FLAGS_PREFIXMATCH) { | 245 if (eMatchFlags & XFA_XDPPACKET_FLAGS_PREFIXMATCH) { |
| 251 return wsNodeStr.Left(wsNamespaceURIPrefix.GetLength()) == | 246 return wsNodeStr.Left(wsNamespaceURIPrefix.GetLength()) == |
| 252 wsNamespaceURIPrefix; | 247 wsNamespaceURIPrefix; |
| 253 } | 248 } |
| 254 return wsNodeStr == wsNamespaceURIPrefix; | 249 return wsNodeStr == wsNamespaceURIPrefix; |
| 255 } | 250 } |
| 251 |
| 256 static FX_BOOL XFA_FDEExtension_GetAttributeLocalName( | 252 static FX_BOOL XFA_FDEExtension_GetAttributeLocalName( |
| 257 const CFX_WideStringC& wsAttributeName, | 253 const CFX_WideStringC& wsAttributeName, |
| 258 CFX_WideString& wsLocalAttrName) { | 254 CFX_WideString& wsLocalAttrName) { |
| 259 CFX_WideString wsAttrName(wsAttributeName); | 255 CFX_WideString wsAttrName(wsAttributeName); |
| 260 FX_STRSIZE iFind = wsAttrName.Find(L':', 0); | 256 FX_STRSIZE iFind = wsAttrName.Find(L':', 0); |
| 261 if (iFind < 0) { | 257 if (iFind < 0) { |
| 262 wsLocalAttrName = wsAttrName; | 258 wsLocalAttrName = wsAttrName; |
| 263 return FALSE; | 259 return FALSE; |
| 264 } else { | 260 } else { |
| 265 wsLocalAttrName = wsAttrName.Right(wsAttrName.GetLength() - iFind - 1); | 261 wsLocalAttrName = wsAttrName.Right(wsAttrName.GetLength() - iFind - 1); |
| 266 return TRUE; | 262 return TRUE; |
| 267 } | 263 } |
| 268 } | 264 } |
| 265 |
| 269 static FX_BOOL XFA_FDEExtension_ResolveAttribute( | 266 static FX_BOOL XFA_FDEExtension_ResolveAttribute( |
| 270 CFDE_XMLElement* pElement, | 267 CFDE_XMLElement* pElement, |
| 271 const CFX_WideStringC& wsAttributeName, | 268 const CFX_WideStringC& wsAttributeName, |
| 272 CFX_WideString& wsLocalAttrName, | 269 CFX_WideString& wsLocalAttrName, |
| 273 CFX_WideString& wsNamespaceURI) { | 270 CFX_WideString& wsNamespaceURI) { |
| 274 CFX_WideString wsAttrName(wsAttributeName); | 271 CFX_WideString wsAttrName(wsAttributeName); |
| 275 CFX_WideString wsNSPrefix; | 272 CFX_WideString wsNSPrefix; |
| 276 if (XFA_FDEExtension_GetAttributeLocalName(wsAttributeName, | 273 if (XFA_FDEExtension_GetAttributeLocalName(wsAttributeName, |
| 277 wsLocalAttrName)) { | 274 wsLocalAttrName)) { |
| 278 wsNSPrefix = wsAttrName.Left(wsAttributeName.GetLength() - | 275 wsNSPrefix = wsAttrName.Left(wsAttributeName.GetLength() - |
| 279 wsLocalAttrName.GetLength() - 1); | 276 wsLocalAttrName.GetLength() - 1); |
| 280 } | 277 } |
| 281 if (wsLocalAttrName == FX_WSTRC(L"xmlns") || | 278 if (wsLocalAttrName == FX_WSTRC(L"xmlns") || |
| 282 wsNSPrefix == FX_WSTRC(L"xmlns") || wsNSPrefix == FX_WSTRC(L"xml")) { | 279 wsNSPrefix == FX_WSTRC(L"xmlns") || wsNSPrefix == FX_WSTRC(L"xml")) { |
| 283 return FALSE; | 280 return FALSE; |
| 284 } | 281 } |
| 285 if (!XFA_FDEExtension_ResolveNamespaceQualifier( | 282 if (!XFA_FDEExtension_ResolveNamespaceQualifier( |
| 286 pElement, wsNSPrefix.AsStringC(), wsNamespaceURI)) { | 283 pElement, wsNSPrefix.AsStringC(), wsNamespaceURI)) { |
| 287 wsNamespaceURI.clear(); | 284 wsNamespaceURI.clear(); |
| 288 return FALSE; | 285 return FALSE; |
| 289 } | 286 } |
| 290 return TRUE; | 287 return TRUE; |
| 291 } | 288 } |
| 289 |
| 292 static FX_BOOL XFA_FDEExtension_FindAttributeWithNS( | 290 static FX_BOOL XFA_FDEExtension_FindAttributeWithNS( |
| 293 CFDE_XMLElement* pElement, | 291 CFDE_XMLElement* pElement, |
| 294 const CFX_WideStringC& wsLocalAttributeName, | 292 const CFX_WideStringC& wsLocalAttributeName, |
| 295 const CFX_WideStringC& wsNamespaceURIPrefix, | 293 const CFX_WideStringC& wsNamespaceURIPrefix, |
| 296 CFX_WideString& wsValue, | 294 CFX_WideString& wsValue, |
| 297 FX_BOOL bMatchNSAsPrefix = FALSE) { | 295 FX_BOOL bMatchNSAsPrefix = FALSE) { |
| 298 if (!pElement) { | 296 if (!pElement) { |
| 299 return FALSE; | 297 return FALSE; |
| 300 } | 298 } |
| 301 CFX_WideString wsAttrName; | 299 CFX_WideString wsAttrName; |
| (...skipping 27 matching lines...) Expand all Loading... |
| 329 } else { | 327 } else { |
| 330 if (wsAttrNS != wsNamespaceURIPrefix) { | 328 if (wsAttrNS != wsNamespaceURIPrefix) { |
| 331 continue; | 329 continue; |
| 332 } | 330 } |
| 333 } | 331 } |
| 334 wsValue = wsAttrValue; | 332 wsValue = wsAttrValue; |
| 335 return TRUE; | 333 return TRUE; |
| 336 } | 334 } |
| 337 return FALSE; | 335 return FALSE; |
| 338 } | 336 } |
| 337 |
| 339 CXFA_Node* CXFA_SimpleParser::ParseAsXDPPacket(CFDE_XMLNode* pXMLDocumentNode, | 338 CXFA_Node* CXFA_SimpleParser::ParseAsXDPPacket(CFDE_XMLNode* pXMLDocumentNode, |
| 340 XFA_XDPPACKET ePacketID) { | 339 XFA_XDPPACKET ePacketID) { |
| 341 switch (ePacketID) { | 340 switch (ePacketID) { |
| 342 case XFA_XDPPACKET_UNKNOWN: | 341 case XFA_XDPPACKET_UNKNOWN: |
| 343 return nullptr; | 342 return nullptr; |
| 344 case XFA_XDPPACKET_XDP: | 343 case XFA_XDPPACKET_XDP: |
| 345 return ParseAsXDPPacket_XDP(pXMLDocumentNode, ePacketID); | 344 return ParseAsXDPPacket_XDP(pXMLDocumentNode, ePacketID); |
| 346 case XFA_XDPPACKET_Config: | 345 case XFA_XDPPACKET_Config: |
| 347 return ParseAsXDPPacket_Config(pXMLDocumentNode, ePacketID); | 346 return ParseAsXDPPacket_Config(pXMLDocumentNode, ePacketID); |
| 348 case XFA_XDPPACKET_Template: | 347 case XFA_XDPPACKET_Template: |
| 349 case XFA_XDPPACKET_Form: | 348 case XFA_XDPPACKET_Form: |
| 350 return ParseAsXDPPacket_TemplateForm(pXMLDocumentNode, ePacketID); | 349 return ParseAsXDPPacket_TemplateForm(pXMLDocumentNode, ePacketID); |
| 351 case XFA_XDPPACKET_Datasets: | 350 case XFA_XDPPACKET_Datasets: |
| 352 return ParseAsXDPPacket_Data(pXMLDocumentNode, ePacketID); | 351 return ParseAsXDPPacket_Data(pXMLDocumentNode, ePacketID); |
| 353 case XFA_XDPPACKET_Xdc: | 352 case XFA_XDPPACKET_Xdc: |
| 354 return ParseAsXDPPacket_Xdc(pXMLDocumentNode, ePacketID); | 353 return ParseAsXDPPacket_Xdc(pXMLDocumentNode, ePacketID); |
| 355 case XFA_XDPPACKET_LocaleSet: | 354 case XFA_XDPPACKET_LocaleSet: |
| 356 case XFA_XDPPACKET_ConnectionSet: | 355 case XFA_XDPPACKET_ConnectionSet: |
| 357 case XFA_XDPPACKET_SourceSet: | 356 case XFA_XDPPACKET_SourceSet: |
| 358 return ParseAsXDPPacket_LocaleConnectionSourceSet(pXMLDocumentNode, | 357 return ParseAsXDPPacket_LocaleConnectionSourceSet(pXMLDocumentNode, |
| 359 ePacketID); | 358 ePacketID); |
| 360 default: | 359 default: |
| 361 return ParseAsXDPPacket_User(pXMLDocumentNode, ePacketID); | 360 return ParseAsXDPPacket_User(pXMLDocumentNode, ePacketID); |
| 362 } | 361 } |
| 363 } | 362 } |
| 363 |
| 364 CXFA_Node* CXFA_SimpleParser::ParseAsXDPPacket_XDP( | 364 CXFA_Node* CXFA_SimpleParser::ParseAsXDPPacket_XDP( |
| 365 CFDE_XMLNode* pXMLDocumentNode, | 365 CFDE_XMLNode* pXMLDocumentNode, |
| 366 XFA_XDPPACKET ePacketID) { | 366 XFA_XDPPACKET ePacketID) { |
| 367 if (!XFA_FDEExtension_MatchNodeName( | 367 if (!XFA_FDEExtension_MatchNodeName( |
| 368 pXMLDocumentNode, XFA_GetPacketByIndex(XFA_PACKET_XDP)->pName, | 368 pXMLDocumentNode, XFA_GetPacketByIndex(XFA_PACKET_XDP)->pName, |
| 369 XFA_GetPacketByIndex(XFA_PACKET_XDP)->pURI, | 369 XFA_GetPacketByIndex(XFA_PACKET_XDP)->pURI, |
| 370 XFA_GetPacketByIndex(XFA_PACKET_XDP)->eFlags)) { | 370 XFA_GetPacketByIndex(XFA_PACKET_XDP)->eFlags)) { |
| 371 return nullptr; | 371 return nullptr; |
| 372 } | 372 } |
| 373 CXFA_Node* pXFARootNode = | 373 CXFA_Node* pXFARootNode = |
| (...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 492 if (pXMLFormDOMRoot) { | 492 if (pXMLFormDOMRoot) { |
| 493 CXFA_Node* pPacketNode = | 493 CXFA_Node* pPacketNode = |
| 494 ParseAsXDPPacket(pXMLFormDOMRoot, XFA_XDPPACKET_Form); | 494 ParseAsXDPPacket(pXMLFormDOMRoot, XFA_XDPPACKET_Form); |
| 495 if (pPacketNode) { | 495 if (pPacketNode) { |
| 496 pXFARootNode->InsertChild(pPacketNode); | 496 pXFARootNode->InsertChild(pPacketNode); |
| 497 } | 497 } |
| 498 } | 498 } |
| 499 pXFARootNode->SetXMLMappingNode(pXMLDocumentNode); | 499 pXFARootNode->SetXMLMappingNode(pXMLDocumentNode); |
| 500 return pXFARootNode; | 500 return pXFARootNode; |
| 501 } | 501 } |
| 502 |
| 502 CXFA_Node* CXFA_SimpleParser::ParseAsXDPPacket_Config( | 503 CXFA_Node* CXFA_SimpleParser::ParseAsXDPPacket_Config( |
| 503 CFDE_XMLNode* pXMLDocumentNode, | 504 CFDE_XMLNode* pXMLDocumentNode, |
| 504 XFA_XDPPACKET ePacketID) { | 505 XFA_XDPPACKET ePacketID) { |
| 505 if (!XFA_FDEExtension_MatchNodeName( | 506 if (!XFA_FDEExtension_MatchNodeName( |
| 506 pXMLDocumentNode, XFA_GetPacketByIndex(XFA_PACKET_Config)->pName, | 507 pXMLDocumentNode, XFA_GetPacketByIndex(XFA_PACKET_Config)->pName, |
| 507 XFA_GetPacketByIndex(XFA_PACKET_Config)->pURI, | 508 XFA_GetPacketByIndex(XFA_PACKET_Config)->pURI, |
| 508 XFA_GetPacketByIndex(XFA_PACKET_Config)->eFlags)) { | 509 XFA_GetPacketByIndex(XFA_PACKET_Config)->eFlags)) { |
| 509 return nullptr; | 510 return nullptr; |
| 510 } | 511 } |
| 511 CXFA_Node* pNode = | 512 CXFA_Node* pNode = |
| 512 m_pFactory->CreateNode(XFA_XDPPACKET_Config, XFA_Element::Config); | 513 m_pFactory->CreateNode(XFA_XDPPACKET_Config, XFA_Element::Config); |
| 513 if (!pNode) { | 514 if (!pNode) { |
| 514 return nullptr; | 515 return nullptr; |
| 515 } | 516 } |
| 516 pNode->SetCData(XFA_ATTRIBUTE_Name, | 517 pNode->SetCData(XFA_ATTRIBUTE_Name, |
| 517 XFA_GetPacketByIndex(XFA_PACKET_Config)->pName); | 518 XFA_GetPacketByIndex(XFA_PACKET_Config)->pName); |
| 518 if (!NormalLoader(pNode, pXMLDocumentNode, ePacketID)) { | 519 if (!NormalLoader(pNode, pXMLDocumentNode, ePacketID)) { |
| 519 return nullptr; | 520 return nullptr; |
| 520 } | 521 } |
| 521 pNode->SetXMLMappingNode(pXMLDocumentNode); | 522 pNode->SetXMLMappingNode(pXMLDocumentNode); |
| 522 return pNode; | 523 return pNode; |
| 523 } | 524 } |
| 525 |
| 524 CXFA_Node* CXFA_SimpleParser::ParseAsXDPPacket_TemplateForm( | 526 CXFA_Node* CXFA_SimpleParser::ParseAsXDPPacket_TemplateForm( |
| 525 CFDE_XMLNode* pXMLDocumentNode, | 527 CFDE_XMLNode* pXMLDocumentNode, |
| 526 XFA_XDPPACKET ePacketID) { | 528 XFA_XDPPACKET ePacketID) { |
| 527 CXFA_Node* pNode = nullptr; | 529 CXFA_Node* pNode = nullptr; |
| 528 if (ePacketID == XFA_XDPPACKET_Template) { | 530 if (ePacketID == XFA_XDPPACKET_Template) { |
| 529 if (XFA_FDEExtension_MatchNodeName( | 531 if (XFA_FDEExtension_MatchNodeName( |
| 530 pXMLDocumentNode, XFA_GetPacketByIndex(XFA_PACKET_Template)->pName, | 532 pXMLDocumentNode, XFA_GetPacketByIndex(XFA_PACKET_Template)->pName, |
| 531 XFA_GetPacketByIndex(XFA_PACKET_Template)->pURI, | 533 XFA_GetPacketByIndex(XFA_PACKET_Template)->pURI, |
| 532 XFA_GetPacketByIndex(XFA_PACKET_Template)->eFlags)) { | 534 XFA_GetPacketByIndex(XFA_PACKET_Template)->eFlags)) { |
| 533 pNode = | 535 pNode = |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 597 if (!NormalLoader(pNode, pXMLDocumentNode, ePacketID, bUseAttribute)) { | 599 if (!NormalLoader(pNode, pXMLDocumentNode, ePacketID, bUseAttribute)) { |
| 598 return nullptr; | 600 return nullptr; |
| 599 } | 601 } |
| 600 } | 602 } |
| 601 } | 603 } |
| 602 if (pNode) { | 604 if (pNode) { |
| 603 pNode->SetXMLMappingNode(pXMLDocumentNode); | 605 pNode->SetXMLMappingNode(pXMLDocumentNode); |
| 604 } | 606 } |
| 605 return pNode; | 607 return pNode; |
| 606 } | 608 } |
| 609 |
| 607 static CFDE_XMLNode* XFA_GetDataSetsFromXDP(CFDE_XMLNode* pXMLDocumentNode) { | 610 static CFDE_XMLNode* XFA_GetDataSetsFromXDP(CFDE_XMLNode* pXMLDocumentNode) { |
| 608 if (XFA_FDEExtension_MatchNodeName( | 611 if (XFA_FDEExtension_MatchNodeName( |
| 609 pXMLDocumentNode, XFA_GetPacketByIndex(XFA_PACKET_Datasets)->pName, | 612 pXMLDocumentNode, XFA_GetPacketByIndex(XFA_PACKET_Datasets)->pName, |
| 610 XFA_GetPacketByIndex(XFA_PACKET_Datasets)->pURI, | 613 XFA_GetPacketByIndex(XFA_PACKET_Datasets)->pURI, |
| 611 XFA_GetPacketByIndex(XFA_PACKET_Datasets)->eFlags)) { | 614 XFA_GetPacketByIndex(XFA_PACKET_Datasets)->eFlags)) { |
| 612 return pXMLDocumentNode; | 615 return pXMLDocumentNode; |
| 613 } | 616 } |
| 614 if (!XFA_FDEExtension_MatchNodeName( | 617 if (!XFA_FDEExtension_MatchNodeName( |
| 615 pXMLDocumentNode, XFA_GetPacketByIndex(XFA_PACKET_XDP)->pName, | 618 pXMLDocumentNode, XFA_GetPacketByIndex(XFA_PACKET_XDP)->pName, |
| 616 XFA_GetPacketByIndex(XFA_PACKET_XDP)->pURI, | 619 XFA_GetPacketByIndex(XFA_PACKET_XDP)->pURI, |
| 617 XFA_GetPacketByIndex(XFA_PACKET_XDP)->eFlags)) { | 620 XFA_GetPacketByIndex(XFA_PACKET_XDP)->eFlags)) { |
| 618 return nullptr; | 621 return nullptr; |
| 619 } | 622 } |
| 620 for (CFDE_XMLNode* pDatasetsNode = | 623 for (CFDE_XMLNode* pDatasetsNode = |
| 621 pXMLDocumentNode->GetNodeItem(CFDE_XMLNode::FirstChild); | 624 pXMLDocumentNode->GetNodeItem(CFDE_XMLNode::FirstChild); |
| 622 pDatasetsNode; | 625 pDatasetsNode; |
| 623 pDatasetsNode = pDatasetsNode->GetNodeItem(CFDE_XMLNode::NextSibling)) { | 626 pDatasetsNode = pDatasetsNode->GetNodeItem(CFDE_XMLNode::NextSibling)) { |
| 624 if (!XFA_FDEExtension_MatchNodeName( | 627 if (!XFA_FDEExtension_MatchNodeName( |
| 625 pDatasetsNode, XFA_GetPacketByIndex(XFA_PACKET_Datasets)->pName, | 628 pDatasetsNode, XFA_GetPacketByIndex(XFA_PACKET_Datasets)->pName, |
| 626 XFA_GetPacketByIndex(XFA_PACKET_Datasets)->pURI, | 629 XFA_GetPacketByIndex(XFA_PACKET_Datasets)->pURI, |
| 627 XFA_GetPacketByIndex(XFA_PACKET_Datasets)->eFlags)) { | 630 XFA_GetPacketByIndex(XFA_PACKET_Datasets)->eFlags)) { |
| 628 continue; | 631 continue; |
| 629 } | 632 } |
| 630 return pDatasetsNode; | 633 return pDatasetsNode; |
| 631 } | 634 } |
| 632 return nullptr; | 635 return nullptr; |
| 633 } | 636 } |
| 637 |
| 634 CXFA_Node* CXFA_SimpleParser::ParseAsXDPPacket_Data( | 638 CXFA_Node* CXFA_SimpleParser::ParseAsXDPPacket_Data( |
| 635 CFDE_XMLNode* pXMLDocumentNode, | 639 CFDE_XMLNode* pXMLDocumentNode, |
| 636 XFA_XDPPACKET ePacketID) { | 640 XFA_XDPPACKET ePacketID) { |
| 637 CFDE_XMLNode* pDatasetsXMLNode = XFA_GetDataSetsFromXDP(pXMLDocumentNode); | 641 CFDE_XMLNode* pDatasetsXMLNode = XFA_GetDataSetsFromXDP(pXMLDocumentNode); |
| 638 if (pDatasetsXMLNode) { | 642 if (pDatasetsXMLNode) { |
| 639 CXFA_Node* pNode = | 643 CXFA_Node* pNode = |
| 640 m_pFactory->CreateNode(XFA_XDPPACKET_Datasets, XFA_Element::DataModel); | 644 m_pFactory->CreateNode(XFA_XDPPACKET_Datasets, XFA_Element::DataModel); |
| 641 if (!pNode) { | 645 if (!pNode) { |
| 642 return nullptr; | 646 return nullptr; |
| 643 } | 647 } |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 688 return nullptr; | 692 return nullptr; |
| 689 } | 693 } |
| 690 pNode->SetXMLMappingNode(pDataXMLNode); | 694 pNode->SetXMLMappingNode(pDataXMLNode); |
| 691 if (pDataXMLNode != pXMLDocumentNode) { | 695 if (pDataXMLNode != pXMLDocumentNode) { |
| 692 pNode->SetFlag(XFA_NodeFlag_OwnXMLNode, false); | 696 pNode->SetFlag(XFA_NodeFlag_OwnXMLNode, false); |
| 693 } | 697 } |
| 694 return pNode; | 698 return pNode; |
| 695 } | 699 } |
| 696 return nullptr; | 700 return nullptr; |
| 697 } | 701 } |
| 702 |
| 698 CXFA_Node* CXFA_SimpleParser::ParseAsXDPPacket_LocaleConnectionSourceSet( | 703 CXFA_Node* CXFA_SimpleParser::ParseAsXDPPacket_LocaleConnectionSourceSet( |
| 699 CFDE_XMLNode* pXMLDocumentNode, | 704 CFDE_XMLNode* pXMLDocumentNode, |
| 700 XFA_XDPPACKET ePacketID) { | 705 XFA_XDPPACKET ePacketID) { |
| 701 CXFA_Node* pNode = nullptr; | 706 CXFA_Node* pNode = nullptr; |
| 702 if (ePacketID == XFA_XDPPACKET_LocaleSet) { | 707 if (ePacketID == XFA_XDPPACKET_LocaleSet) { |
| 703 if (XFA_FDEExtension_MatchNodeName( | 708 if (XFA_FDEExtension_MatchNodeName( |
| 704 pXMLDocumentNode, XFA_GetPacketByIndex(XFA_PACKET_LocaleSet)->pName, | 709 pXMLDocumentNode, XFA_GetPacketByIndex(XFA_PACKET_LocaleSet)->pName, |
| 705 XFA_GetPacketByIndex(XFA_PACKET_LocaleSet)->pURI, | 710 XFA_GetPacketByIndex(XFA_PACKET_LocaleSet)->pURI, |
| 706 XFA_GetPacketByIndex(XFA_PACKET_LocaleSet)->eFlags)) { | 711 XFA_GetPacketByIndex(XFA_PACKET_LocaleSet)->eFlags)) { |
| 707 pNode = m_pFactory->CreateNode(XFA_XDPPACKET_LocaleSet, | 712 pNode = m_pFactory->CreateNode(XFA_XDPPACKET_LocaleSet, |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 747 if (!NormalLoader(pNode, pXMLDocumentNode, ePacketID)) { | 752 if (!NormalLoader(pNode, pXMLDocumentNode, ePacketID)) { |
| 748 return nullptr; | 753 return nullptr; |
| 749 } | 754 } |
| 750 } | 755 } |
| 751 } | 756 } |
| 752 if (pNode) { | 757 if (pNode) { |
| 753 pNode->SetXMLMappingNode(pXMLDocumentNode); | 758 pNode->SetXMLMappingNode(pXMLDocumentNode); |
| 754 } | 759 } |
| 755 return pNode; | 760 return pNode; |
| 756 } | 761 } |
| 762 |
| 757 CXFA_Node* CXFA_SimpleParser::ParseAsXDPPacket_Xdc( | 763 CXFA_Node* CXFA_SimpleParser::ParseAsXDPPacket_Xdc( |
| 758 CFDE_XMLNode* pXMLDocumentNode, | 764 CFDE_XMLNode* pXMLDocumentNode, |
| 759 XFA_XDPPACKET ePacketID) { | 765 XFA_XDPPACKET ePacketID) { |
| 760 if (XFA_FDEExtension_MatchNodeName( | 766 if (XFA_FDEExtension_MatchNodeName( |
| 761 pXMLDocumentNode, XFA_GetPacketByIndex(XFA_PACKET_Xdc)->pName, | 767 pXMLDocumentNode, XFA_GetPacketByIndex(XFA_PACKET_Xdc)->pName, |
| 762 XFA_GetPacketByIndex(XFA_PACKET_Xdc)->pURI, | 768 XFA_GetPacketByIndex(XFA_PACKET_Xdc)->pURI, |
| 763 XFA_GetPacketByIndex(XFA_PACKET_Xdc)->eFlags)) { | 769 XFA_GetPacketByIndex(XFA_PACKET_Xdc)->eFlags)) { |
| 764 CXFA_Node* pNode = | 770 CXFA_Node* pNode = |
| 765 m_pFactory->CreateNode(XFA_XDPPACKET_Xdc, XFA_Element::Xdc); | 771 m_pFactory->CreateNode(XFA_XDPPACKET_Xdc, XFA_Element::Xdc); |
| 766 if (!pNode) { | 772 if (!pNode) { |
| 767 return nullptr; | 773 return nullptr; |
| 768 } | 774 } |
| 769 pNode->SetCData(XFA_ATTRIBUTE_Name, | 775 pNode->SetCData(XFA_ATTRIBUTE_Name, |
| 770 XFA_GetPacketByIndex(XFA_PACKET_Xdc)->pName); | 776 XFA_GetPacketByIndex(XFA_PACKET_Xdc)->pName); |
| 771 pNode->SetXMLMappingNode(pXMLDocumentNode); | 777 pNode->SetXMLMappingNode(pXMLDocumentNode); |
| 772 return pNode; | 778 return pNode; |
| 773 } | 779 } |
| 774 return nullptr; | 780 return nullptr; |
| 775 } | 781 } |
| 782 |
| 776 CXFA_Node* CXFA_SimpleParser::ParseAsXDPPacket_User( | 783 CXFA_Node* CXFA_SimpleParser::ParseAsXDPPacket_User( |
| 777 CFDE_XMLNode* pXMLDocumentNode, | 784 CFDE_XMLNode* pXMLDocumentNode, |
| 778 XFA_XDPPACKET ePacketID) { | 785 XFA_XDPPACKET ePacketID) { |
| 779 CXFA_Node* pNode = | 786 CXFA_Node* pNode = |
| 780 m_pFactory->CreateNode(XFA_XDPPACKET_XDP, XFA_Element::Packet); | 787 m_pFactory->CreateNode(XFA_XDPPACKET_XDP, XFA_Element::Packet); |
| 781 if (!pNode) { | 788 if (!pNode) { |
| 782 return nullptr; | 789 return nullptr; |
| 783 } | 790 } |
| 784 CFX_WideString wsName; | 791 CFX_WideString wsName; |
| 785 static_cast<CFDE_XMLElement*>(pXMLDocumentNode)->GetLocalTagName(wsName); | 792 static_cast<CFDE_XMLElement*>(pXMLDocumentNode)->GetLocalTagName(wsName); |
| 786 pNode->SetCData(XFA_ATTRIBUTE_Name, wsName); | 793 pNode->SetCData(XFA_ATTRIBUTE_Name, wsName); |
| 787 if (!UserPacketLoader(pNode, pXMLDocumentNode)) { | 794 if (!UserPacketLoader(pNode, pXMLDocumentNode)) { |
| 788 return nullptr; | 795 return nullptr; |
| 789 } | 796 } |
| 790 pNode->SetXMLMappingNode(pXMLDocumentNode); | 797 pNode->SetXMLMappingNode(pXMLDocumentNode); |
| 791 return pNode; | 798 return pNode; |
| 792 } | 799 } |
| 800 |
| 793 CXFA_Node* CXFA_SimpleParser::UserPacketLoader(CXFA_Node* pXFANode, | 801 CXFA_Node* CXFA_SimpleParser::UserPacketLoader(CXFA_Node* pXFANode, |
| 794 CFDE_XMLNode* pXMLDoc) { | 802 CFDE_XMLNode* pXMLDoc) { |
| 795 return pXFANode; | 803 return pXFANode; |
| 796 } | 804 } |
| 805 |
| 797 static FX_BOOL XFA_FDEExtension_IsStringAllWhitespace(CFX_WideString wsText) { | 806 static FX_BOOL XFA_FDEExtension_IsStringAllWhitespace(CFX_WideString wsText) { |
| 798 wsText.TrimRight(L"\x20\x9\xD\xA"); | 807 wsText.TrimRight(L"\x20\x9\xD\xA"); |
| 799 return wsText.IsEmpty(); | 808 return wsText.IsEmpty(); |
| 800 } | 809 } |
| 810 |
| 801 CXFA_Node* CXFA_SimpleParser::DataLoader(CXFA_Node* pXFANode, | 811 CXFA_Node* CXFA_SimpleParser::DataLoader(CXFA_Node* pXFANode, |
| 802 CFDE_XMLNode* pXMLDoc, | 812 CFDE_XMLNode* pXMLDoc, |
| 803 FX_BOOL bDoTransform) { | 813 FX_BOOL bDoTransform) { |
| 804 ParseDataGroup(pXFANode, pXMLDoc, XFA_XDPPACKET_Datasets); | 814 ParseDataGroup(pXFANode, pXMLDoc, XFA_XDPPACKET_Datasets); |
| 805 return pXFANode; | 815 return pXFANode; |
| 806 } | 816 } |
| 817 |
| 807 CXFA_Node* CXFA_SimpleParser::NormalLoader(CXFA_Node* pXFANode, | 818 CXFA_Node* CXFA_SimpleParser::NormalLoader(CXFA_Node* pXFANode, |
| 808 CFDE_XMLNode* pXMLDoc, | 819 CFDE_XMLNode* pXMLDoc, |
| 809 XFA_XDPPACKET ePacketID, | 820 XFA_XDPPACKET ePacketID, |
| 810 FX_BOOL bUseAttribute) { | 821 FX_BOOL bUseAttribute) { |
| 811 FX_BOOL bOneOfPropertyFound = FALSE; | 822 FX_BOOL bOneOfPropertyFound = FALSE; |
| 812 for (CFDE_XMLNode* pXMLChild = pXMLDoc->GetNodeItem(CFDE_XMLNode::FirstChild); | 823 for (CFDE_XMLNode* pXMLChild = pXMLDoc->GetNodeItem(CFDE_XMLNode::FirstChild); |
| 813 pXMLChild; | 824 pXMLChild; |
| 814 pXMLChild = pXMLChild->GetNodeItem(CFDE_XMLNode::NextSibling)) { | 825 pXMLChild = pXMLChild->GetNodeItem(CFDE_XMLNode::NextSibling)) { |
| 815 switch (pXMLChild->GetType()) { | 826 switch (pXMLChild->GetType()) { |
| 816 case FDE_XMLNODE_Element: { | 827 case FDE_XMLNODE_Element: { |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 887 case FDE_XMLNODE_Instruction: | 898 case FDE_XMLNODE_Instruction: |
| 888 ParseInstruction(pXFANode, static_cast<CFDE_XMLInstruction*>(pXMLChild), | 899 ParseInstruction(pXFANode, static_cast<CFDE_XMLInstruction*>(pXMLChild), |
| 889 ePacketID); | 900 ePacketID); |
| 890 break; | 901 break; |
| 891 default: | 902 default: |
| 892 break; | 903 break; |
| 893 } | 904 } |
| 894 } | 905 } |
| 895 return pXFANode; | 906 return pXFANode; |
| 896 } | 907 } |
| 908 |
| 897 FX_BOOL XFA_RecognizeRichText(CFDE_XMLElement* pRichTextXMLNode) { | 909 FX_BOOL XFA_RecognizeRichText(CFDE_XMLElement* pRichTextXMLNode) { |
| 898 if (pRichTextXMLNode) { | 910 if (pRichTextXMLNode) { |
| 899 CFX_WideString wsNamespaceURI; | 911 CFX_WideString wsNamespaceURI; |
| 900 XFA_FDEExtension_GetElementTagNamespaceURI(pRichTextXMLNode, | 912 XFA_FDEExtension_GetElementTagNamespaceURI(pRichTextXMLNode, |
| 901 wsNamespaceURI); | 913 wsNamespaceURI); |
| 902 if (wsNamespaceURI == FX_WSTRC(L"http://www.w3.org/1999/xhtml")) { | 914 if (wsNamespaceURI == FX_WSTRC(L"http://www.w3.org/1999/xhtml")) { |
| 903 return TRUE; | 915 return TRUE; |
| 904 } | 916 } |
| 905 } | 917 } |
| 906 return FALSE; | 918 return FALSE; |
| 907 } | 919 } |
| 920 |
| 908 class RichTextNodeVisitor { | 921 class RichTextNodeVisitor { |
| 909 public: | 922 public: |
| 910 static inline CFDE_XMLNode* GetFirstChild(CFDE_XMLNode* pNode) { | 923 static inline CFDE_XMLNode* GetFirstChild(CFDE_XMLNode* pNode) { |
| 911 return pNode->GetNodeItem(CFDE_XMLNode::FirstChild); | 924 return pNode->GetNodeItem(CFDE_XMLNode::FirstChild); |
| 912 } | 925 } |
| 913 static inline CFDE_XMLNode* GetNextSibling(CFDE_XMLNode* pNode) { | 926 static inline CFDE_XMLNode* GetNextSibling(CFDE_XMLNode* pNode) { |
| 914 return pNode->GetNodeItem(CFDE_XMLNode::NextSibling); | 927 return pNode->GetNodeItem(CFDE_XMLNode::NextSibling); |
| 915 } | 928 } |
| 916 static inline CFDE_XMLNode* GetParent(CFDE_XMLNode* pNode) { | 929 static inline CFDE_XMLNode* GetParent(CFDE_XMLNode* pNode) { |
| 917 return pNode->GetNodeItem(CFDE_XMLNode::Parent); | 930 return pNode->GetNodeItem(CFDE_XMLNode::Parent); |
| (...skipping 381 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1299 CFX_WideString wsData; | 1312 CFX_WideString wsData; |
| 1300 if (pXMLInstruction->GetData(0, wsData) && | 1313 if (pXMLInstruction->GetData(0, wsData) && |
| 1301 wsData == FX_WSTRC(L"JavaScript")) { | 1314 wsData == FX_WSTRC(L"JavaScript")) { |
| 1302 if (pXMLInstruction->GetData(1, wsData) && | 1315 if (pXMLInstruction->GetData(1, wsData) && |
| 1303 wsData == FX_WSTRC(L"strictScoping")) { | 1316 wsData == FX_WSTRC(L"strictScoping")) { |
| 1304 pXFANode->GetDocument()->SetFlag(XFA_DOCFLAG_StrictScoping, TRUE); | 1317 pXFANode->GetDocument()->SetFlag(XFA_DOCFLAG_StrictScoping, TRUE); |
| 1305 } | 1318 } |
| 1306 } | 1319 } |
| 1307 } | 1320 } |
| 1308 } | 1321 } |
| 1322 |
| 1309 void CXFA_SimpleParser::CloseParser() { | 1323 void CXFA_SimpleParser::CloseParser() { |
| 1310 if (m_pXMLDoc) { | 1324 m_pXMLDoc.reset(); |
| 1311 m_pXMLDoc->Release(); | 1325 m_pStream.reset(); |
| 1312 m_pXMLDoc = nullptr; | |
| 1313 } | |
| 1314 if (m_pStream) { | |
| 1315 m_pStream->Release(); | |
| 1316 m_pStream = nullptr; | |
| 1317 } | |
| 1318 } | 1326 } |
| OLD | NEW |