Change CFX_XML Save to take a write stream
This CL changes CFX_XML to use an IFX_SeekableWriteStream instead of
the more generic IFX_SeekableStream.
This is a reland of https://pdfium-review.googlesource.com/c/pdfium/+/30877
without pulling in the XML lifetime changes.
Change-Id: I5091da6ad37715fff77f3f22d35ab0105f2bc3d0
Reviewed-on: https://pdfium-review.googlesource.com/31194
Reviewed-by: Henrique Nakashima <hnakashima@chromium.org>
Commit-Queue: dsinclair <dsinclair@chromium.org>
diff --git a/core/fxcrt/xml/cfx_xmlchardata.cpp b/core/fxcrt/xml/cfx_xmlchardata.cpp
index dec2e46..e62a43a 100644
--- a/core/fxcrt/xml/cfx_xmlchardata.cpp
+++ b/core/fxcrt/xml/cfx_xmlchardata.cpp
@@ -21,7 +21,8 @@
return pdfium::MakeUnique<CFX_XMLCharData>(GetText());
}
-void CFX_XMLCharData::Save(const RetainPtr<IFX_SeekableStream>& pXMLStream) {
+void CFX_XMLCharData::Save(
+ const RetainPtr<IFX_SeekableWriteStream>& pXMLStream) {
pXMLStream->WriteString("<![CDATA[");
pXMLStream->WriteString(GetText().UTF8Encode().AsStringView());
pXMLStream->WriteString("]]>");
diff --git a/core/fxcrt/xml/cfx_xmlchardata.h b/core/fxcrt/xml/cfx_xmlchardata.h
index 5b00597..0cdc348 100644
--- a/core/fxcrt/xml/cfx_xmlchardata.h
+++ b/core/fxcrt/xml/cfx_xmlchardata.h
@@ -20,7 +20,7 @@
// CFX_XMLNode
FX_XMLNODETYPE GetType() const override;
std::unique_ptr<CFX_XMLNode> Clone() override;
- void Save(const RetainPtr<IFX_SeekableStream>& pXMLStream) override;
+ void Save(const RetainPtr<IFX_SeekableWriteStream>& pXMLStream) override;
};
#endif // CORE_FXCRT_XML_CFX_XMLCHARDATA_H_
diff --git a/core/fxcrt/xml/cfx_xmlelement.cpp b/core/fxcrt/xml/cfx_xmlelement.cpp
index 5e79da6..3befb24 100644
--- a/core/fxcrt/xml/cfx_xmlelement.cpp
+++ b/core/fxcrt/xml/cfx_xmlelement.cpp
@@ -96,7 +96,8 @@
AppendChild(pdfium::MakeUnique<CFX_XMLText>(wsText));
}
-void CFX_XMLElement::Save(const RetainPtr<IFX_SeekableStream>& pXMLStream) {
+void CFX_XMLElement::Save(
+ const RetainPtr<IFX_SeekableWriteStream>& pXMLStream) {
ByteString bsNameEncoded = name_.UTF8Encode();
pXMLStream->WriteString("<");
diff --git a/core/fxcrt/xml/cfx_xmlelement.h b/core/fxcrt/xml/cfx_xmlelement.h
index c1d9fea..678ba6d 100644
--- a/core/fxcrt/xml/cfx_xmlelement.h
+++ b/core/fxcrt/xml/cfx_xmlelement.h
@@ -22,7 +22,7 @@
// CFX_XMLNode
FX_XMLNODETYPE GetType() const override;
std::unique_ptr<CFX_XMLNode> Clone() override;
- void Save(const RetainPtr<IFX_SeekableStream>& pXMLStream) override;
+ void Save(const RetainPtr<IFX_SeekableWriteStream>& pXMLStream) override;
WideString GetName() const { return name_; }
diff --git a/core/fxcrt/xml/cfx_xmlinstruction.cpp b/core/fxcrt/xml/cfx_xmlinstruction.cpp
index 7b844e6..d0f5cbb 100644
--- a/core/fxcrt/xml/cfx_xmlinstruction.cpp
+++ b/core/fxcrt/xml/cfx_xmlinstruction.cpp
@@ -40,7 +40,8 @@
return name_ == L"acrobat";
}
-void CFX_XMLInstruction::Save(const RetainPtr<IFX_SeekableStream>& pXMLStream) {
+void CFX_XMLInstruction::Save(
+ const RetainPtr<IFX_SeekableWriteStream>& pXMLStream) {
if (name_.CompareNoCase(L"xml") == 0) {
pXMLStream->WriteString("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
return;
diff --git a/core/fxcrt/xml/cfx_xmlinstruction.h b/core/fxcrt/xml/cfx_xmlinstruction.h
index 045610b..3be9d48 100644
--- a/core/fxcrt/xml/cfx_xmlinstruction.h
+++ b/core/fxcrt/xml/cfx_xmlinstruction.h
@@ -21,7 +21,7 @@
// CFX_XMLNode
FX_XMLNODETYPE GetType() const override;
std::unique_ptr<CFX_XMLNode> Clone() override;
- void Save(const RetainPtr<IFX_SeekableStream>& pXMLStream) override;
+ void Save(const RetainPtr<IFX_SeekableWriteStream>& pXMLStream) override;
bool IsOriginalXFAVersion() const;
bool IsAcrobat() const;
diff --git a/core/fxcrt/xml/cfx_xmlnode.h b/core/fxcrt/xml/cfx_xmlnode.h
index 2880954..c7dfbc8 100644
--- a/core/fxcrt/xml/cfx_xmlnode.h
+++ b/core/fxcrt/xml/cfx_xmlnode.h
@@ -27,7 +27,7 @@
virtual FX_XMLNODETYPE GetType() const = 0;
virtual std::unique_ptr<CFX_XMLNode> Clone() = 0;
- virtual void Save(const RetainPtr<IFX_SeekableStream>& pXMLStream) = 0;
+ virtual void Save(const RetainPtr<IFX_SeekableWriteStream>& pXMLStream) = 0;
CFX_XMLNode* GetRoot();
CFX_XMLNode* GetParent() const { return parent_.Get(); }
diff --git a/core/fxcrt/xml/cfx_xmltext.cpp b/core/fxcrt/xml/cfx_xmltext.cpp
index 9bed941..2c324be 100644
--- a/core/fxcrt/xml/cfx_xmltext.cpp
+++ b/core/fxcrt/xml/cfx_xmltext.cpp
@@ -21,7 +21,7 @@
return pdfium::MakeUnique<CFX_XMLText>(m_wsText);
}
-void CFX_XMLText::Save(const RetainPtr<IFX_SeekableStream>& pXMLStream) {
+void CFX_XMLText::Save(const RetainPtr<IFX_SeekableWriteStream>& pXMLStream) {
pXMLStream->WriteString(
EncodeEntities(GetText()).UTF8Encode().AsStringView());
}
diff --git a/core/fxcrt/xml/cfx_xmltext.h b/core/fxcrt/xml/cfx_xmltext.h
index bbf14be..cc9c71d 100644
--- a/core/fxcrt/xml/cfx_xmltext.h
+++ b/core/fxcrt/xml/cfx_xmltext.h
@@ -20,7 +20,7 @@
// CFX_XMLNode
FX_XMLNODETYPE GetType() const override;
std::unique_ptr<CFX_XMLNode> Clone() override;
- void Save(const RetainPtr<IFX_SeekableStream>& pXMLStream) override;
+ void Save(const RetainPtr<IFX_SeekableWriteStream>& pXMLStream) override;
WideString GetText() const { return m_wsText; }
void SetText(const WideString& wsText) { m_wsText = wsText; }