diff options
author | Anthony Ramine <n.oxyde@gmail.com> | 2016-07-04 12:35:19 +0200 |
---|---|---|
committer | Anthony Ramine <n.oxyde@gmail.com> | 2016-07-04 14:52:34 +0200 |
commit | 345eee92e8877c66764f4775ca477cc6ad73c366 (patch) | |
tree | f7f833992fa27ba86310c98cbd47cbc7db333fab | |
parent | 110fd6861007544b4f5b15d49da4f297c200bd7c (diff) | |
download | servo-345eee92e8877c66764f4775ca477cc6ad73c366.tar.gz servo-345eee92e8877c66764f4775ca477cc6ad73c366.zip |
Skip the root node in querySelectorAll
This accounts for https://github.com/whatwg/dom/issues/263.
4 files changed, 5 insertions, 14 deletions
diff --git a/components/script/dom/node.rs b/components/script/dom/node.rs index ec370dff293..871eb4b13ca 100644 --- a/components/script/dom/node.rs +++ b/components/script/dom/node.rs @@ -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)) } } } diff --git a/tests/wpt/metadata/dom/nodes/ParentNode-querySelector-All-xht.xht.ini b/tests/wpt/metadata/dom/nodes/ParentNode-querySelector-All-xht.xht.ini index 78163fe6d9d..ab64f999369 100644 --- a/tests/wpt/metadata/dom/nodes/ParentNode-querySelector-All-xht.xht.ini +++ b/tests/wpt/metadata/dom/nodes/ParentNode-querySelector-All-xht.xht.ini @@ -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 diff --git a/tests/wpt/metadata/dom/nodes/ParentNode-querySelector-All.html.ini b/tests/wpt/metadata/dom/nodes/ParentNode-querySelector-All.html.ini index a9382886b5e..a6e80b6a0f0 100644 --- a/tests/wpt/metadata/dom/nodes/ParentNode-querySelector-All.html.ini +++ b/tests/wpt/metadata/dom/nodes/ParentNode-querySelector-All.html.ini @@ -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 diff --git a/tests/wpt/mozilla/tests/mozilla/parentNode_querySelectorAll.html b/tests/wpt/mozilla/tests/mozilla/parentNode_querySelectorAll.html index b35eac12dc3..d08adcf4484 100644 --- a/tests/wpt/mozilla/tests/mozilla/parentNode_querySelectorAll.html +++ b/tests/wpt/mozilla/tests/mozilla/parentNode_querySelectorAll.html @@ -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() { |