From c7b51e7aa15d8b3178343daa58a297a514cd9a70 Mon Sep 17 00:00:00 2001 From: Simon Sapin Date: Tue, 26 Jan 2016 18:30:40 +0100 Subject: Update html5ever and xml5ever for API changes. --- components/script/parse/html.rs | 5 ++++- components/script/parse/xml.rs | 28 +++++++++++++++++++--------- 2 files changed, 23 insertions(+), 10 deletions(-) (limited to 'components/script/parse') 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 TreeSink for servohtmlparser::Sink { + type Output = Self; + fn finish(self) -> Self { self } + type Handle = JS; fn get_document(&mut self) -> JS { 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) -> QualName { + fn elem_name(&self, target: &JS) -> QName { let elem = target.downcast::() .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) + fn create_element(&mut self, name: QName, attrs: Vec) -> JS { - 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()) -- cgit v1.2.3