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

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

Issue 2165993002: Move xfa_basic_imp to cxfa_widetextread. (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: Review feedback Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « xfa/fxfa/parser/cxfa_scriptcontext.cpp ('k') | xfa/fxfa/parser/cxfa_stroke.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 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 "core/fxcrt/include/fx_ext.h"
9 #include "xfa/fgas/crt/fgas_codepage.h" 10 #include "xfa/fgas/crt/fgas_codepage.h"
10 #include "xfa/fxfa/include/fxfa.h" 11 #include "xfa/fxfa/include/fxfa.h"
11 #include "xfa/fxfa/include/xfa_checksum.h" 12 #include "xfa/fxfa/include/xfa_checksum.h"
13 #include "xfa/fxfa/parser/cxfa_widetextread.h"
12 #include "xfa/fxfa/parser/cxfa_xml_parser.h" 14 #include "xfa/fxfa/parser/cxfa_xml_parser.h"
15 #include "xfa/fxfa/parser/xfa_basic_data.h"
13 #include "xfa/fxfa/parser/xfa_document.h" 16 #include "xfa/fxfa/parser/xfa_document.h"
17 #include "xfa/fxfa/parser/xfa_utils.h"
14 18
15 namespace { 19 namespace {
16 20
17 CFDE_XMLNode* GetDocumentNode(CFDE_XMLDoc* pXMLDoc, 21 CFDE_XMLNode* GetDocumentNode(CFDE_XMLDoc* pXMLDoc,
18 FX_BOOL bVerifyWellFormness = FALSE) { 22 FX_BOOL bVerifyWellFormness = FALSE) {
19 if (!pXMLDoc) 23 if (!pXMLDoc)
20 return nullptr; 24 return nullptr;
21 25
22 for (CFDE_XMLNode* pXMLNode = 26 for (CFDE_XMLNode* pXMLNode =
23 pXMLDoc->GetRoot()->GetNodeItem(CFDE_XMLNode::FirstChild); 27 pXMLDoc->GetRoot()->GetNodeItem(CFDE_XMLNode::FirstChild);
(...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after
217 wsOutput = wsCharData; 221 wsOutput = wsCharData;
218 break; 222 break;
219 } 223 }
220 default: 224 default:
221 ASSERT(FALSE); 225 ASSERT(FALSE);
222 break; 226 break;
223 } 227 }
224 } 228 }
225 } 229 }
226 230
231 const XFA_PACKETINFO* GetPacketByName(const CFX_WideStringC& wsName) {
232 if (wsName.IsEmpty())
233 return nullptr;
234
235 uint32_t uHash = FX_HashCode_GetW(wsName, false);
236 int32_t iStart = 0;
237 int32_t iEnd = g_iXFAPacketCount - 1;
238 do {
239 int32_t iMid = (iStart + iEnd) / 2;
240 const XFA_PACKETINFO* pInfo = g_XFAPacketData + iMid;
241 if (uHash == pInfo->uHash)
242 return pInfo;
243 if (uHash < pInfo->uHash)
244 iEnd = iMid - 1;
245 else
246 iStart = iMid + 1;
247 } while (iStart <= iEnd);
248 return nullptr;
249 }
250
227 } // namespace 251 } // namespace
228 252
229 FX_BOOL XFA_RecognizeRichText(CFDE_XMLElement* pRichTextXMLNode) { 253 FX_BOOL XFA_RecognizeRichText(CFDE_XMLElement* pRichTextXMLNode) {
230 if (pRichTextXMLNode) { 254 if (pRichTextXMLNode) {
231 CFX_WideString wsNamespaceURI; 255 CFX_WideString wsNamespaceURI;
232 GetElementTagNamespaceURI(pRichTextXMLNode, wsNamespaceURI); 256 GetElementTagNamespaceURI(pRichTextXMLNode, wsNamespaceURI);
233 if (wsNamespaceURI == FX_WSTRC(L"http://www.w3.org/1999/xhtml")) 257 if (wsNamespaceURI == FX_WSTRC(L"http://www.w3.org/1999/xhtml"))
234 return TRUE; 258 return TRUE;
235 } 259 }
236 return FALSE; 260 return FALSE;
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
294 return XFA_PARSESTATUS_StatusErr; 318 return XFA_PARSESTATUS_StatusErr;
295 return XFA_PARSESTATUS_Done; 319 return XFA_PARSESTATUS_Done;
296 } 320 }
297 321
298 int32_t CXFA_SimpleParser::ParseXMLData(const CFX_WideString& wsXML, 322 int32_t CXFA_SimpleParser::ParseXMLData(const CFX_WideString& wsXML,
299 CFDE_XMLNode*& pXMLNode, 323 CFDE_XMLNode*& pXMLNode,
300 IFX_Pause* pPause) { 324 IFX_Pause* pPause) {
301 CloseParser(); 325 CloseParser();
302 pXMLNode = nullptr; 326 pXMLNode = nullptr;
303 327
304 std::unique_ptr<IFX_Stream> pStream(XFA_CreateWideTextRead(wsXML)); 328 std::unique_ptr<IFX_Stream> pStream(new CXFA_WideTextRead(wsXML));
305 if (!pStream)
306 return XFA_PARSESTATUS_StreamErr;
307
308 m_pXMLDoc.reset(new CFDE_XMLDoc); 329 m_pXMLDoc.reset(new CFDE_XMLDoc);
309 CXFA_XMLParser* pParser = 330 CXFA_XMLParser* pParser =
310 new CXFA_XMLParser(m_pXMLDoc->GetRoot(), pStream.get()); 331 new CXFA_XMLParser(m_pXMLDoc->GetRoot(), pStream.get());
311 pParser->m_dwCheckStatus = 0x03; 332 pParser->m_dwCheckStatus = 0x03;
312 if (!m_pXMLDoc->LoadXML(pParser)) 333 if (!m_pXMLDoc->LoadXML(pParser))
313 return XFA_PARSESTATUS_StatusErr; 334 return XFA_PARSESTATUS_StatusErr;
314 335
315 int32_t iRet = m_pXMLDoc->DoLoad(pPause); 336 int32_t iRet = m_pXMLDoc->DoLoad(pPause);
316 if (iRet < 0 || iRet >= 100) 337 if (iRet < 0 || iRet >= 100)
317 m_pXMLDoc->CloseXML(); 338 m_pXMLDoc->CloseXML();
(...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after
497 if (!pChildItem || pChildItem->GetType() != FDE_XMLNODE_Element) 518 if (!pChildItem || pChildItem->GetType() != FDE_XMLNODE_Element)
498 continue; 519 continue;
499 if (pChildItem == pXMLConfigDOMRoot) 520 if (pChildItem == pXMLConfigDOMRoot)
500 continue; 521 continue;
501 522
502 CFDE_XMLElement* pElement = 523 CFDE_XMLElement* pElement =
503 reinterpret_cast<CFDE_XMLElement*>(pChildItem); 524 reinterpret_cast<CFDE_XMLElement*>(pChildItem);
504 CFX_WideString wsPacketName; 525 CFX_WideString wsPacketName;
505 pElement->GetLocalTagName(wsPacketName); 526 pElement->GetLocalTagName(wsPacketName);
506 const XFA_PACKETINFO* pPacketInfo = 527 const XFA_PACKETINFO* pPacketInfo =
507 XFA_GetPacketByName(wsPacketName.AsStringC()); 528 GetPacketByName(wsPacketName.AsStringC());
508 if (pPacketInfo && pPacketInfo->pURI) { 529 if (pPacketInfo && pPacketInfo->pURI) {
509 if (!MatchNodeName(pElement, pPacketInfo->pName, pPacketInfo->pURI, 530 if (!MatchNodeName(pElement, pPacketInfo->pName, pPacketInfo->pURI,
510 pPacketInfo->eFlags)) { 531 pPacketInfo->eFlags)) {
511 pPacketInfo = nullptr; 532 pPacketInfo = nullptr;
512 } 533 }
513 } 534 }
514 XFA_XDPPACKET ePacket = 535 XFA_XDPPACKET ePacket =
515 pPacketInfo ? pPacketInfo->eName : XFA_XDPPACKET_USER; 536 pPacketInfo ? pPacketInfo->eName : XFA_XDPPACKET_USER;
516 if (ePacket == XFA_XDPPACKET_XDP) 537 if (ePacket == XFA_XDPPACKET_XDP)
517 continue; 538 continue;
(...skipping 761 matching lines...) Expand 10 before | Expand all | Expand 10 after
1279 pXFANode->GetDocument()->SetFlag(XFA_DOCFLAG_StrictScoping, TRUE); 1300 pXFANode->GetDocument()->SetFlag(XFA_DOCFLAG_StrictScoping, TRUE);
1280 } 1301 }
1281 } 1302 }
1282 } 1303 }
1283 } 1304 }
1284 1305
1285 void CXFA_SimpleParser::CloseParser() { 1306 void CXFA_SimpleParser::CloseParser() {
1286 m_pXMLDoc.reset(); 1307 m_pXMLDoc.reset();
1287 m_pStream.reset(); 1308 m_pStream.reset();
1288 } 1309 }
OLDNEW
« no previous file with comments | « xfa/fxfa/parser/cxfa_scriptcontext.cpp ('k') | xfa/fxfa/parser/cxfa_stroke.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698