diff options
author | Anthony Ramine <n.oxyde@gmail.com> | 2015-04-07 19:08:26 +0200 |
---|---|---|
committer | Anthony Ramine <n.oxyde@gmail.com> | 2015-04-07 22:34:56 +0200 |
commit | eea80034e611d0a5c92b5386d2758560ceec166b (patch) | |
tree | f6f6facb64de35b39f2725c243bd9138aaaa041c /components/script/dom/namednodemap.rs | |
parent | 70ccd8a02a9701c858e4af9d17e1aae541d9b6dd (diff) | |
download | servo-eea80034e611d0a5c92b5386d2758560ceec166b.tar.gz servo-eea80034e611d0a5c92b5386d2758560ceec166b.zip |
Implement NamedNodeMap::removeNamedItem*()
Diffstat (limited to 'components/script/dom/namednodemap.rs')
-rw-r--r-- | components/script/dom/namednodemap.rs | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/components/script/dom/namednodemap.rs b/components/script/dom/namednodemap.rs index ed74c7aad09..50b24aafcc9 100644 --- a/components/script/dom/namednodemap.rs +++ b/components/script/dom/namednodemap.rs @@ -5,6 +5,7 @@ use dom::attr::Attr; use dom::bindings::codegen::Bindings::NamedNodeMapBinding; use dom::bindings::codegen::Bindings::NamedNodeMapBinding::NamedNodeMapMethods; +use dom::bindings::error::{Error, Fallible}; use dom::bindings::global::GlobalRef; use dom::bindings::js::{JS, JSRef, Temporary}; use dom::bindings::utils::{Reflector, reflect_dom_object}; @@ -73,6 +74,25 @@ impl<'a> NamedNodeMapMethods for JSRef<'a, NamedNodeMap> { owner.get_attribute(&ns, &Atom::from_slice(&local_name)) } + // https://dom.spec.whatwg.org/#dom-namednodemap-removenameditem + fn RemoveNamedItem(self, name: DOMString) -> Fallible<Temporary<Attr>> { + let owner = self.owner.root(); + // FIXME(https://github.com/rust-lang/rust/issues/23338) + let owner = owner.r(); + let name = owner.parsed_name(name); + owner.remove_attribute_by_name(&Atom::from_slice(&name)).ok_or(Error::NotFound) + } + + // https://dom.spec.whatwg.org/#dom-namednodemap-removenameditemns + fn RemoveNamedItemNS(self, namespace: Option<DOMString>, local_name: DOMString) + -> Fallible<Temporary<Attr>> { + let owner = self.owner.root(); + // FIXME(https://github.com/rust-lang/rust/issues/23338) + let owner = owner.r(); + let ns = namespace::from_domstring(namespace); + owner.remove_attribute(&ns, &Atom::from_slice(&local_name)).ok_or(Error::NotFound) + } + fn IndexedGetter(self, index: u32, found: &mut bool) -> Option<Temporary<Attr>> { let item = self.Item(index); *found = item.is_some(); |