Skip to content

Commit

Permalink
Implement removeAttributeNode
Browse files Browse the repository at this point in the history
This commit implement removeAttributeNode, as described here:
https://dom.spec.whatwg.org/#dom-element-removeattributenode

See also #8724 and #8068.
  • Loading branch information
fitzgen authored and nox committed Feb 26, 2016
1 parent 9186819 commit d28c9a1
Show file tree
Hide file tree
Showing 5 changed files with 8 additions and 18 deletions.
6 changes: 6 additions & 0 deletions components/script/dom/element.rs
Expand Up @@ -1358,6 +1358,12 @@ impl ElementMethods for Element {
self.remove_attribute(&namespace, &local_name);
}

// https://dom.spec.whatwg.org/#dom-element-removeattributenode
fn RemoveAttributeNode(&self, attr: &Attr) -> Fallible<Root<Attr>> {
self.remove_first_matching_attribute(|a| a == attr)
.ok_or(Error::NotFound)
}

// https://dom.spec.whatwg.org/#dom-element-hasattribute
fn HasAttribute(&self, name: DOMString) -> bool {
self.GetAttribute(name).is_some()
Expand Down
2 changes: 2 additions & 0 deletions components/script/dom/webidls/Element.webidl
Expand Up @@ -49,6 +49,8 @@ interface Element : Node {
void setAttributeNS(DOMString? namespace, DOMString name, DOMString value);
void removeAttribute(DOMString name);
void removeAttributeNS(DOMString? namespace, DOMString localName);
[Throws]
Attr removeAttributeNode(Attr oldAttr);
boolean hasAttribute(DOMString name);
boolean hasAttributeNS(DOMString? namespace, DOMString localName);

Expand Down
9 changes: 0 additions & 9 deletions tests/wpt/metadata/dom/interfaces.html.ini
Expand Up @@ -108,9 +108,6 @@
[Element interface: operation hasAttributes()]
expected: FAIL

[Element interface: operation removeAttributeNode(Attr)]
expected: FAIL

[Element interface: operation query(DOMString)]
expected: FAIL

Expand All @@ -120,12 +117,6 @@
[Element interface: element must inherit property "hasAttributes" with the proper type (7)]
expected: FAIL

[Element interface: element must inherit property "removeAttributeNode" with the proper type (22)]
expected: FAIL

[Element interface: calling removeAttributeNode(Attr) on element with too few arguments must throw TypeError]
expected: FAIL

[Element interface: element must inherit property "query" with the proper type (34)]
expected: FAIL

Expand Down
3 changes: 0 additions & 3 deletions tests/wpt/metadata/dom/nodes/attributes.html.ini
@@ -1,8 +1,5 @@
[attributes.html]
type: testharness
[Basic functionality of removeAttributeNode]
expected: FAIL

[Own property names should only include all-lowercase qualified names for an HTML element in an HTML document]
expected: FAIL

6 changes: 0 additions & 6 deletions tests/wpt/metadata/html/dom/interfaces.html.ini
Expand Up @@ -1986,12 +1986,6 @@
[Element interface: document.createElement("noscript") must inherit property "hasAttributes" with the proper type (7)]
expected: FAIL
[Element interface: document.createElement("noscript") must inherit property "removeAttributeNode" with the proper type (22)]
expected: FAIL
[Element interface: calling removeAttributeNode(Attr) on document.createElement("noscript") with too few arguments must throw TypeError]
expected: FAIL
[Element interface: document.createElement("noscript") must inherit property "query" with the proper type (34)]
expected: FAIL
Expand Down

0 comments on commit d28c9a1

Please sign in to comment.