aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/parse
diff options
context:
space:
mode:
authorSimon Sapin <simon.sapin@exyr.org>2016-01-26 18:30:40 +0100
committerSimon Sapin <simon.sapin@exyr.org>2016-01-27 12:25:16 +0100
commitc7b51e7aa15d8b3178343daa58a297a514cd9a70 (patch)
treeeedff55d1275607028e884fdef1211b2a5a98832 /components/script/parse
parenta19b14313a333c5e895e481768237275f564044f (diff)
downloadservo-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.rs5
-rw-r--r--components/script/parse/xml.rs28
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())