aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/namednodemap.rs
diff options
context:
space:
mode:
authorAnthony Ramine <n.oxyde@gmail.com>2015-04-07 19:08:26 +0200
committerAnthony Ramine <n.oxyde@gmail.com>2015-04-07 22:34:56 +0200
commiteea80034e611d0a5c92b5386d2758560ceec166b (patch)
treef6f6facb64de35b39f2725c243bd9138aaaa041c /components/script/dom/namednodemap.rs
parent70ccd8a02a9701c858e4af9d17e1aae541d9b6dd (diff)
downloadservo-eea80034e611d0a5c92b5386d2758560ceec166b.tar.gz
servo-eea80034e611d0a5c92b5386d2758560ceec166b.zip
Implement NamedNodeMap::removeNamedItem*()
Diffstat (limited to 'components/script/dom/namednodemap.rs')
-rw-r--r--components/script/dom/namednodemap.rs20
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();