Auto merge of #9763 - Tangresh:i9725, r=nox

Implement value for DOMTokenList

Fixes #9725

<!-- Reviewable:start -->
[<img src="https://reviewable.io/review_button.svg" height="40" alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/9763)
<!-- Reviewable:end -->
This commit is contained in:
bors-servo 2016-03-01 08:34:21 +05:30
commit 00628704ca
7 changed files with 44 additions and 15 deletions

View file

@ -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 // https://dom.spec.whatwg.org/#concept-dtl-serialize
fn Stringifier(&self) -> DOMString { fn Stringifier(&self) -> DOMString {
self.element.get_string_attribute(&self.local_name) self.element.get_string_attribute(&self.local_name)

View file

@ -19,5 +19,8 @@ interface DOMTokenList {
[Throws] [Throws]
boolean toggle(DOMString token, optional boolean force); boolean toggle(DOMString token, optional boolean force);
[Pure]
attribute DOMString value;
stringifier; stringifier;
}; };

View file

@ -28,7 +28,7 @@ interface Element : Node {
attribute DOMString id; attribute DOMString id;
[Pure] [Pure]
attribute DOMString className; attribute DOMString className;
[SameObject] [SameObject, PutForwards=value]
readonly attribute DOMTokenList classList; readonly attribute DOMTokenList classList;
[SameObject] [SameObject]

View file

@ -34514,6 +34514,12 @@
"deleted": [], "deleted": [],
"items": { "items": {
"testharness": { "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": [ "html/webappapis/scripting/events/event-handler-processing-algorithm.html": [
{ {
"path": "html/webappapis/scripting/events/event-handler-processing-algorithm.html", "path": "html/webappapis/scripting/events/event-handler-processing-algorithm.html",

View file

@ -162,18 +162,12 @@
[DOMSettableTokenList interface object name] [DOMSettableTokenList interface object name]
expected: FAIL expected: FAIL
[Element interface: attribute classList]
expected: FAIL
[DOMTokenList interface: operation replace(DOMString,DOMString)] [DOMTokenList interface: operation replace(DOMString,DOMString)]
expected: FAIL expected: FAIL
[DOMTokenList interface: operation supports(DOMString)] [DOMTokenList interface: operation supports(DOMString)]
expected: FAIL expected: FAIL
[DOMTokenList interface: attribute value]
expected: FAIL
[DOMTokenList interface: document.body.classList must inherit property "replace" with the proper type (6)] [DOMTokenList interface: document.body.classList must inherit property "replace" with the proper type (6)]
expected: FAIL expected: FAIL
@ -186,6 +180,3 @@
[DOMTokenList interface: calling supports(DOMString) on document.body.classList with too few arguments must throw TypeError] [DOMTokenList interface: calling supports(DOMString) on document.body.classList with too few arguments must throw TypeError]
expected: FAIL expected: FAIL
[DOMTokenList interface: document.body.classList must inherit property "value" with the proper type (8)]
expected: FAIL

View file

@ -1,5 +0,0 @@
[Element-classlist.html]
type: testharness
[classList must have [PutForwards=value\]]
expected: FAIL

View file

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