summaryrefslogtreecommitdiff
path: root/xfa/fde/xml/cfde_xmldoc.cpp
diff options
context:
space:
mode:
authorDan Sinclair <dsinclair@chromium.org>2017-04-19 09:19:57 -0400
committerChromium commit bot <commit-bot@chromium.org>2017-04-19 13:33:07 +0000
commit0d86ecb08e1b2c204333b1f1f6b0b014e5b2971c (patch)
treef816429f8581c16a60773eb23385dc8e55729bac /xfa/fde/xml/cfde_xmldoc.cpp
parent3b71d26f092ebc86ca9177fbbe89d83caa67ae1b (diff)
downloadpdfium-0d86ecb08e1b2c204333b1f1f6b0b014e5b2971c.tar.xz
Move fde XML parser to core
This CL moves the XML parser from FDE into FXCRT and renames to CFX_ from CFDE_. Change-Id: I21a9590bf74daf5517df630d7e7a5de89da99ea4 Reviewed-on: https://pdfium-review.googlesource.com/4312 Commit-Queue: dsinclair <dsinclair@chromium.org> Reviewed-by: Tom Sepez <tsepez@chromium.org> Reviewed-by: Nicolás Peña <npm@chromium.org>
Diffstat (limited to 'xfa/fde/xml/cfde_xmldoc.cpp')
-rw-r--r--xfa/fde/xml/cfde_xmldoc.cpp160
1 files changed, 0 insertions, 160 deletions
diff --git a/xfa/fde/xml/cfde_xmldoc.cpp b/xfa/fde/xml/cfde_xmldoc.cpp
deleted file mode 100644
index fa44472098..0000000000
--- a/xfa/fde/xml/cfde_xmldoc.cpp
+++ /dev/null
@@ -1,160 +0,0 @@
-// Copyright 2017 PDFium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
-
-#include "xfa/fde/xml/cfde_xmldoc.h"
-
-#include <utility>
-#include <vector>
-
-#include "core/fxcrt/fx_codepage.h"
-#include "third_party/base/ptr_util.h"
-#include "third_party/base/stl_util.h"
-#include "xfa/fde/xml/cfde_xmlchardata.h"
-#include "xfa/fde/xml/cfde_xmlelement.h"
-#include "xfa/fde/xml/cfde_xmlinstruction.h"
-#include "xfa/fde/xml/cfde_xmlnode.h"
-#include "xfa/fde/xml/cfde_xmltext.h"
-
-CFDE_XMLDoc::CFDE_XMLDoc()
- : m_iStatus(0), m_pRoot(pdfium::MakeUnique<CFDE_XMLNode>()) {
- m_pRoot->InsertChildNode(new CFDE_XMLInstruction(L"xml"));
-}
-
-CFDE_XMLDoc::~CFDE_XMLDoc() {}
-
-bool CFDE_XMLDoc::LoadXML(std::unique_ptr<CFDE_XMLParser> pXMLParser) {
- if (!pXMLParser)
- return false;
-
- m_iStatus = 0;
- m_pStream.Reset();
- m_pRoot->DeleteChildren();
- m_pXMLParser = std::move(pXMLParser);
- return true;
-}
-
-int32_t CFDE_XMLDoc::DoLoad(IFX_Pause* pPause) {
- if (m_iStatus < 100)
- m_iStatus = m_pXMLParser->DoParser(pPause);
-
- return m_iStatus;
-}
-
-void CFDE_XMLDoc::CloseXML() {
- m_pXMLParser.reset();
-}
-
-void CFDE_XMLDoc::SaveXMLNode(
- const CFX_RetainPtr<CFX_SeekableStreamProxy>& pXMLStream,
- CFDE_XMLNode* pINode) {
- CFDE_XMLNode* pNode = (CFDE_XMLNode*)pINode;
- switch (pNode->GetType()) {
- case FDE_XMLNODE_Instruction: {
- CFX_WideString ws;
- CFDE_XMLInstruction* pInstruction = (CFDE_XMLInstruction*)pNode;
- if (pInstruction->GetName().CompareNoCase(L"xml") == 0) {
- ws = L"<?xml version=\"1.0\" encoding=\"";
- uint16_t wCodePage = pXMLStream->GetCodePage();
- if (wCodePage == FX_CODEPAGE_UTF16LE) {
- ws += L"UTF-16";
- } else if (wCodePage == FX_CODEPAGE_UTF16BE) {
- ws += L"UTF-16be";
- } else {
- ws += L"UTF-8";
- }
- ws += L"\"?>";
- pXMLStream->WriteString(ws.AsStringC());
- } else {
- ws.Format(L"<?%s", pInstruction->GetName().c_str());
- pXMLStream->WriteString(ws.AsStringC());
-
- for (auto it : pInstruction->GetAttributes()) {
- CFX_WideString wsValue = it.second;
- wsValue.Replace(L"&", L"&amp;");
- wsValue.Replace(L"<", L"&lt;");
- wsValue.Replace(L">", L"&gt;");
- wsValue.Replace(L"\'", L"&apos;");
- wsValue.Replace(L"\"", L"&quot;");
-
- ws = L" ";
- ws += it.first;
- ws += L"=\"";
- ws += wsValue;
- ws += L"\"";
- pXMLStream->WriteString(ws.AsStringC());
- }
-
- for (auto target : pInstruction->GetTargetData()) {
- ws = L" \"";
- ws += target;
- ws += L"\"";
- pXMLStream->WriteString(ws.AsStringC());
- }
- ws = L"?>";
- pXMLStream->WriteString(ws.AsStringC());
- }
- break;
- }
- case FDE_XMLNODE_Element: {
- CFX_WideString ws;
- ws = L"<";
- ws += static_cast<CFDE_XMLElement*>(pNode)->GetName();
- pXMLStream->WriteString(ws.AsStringC());
-
- for (auto it : static_cast<CFDE_XMLElement*>(pNode)->GetAttributes()) {
- CFX_WideString wsValue = it.second;
- wsValue.Replace(L"&", L"&amp;");
- wsValue.Replace(L"<", L"&lt;");
- wsValue.Replace(L">", L"&gt;");
- wsValue.Replace(L"\'", L"&apos;");
- wsValue.Replace(L"\"", L"&quot;");
-
- ws = L" ";
- ws += it.first;
- ws += L"=\"";
- ws += wsValue;
- ws += L"\"";
- pXMLStream->WriteString(ws.AsStringC());
- }
- if (pNode->m_pChild) {
- ws = L"\n>";
- pXMLStream->WriteString(ws.AsStringC());
- CFDE_XMLNode* pChild = pNode->m_pChild;
- while (pChild) {
- SaveXMLNode(pXMLStream, static_cast<CFDE_XMLNode*>(pChild));
- pChild = pChild->m_pNext;
- }
- ws = L"</";
- ws += static_cast<CFDE_XMLElement*>(pNode)->GetName();
- ws += L"\n>";
- } else {
- ws = L"\n/>";
- }
- pXMLStream->WriteString(ws.AsStringC());
- break;
- }
- case FDE_XMLNODE_Text: {
- CFX_WideString ws = static_cast<CFDE_XMLText*>(pNode)->GetText();
- ws.Replace(L"&", L"&amp;");
- ws.Replace(L"<", L"&lt;");
- ws.Replace(L">", L"&gt;");
- ws.Replace(L"\'", L"&apos;");
- ws.Replace(L"\"", L"&quot;");
- pXMLStream->WriteString(ws.AsStringC());
- break;
- }
- case FDE_XMLNODE_CharData: {
- CFX_WideString ws = L"<![CDATA[";
- ws += static_cast<CFDE_XMLCharData*>(pNode)->GetText();
- ws += L"]]>";
- pXMLStream->WriteString(ws.AsStringC());
- break;
- }
- case FDE_XMLNODE_Unknown:
- default:
- break;
- }
-}