diff --git a/components/script/dom/create.rs b/components/script/dom/create.rs index 1b8e4b9f2ce..7e1f500627b 100644 --- a/components/script/dom/create.rs +++ b/components/script/dom/create.rs @@ -76,15 +76,15 @@ use dom::htmlulistelement::HTMLUListElement; use dom::htmlunknownelement::HTMLUnknownElement; use dom::htmlvideoelement::HTMLVideoElement; -use util::str::DOMString; - -use string_cache::QualName; +use string_cache::{Atom, QualName}; use std::borrow::ToOwned; -pub fn create_element(name: QualName, prefix: Option, +pub fn create_element(name: QualName, prefix: Option, document: JSRef, creator: ElementCreator) -> Temporary { + let prefix = prefix.map(|p| (*p).to_owned()); + if name.ns != ns!(HTML) { return Element::new((*name.local).to_owned(), name.ns, prefix, document); } diff --git a/components/script/dom/document.rs b/components/script/dom/document.rs index 9b88ed97a77..8cd3655d7c5 100644 --- a/components/script/dom/document.rs +++ b/components/script/dom/document.rs @@ -1025,7 +1025,7 @@ impl<'a> DocumentMethods for JSRef<'a, Document> { let (namespace, prefix, local_name) = try!(validate_and_extract(namespace, &qualified_name)); let name = QualName::new(namespace, local_name); - Ok(Element::create(name, prefix.map(|p| (*p).to_owned()), self, ElementCreator::ScriptCreated)) + Ok(Element::create(name, prefix, self, ElementCreator::ScriptCreated)) } // https://dom.spec.whatwg.org/#dom-document-createattribute diff --git a/components/script/dom/element.rs b/components/script/dom/element.rs index b770c66caf4..6aa90f0f914 100644 --- a/components/script/dom/element.rs +++ b/components/script/dom/element.rs @@ -120,7 +120,7 @@ pub enum ElementCreator { // Element methods // impl Element { - pub fn create(name: QualName, prefix: Option, + pub fn create(name: QualName, prefix: Option, document: JSRef, creator: ElementCreator) -> Temporary { create_element(name, prefix, document, creator) diff --git a/components/script/dom/node.rs b/components/script/dom/node.rs index 525130af9fc..aaea91a4b15 100644 --- a/components/script/dom/node.rs +++ b/components/script/dom/node.rs @@ -70,7 +70,7 @@ use std::iter::{FilterMap, Peekable}; use std::mem; use std::sync::Arc; use uuid; -use string_cache::QualName; +use string_cache::{Atom, QualName}; // // The basic Node structure @@ -1735,7 +1735,7 @@ impl Node { local: element.local_name().clone() }; let element = Element::create(name, - element.prefix().as_ref().map(|p| (**p).to_owned()), + element.prefix().as_ref().map(|p| Atom::from_slice(&p)), document.r(), ElementCreator::ScriptCreated); NodeCast::from_temporary(element) },