From 9686840ee7891eb84aeff0c38057b44bd5a41fe1 Mon Sep 17 00:00:00 2001 From: Bruno de Oliveira Abinader Date: Tue, 9 Dec 2014 13:28:43 -0400 Subject: [PATCH] Avoid duplicated code --- 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 d2ce2576d3e..1c069ea3aa3 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 } @@ -920,11 +930,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()) } @@ -949,11 +955,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()); @@ -1030,11 +1032,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()) }