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 @@ + + +