Make DOMTokenList.contains not throw anymore

This commit is contained in:
Guillaume Gomez 2016-06-03 17:54:35 +02:00
parent 51d41c5161
commit 66b0568bb3
5 changed files with 9 additions and 70 deletions

View file

@ -70,15 +70,14 @@ impl DOMTokenListMethods for DOMTokenList {
}
// https://dom.spec.whatwg.org/#dom-domtokenlist-contains
fn Contains(&self, token: DOMString) -> Fallible<bool> {
self.check_token_exceptions(&token).map(|token| {
self.attribute().map_or(false, |attr| {
let attr = attr.r();
attr.value()
.as_tokens()
.iter()
.any(|atom: &Atom| *atom == token)
})
fn Contains(&self, token: DOMString) -> bool {
let token = Atom::from(token);
self.attribute().map_or(false, |attr| {
let attr = attr.r();
attr.value()
.as_tokens()
.iter()
.any(|atom: &Atom| *atom == token)
})
}

View file

@ -9,7 +9,7 @@ interface DOMTokenList {
[Pure]
getter DOMString? item(unsigned long index);
[Pure, Throws]
[Pure]
boolean contains(DOMString token);
[Throws]
void add(DOMString... tokens);

View file

@ -1,8 +0,0 @@
[Element-classlist.html]
type: testharness
[.contains(empty_string) must return false]
expected: FAIL
[.contains(string_with_spaces) must return false]
expected: FAIL

View file

@ -6286,12 +6286,6 @@
"url": "/_mozilla/mozilla/document_url.html"
}
],
"mozilla/domtokenlist.html": [
{
"path": "mozilla/domtokenlist.html",
"url": "/_mozilla/mozilla/domtokenlist.html"
}
],
"mozilla/element_attribute.html": [
{
"path": "mozilla/element_attribute.html",

View file

@ -1,46 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script>
test(function() {
var div = document.createElement("div");
var classList = div.classList;
assert_equals(classList.length, 0);
assert_equals(classList.item(0), null);
assert_throws(null, function () {
classList.contains("");
});
assert_throws(null, function () {
classList.contains(" ");
});
var list = ["foo", " foo", "foo ", " foo ", " foo "];
for(var i = 0; i < list.length; i++) {
div.className = list[i];
assert_equals(div.className, list[i]);
assert_equals(classList.length, 1);
assert_equals(classList.item(0), "foo");
assert_equals(classList.item(1), null);
assert_equals(classList.contains("foo"), true);
assert_equals(classList.contains("bar"), false);
}
list = ["foo bar", " foo bar", " foo bar ", " foo bar "];
for(var i = 0; i < list.length; i++) {
div.className = list[i];
assert_equals(div.className, list[i]);
assert_equals(classList.length, 2);
assert_equals(classList.item(0), "foo");
assert_equals(classList.item(1), "bar");
assert_equals(classList.item(2), null);
assert_equals(classList.contains("foo"), true);
assert_equals(classList.contains("bar"), true);
assert_equals(classList.contains("baz"), false);
}
});
</script>
</head>
</html>