aboutsummaryrefslogtreecommitdiffstats
path: root/src/components/script/dom/element.rs
diff options
context:
space:
mode:
authorGlenn Watson <gw@intuitionlibrary.com>2014-07-24 11:33:59 +1000
committerGlenn Watson <gw@intuitionlibrary.com>2014-07-24 11:33:59 +1000
commit036bd29eadd56fc65271f835978d81ece129da94 (patch)
tree17cda6039c662b0523686f6dce56ae1fe738ebe8 /src/components/script/dom/element.rs
parent5808cb302d5b1ea1f7f4de81fc9e278a644ec1fd (diff)
downloadservo-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.rs19
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 &&