aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/components/script/dom/document.rs5
-rw-r--r--src/components/script/dom/element.rs18
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)