diff options
author | Simon Sapin <simon.sapin@exyr.org> | 2016-01-26 18:30:40 +0100 |
---|---|---|
committer | Simon Sapin <simon.sapin@exyr.org> | 2016-01-27 12:25:16 +0100 |
commit | c7b51e7aa15d8b3178343daa58a297a514cd9a70 (patch) | |
tree | eedff55d1275607028e884fdef1211b2a5a98832 /components/script/parse | |
parent | a19b14313a333c5e895e481768237275f564044f (diff) | |
download | servo-c7b51e7aa15d8b3178343daa58a297a514cd9a70.tar.gz servo-c7b51e7aa15d8b3178343daa58a297a514cd9a70.zip |
Update html5ever and xml5ever for API changes.
Diffstat (limited to 'components/script/parse')
-rw-r--r-- | components/script/parse/html.rs | 5 | ||||
-rw-r--r-- | components/script/parse/xml.rs | 28 |
2 files changed, 23 insertions, 10 deletions
diff --git a/components/script/parse/html.rs b/components/script/parse/html.rs index dc201402a61..d4ea3cf2093 100644 --- a/components/script/parse/html.rs +++ b/components/script/parse/html.rs @@ -29,13 +29,13 @@ use html5ever::Attribute; use html5ever::serialize::TraversalScope; use html5ever::serialize::TraversalScope::{ChildrenOnly, IncludeNode}; use html5ever::serialize::{AttrRef, Serializable, Serializer}; +use html5ever::tendril::StrTendril; use html5ever::tree_builder::{NextParserState, NodeOrText, QuirksMode, TreeSink}; use msg::constellation_msg::PipelineId; use parse::Parser; use std::borrow::Cow; use std::io::{self, Write}; use string_cache::QualName; -use tendril::StrTendril; use url::Url; use util::str::DOMString; @@ -54,6 +54,9 @@ fn insert(parent: &Node, reference_child: Option<&Node>, child: NodeOrText<JS<No } impl<'a> TreeSink for servohtmlparser::Sink { + type Output = Self; + fn finish(self) -> Self { self } + type Handle = JS<Node>; fn get_document(&mut self) -> JS<Node> { diff --git a/components/script/parse/xml.rs b/components/script/parse/xml.rs index 30cd5138348..6c82e5af358 100644 --- a/components/script/parse/xml.rs +++ b/components/script/parse/xml.rs @@ -19,11 +19,11 @@ use dom::text::Text; use msg::constellation_msg::PipelineId; use parse::Parser; use std::borrow::Cow; -use string_cache::QualName; -use tendril::StrTendril; +use string_cache::{Atom, QualName, Namespace}; use url::Url; use util::str::DOMString; -use xml5ever::tokenizer::Attribute; +use xml5ever::tendril::StrTendril; +use xml5ever::tokenizer::{Attribute, QName}; use xml5ever::tree_builder::{NodeOrText, TreeSink}; impl<'a> TreeSink for servoxmlparser::Sink { @@ -37,22 +37,32 @@ impl<'a> TreeSink for servoxmlparser::Sink { JS::from_ref(self.document.upcast()) } - fn elem_name(&self, target: &JS<Node>) -> QualName { + fn elem_name(&self, target: &JS<Node>) -> QName { let elem = target.downcast::<Element>() .expect("tried to get name of non-Element in XML parsing"); - QualName { - ns: elem.namespace().clone(), + QName { + prefix: elem.prefix().as_ref().map_or(atom!(""), |p| Atom::from(&**p)), + namespace_url: elem.namespace().0.clone(), local: elem.local_name().clone(), } } - fn create_element(&mut self, name: QualName, attrs: Vec<Attribute>) + fn create_element(&mut self, name: QName, attrs: Vec<Attribute>) -> JS<Node> { - let elem = Element::create(name, None, &*self.document, + let prefix = if name.prefix == atom!("") { None } else { Some(name.prefix) }; + let name = QualName { + ns: Namespace(name.namespace_url), + local: name.local, + }; + let elem = Element::create(name, prefix, &*self.document, ElementCreator::ParserCreated); for attr in attrs { - elem.set_attribute_from_parser(attr.name, DOMString::from(String::from(attr.value)), None); + let name = QualName { + ns: Namespace(attr.name.namespace_url), + local: attr.name.local, + }; + elem.set_attribute_from_parser(name, DOMString::from(String::from(attr.value)), None); } JS::from_ref(elem.upcast()) |