From 63ed36cfce42ae4491da9b50ab05c626542c15f1 Mon Sep 17 00:00:00 2001 From: Bruno de Oliveira Abinader Date: Tue, 9 Dec 2014 13:28:43 -0400 Subject: [PATCH] Factor out the name handling in Element::{Get,Set,Remove}Attribute. --- components/script/dom/element.rs | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/components/script/dom/element.rs b/components/script/dom/element.rs index 00f481dcd324..275a72161ce6 100644 --- a/components/script/dom/element.rs +++ b/components/script/dom/element.rs @@ -459,6 +459,7 @@ impl LayoutElementHelpers for JS { pub trait ElementHelpers<'a> { fn html_element_in_html_document(self) -> bool; fn local_name(self) -> &'a Atom; + fn parsed_name(self, name: DOMString) -> DOMString; fn namespace(self) -> &'a Namespace; fn prefix(self) -> &'a Option; fn attrs(&self) -> Ref>>; @@ -481,6 +482,15 @@ impl<'a> ElementHelpers<'a> for JSRef<'a, Element> { &self.extended_deref().local_name } + // https://dom.spec.whatwg.org/#concept-element-attributes-get-by-name + fn parsed_name(self, name: DOMString) -> DOMString { + if self.html_element_in_html_document() { + name.as_slice().to_ascii_lower() + } else { + name + } + } + fn namespace(self) -> &'a Namespace { &self.extended_deref().namespace } @@ -902,11 +912,7 @@ impl<'a> ElementMethods for JSRef<'a, Element> { // http://dom.spec.whatwg.org/#dom-element-getattribute fn GetAttribute(self, name: DOMString) -> Option { - let name = if self.html_element_in_html_document() { - name.as_slice().to_ascii_lower() - } else { - name - }; + let name = self.parsed_name(name); self.get_attribute(ns!(""), &Atom::from_slice(name.as_slice())).root() .map(|s| s.Value()) } @@ -931,11 +937,7 @@ impl<'a> ElementMethods for JSRef<'a, Element> { } // Step 2. - let name = if self.html_element_in_html_document() { - name.as_slice().to_ascii_lower() - } else { - name - }; + let name = self.parsed_name(name); // Step 3-5. let name = Atom::from_slice(name.as_slice()); @@ -1012,11 +1014,7 @@ impl<'a> ElementMethods for JSRef<'a, Element> { // http://dom.spec.whatwg.org/#dom-element-removeattribute fn RemoveAttribute(self, name: DOMString) { - let name = if self.html_element_in_html_document() { - name.as_slice().to_ascii_lower() - } else { - name - }; + let name = self.parsed_name(name); self.remove_attribute(ns!(""), name.as_slice()) }