diff options
author | Ms2ger <ms2ger@gmail.com> | 2014-07-13 20:16:59 +0200 |
---|---|---|
committer | Ms2ger <ms2ger@gmail.com> | 2014-07-14 18:39:02 +0200 |
commit | 1d27e96eca155be8faf47264b11c9bfa212d37a5 (patch) | |
tree | 48ab57e5d9deb5a4f26e3db5794851cabe9da379 /src/components/script/dom/element.rs | |
parent | 1c61963b519458ff2aebf29340c236d5755acae3 (diff) | |
download | servo-1d27e96eca155be8faf47264b11c9bfa212d37a5.tar.gz servo-1d27e96eca155be8faf47264b11c9bfa212d37a5.zip |
Return slices from get_attribute_parts.
Diffstat (limited to 'src/components/script/dom/element.rs')
-rw-r--r-- | src/components/script/dom/element.rs | 18 |
1 files changed, 10 insertions, 8 deletions
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) |