summaryrefslogtreecommitdiff
path: root/core/fxcrt/xml/cfx_xmlelement.cpp
diff options
context:
space:
mode:
authordsinclair <dsinclair@chromium.org>2018-04-23 18:35:17 +0000
committerChromium commit bot <commit-bot@chromium.org>2018-04-23 18:35:17 +0000
commitbb47f9a442b5ea2196f18cb2df3cedd34b81b9ad (patch)
tree447c0360d9f2f2555c1c2d19e6f8d7e007e58503 /core/fxcrt/xml/cfx_xmlelement.cpp
parent857231a0723c0bf74ea6c13f1c3ce56548e23303 (diff)
downloadpdfium-bb47f9a442b5ea2196f18cb2df3cedd34b81b9ad.tar.xz
Revert "Change CFX_XML Save to take a write stream"
This reverts commit 9a3a7709103a872037dcea1f3cf0b7785a3da191. Reason for revert: Gerrit did not do what I expected.... Original change's description: > 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. > > Change-Id: I6e4def380c43eca755d91ad5cb6146c2dfdaee10 > Reviewed-on: https://pdfium-review.googlesource.com/30877 > Commit-Queue: dsinclair <dsinclair@chromium.org> > Reviewed-by: Tom Sepez <tsepez@chromium.org> TBR=tsepez@chromium.org,dsinclair@chromium.org,hnakashima@chromium.org Change-Id: I137e53bf93285b88ade6832dedefca66e3b61e13 No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://pdfium-review.googlesource.com/31211 Reviewed-by: dsinclair <dsinclair@chromium.org> Commit-Queue: dsinclair <dsinclair@chromium.org>
Diffstat (limited to 'core/fxcrt/xml/cfx_xmlelement.cpp')
-rw-r--r--core/fxcrt/xml/cfx_xmlelement.cpp24
1 files changed, 13 insertions, 11 deletions
diff --git a/core/fxcrt/xml/cfx_xmlelement.cpp b/core/fxcrt/xml/cfx_xmlelement.cpp
index 8c8922e0c6..5e79da63cf 100644
--- a/core/fxcrt/xml/cfx_xmlelement.cpp
+++ b/core/fxcrt/xml/cfx_xmlelement.cpp
@@ -33,9 +33,10 @@ std::unique_ptr<CFX_XMLNode> CFX_XMLElement::Clone() {
// TODO(dsinclair): This clone is wrong. It doesn't clone child nodes just
// copies text nodes?
WideString wsText;
- for (const auto& pChild : *this) {
+ for (CFX_XMLNode* pChild = GetFirstChild(); pChild;
+ pChild = pChild->GetNextSibling()) {
if (pChild->GetType() == FX_XMLNODE_Text)
- wsText += static_cast<CFX_XMLText*>(pChild.get())->GetText();
+ wsText += static_cast<CFX_XMLText*>(pChild)->GetText();
}
pClone->SetTextData(wsText);
return std::move(pClone);
@@ -78,10 +79,11 @@ WideString CFX_XMLElement::GetNamespaceURI() const {
WideString CFX_XMLElement::GetTextData() const {
CFX_WideTextBuf buffer;
- for (const auto& pChild : *this) {
+ for (CFX_XMLNode* pChild = GetFirstChild(); pChild;
+ pChild = pChild->GetNextSibling()) {
if (pChild->GetType() == FX_XMLNODE_Text ||
pChild->GetType() == FX_XMLNODE_CharData) {
- buffer << static_cast<CFX_XMLText*>(pChild.get())->GetText();
+ buffer << static_cast<CFX_XMLText*>(pChild)->GetText();
}
}
return buffer.MakeString();
@@ -94,8 +96,7 @@ void CFX_XMLElement::SetTextData(const WideString& wsText) {
AppendChild(pdfium::MakeUnique<CFX_XMLText>(wsText));
}
-void CFX_XMLElement::Save(
- const RetainPtr<IFX_SeekableWriteStream>& pXMLStream) {
+void CFX_XMLElement::Save(const RetainPtr<IFX_SeekableStream>& pXMLStream) {
ByteString bsNameEncoded = name_.UTF8Encode();
pXMLStream->WriteString("<");
@@ -108,16 +109,17 @@ void CFX_XMLElement::Save(
AttributeToString(it.first, it.second).UTF8Encode().AsStringView());
}
- if (HasChildren()) {
+ if (!GetFirstChild()) {
pXMLStream->WriteString(" />\n");
return;
}
pXMLStream->WriteString(">\n");
- for (const auto& pChild : *this)
+ for (CFX_XMLNode* pChild = GetFirstChild(); pChild;
+ pChild = pChild->GetNextSibling()) {
pChild->Save(pXMLStream);
-
+ }
pXMLStream->WriteString("</");
pXMLStream->WriteString(bsNameEncoded.AsStringView());
pXMLStream->WriteString(">\n");
@@ -130,11 +132,11 @@ CFX_XMLElement* CFX_XMLElement::GetFirstChildNamed(
CFX_XMLElement* CFX_XMLElement::GetNthChildNamed(const WideStringView& name,
size_t idx) const {
- for (const auto& child : *this) {
+ for (auto* child = GetFirstChild(); child; child = child->GetNextSibling()) {
if (child->GetType() != FX_XMLNODE_Element)
continue;
- CFX_XMLElement* elem = static_cast<CFX_XMLElement*>(child.get());
+ CFX_XMLElement* elem = static_cast<CFX_XMLElement*>(child);
if (elem->name_ != name)
continue;
if (idx == 0)