aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnthony Ramine <n.oxyde@gmail.com>2016-07-04 12:35:19 +0200
committerAnthony Ramine <n.oxyde@gmail.com>2016-07-04 14:52:34 +0200
commit345eee92e8877c66764f4775ca477cc6ad73c366 (patch)
treef7f833992fa27ba86310c98cbd47cbc7db333fab
parent110fd6861007544b4f5b15d49da4f297c200bd7c (diff)
downloadservo-345eee92e8877c66764f4775ca477cc6ad73c366.tar.gz
servo-345eee92e8877c66764f4775ca477cc6ad73c366.zip
Skip the root node in querySelectorAll
This accounts for https://github.com/whatwg/dom/issues/263.
-rw-r--r--components/script/dom/node.rs5
-rw-r--r--tests/wpt/metadata/dom/nodes/ParentNode-querySelector-All-xht.xht.ini6
-rw-r--r--tests/wpt/metadata/dom/nodes/ParentNode-querySelector-All.html.ini6
-rw-r--r--tests/wpt/mozilla/tests/mozilla/parentNode_querySelectorAll.html2
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() {