diff options
author | Ms2ger <ms2ger@gmail.com> | 2014-12-23 09:53:12 +0100 |
---|---|---|
committer | Ms2ger <ms2ger@gmail.com> | 2014-12-23 09:53:12 +0100 |
commit | dc63735ca7da94347469301857999f7914c9bc19 (patch) | |
tree | 036a7d62d22473a6bf76bc12831382f59ef96071 /components/script/dom/domstringmap.rs | |
parent | b83b4932dac9c0f4fbd6ad6a5b5a0232362c504b (diff) | |
download | servo-dc63735ca7da94347469301857999f7914c9bc19.tar.gz servo-dc63735ca7da94347469301857999f7914c9bc19.zip |
Revert PR #4038 for causing WPT failures.
Diffstat (limited to 'components/script/dom/domstringmap.rs')
-rw-r--r-- | components/script/dom/domstringmap.rs | 37 |
1 files changed, 16 insertions, 21 deletions
diff --git a/components/script/dom/domstringmap.rs b/components/script/dom/domstringmap.rs index ff4990eb5f6..26218445c80 100644 --- a/components/script/dom/domstringmap.rs +++ b/components/script/dom/domstringmap.rs @@ -2,56 +2,51 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ +use dom::bindings::cell::DOMRefCell; use dom::bindings::codegen::Bindings::DOMStringMapBinding; use dom::bindings::codegen::Bindings::DOMStringMapBinding::DOMStringMapMethods; -use dom::bindings::error::ErrorResult; use dom::bindings::global::GlobalRef; -use dom::bindings::js::{JS, JSRef, Temporary}; +use dom::bindings::js::{JSRef, Temporary}; use dom::bindings::utils::{Reflectable, Reflector, reflect_dom_object}; -use dom::node::window_from_node; -use dom::htmlelement::{HTMLElement, HTMLElementCustomAttributeHelpers}; use servo_util::str::DOMString; +use std::collections::HashMap; + #[dom_struct] pub struct DOMStringMap { + map: DOMRefCell<HashMap<DOMString, DOMString>>, reflector_: Reflector, - element: JS<HTMLElement>, } impl DOMStringMap { - fn new_inherited(element: JSRef<HTMLElement>) -> DOMStringMap { + fn new_inherited() -> DOMStringMap { DOMStringMap { + map: DOMRefCell::new(HashMap::new()), reflector_: Reflector::new(), - element: JS::from_rooted(element), } } - pub fn new(element: JSRef<HTMLElement>) -> Temporary<DOMStringMap> { - let window = window_from_node(element).root(); - reflect_dom_object(box DOMStringMap::new_inherited(element), - GlobalRef::Window(window.root_ref()), DOMStringMapBinding::Wrap) + pub fn new(global: GlobalRef) -> Temporary<DOMStringMap> { + reflect_dom_object(box DOMStringMap::new_inherited(), + global, DOMStringMapBinding::Wrap) } } -// https://html.spec.whatwg.org/#domstringmap impl<'a> DOMStringMapMethods for JSRef<'a, DOMStringMap> { - fn NamedCreator(self, name: DOMString, value: DOMString) -> ErrorResult { - self.NamedSetter(name, value) + fn NamedCreator(self, name: DOMString, value: DOMString) { + self.map.borrow_mut().insert(name, value); } fn NamedDeleter(self, name: DOMString) { - let element = self.element.root(); - element.delete_custom_attr(name) + self.map.borrow_mut().remove(&name); } - fn NamedSetter(self, name: DOMString, value: DOMString) -> ErrorResult { - let element = self.element.root(); - element.set_custom_attr(name, value) + fn NamedSetter(self, name: DOMString, value: DOMString) { + self.map.borrow_mut().insert(name, value); } fn NamedGetter(self, name: DOMString, found: &mut bool) -> DOMString { - let element = self.element.root(); - match element.get_custom_attr(name) { + match self.map.borrow().get(&name) { Some(value) => { *found = true; value.clone() |