From 47f43d45a759d7aa8c4c1971d5588bbc66fd67b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Naz=C4=B1m=20Can=20Alt=C4=B1nova?= Date: Fri, 22 Apr 2016 15:18:08 +0300 Subject: [PATCH] Implement Element::hasAttributes --- components/script/dom/element.rs | 5 +++ components/script/dom/webidls/Element.webidl | 2 + tests/wpt/metadata/MANIFEST.json | 8 ++++ tests/wpt/metadata/dom/interfaces.html.ini | 6 --- .../wpt/metadata/html/dom/interfaces.html.ini | 3 -- .../dom/nodes/Element-hasAttributes.html | 40 +++++++++++++++++++ 6 files changed, 55 insertions(+), 9 deletions(-) create mode 100644 tests/wpt/web-platform-tests/dom/nodes/Element-hasAttributes.html diff --git a/components/script/dom/element.rs b/components/script/dom/element.rs index 1844bd3e426..e363baefbbc 100644 --- a/components/script/dom/element.rs +++ b/components/script/dom/element.rs @@ -1335,6 +1335,11 @@ impl ElementMethods for Element { self.attr_list.or_init(|| NamedNodeMap::new(&window_from_node(self), self)) } + // https://dom.spec.whatwg.org/#dom-element-hasattributes + fn HasAttributes(&self) -> bool { + !self.attrs.borrow().is_empty() + } + // https://dom.spec.whatwg.org/#dom-element-getattributenames fn GetAttributeNames(&self) -> Vec { self.attrs.borrow().iter().map(|attr| attr.Name()).collect() diff --git a/components/script/dom/webidls/Element.webidl b/components/script/dom/webidls/Element.webidl index f173f6afdd0..bec84acc8ce 100644 --- a/components/script/dom/webidls/Element.webidl +++ b/components/script/dom/webidls/Element.webidl @@ -35,6 +35,8 @@ interface Element : Node { [Pure] sequence getAttributeNames(); [Pure] + boolean hasAttributes(); + [Pure] DOMString? getAttribute(DOMString name); [Pure] DOMString? getAttributeNS(DOMString? namespace, DOMString localName); diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json index 9004a69dcaa..bfb83729c78 100644 --- a/tests/wpt/metadata/MANIFEST.json +++ b/tests/wpt/metadata/MANIFEST.json @@ -35228,6 +35228,14 @@ "url": "/html/rendering/replaced-elements/embedded-content-rendering-rules/canvas_scale.html" } ] + }, + "testharness": { + "dom/nodes/Element-hasAttributes.html": [ + { + "path": "dom/nodes/Element-hasAttributes.html", + "url": "/dom/nodes/Element-hasAttributes.html" + } + ] } }, "reftest_nodes": { diff --git a/tests/wpt/metadata/dom/interfaces.html.ini b/tests/wpt/metadata/dom/interfaces.html.ini index 1298cc1e92b..7528625d7b4 100644 --- a/tests/wpt/metadata/dom/interfaces.html.ini +++ b/tests/wpt/metadata/dom/interfaces.html.ini @@ -102,9 +102,6 @@ [DocumentFragment interface: calling queryAll(DOMString) on document.createDocumentFragment() with too few arguments must throw TypeError] expected: FAIL - [Element interface: operation hasAttributes()] - expected: FAIL - [Element interface: operation query(DOMString)] expected: FAIL @@ -303,9 +300,6 @@ [Element interface: element must inherit property "slot" with the proper type (7)] expected: FAIL - [Element interface: element must inherit property "hasAttributes" with the proper type (8)] - expected: FAIL - [Element interface: element must inherit property "attachShadow" with the proper type (24)] expected: FAIL diff --git a/tests/wpt/metadata/html/dom/interfaces.html.ini b/tests/wpt/metadata/html/dom/interfaces.html.ini index f7f6399a95e..1acedab90ec 100644 --- a/tests/wpt/metadata/html/dom/interfaces.html.ini +++ b/tests/wpt/metadata/html/dom/interfaces.html.ini @@ -1956,9 +1956,6 @@ [HTMLElement interface: document.createElement("noscript") must inherit property "onwaiting" with the proper type (94)] expected: FAIL - [Element interface: document.createElement("noscript") must inherit property "hasAttributes" with the proper type (7)] - expected: FAIL - [Element interface: document.createElement("noscript") must inherit property "query" with the proper type (34)] expected: FAIL diff --git a/tests/wpt/web-platform-tests/dom/nodes/Element-hasAttributes.html b/tests/wpt/web-platform-tests/dom/nodes/Element-hasAttributes.html new file mode 100644 index 00000000000..fbb9c233b70 --- /dev/null +++ b/tests/wpt/web-platform-tests/dom/nodes/Element-hasAttributes.html @@ -0,0 +1,40 @@ + + + + + + + + +
+

+ + +