aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/parse/xml.rs
diff options
context:
space:
mode:
authorAnthony Ramine <n.oxyde@gmail.com>2016-10-10 16:11:00 +0200
committerAnthony Ramine <n.oxyde@gmail.com>2016-10-11 15:08:37 +0200
commit1405be691776e48836f651c3c616dc12322a0932 (patch)
treeae98c4b4e517879cfec1742464e1e44dca1afb4e /components/script/parse/xml.rs
parent609299e1e45e93939f75f8439fc7ac3276ca5881 (diff)
downloadservo-1405be691776e48836f651c3c616dc12322a0932.tar.gz
servo-1405be691776e48836f651c3c616dc12322a0932.zip
Unify ServoHTMLParser and ServoXMLParser in ServoParser
Diffstat (limited to 'components/script/parse/xml.rs')
-rw-r--r--components/script/parse/xml.rs22
1 files changed, 14 insertions, 8 deletions
diff --git a/components/script/parse/xml.rs b/components/script/parse/xml.rs
index ee0959d04ef..3777b7f497c 100644
--- a/components/script/parse/xml.rs
+++ b/components/script/parse/xml.rs
@@ -15,20 +15,19 @@ use dom::element::{Element, ElementCreator};
use dom::htmlscriptelement::HTMLScriptElement;
use dom::node::Node;
use dom::processinginstruction::ProcessingInstruction;
-use dom::servoxmlparser;
-use dom::servoxmlparser::ServoXMLParser;
+use dom::servoparser::{ServoParser, Tokenizer};
use dom::text::Text;
use html5ever;
use msg::constellation_msg::PipelineId;
-use parse::Parser;
+use parse::Sink;
use std::borrow::Cow;
use string_cache::{Atom, QualName, Namespace};
use url::Url;
use xml5ever::tendril::StrTendril;
-use xml5ever::tokenizer::{Attribute, QName};
-use xml5ever::tree_builder::{NextParserState, NodeOrText, TreeSink};
+use xml5ever::tokenizer::{Attribute, QName, XmlTokenizer};
+use xml5ever::tree_builder::{NextParserState, NodeOrText, TreeSink, XmlTreeBuilder};
-impl<'a> TreeSink for servoxmlparser::Sink {
+impl<'a> TreeSink for Sink {
type Handle = JS<Node>;
fn parse_error(&mut self, msg: Cow<'static, str>) {
@@ -134,8 +133,15 @@ pub fn parse_xml(document: &Document,
url: Url,
context: ParseContext) {
let parser = match context {
- ParseContext::Owner(owner) =>
- ServoXMLParser::new(Some(url), document, owner),
+ ParseContext::Owner(owner) => {
+ let tb = XmlTreeBuilder::new(Sink {
+ base_url: url,
+ document: JS::from_ref(document),
+ });
+ let tok = XmlTokenizer::new(tb, Default::default());
+
+ ServoParser::new(document, owner, Tokenizer::XML(tok), false)
+ }
};
parser.parse_chunk(String::from(input));
}