diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/components/script/dom/document.rs | 5 | ||||
-rw-r--r-- | src/components/script/dom/element.rs | 18 |
2 files changed, 13 insertions, 10 deletions
diff --git a/src/components/script/dom/document.rs b/src/components/script/dom/document.rs index 43af4e996d9..7bb394d3755 100644 --- a/src/components/script/dom/document.rs +++ b/src/components/script/dom/document.rs @@ -462,9 +462,10 @@ impl<'a> DocumentMethods for JSRef<'a, Document> { } if ns == namespace::HTML { - Ok(build_element_from_tag(local_name_from_qname, ns, self)) + Ok(build_element_from_tag(local_name_from_qname.to_string(), ns, self)) } else { - Ok(Element::new(local_name_from_qname, ns, prefix_from_qname, self)) + Ok(Element::new(local_name_from_qname.to_string(), ns, + prefix_from_qname.map(|s| s.to_string()), self)) } } diff --git a/src/components/script/dom/element.rs b/src/components/script/dom/element.rs index 2da5c582be2..a16c36f4708 100644 --- a/src/components/script/dom/element.rs +++ b/src/components/script/dom/element.rs @@ -317,7 +317,7 @@ impl<'a> AttributeHandlers for JSRef<'a, Element> { let (_, local_name) = get_attribute_parts(name); let idx = self.deref().attrs.borrow().iter().map(|attr| attr.root()).position(|attr| { - attr.local_name == local_name + attr.local_name.as_slice() == local_name }); match idx { @@ -331,7 +331,7 @@ impl<'a> AttributeHandlers for JSRef<'a, Element> { if namespace == namespace::Null { let removed_raw_value = self.deref().attrs.borrow().get(idx).root().Value(); vtable_for(NodeCast::from_ref(self)) - .before_remove_attr(local_name.clone(), removed_raw_value); + .before_remove_attr(local_name.to_string(), removed_raw_value); } self.deref().attrs.borrow_mut().remove(idx); @@ -630,14 +630,16 @@ impl<'a> ElementMethods for JSRef<'a, Element> { } // Step 8. - if namespace == namespace::XMLNS && "xmlns" != name.as_slice() && Some("xmlns".to_string()) != prefix { + if namespace == namespace::XMLNS && "xmlns" != name.as_slice() && Some("xmlns") != prefix { return Err(NamespaceError); } // Step 9. let value = self.parse_attribute(&namespace, local_name.as_slice(), value); - self.do_set_attribute(local_name.clone(), value, name, namespace.clone(), prefix, |attr| { - attr.deref().local_name == local_name && + self.do_set_attribute(local_name.to_string(), value, name.to_string(), + namespace.clone(), prefix.map(|s| s.to_string()), + |attr| { + attr.deref().local_name.as_slice() == local_name && attr.deref().namespace == namespace }); Ok(()) @@ -759,14 +761,14 @@ impl<'a> ElementMethods for JSRef<'a, Element> { } } -pub fn get_attribute_parts(name: &str) -> (Option<String>, String) { +pub fn get_attribute_parts<'a>(name: &'a str) -> (Option<&'a str>, &'a str) { //FIXME: Throw for XML-invalid names //FIXME: Throw for XMLNS-invalid names let (prefix, local_name) = if name.contains(":") { let mut parts = name.splitn(':', 1); - (Some(parts.next().unwrap().to_string()), parts.next().unwrap().to_string()) + (Some(parts.next().unwrap()), parts.next().unwrap()) } else { - (None, name.to_string()) + (None, name) }; (prefix, local_name) |