diff options
author | Glenn Watson <gw@intuitionlibrary.com> | 2014-07-24 11:33:59 +1000 |
---|---|---|
committer | Glenn Watson <gw@intuitionlibrary.com> | 2014-07-24 11:33:59 +1000 |
commit | 036bd29eadd56fc65271f835978d81ece129da94 (patch) | |
tree | 17cda6039c662b0523686f6dce56ae1fe738ebe8 /src/components/script/dom/element.rs | |
parent | 5808cb302d5b1ea1f7f4de81fc9e278a644ec1fd (diff) | |
download | servo-036bd29eadd56fc65271f835978d81ece129da94.tar.gz servo-036bd29eadd56fc65271f835978d81ece129da94.zip |
Port attribute name to use atom.
Diffstat (limited to 'src/components/script/dom/element.rs')
-rw-r--r-- | src/components/script/dom/element.rs | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/src/components/script/dom/element.rs b/src/components/script/dom/element.rs index 48ba1346587..51930e48338 100644 --- a/src/components/script/dom/element.rs +++ b/src/components/script/dom/element.rs @@ -31,10 +31,10 @@ use layout_interface::ContentChangedDocumentDamage; use layout_interface::MatchSelectorsDocumentDamage; use style::{matches_compound_selector, NamespaceMap, parse_selector_list}; use style; +use servo_util::atom::Atom; use servo_util::namespace; use servo_util::namespace::{Namespace, Null}; use servo_util::str::{DOMString, null_str_as_empty_ref, split_html_space_chars}; -use servo_util::atom::Atom; use std::ascii::StrAsciiExt; use std::cell::{Cell, RefCell}; @@ -228,7 +228,7 @@ pub trait AttributeHandlers { prefix: Option<DOMString>); fn set_attribute(&self, name: &str, value: AttrValue); fn do_set_attribute(&self, local_name: DOMString, value: AttrValue, - name: DOMString, namespace: Namespace, + name: Atom, namespace: Namespace, prefix: Option<DOMString>, cb: |&JSRef<Attr>| -> bool); fn parse_attribute(&self, namespace: &Namespace, local_name: &str, value: DOMString) -> AttrValue; @@ -267,8 +267,8 @@ impl<'a> AttributeHandlers for JSRef<'a, Element> { value: DOMString, namespace: Namespace, prefix: Option<DOMString>) { let name = match prefix { - None => local_name.clone(), - Some(ref prefix) => format!("{:s}:{:s}", *prefix, local_name), + None => Atom::from_slice(local_name.as_slice()), + Some(ref prefix) => Atom::from_slice(format!("{:s}:{:s}", *prefix, local_name).as_slice()), }; let value = self.parse_attribute(&namespace, local_name.as_slice(), value); self.do_set_attribute(local_name, value, name, namespace, prefix, |_| false) @@ -281,13 +281,13 @@ impl<'a> AttributeHandlers for JSRef<'a, Element> { let node: &JSRef<Node> = NodeCast::from_ref(self); node.wait_until_safe_to_modify_dom(); - self.do_set_attribute(name.to_string(), value, name.to_string(), + self.do_set_attribute(name.to_string(), value, Atom::from_slice(name), namespace::Null, None, |attr| attr.deref().local_name.as_slice() == name); } fn do_set_attribute(&self, local_name: DOMString, value: AttrValue, - name: DOMString, namespace: Namespace, + name: Atom, namespace: Namespace, prefix: Option<DOMString>, cb: |&JSRef<Attr>| -> bool) { let idx = self.deref().attrs.borrow().iter() .map(|attr| attr.root()) @@ -576,8 +576,9 @@ impl<'a> ElementMethods for JSRef<'a, Element> { // Step 3-5. let value = self.parse_attribute(&namespace::Null, name.as_slice(), value); - self.do_set_attribute(name.clone(), value, name.clone(), namespace::Null, None, |attr| { - attr.deref().name == name + let name_atom = Atom::from_slice(name.as_slice()); + self.do_set_attribute(name.clone(), value, name_atom.clone(), namespace::Null, None, |attr| { + attr.deref().name == name_atom }); Ok(()) } @@ -638,7 +639,7 @@ impl<'a> ElementMethods for JSRef<'a, Element> { // Step 9. let value = self.parse_attribute(&namespace, local_name.as_slice(), value); - self.do_set_attribute(local_name.to_string(), value, name.to_string(), + self.do_set_attribute(local_name.to_string(), value, Atom::from_slice(name.as_slice()), namespace.clone(), prefix.map(|s| s.to_string()), |attr| { attr.deref().local_name.as_slice() == local_name && |