summaryrefslogtreecommitdiff
path: root/core/fxcrt
diff options
context:
space:
mode:
Diffstat (limited to 'core/fxcrt')
-rw-r--r--core/fxcrt/xml/cxml_element.h14
-rw-r--r--core/fxcrt/xml/cxml_parser.cpp7
2 files changed, 14 insertions, 7 deletions
diff --git a/core/fxcrt/xml/cxml_element.h b/core/fxcrt/xml/cxml_element.h
index 40ebe385b7..a851a86f1c 100644
--- a/core/fxcrt/xml/cxml_element.h
+++ b/core/fxcrt/xml/cxml_element.h
@@ -8,6 +8,7 @@
#define CORE_FXCRT_XML_CXML_ELEMENT_H_
#include <memory>
+#include <utility>
#include <vector>
#include "core/fxcrt/xml/cxml_attrmap.h"
@@ -87,6 +88,10 @@ class CXML_Element : public CXML_Object {
return attr;
}
+ void AppendChild(std::unique_ptr<CXML_Object> child) {
+ m_Children.push_back(std::move(child));
+ }
+
uint32_t CountChildren() const { return m_Children.size(); }
uint32_t CountElements(const ByteStringView& space,
const ByteStringView& tag) const;
@@ -98,10 +103,13 @@ class CXML_Element : public CXML_Object {
void SetTag(const ByteStringView& qTagName);
void RemoveChild(uint32_t index);
- private:
- friend class CXML_Parser;
- friend class CXML_Composer;
+ void SetAttribute(const ByteString& space,
+ const ByteString& name,
+ const WideString& value) {
+ m_AttrMap.SetAt(space, name, value);
+ }
+ private:
UnownedPtr<const CXML_Element> const m_pParent;
ByteString m_QSpaceName;
ByteString m_TagName;
diff --git a/core/fxcrt/xml/cxml_parser.cpp b/core/fxcrt/xml/cxml_parser.cpp
index adf83c7148..062b5bec07 100644
--- a/core/fxcrt/xml/cxml_parser.cpp
+++ b/core/fxcrt/xml/cxml_parser.cpp
@@ -424,7 +424,7 @@ std::unique_ptr<CXML_Element> CXML_Parser::ParseElementInternal(
WideString attr_value;
GetAttrValue(attr_value);
- pElement->m_AttrMap.SetAt(attr_space, attr_name, attr_value);
+ pElement->SetAttribute(attr_space, attr_name, attr_value);
}
m_nOffset = m_nBufferOffset + static_cast<FX_FILESIZE>(m_dwIndex);
if (m_dwIndex < m_dwBufferSize || IsEOF())
@@ -498,7 +498,7 @@ std::unique_ptr<CXML_Element> CXML_Parser::ParseElementInternal(
if (!pSubElement)
break;
- pElement->m_Children.push_back(std::move(pSubElement));
+ pElement->AppendChild(std::move(pSubElement));
SkipWhiteSpaces();
}
break;
@@ -541,6 +541,5 @@ void CXML_Parser::InsertContentSegment(bool bCDATA,
if (content.IsEmpty())
return;
- pElement->m_Children.push_back(
- pdfium::MakeUnique<CXML_Content>(bCDATA, content));
+ pElement->AppendChild(pdfium::MakeUnique<CXML_Content>(bCDATA, content));
}