diff options
-rw-r--r-- | components/script/dom/attr.rs | 14 | ||||
-rw-r--r-- | components/script/dom/element.rs | 4 |
2 files changed, 12 insertions, 6 deletions
diff --git a/components/script/dom/attr.rs b/components/script/dom/attr.rs index 7482e200d68..02945088bbb 100644 --- a/components/script/dom/attr.rs +++ b/components/script/dom/attr.rs @@ -110,10 +110,6 @@ impl Attr { let attr = Attr::new_inherited(local_name, value, name, namespace, prefix, owner); reflect_dom_object(box attr, &Window(*window), AttrBinding::Wrap) } - - pub fn local_name<'a>(&'a self) -> &'a Atom { - &self.local_name - } } impl<'a> AttrMethods for JSRef<'a, Attr> { @@ -151,6 +147,7 @@ impl<'a> AttrMethods for JSRef<'a, Attr> { pub trait AttrHelpers { fn set_value(&self, set_type: AttrSettingType, value: AttrValue); fn value<'a>(&'a self) -> Ref<'a, AttrValue>; + fn local_name<'a>(&'a self) -> &'a Atom; } impl<'a> AttrHelpers for JSRef<'a, Attr> { @@ -182,11 +179,16 @@ impl<'a> AttrHelpers for JSRef<'a, Attr> { fn value<'a>(&'a self) -> Ref<'a, AttrValue> { self.value.deref().borrow() } + + fn local_name<'a>(&'a self) -> &'a Atom { + &self.local_name + } } pub trait AttrHelpersForLayout { unsafe fn value_ref_forever(&self) -> &'static str; unsafe fn value_atom_forever(&self) -> Option<Atom>; + unsafe fn local_name_atom_forever(&self) -> Atom; } impl AttrHelpersForLayout for Attr { @@ -204,4 +206,8 @@ impl AttrHelpersForLayout for Attr { _ => None, } } + + unsafe fn local_name_atom_forever(&self) -> Atom { + self.local_name.clone() + } } diff --git a/components/script/dom/element.rs b/components/script/dom/element.rs index de421d7a10a..a4df58eb06e 100644 --- a/components/script/dom/element.rs +++ b/components/script/dom/element.rs @@ -178,7 +178,7 @@ impl RawLayoutElementHelpers for Element { let attrs: *const Vec<JS<Attr>> = mem::transmute(&self.attrs); (*attrs).iter().find(|attr: & &JS<Attr>| { let attr = attr.unsafe_get(); - name == (*attr).local_name().as_slice() && + name == (*attr).local_name_atom_forever().as_slice() && (*attr).namespace == *namespace }).map(|attr| { let attr = attr.unsafe_get(); @@ -193,7 +193,7 @@ impl RawLayoutElementHelpers for Element { let attrs: *const Vec<JS<Attr>> = mem::transmute(&self.attrs); (*attrs).iter().find(|attr: & &JS<Attr>| { let attr = attr.unsafe_get(); - name == (*attr).local_name().as_slice() && + name == (*attr).local_name_atom_forever().as_slice() && (*attr).namespace == *namespace }).and_then(|attr| { let attr = attr.unsafe_get(); |