Skip the root node in querySelectorAll

This accounts for https://github.com/whatwg/dom/issues/263.
This commit is contained in:
Anthony Ramine 2016-07-04 12:35:19 +02:00
parent 110fd68610
commit 345eee92e8
4 changed files with 5 additions and 14 deletions

View file

@ -740,7 +740,10 @@ impl Node {
Err(()) => Err(Error::Syntax),
// Step 3.
Ok(selectors) => {
Ok(QuerySelectorIterator::new(self.traverse_preorder(), selectors))
let mut descendants = self.traverse_preorder();
// Skip the root of the tree.
assert!(&*descendants.next().unwrap() == self);
Ok(QuerySelectorIterator::new(descendants, selectors))
}
}
}

View file

@ -1,11 +1,5 @@
[ParentNode-querySelector-All-xht.xht]
type: testharness
[Detached Element.querySelectorAll tree order]
expected: FAIL
[In-document Element.querySelectorAll tree order]
expected: FAIL
[Document.querySelectorAll: Attribute whitespace-separated list selector, not matching class attribute with empty value: #attr-whitespace [class~=""\]]
expected: FAIL

View file

@ -1,11 +1,5 @@
[ParentNode-querySelector-All.html]
type: testharness
[Detached Element.querySelectorAll tree order]
expected: FAIL
[In-document Element.querySelectorAll tree order]
expected: FAIL
[Document.querySelectorAll: Attribute whitespace-separated list selector, not matching class attribute with empty value: #attr-whitespace [class~=""\]]
expected: FAIL

View file

@ -33,7 +33,7 @@
assert_equals(nodelist.length, 3);
nodelist = div.querySelectorAll("div:nth-of-type(1)");
assert_equals(nodelist.item(0), div);
assert_equals(nodelist.item(0), div.firstElementChild);
}, "Element");
test(function() {