Implement Element.getAttributeNames

This commit is contained in:
Anthony Ramine 2015-12-24 10:00:40 +01:00
parent 329a5b0c95
commit b8ae5897f1
7 changed files with 15 additions and 9 deletions

View file

@ -1228,6 +1228,11 @@ impl ElementMethods for Element {
self.attr_list.or_init(|| NamedNodeMap::new(&window_from_node(self), self)) self.attr_list.or_init(|| NamedNodeMap::new(&window_from_node(self), self))
} }
// https://dom.spec.whatwg.org/#dom-element-getattributenames
fn GetAttributeNames(&self) -> Vec<DOMString> {
self.attrs.borrow().iter().map(|attr| attr.Name()).collect()
}
// https://dom.spec.whatwg.org/#dom-element-getattribute // https://dom.spec.whatwg.org/#dom-element-getattribute
fn GetAttribute(&self, name: DOMString) -> Option<DOMString> { fn GetAttribute(&self, name: DOMString) -> Option<DOMString> {
self.GetAttributeNode(name) self.GetAttributeNode(name)

View file

@ -34,6 +34,8 @@ interface Element : Node {
[SameObject] [SameObject]
readonly attribute NamedNodeMap attributes; readonly attribute NamedNodeMap attributes;
[Pure] [Pure]
sequence<DOMString> getAttributeNames();
[Pure]
DOMString? getAttribute(DOMString name); DOMString? getAttribute(DOMString name);
[Pure] [Pure]
DOMString? getAttributeNS(DOMString? namespace, DOMString localName); DOMString? getAttributeNS(DOMString? namespace, DOMString localName);

View file

@ -120,19 +120,19 @@
[Element interface: element must inherit property "hasAttributes" with the proper type (7)] [Element interface: element must inherit property "hasAttributes" with the proper type (7)]
expected: FAIL expected: FAIL
[Element interface: element must inherit property "removeAttributeNode" with the proper type (21)] [Element interface: element must inherit property "removeAttributeNode" with the proper type (22)]
expected: FAIL expected: FAIL
[Element interface: calling removeAttributeNode(Attr) on element with too few arguments must throw TypeError] [Element interface: calling removeAttributeNode(Attr) on element with too few arguments must throw TypeError]
expected: FAIL expected: FAIL
[Element interface: element must inherit property "query" with the proper type (33)] [Element interface: element must inherit property "query" with the proper type (34)]
expected: FAIL expected: FAIL
[Element interface: calling query(DOMString) on element with too few arguments must throw TypeError] [Element interface: calling query(DOMString) on element with too few arguments must throw TypeError]
expected: FAIL expected: FAIL
[Element interface: element must inherit property "queryAll" with the proper type (34)] [Element interface: element must inherit property "queryAll" with the proper type (35)]
expected: FAIL expected: FAIL
[Element interface: calling queryAll(DOMString) on element with too few arguments must throw TypeError] [Element interface: calling queryAll(DOMString) on element with too few arguments must throw TypeError]

View file

@ -3,9 +3,6 @@
[Basic functionality of removeAttributeNode] [Basic functionality of removeAttributeNode]
expected: FAIL expected: FAIL
[getAttributeNames tests]
expected: FAIL
[Own property names should only include all-lowercase qualified names for an HTML element in an HTML document] [Own property names should only include all-lowercase qualified names for an HTML element in an HTML document]
expected: FAIL expected: FAIL

View file

@ -1986,19 +1986,19 @@
[Element interface: document.createElement("noscript") must inherit property "hasAttributes" with the proper type (7)] [Element interface: document.createElement("noscript") must inherit property "hasAttributes" with the proper type (7)]
expected: FAIL expected: FAIL
[Element interface: document.createElement("noscript") must inherit property "removeAttributeNode" with the proper type (21)] [Element interface: document.createElement("noscript") must inherit property "removeAttributeNode" with the proper type (22)]
expected: FAIL expected: FAIL
[Element interface: calling removeAttributeNode(Attr) on document.createElement("noscript") with too few arguments must throw TypeError] [Element interface: calling removeAttributeNode(Attr) on document.createElement("noscript") with too few arguments must throw TypeError]
expected: FAIL expected: FAIL
[Element interface: document.createElement("noscript") must inherit property "query" with the proper type (33)] [Element interface: document.createElement("noscript") must inherit property "query" with the proper type (34)]
expected: FAIL expected: FAIL
[Element interface: calling query(DOMString) on document.createElement("noscript") with too few arguments must throw TypeError] [Element interface: calling query(DOMString) on document.createElement("noscript") with too few arguments must throw TypeError]
expected: FAIL expected: FAIL
[Element interface: document.createElement("noscript") must inherit property "queryAll" with the proper type (34)] [Element interface: document.createElement("noscript") must inherit property "queryAll" with the proper type (35)]
expected: FAIL expected: FAIL
[Element interface: calling queryAll(DOMString) on document.createElement("noscript") with too few arguments must throw TypeError] [Element interface: calling queryAll(DOMString) on document.createElement("noscript") with too few arguments must throw TypeError]

View file

@ -287,6 +287,7 @@ interface Element : Node {
boolean hasAttributes(); boolean hasAttributes();
[SameObject] readonly attribute NamedNodeMap attributes; [SameObject] readonly attribute NamedNodeMap attributes;
sequence<DOMString> getAttributeNames();
DOMString? getAttribute(DOMString name); DOMString? getAttribute(DOMString name);
DOMString? getAttributeNS(DOMString? namespace, DOMString localName); DOMString? getAttributeNS(DOMString? namespace, DOMString localName);
void setAttribute(DOMString name, DOMString value); void setAttribute(DOMString name, DOMString value);

View file

@ -289,6 +289,7 @@ interface Element : Node {
boolean hasAttributes(); boolean hasAttributes();
[SameObject] readonly attribute NamedNodeMap attributes; [SameObject] readonly attribute NamedNodeMap attributes;
sequence<DOMString> getAttributeNames();
DOMString? getAttribute(DOMString name); DOMString? getAttribute(DOMString name);
DOMString? getAttributeNS(DOMString? namespace, DOMString localName); DOMString? getAttributeNS(DOMString? namespace, DOMString localName);
void setAttribute(DOMString name, DOMString value); void setAttribute(DOMString name, DOMString value);