diff options
author | dsinclair <dsinclair@chromium.org> | 2018-04-23 18:35:17 +0000 |
---|---|---|
committer | Chromium commit bot <commit-bot@chromium.org> | 2018-04-23 18:35:17 +0000 |
commit | bb47f9a442b5ea2196f18cb2df3cedd34b81b9ad (patch) | |
tree | 447c0360d9f2f2555c1c2d19e6f8d7e007e58503 /core/fxcrt/xml/cfx_xmlelement.cpp | |
parent | 857231a0723c0bf74ea6c13f1c3ce56548e23303 (diff) | |
download | pdfium-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.cpp | 24 |
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) |