diff options
author | Dominik Menzi <dmenzi@tangresh.ch> | 2016-02-24 23:10:12 +0100 |
---|---|---|
committer | Dominik Menzi <dmenzi@tangresh.ch> | 2016-02-29 16:07:03 +0100 |
commit | b29b2d6d7373337bd1601bb97275429684a77007 (patch) | |
tree | b5b9302f34d6b952a8b7bb545d990e1e5c77bc94 | |
parent | 39502d6bed76343930b9d6409203e9c2e9ff09fc (diff) | |
download | servo-b29b2d6d7373337bd1601bb97275429684a77007.tar.gz servo-b29b2d6d7373337bd1601bb97275429684a77007.zip |
Implement value for DOMTokenList
-rw-r--r-- | components/script/dom/domtokenlist.rs | 10 | ||||
-rw-r--r-- | components/script/dom/webidls/DOMTokenList.webidl | 3 | ||||
-rw-r--r-- | components/script/dom/webidls/Element.webidl | 2 | ||||
-rw-r--r-- | tests/wpt/metadata/MANIFEST.json | 6 | ||||
-rw-r--r-- | tests/wpt/metadata/dom/interfaces.html.ini | 9 | ||||
-rw-r--r-- | tests/wpt/metadata/dom/nodes/Element-classlist.html.ini | 5 | ||||
-rw-r--r-- | tests/wpt/web-platform-tests/dom/lists/DOMTokenList-value.html | 24 |
7 files changed, 44 insertions, 15 deletions
diff --git a/components/script/dom/domtokenlist.rs b/components/script/dom/domtokenlist.rs index fd1644f17c7..f74887d0899 100644 --- a/components/script/dom/domtokenlist.rs +++ b/components/script/dom/domtokenlist.rs @@ -129,6 +129,16 @@ impl DOMTokenListMethods for DOMTokenList { } } + // https://dom.spec.whatwg.org/#dom-domtokenlist-value + fn Value(&self) -> DOMString { + self.element.get_string_attribute(&self.local_name) + } + + // https://dom.spec.whatwg.org/#dom-domtokenlist-value + fn SetValue(&self, value: DOMString) { + self.element.set_tokenlist_attribute(&self.local_name, value); + } + // https://dom.spec.whatwg.org/#concept-dtl-serialize fn Stringifier(&self) -> DOMString { self.element.get_string_attribute(&self.local_name) diff --git a/components/script/dom/webidls/DOMTokenList.webidl b/components/script/dom/webidls/DOMTokenList.webidl index 746bc8ac521..c9125285f74 100644 --- a/components/script/dom/webidls/DOMTokenList.webidl +++ b/components/script/dom/webidls/DOMTokenList.webidl @@ -19,5 +19,8 @@ interface DOMTokenList { [Throws] boolean toggle(DOMString token, optional boolean force); + [Pure] + attribute DOMString value; + stringifier; }; diff --git a/components/script/dom/webidls/Element.webidl b/components/script/dom/webidls/Element.webidl index 009fb999856..900c2eb24dc 100644 --- a/components/script/dom/webidls/Element.webidl +++ b/components/script/dom/webidls/Element.webidl @@ -28,7 +28,7 @@ interface Element : Node { attribute DOMString id; [Pure] attribute DOMString className; - [SameObject] + [SameObject, PutForwards=value] readonly attribute DOMTokenList classList; [SameObject] diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json index 1085d8668a7..98aaa6d001e 100644 --- a/tests/wpt/metadata/MANIFEST.json +++ b/tests/wpt/metadata/MANIFEST.json @@ -34514,6 +34514,12 @@ "deleted": [], "items": { "testharness": { + "dom/lists/DOMTokenList-value.html": [ + { + "path": "dom/lists/DOMTokenList-value.html", + "url": "/dom/lists/DOMTokenList-value.html" + } + ], "html/webappapis/scripting/events/event-handler-processing-algorithm.html": [ { "path": "html/webappapis/scripting/events/event-handler-processing-algorithm.html", diff --git a/tests/wpt/metadata/dom/interfaces.html.ini b/tests/wpt/metadata/dom/interfaces.html.ini index 2d0458f453a..c9c0283d992 100644 --- a/tests/wpt/metadata/dom/interfaces.html.ini +++ b/tests/wpt/metadata/dom/interfaces.html.ini @@ -162,18 +162,12 @@ [DOMSettableTokenList interface object name] expected: FAIL - [Element interface: attribute classList] - expected: FAIL - [DOMTokenList interface: operation replace(DOMString,DOMString)] expected: FAIL [DOMTokenList interface: operation supports(DOMString)] expected: FAIL - [DOMTokenList interface: attribute value] - expected: FAIL - [DOMTokenList interface: document.body.classList must inherit property "replace" with the proper type (6)] expected: FAIL @@ -186,6 +180,3 @@ [DOMTokenList interface: calling supports(DOMString) on document.body.classList with too few arguments must throw TypeError] expected: FAIL - [DOMTokenList interface: document.body.classList must inherit property "value" with the proper type (8)] - expected: FAIL - diff --git a/tests/wpt/metadata/dom/nodes/Element-classlist.html.ini b/tests/wpt/metadata/dom/nodes/Element-classlist.html.ini deleted file mode 100644 index bbaaad3e9e9..00000000000 --- a/tests/wpt/metadata/dom/nodes/Element-classlist.html.ini +++ /dev/null @@ -1,5 +0,0 @@ -[Element-classlist.html] - type: testharness - [classList must have [PutForwards=value\]] - expected: FAIL - diff --git a/tests/wpt/web-platform-tests/dom/lists/DOMTokenList-value.html b/tests/wpt/web-platform-tests/dom/lists/DOMTokenList-value.html new file mode 100644 index 00000000000..b0e39111d91 --- /dev/null +++ b/tests/wpt/web-platform-tests/dom/lists/DOMTokenList-value.html @@ -0,0 +1,24 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title>DOMTokenList value</title> +<link rel=help href="https://dom.spec.whatwg.org/#dom-domtokenlist-value"> +<link rel=author title=Tangresh href="mailto:dmenzi@tangresh.ch"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<span class=" a a b "></span> +<script> +test(function() { + assert_equals(String(document.createElement("span").classList.value), "", + "classList.value should return the empty list for an undefined class attribute"); + var span = document.querySelector("span"); + assert_equals(span.classList.value, " a a b ", + "value should return the literal value"); + span.classList.value = " foo bar foo "; + assert_equals(span.classList.value, " foo bar foo ", + "assigning value should set the literal value"); + assert_equals(span.classList.length, 2, + "length should be the number of tokens"); + assert_class_string(span.classList, "DOMTokenList"); + assert_class_string(span.classList.value, "String"); +}); +</script> |