aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/xml/SkDOM.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/xml/SkDOM.cpp')
-rw-r--r--src/xml/SkDOM.cpp46
1 files changed, 7 insertions, 39 deletions
diff --git a/src/xml/SkDOM.cpp b/src/xml/SkDOM.cpp
index 15b458e4fb..78cf6f07e9 100644
--- a/src/xml/SkDOM.cpp
+++ b/src/xml/SkDOM.cpp
@@ -310,10 +310,9 @@ private:
int fLevel;
};
-const SkDOM::Node* SkDOM::build(const char doc[], size_t len)
-{
+const SkDOM::Node* SkDOM::build(SkStream& docStream) {
SkDOMParser parser(&fAlloc);
- if (!parser.parse(doc, len))
+ if (!parser.parse(docStream))
{
SkDEBUGCODE(SkDebugf("xml parse error, line %d\n", parser.fParserError.getLineNumber());)
fRoot = nullptr;
@@ -324,6 +323,11 @@ const SkDOM::Node* SkDOM::build(const char doc[], size_t len)
return fRoot;
}
+const SkDOM::Node* SkDOM::build(const char doc[], size_t len) {
+ SkMemoryStream docStream(doc, len);
+ return this->build(docStream);
+}
+
///////////////////////////////////////////////////////////////////////////
static void walk_dom(const SkDOM& dom, const SkDOM::Node* node, SkXMLParser* parser)
@@ -475,40 +479,4 @@ void SkDOM::dump(const Node* node, int level) const
xmlWriter.writeDOM(*this, node, false);
}
-void SkDOM::UnitTest()
-{
-#ifdef SK_SUPPORT_UNITTEST
- static const char gDoc[] =
- "<root a='1' b='2'>"
- "<elem1 c='3' />"
- "<elem2 d='4' />"
- "<elem3 e='5'>"
- "<subelem1/>"
- "<subelem2 f='6' g='7'/>"
- "</elem3>"
- "<elem4 h='8'/>"
- "</root>"
- ;
-
- SkDOM dom;
-
- SkASSERT(dom.getRootNode() == nullptr);
-
- const Node* root = dom.build(gDoc, sizeof(gDoc) - 1);
- SkASSERT(root && dom.getRootNode() == root);
-
- const char* v = dom.findAttr(root, "a");
- SkASSERT(v && !strcmp(v, "1"));
- v = dom.findAttr(root, "b");
- SkASSERT(v && !strcmp(v, "2"));
- v = dom.findAttr(root, "c");
- SkASSERT(v == nullptr);
-
- SkASSERT(dom.getFirstChild(root, "elem1"));
- SkASSERT(!dom.getFirstChild(root, "subelem1"));
-
- dom.dump();
-#endif
-}
-
#endif