diff --git a/components/script/dom/domtokenlist.rs b/components/script/dom/domtokenlist.rs index 6f7fbf369ca..8d91540ca2f 100644 --- a/components/script/dom/domtokenlist.rs +++ b/components/script/dom/domtokenlist.rs @@ -114,4 +114,18 @@ impl<'a> DOMTokenListMethods for JSRef<'a, DOMTokenList> { element.set_atomic_tokenlist_attribute(&self.local_name, atoms); Ok(()) } + + // https://dom.spec.whatwg.org/#dom-domtokenlist-remove + fn Remove(self, tokens: Vec) -> ErrorResult { + let element = self.element.root(); + let mut atoms = element.get_tokenlist_attribute(&self.local_name); + for token in tokens.iter() { + let token = try!(self.check_token_exceptions(token.as_slice())); + atoms.iter().position(|atom| *atom == token).and_then(|index| { + atoms.remove(index) + }); + } + element.set_atomic_tokenlist_attribute(&self.local_name, atoms); + Ok(()) + } } diff --git a/components/script/dom/webidls/DOMTokenList.webidl b/components/script/dom/webidls/DOMTokenList.webidl index 67faa24b587..9a10a188310 100644 --- a/components/script/dom/webidls/DOMTokenList.webidl +++ b/components/script/dom/webidls/DOMTokenList.webidl @@ -12,8 +12,9 @@ interface DOMTokenList { boolean contains(DOMString token); [Throws] void add(DOMString... tokens); + [Throws] + void remove(DOMString... tokens); - //void remove(DOMString... tokens); //boolean toggle(DOMString token, optional boolean force); //stringifier; };