aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDominik Menzi <dmenzi@tangresh.ch>2016-02-24 23:10:12 +0100
committerDominik Menzi <dmenzi@tangresh.ch>2016-02-29 16:07:03 +0100
commitb29b2d6d7373337bd1601bb97275429684a77007 (patch)
treeb5b9302f34d6b952a8b7bb545d990e1e5c77bc94
parent39502d6bed76343930b9d6409203e9c2e9ff09fc (diff)
downloadservo-b29b2d6d7373337bd1601bb97275429684a77007.tar.gz
servo-b29b2d6d7373337bd1601bb97275429684a77007.zip
Implement value for DOMTokenList
-rw-r--r--components/script/dom/domtokenlist.rs10
-rw-r--r--components/script/dom/webidls/DOMTokenList.webidl3
-rw-r--r--components/script/dom/webidls/Element.webidl2
-rw-r--r--tests/wpt/metadata/MANIFEST.json6
-rw-r--r--tests/wpt/metadata/dom/interfaces.html.ini9
-rw-r--r--tests/wpt/metadata/dom/nodes/Element-classlist.html.ini5
-rw-r--r--tests/wpt/web-platform-tests/dom/lists/DOMTokenList-value.html24
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>