Remove support for >> descendant combinator syntax
authorantti@apple.com <antti@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 8 Sep 2017 16:35:45 +0000 (16:35 +0000)
committerantti@apple.com <antti@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 8 Sep 2017 16:35:45 +0000 (16:35 +0000)
https://bugs.webkit.org/show_bug.cgi?id=175765

Reviewed by Sam Weinig.

LayoutTests/imported/w3c:

Tests for these have been removed in WPT master, just update expectations until new version is imported.

* web-platform-tests/dom/nodes/Element-matches-expected.txt:
* web-platform-tests/dom/nodes/Element-webkitMatchesSelector-expected.txt:
* web-platform-tests/dom/nodes/ParentNode-querySelector-All-expected.txt:
* web-platform-tests/dom/nodes/ParentNode-querySelector-All-xht-expected.txt:

Source/WebCore:

This is an alternative syntax for the normal descendant combinator (just space) that was
advertised as being consistent with > (child combinator) and >>> (shadow piercing combinator).
The latter has been killed so it is not consistent with anything anymore.

No other engine besides WebKit has implemented this and the WPT tests have been removed
(in https://github.com/w3c/web-platform-tests/pull/6785). Full removal from spec is still
open (https://github.com/w3c/csswg-drafts/issues/641) but we shouldn't encourage adoption of
this pointless feature.

While this has shipped the compatibility risk is low as no other engine implemented it and
there were no incentives to use it over the standard syntax.

* css/CSSSelector.cpp:
(WebCore::CSSSelector::selectorText const):
* css/CSSSelector.h:
(WebCore::CSSSelector::hasDescendantRelation const):
* css/SelectorChecker.cpp:
(WebCore::SelectorChecker::matchRecursively const):
* css/SelectorFilter.cpp:
(WebCore::SelectorFilter::collectIdentifierHashes):
* css/parser/CSSParserSelector.cpp:
(WebCore::CSSParserSelector::appendTagHistory):
* css/parser/CSSParserSelector.h:
* css/parser/CSSSelectorParser.cpp:
(WebCore::isDescendantCombinator):
(WebCore::CSSSelectorParser::consumeCombinator):
* cssjit/SelectorCompiler.cpp:
(WebCore::SelectorCompiler::fragmentRelationForSelectorRelation):

LayoutTests:

* fast/css/ancestor-of-hovered-element-removed.html:
* fast/css/css-selector-text-expected.txt:
* fast/css/css-selector-text.html:
* fast/css/css-set-selector-text-expected.txt:
* fast/css/css-set-selector-text.html:
* fast/css/currentColor-value-style-update.html:
* fast/css/descendant-combinator-doubled-child-syntax-styling-expected.html: Removed.
* fast/css/descendant-combinator-doubled-child-syntax-styling.html: Removed.
* fast/css/parsing-css-attribute-case-insensitive-value-1-expected.txt:
* fast/css/parsing-css-attribute-case-insensitive-value-1.html:
* fast/css/parsing-css-attribute-case-insensitive-value-4-expected.txt:
* fast/css/parsing-css-attribute-case-insensitive-value-4.html:
* fast/css/parsing-css-descendant-combinator-doubled-child-syntax-expected.txt: Removed.
* fast/css/parsing-css-descendant-combinator-doubled-child-syntax.html: Removed.
* fast/selectors/case-insensitive-attribute-register-requirement-2.html:
* fast/selectors/element-closest-descendant-combinator-doubled-child-syntax-expected.txt: Removed.
* fast/selectors/element-closest-descendant-combinator-doubled-child-syntax.html: Removed.
* fast/selectors/element-matches-attribute-ascii-case-insensitive-html.html:
* fast/selectors/element-matches-descendant-combinator-doubled-child-syntax-expected.txt: Removed.
* fast/selectors/element-matches-descendant-combinator-doubled-child-syntax.html: Removed.
* fast/selectors/id-attribute-querySelector-used-as-id-selector-quirks.html:
* fast/selectors/id-attribute-querySelector-used-as-id-selector.html:
* fast/selectors/nth-child-matching-first.html:
* fast/selectors/nth-last-child-matching-first.html:
* fast/selectors/querySelector-attribute-ascii-case-insensitive-html.html:
* fast/selectors/querySelector-descendant-combinator-doubled-child-syntax-expected.txt: Removed.
* fast/selectors/querySelector-descendant-combinator-doubled-child-syntax.html: Removed.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@221788 268f45cc-cd09-0410-ab3c-d52691b4dbfc

50 files changed:
LayoutTests/ChangeLog
LayoutTests/fast/css/ancestor-of-hovered-element-removed.html
LayoutTests/fast/css/css-selector-text-expected.txt
LayoutTests/fast/css/css-selector-text.html
LayoutTests/fast/css/css-set-selector-text-expected.txt
LayoutTests/fast/css/css-set-selector-text.html
LayoutTests/fast/css/currentColor-value-style-update-expected.txt
LayoutTests/fast/css/currentColor-value-style-update.html
LayoutTests/fast/css/descendant-combinator-doubled-child-syntax-styling-expected.html [deleted file]
LayoutTests/fast/css/descendant-combinator-doubled-child-syntax-styling.html [deleted file]
LayoutTests/fast/css/parsing-css-attribute-case-insensitive-value-1-expected.txt
LayoutTests/fast/css/parsing-css-attribute-case-insensitive-value-1.html
LayoutTests/fast/css/parsing-css-attribute-case-insensitive-value-4-expected.txt
LayoutTests/fast/css/parsing-css-attribute-case-insensitive-value-4.html
LayoutTests/fast/css/parsing-css-descendant-combinator-doubled-child-syntax-expected.txt [deleted file]
LayoutTests/fast/css/parsing-css-descendant-combinator-doubled-child-syntax.html [deleted file]
LayoutTests/fast/selectors/case-insensitive-attribute-register-requirement-2-expected.txt
LayoutTests/fast/selectors/case-insensitive-attribute-register-requirement-2.html
LayoutTests/fast/selectors/element-closest-descendant-combinator-doubled-child-syntax-expected.txt [deleted file]
LayoutTests/fast/selectors/element-closest-descendant-combinator-doubled-child-syntax.html [deleted file]
LayoutTests/fast/selectors/element-matches-attribute-ascii-case-insensitive-html-expected.txt
LayoutTests/fast/selectors/element-matches-attribute-ascii-case-insensitive-html.html
LayoutTests/fast/selectors/element-matches-descendant-combinator-doubled-child-syntax-expected.txt [deleted file]
LayoutTests/fast/selectors/element-matches-descendant-combinator-doubled-child-syntax.html [deleted file]
LayoutTests/fast/selectors/id-attribute-querySelector-used-as-id-selector-expected.txt
LayoutTests/fast/selectors/id-attribute-querySelector-used-as-id-selector-quirks-expected.txt
LayoutTests/fast/selectors/id-attribute-querySelector-used-as-id-selector-quirks.html
LayoutTests/fast/selectors/id-attribute-querySelector-used-as-id-selector.html
LayoutTests/fast/selectors/nth-child-matching-first-expected.txt
LayoutTests/fast/selectors/nth-child-matching-first.html
LayoutTests/fast/selectors/nth-last-child-matching-first-expected.txt
LayoutTests/fast/selectors/nth-last-child-matching-first.html
LayoutTests/fast/selectors/querySelector-attribute-ascii-case-insensitive-html-expected.txt
LayoutTests/fast/selectors/querySelector-attribute-ascii-case-insensitive-html.html
LayoutTests/fast/selectors/querySelector-descendant-combinator-doubled-child-syntax-expected.txt [deleted file]
LayoutTests/fast/selectors/querySelector-descendant-combinator-doubled-child-syntax.html [deleted file]
LayoutTests/imported/w3c/ChangeLog
LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-matches-expected.txt
LayoutTests/imported/w3c/web-platform-tests/dom/nodes/Element-webkitMatchesSelector-expected.txt
LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ParentNode-querySelector-All-expected.txt
LayoutTests/imported/w3c/web-platform-tests/dom/nodes/ParentNode-querySelector-All-xht-expected.txt
Source/WebCore/ChangeLog
Source/WebCore/css/CSSSelector.cpp
Source/WebCore/css/CSSSelector.h
Source/WebCore/css/SelectorChecker.cpp
Source/WebCore/css/SelectorFilter.cpp
Source/WebCore/css/parser/CSSParserSelector.cpp
Source/WebCore/css/parser/CSSParserSelector.h
Source/WebCore/css/parser/CSSSelectorParser.cpp
Source/WebCore/cssjit/SelectorCompiler.cpp

index ff8f887..e329f98 100644 (file)
@@ -1,3 +1,38 @@
+2017-09-08  Antti Koivisto  <antti@apple.com>
+
+        Remove support for >> descendant combinator syntax
+        https://bugs.webkit.org/show_bug.cgi?id=175765
+
+        Reviewed by Sam Weinig.
+
+        * fast/css/ancestor-of-hovered-element-removed.html:
+        * fast/css/css-selector-text-expected.txt:
+        * fast/css/css-selector-text.html:
+        * fast/css/css-set-selector-text-expected.txt:
+        * fast/css/css-set-selector-text.html:
+        * fast/css/currentColor-value-style-update.html:
+        * fast/css/descendant-combinator-doubled-child-syntax-styling-expected.html: Removed.
+        * fast/css/descendant-combinator-doubled-child-syntax-styling.html: Removed.
+        * fast/css/parsing-css-attribute-case-insensitive-value-1-expected.txt:
+        * fast/css/parsing-css-attribute-case-insensitive-value-1.html:
+        * fast/css/parsing-css-attribute-case-insensitive-value-4-expected.txt:
+        * fast/css/parsing-css-attribute-case-insensitive-value-4.html:
+        * fast/css/parsing-css-descendant-combinator-doubled-child-syntax-expected.txt: Removed.
+        * fast/css/parsing-css-descendant-combinator-doubled-child-syntax.html: Removed.
+        * fast/selectors/case-insensitive-attribute-register-requirement-2.html:
+        * fast/selectors/element-closest-descendant-combinator-doubled-child-syntax-expected.txt: Removed.
+        * fast/selectors/element-closest-descendant-combinator-doubled-child-syntax.html: Removed.
+        * fast/selectors/element-matches-attribute-ascii-case-insensitive-html.html:
+        * fast/selectors/element-matches-descendant-combinator-doubled-child-syntax-expected.txt: Removed.
+        * fast/selectors/element-matches-descendant-combinator-doubled-child-syntax.html: Removed.
+        * fast/selectors/id-attribute-querySelector-used-as-id-selector-quirks.html:
+        * fast/selectors/id-attribute-querySelector-used-as-id-selector.html:
+        * fast/selectors/nth-child-matching-first.html:
+        * fast/selectors/nth-last-child-matching-first.html:
+        * fast/selectors/querySelector-attribute-ascii-case-insensitive-html.html:
+        * fast/selectors/querySelector-descendant-combinator-doubled-child-syntax-expected.txt: Removed.
+        * fast/selectors/querySelector-descendant-combinator-doubled-child-syntax.html: Removed.
+
 2017-09-08  Per Arne Vollan  <pvollan@apple.com>
 
         Mark http/tests/websocket/tests/hybi/close-code-and-reason.html as flaky.
index 6d12e22..c9c4fce 100644 (file)
@@ -10,7 +10,7 @@
     :hover {
         background-color: rgb(50, 100, 150) !important;
     }
-    #prime-ancestor >> div {
+    #prime-ancestor div {
         width: 100px;
         height: 100px;
     }
index 8fd3413..695bc6f 100644 (file)
@@ -31,7 +31,6 @@ PASS parseThenSerializeRule('[|a] { }') is '[a] { }'
 
 PASS parseThenSerializeRule('a:active { }') is 'a:active { }'
 PASS parseThenSerializeRule('a b { }') is 'a b { }'
-PASS parseThenSerializeRule('a >> b { }') is 'a >> b { }'
 PASS parseThenSerializeRule('a + b { }') is 'a + b { }'
 PASS parseThenSerializeRule('a ~ b { }') is 'a ~ b { }'
 PASS parseThenSerializeRule('a > b { }') is 'a > b { }'
@@ -256,12 +255,6 @@ PASS parseThenSerializeRule('*:active { }') is ':active { }'
 
 PASS parseThenSerializeRule('input[type=file]:focus { }') is 'input[type="file"]:focus { }'
 
-PASS parseThenSerializeRule('a>>b { }') is 'a >> b { }'
-PASS parseThenSerializeRule('a >>b { }') is 'a >> b { }'
-PASS parseThenSerializeRule('a        >>b { }') is 'a >> b { }'
-PASS parseThenSerializeRule('a>> b { }') is 'a >> b { }'
-PASS parseThenSerializeRule('a>>       b { }') is 'a >> b { }'
-PASS parseThenSerializeRule('a        >>       b { }') is 'a >> b { }'
 PASS parseThenSerializeRule('a+b { }') is 'a + b { }'
 PASS parseThenSerializeRule('a~b { }') is 'a ~ b { }'
 PASS parseThenSerializeRule('a>b { }') is 'a > b { }'
index ec9e4a9..7762276 100644 (file)
@@ -84,7 +84,6 @@ debug('');
 
 testSelectorRoundTrip('a:active');
 testSelectorRoundTrip('a b');
-testSelectorRoundTrip('a >> b');
 testSelectorRoundTrip('a + b');
 testSelectorRoundTrip('a ~ b');
 testSelectorRoundTrip('a > b');
@@ -361,12 +360,6 @@ shouldBe("parseThenSerializeRule('input[type=file]:focus { }')", "'input[type=\"
 
 debug('');
 
-shouldBe("parseThenSerializeRule('a>>b { }')", "'a >> b { }'");
-shouldBe("parseThenSerializeRule('a >>b { }')", "'a >> b { }'");
-shouldBe("parseThenSerializeRule('a        >>b { }')", "'a >> b { }'");
-shouldBe("parseThenSerializeRule('a>> b { }')", "'a >> b { }'");
-shouldBe("parseThenSerializeRule('a>>       b { }')", "'a >> b { }'");
-shouldBe("parseThenSerializeRule('a        >>       b { }')", "'a >> b { }'");
 shouldBe("parseThenSerializeRule('a+b { }')", "'a + b { }'");
 shouldBe("parseThenSerializeRule('a~b { }')", "'a ~ b { }'");
 shouldBe("parseThenSerializeRule('a>b { }')", "'a > b { }'");
index 1fa2996..9aa80f5 100644 (file)
@@ -41,7 +41,6 @@ PASS setThenReadSelectorText('[|a]') is '[a]'
 
 PASS setThenReadSelectorText('a:active') is 'a:active'
 PASS setThenReadSelectorText('a b') is 'a b'
-PASS setThenReadSelectorText('a >> b') is 'a >> b'
 PASS setThenReadSelectorText('a + b') is 'a + b'
 PASS setThenReadSelectorText('a ~ b') is 'a ~ b'
 PASS setThenReadSelectorText('a > b') is 'a > b'
@@ -251,12 +250,6 @@ PASS setThenReadSelectorText('*:active') is ':active'
 
 PASS setThenReadSelectorText('input[type=file]:focus') is 'input[type="file"]:focus'
 
-PASS setThenReadSelectorText('a>>b') is 'a >> b'
-PASS setThenReadSelectorText('a >>b') is 'a >> b'
-PASS setThenReadSelectorText('a        >>b') is 'a >> b'
-PASS setThenReadSelectorText('a>> b') is 'a >> b'
-PASS setThenReadSelectorText('a>>       b') is 'a >> b'
-PASS setThenReadSelectorText('a        >>       b') is 'a >> b'
 PASS setThenReadSelectorText('a+b') is 'a + b'
 PASS setThenReadSelectorText('a~b') is 'a ~ b'
 PASS setThenReadSelectorText('a>b') is 'a > b'
index 9a50974..03eed26 100644 (file)
@@ -101,7 +101,6 @@ debug('');
 
 testSelectorRoundTrip('a:active');
 testSelectorRoundTrip('a b');
-testSelectorRoundTrip('a >> b');
 testSelectorRoundTrip('a + b');
 testSelectorRoundTrip('a ~ b');
 testSelectorRoundTrip('a > b');
@@ -358,12 +357,6 @@ shouldBe("setThenReadSelectorText('input[type=file]:focus')", "'input[type=\"fil
 
 debug('');
 
-shouldBe("setThenReadSelectorText('a>>b')", "'a >> b'");
-shouldBe("setThenReadSelectorText('a >>b')", "'a >> b'");
-shouldBe("setThenReadSelectorText('a        >>b')", "'a >> b'");
-shouldBe("setThenReadSelectorText('a>> b')", "'a >> b'");
-shouldBe("setThenReadSelectorText('a>>       b')", "'a >> b'");
-shouldBe("setThenReadSelectorText('a        >>       b')", "'a >> b'");
 shouldBe("setThenReadSelectorText('a+b')", "'a + b'");
 shouldBe("setThenReadSelectorText('a~b')", "'a ~ b'");
 shouldBe("setThenReadSelectorText('a>b')", "'a > b'");
index f0bbde3..e85e201 100644 (file)
@@ -5,54 +5,54 @@ On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE
 
 
 Initial state.
-PASS getComputedStyle(document.querySelectorAll(".test-case >> target")[0]).borderColor is "rgb(4, 5, 6)"
-PASS getComputedStyle(document.querySelectorAll(".test-case >> target")[0]).backgroundColor is "rgb(4, 5, 6)"
-PASS getComputedStyle(document.querySelectorAll(".test-case >> target")[1]).borderColor is "rgb(4, 5, 6)"
-PASS getComputedStyle(document.querySelectorAll(".test-case >> target")[1]).backgroundColor is "rgb(4, 5, 6)"
-PASS getComputedStyle(document.querySelectorAll(".test-case >> target")[2]).borderColor is "rgb(4, 5, 6)"
-PASS getComputedStyle(document.querySelectorAll(".test-case >> target")[2]).backgroundColor is "rgb(4, 5, 6)"
-PASS getComputedStyle(document.querySelectorAll(".test-case >> target")[3]).borderColor is "rgb(4, 5, 6)"
-PASS getComputedStyle(document.querySelectorAll(".test-case >> target")[3]).backgroundColor is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.querySelectorAll(".test-case target")[0]).borderColor is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.querySelectorAll(".test-case target")[0]).backgroundColor is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.querySelectorAll(".test-case target")[1]).borderColor is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.querySelectorAll(".test-case target")[1]).backgroundColor is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.querySelectorAll(".test-case target")[2]).borderColor is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.querySelectorAll(".test-case target")[2]).backgroundColor is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.querySelectorAll(".test-case target")[3]).borderColor is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.querySelectorAll(".test-case target")[3]).backgroundColor is "rgb(4, 5, 6)"
 
 Let's override the style of the wrapper through their style object.
-PASS getComputedStyle(document.querySelectorAll(".test-case >> target")[0]).borderColor is "rgb(7, 8, 9)"
-PASS getComputedStyle(document.querySelectorAll(".test-case >> target")[0]).backgroundColor is "rgb(7, 8, 9)"
-PASS getComputedStyle(document.querySelectorAll(".test-case >> target")[1]).borderColor is "rgb(7, 8, 9)"
-PASS getComputedStyle(document.querySelectorAll(".test-case >> target")[1]).backgroundColor is "rgb(7, 8, 9)"
-PASS getComputedStyle(document.querySelectorAll(".test-case >> target")[2]).borderColor is "rgb(7, 8, 9)"
-PASS getComputedStyle(document.querySelectorAll(".test-case >> target")[2]).backgroundColor is "rgb(7, 8, 9)"
-PASS getComputedStyle(document.querySelectorAll(".test-case >> target")[3]).borderColor is "rgb(7, 8, 9)"
-PASS getComputedStyle(document.querySelectorAll(".test-case >> target")[3]).backgroundColor is "rgb(7, 8, 9)"
+PASS getComputedStyle(document.querySelectorAll(".test-case target")[0]).borderColor is "rgb(7, 8, 9)"
+PASS getComputedStyle(document.querySelectorAll(".test-case target")[0]).backgroundColor is "rgb(7, 8, 9)"
+PASS getComputedStyle(document.querySelectorAll(".test-case target")[1]).borderColor is "rgb(7, 8, 9)"
+PASS getComputedStyle(document.querySelectorAll(".test-case target")[1]).backgroundColor is "rgb(7, 8, 9)"
+PASS getComputedStyle(document.querySelectorAll(".test-case target")[2]).borderColor is "rgb(7, 8, 9)"
+PASS getComputedStyle(document.querySelectorAll(".test-case target")[2]).backgroundColor is "rgb(7, 8, 9)"
+PASS getComputedStyle(document.querySelectorAll(".test-case target")[3]).borderColor is "rgb(7, 8, 9)"
+PASS getComputedStyle(document.querySelectorAll(".test-case target")[3]).backgroundColor is "rgb(7, 8, 9)"
 
 Let's remove the style attribute on the wrapper.
-PASS getComputedStyle(document.querySelectorAll(".test-case >> target")[0]).borderColor is "rgb(4, 5, 6)"
-PASS getComputedStyle(document.querySelectorAll(".test-case >> target")[0]).backgroundColor is "rgb(4, 5, 6)"
-PASS getComputedStyle(document.querySelectorAll(".test-case >> target")[1]).borderColor is "rgb(4, 5, 6)"
-PASS getComputedStyle(document.querySelectorAll(".test-case >> target")[1]).backgroundColor is "rgb(4, 5, 6)"
-PASS getComputedStyle(document.querySelectorAll(".test-case >> target")[2]).borderColor is "rgb(4, 5, 6)"
-PASS getComputedStyle(document.querySelectorAll(".test-case >> target")[2]).backgroundColor is "rgb(4, 5, 6)"
-PASS getComputedStyle(document.querySelectorAll(".test-case >> target")[3]).borderColor is "rgb(4, 5, 6)"
-PASS getComputedStyle(document.querySelectorAll(".test-case >> target")[3]).backgroundColor is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.querySelectorAll(".test-case target")[0]).borderColor is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.querySelectorAll(".test-case target")[0]).backgroundColor is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.querySelectorAll(".test-case target")[1]).borderColor is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.querySelectorAll(".test-case target")[1]).backgroundColor is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.querySelectorAll(".test-case target")[2]).borderColor is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.querySelectorAll(".test-case target")[2]).backgroundColor is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.querySelectorAll(".test-case target")[3]).borderColor is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.querySelectorAll(".test-case target")[3]).backgroundColor is "rgb(4, 5, 6)"
 
 Let's remove class on the wrappers.
-PASS getComputedStyle(document.querySelectorAll(".test-case >> target")[0]).borderColor is "rgb(1, 2, 3)"
-PASS getComputedStyle(document.querySelectorAll(".test-case >> target")[0]).backgroundColor is "rgb(1, 2, 3)"
-PASS getComputedStyle(document.querySelectorAll(".test-case >> target")[1]).borderColor is "rgb(1, 2, 3)"
-PASS getComputedStyle(document.querySelectorAll(".test-case >> target")[1]).backgroundColor is "rgb(1, 2, 3)"
-PASS getComputedStyle(document.querySelectorAll(".test-case >> target")[2]).borderColor is "rgb(1, 2, 3)"
-PASS getComputedStyle(document.querySelectorAll(".test-case >> target")[2]).backgroundColor is "rgb(1, 2, 3)"
-PASS getComputedStyle(document.querySelectorAll(".test-case >> target")[3]).borderColor is "rgb(1, 2, 3)"
-PASS getComputedStyle(document.querySelectorAll(".test-case >> target")[3]).backgroundColor is "rgb(1, 2, 3)"
+PASS getComputedStyle(document.querySelectorAll(".test-case target")[0]).borderColor is "rgb(1, 2, 3)"
+PASS getComputedStyle(document.querySelectorAll(".test-case target")[0]).backgroundColor is "rgb(1, 2, 3)"
+PASS getComputedStyle(document.querySelectorAll(".test-case target")[1]).borderColor is "rgb(1, 2, 3)"
+PASS getComputedStyle(document.querySelectorAll(".test-case target")[1]).backgroundColor is "rgb(1, 2, 3)"
+PASS getComputedStyle(document.querySelectorAll(".test-case target")[2]).borderColor is "rgb(1, 2, 3)"
+PASS getComputedStyle(document.querySelectorAll(".test-case target")[2]).backgroundColor is "rgb(1, 2, 3)"
+PASS getComputedStyle(document.querySelectorAll(".test-case target")[3]).borderColor is "rgb(1, 2, 3)"
+PASS getComputedStyle(document.querySelectorAll(".test-case target")[3]).backgroundColor is "rgb(1, 2, 3)"
 
 Then add it back.
-PASS getComputedStyle(document.querySelectorAll(".test-case >> target")[0]).borderColor is "rgb(4, 5, 6)"
-PASS getComputedStyle(document.querySelectorAll(".test-case >> target")[0]).backgroundColor is "rgb(4, 5, 6)"
-PASS getComputedStyle(document.querySelectorAll(".test-case >> target")[1]).borderColor is "rgb(4, 5, 6)"
-PASS getComputedStyle(document.querySelectorAll(".test-case >> target")[1]).backgroundColor is "rgb(4, 5, 6)"
-PASS getComputedStyle(document.querySelectorAll(".test-case >> target")[2]).borderColor is "rgb(4, 5, 6)"
-PASS getComputedStyle(document.querySelectorAll(".test-case >> target")[2]).backgroundColor is "rgb(4, 5, 6)"
-PASS getComputedStyle(document.querySelectorAll(".test-case >> target")[3]).borderColor is "rgb(4, 5, 6)"
-PASS getComputedStyle(document.querySelectorAll(".test-case >> target")[3]).backgroundColor is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.querySelectorAll(".test-case target")[0]).borderColor is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.querySelectorAll(".test-case target")[0]).backgroundColor is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.querySelectorAll(".test-case target")[1]).borderColor is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.querySelectorAll(".test-case target")[1]).backgroundColor is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.querySelectorAll(".test-case target")[2]).borderColor is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.querySelectorAll(".test-case target")[2]).backgroundColor is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.querySelectorAll(".test-case target")[3]).borderColor is "rgb(4, 5, 6)"
+PASS getComputedStyle(document.querySelectorAll(".test-case target")[3]).backgroundColor is "rgb(4, 5, 6)"
 PASS successfullyParsed is true
 
 TEST COMPLETE
index f5ae0a0..d5ddb76 100644 (file)
 <script>
     jsTestIsAsync = true;
     function testColor(expectedColor) {
-        var allTargets = document.querySelectorAll(".test-case >> target");
+        var allTargets = document.querySelectorAll(".test-case target");
         for (var i = 0; i < allTargets.length; ++i) {
-            shouldBeEqualToString('getComputedStyle(document.querySelectorAll(".test-case >> target")[' + i + ']).borderColor', expectedColor);
-            shouldBeEqualToString('getComputedStyle(document.querySelectorAll(".test-case >> target")[' + i + ']).backgroundColor', expectedColor);
+            shouldBeEqualToString('getComputedStyle(document.querySelectorAll(".test-case target")[' + i + ']).borderColor', expectedColor);
+            shouldBeEqualToString('getComputedStyle(document.querySelectorAll(".test-case target")[' + i + ']).backgroundColor', expectedColor);
         }
     }
 
diff --git a/LayoutTests/fast/css/descendant-combinator-doubled-child-syntax-styling-expected.html b/LayoutTests/fast/css/descendant-combinator-doubled-child-syntax-styling-expected.html
deleted file mode 100644 (file)
index ca1eac3..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-<!doctype html>
-<html>
-    <body>
-        <p>This test verify basic styling using the doubled-child descendant combinator ("&gt;&gt;"). Each text should be styled as described.</p>
-        <target style="background-color: lime;">Lime background.</target>
-        <ul>
-            <li>Nothing special -  <target style="background-color: lime;">Lime background.</target></li>
-            <li style="border: 1px solid red;">Red border.</li>
-            <li style="border: 2px solid purple;">Purple border.</li>
-        </ul>
-        <ul>
-            <li>Nothing special -  <target style="background-color: lime;">Lime background.</target></li>
-            <li style="border: 1px solid red;">Red border.</li>
-            <li style="border: 1px solid red;">Red border.</li>
-        </ul>
-        <foo>
-            <bar style="border: 2px solid green; background-color: yellow;">
-                Yellow background and green border.
-            </bar>
-        </foo>
-    </body>
-</html>
\ No newline at end of file
diff --git a/LayoutTests/fast/css/descendant-combinator-doubled-child-syntax-styling.html b/LayoutTests/fast/css/descendant-combinator-doubled-child-syntax-styling.html
deleted file mode 100644 (file)
index 15e3c92..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-<!doctype html>
-<html>
-    <head>
-        <style>
-        :root >> target {
-            background-color: lime;
-        }
-        ul >> li + li {
-            border: 1px solid red;
-        }
-        target + ul >> li + li ~ li {
-            border: 2px solid purple;
-        }
-
-        foo bar {
-            border: 2px solid red;
-        }
-        foo >> bar {
-            border: 2px solid green;
-        }
-
-        body bar {
-            background-color: red;
-        }
-        body >> bar {
-            background-color: yellow;
-        }
-
-        .not-there >> *, head >> *, #not-there >> * {
-            background-color: red;
-        }
-        </style>
-    </head>
-    <body>
-        <p>This test verify basic styling using the doubled-child descendant combinator ("&gt;&gt;"). Each text should be styled as described.</p>
-        <target>Lime background.</target>
-        <ul>
-            <li>Nothing special -  <target>Lime background.</target></li>
-            <li>Red border.</li>
-            <li>Purple border.</li>
-        </ul>
-        <ul>
-            <li>Nothing special -  <target>Lime background.</target></li>
-            <li>Red border.</li>
-            <li>Red border.</li>
-        </ul>
-        <foo>
-            <bar>
-                Yellow background and green border.
-            </bar>
-        </foo>
-    </body>
-</html>
\ No newline at end of file
index 5ba8929..57d9664 100644 (file)
@@ -13,15 +13,15 @@ PASS document.getElementById('style-container').sheet.cssRules.length is 1
 PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "[foo=\"bar\" i]"
 PASS document.getElementById('style-container').sheet.cssRules.length is 1
 PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "[*|foo=\"bar\" i]"
-PASS document.querySelector("foo >> bar [foo=bar i]") did not throw exception.
-PASS document.querySelector("foo >> bar [*|foo=bar i]") did not throw exception.
-PASS document.querySelector("foo >> bar [|foo=bar i]") did not throw exception.
+PASS document.querySelector("foo bar [foo=bar i]") did not throw exception.
+PASS document.querySelector("foo bar [*|foo=bar i]") did not throw exception.
+PASS document.querySelector("foo bar [|foo=bar i]") did not throw exception.
 PASS document.getElementById('style-container').sheet.cssRules.length is 1
-PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "foo >> bar [foo=\"bar\" i]"
+PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "foo bar [foo=\"bar\" i]"
 PASS document.getElementById('style-container').sheet.cssRules.length is 1
-PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "foo >> bar [foo=\"bar\" i]"
+PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "foo bar [foo=\"bar\" i]"
 PASS document.getElementById('style-container').sheet.cssRules.length is 1
-PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "foo >> bar [*|foo=\"bar\" i]"
+PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "foo bar [*|foo=\"bar\" i]"
 PASS document.querySelector(":nth-child(2n+1 of [foo=bar i])") did not throw exception.
 PASS document.querySelector(":nth-child(2n+1 of [*|foo=bar i])") did not throw exception.
 PASS document.querySelector(":nth-child(2n+1 of [|foo=bar i])") did not throw exception.
@@ -67,15 +67,15 @@ PASS document.getElementById('style-container').sheet.cssRules.length is 1
 PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "[foo=\"bar\" i]"
 PASS document.getElementById('style-container').sheet.cssRules.length is 1
 PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "[*|foo=\"bar\" i]"
-PASS document.querySelector("foo >> bar [foo=\"bar\" i]") did not throw exception.
-PASS document.querySelector("foo >> bar [*|foo=\"bar\" i]") did not throw exception.
-PASS document.querySelector("foo >> bar [|foo=\"bar\" i]") did not throw exception.
+PASS document.querySelector("foo bar [foo=\"bar\" i]") did not throw exception.
+PASS document.querySelector("foo bar [*|foo=\"bar\" i]") did not throw exception.
+PASS document.querySelector("foo bar [|foo=\"bar\" i]") did not throw exception.
 PASS document.getElementById('style-container').sheet.cssRules.length is 1
-PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "foo >> bar [foo=\"bar\" i]"
+PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "foo bar [foo=\"bar\" i]"
 PASS document.getElementById('style-container').sheet.cssRules.length is 1
-PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "foo >> bar [foo=\"bar\" i]"
+PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "foo bar [foo=\"bar\" i]"
 PASS document.getElementById('style-container').sheet.cssRules.length is 1
-PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "foo >> bar [*|foo=\"bar\" i]"
+PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "foo bar [*|foo=\"bar\" i]"
 PASS document.querySelector(":nth-child(2n+1 of [foo=\"bar\" i])") did not throw exception.
 PASS document.querySelector(":nth-child(2n+1 of [*|foo=\"bar\" i])") did not throw exception.
 PASS document.querySelector(":nth-child(2n+1 of [|foo=\"bar\" i])") did not throw exception.
@@ -121,15 +121,15 @@ PASS document.getElementById('style-container').sheet.cssRules.length is 1
 PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "[foo~=\"bar\" i]"
 PASS document.getElementById('style-container').sheet.cssRules.length is 1
 PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "[*|foo~=\"bar\" i]"
-PASS document.querySelector("foo >> bar [foo~=bar i]") did not throw exception.
-PASS document.querySelector("foo >> bar [*|foo~=bar i]") did not throw exception.
-PASS document.querySelector("foo >> bar [|foo~=bar i]") did not throw exception.
+PASS document.querySelector("foo bar [foo~=bar i]") did not throw exception.
+PASS document.querySelector("foo bar [*|foo~=bar i]") did not throw exception.
+PASS document.querySelector("foo bar [|foo~=bar i]") did not throw exception.
 PASS document.getElementById('style-container').sheet.cssRules.length is 1
-PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "foo >> bar [foo~=\"bar\" i]"
+PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "foo bar [foo~=\"bar\" i]"
 PASS document.getElementById('style-container').sheet.cssRules.length is 1
-PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "foo >> bar [foo~=\"bar\" i]"
+PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "foo bar [foo~=\"bar\" i]"
 PASS document.getElementById('style-container').sheet.cssRules.length is 1
-PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "foo >> bar [*|foo~=\"bar\" i]"
+PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "foo bar [*|foo~=\"bar\" i]"
 PASS document.querySelector(":nth-child(2n+1 of [foo~=bar i])") did not throw exception.
 PASS document.querySelector(":nth-child(2n+1 of [*|foo~=bar i])") did not throw exception.
 PASS document.querySelector(":nth-child(2n+1 of [|foo~=bar i])") did not throw exception.
@@ -175,15 +175,15 @@ PASS document.getElementById('style-container').sheet.cssRules.length is 1
 PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "[foo~=\"bar\" i]"
 PASS document.getElementById('style-container').sheet.cssRules.length is 1
 PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "[*|foo~=\"bar\" i]"
-PASS document.querySelector("foo >> bar [foo~=\"bar\" i]") did not throw exception.
-PASS document.querySelector("foo >> bar [*|foo~=\"bar\" i]") did not throw exception.
-PASS document.querySelector("foo >> bar [|foo~=\"bar\" i]") did not throw exception.
+PASS document.querySelector("foo bar [foo~=\"bar\" i]") did not throw exception.
+PASS document.querySelector("foo bar [*|foo~=\"bar\" i]") did not throw exception.
+PASS document.querySelector("foo bar [|foo~=\"bar\" i]") did not throw exception.
 PASS document.getElementById('style-container').sheet.cssRules.length is 1
-PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "foo >> bar [foo~=\"bar\" i]"
+PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "foo bar [foo~=\"bar\" i]"
 PASS document.getElementById('style-container').sheet.cssRules.length is 1
-PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "foo >> bar [foo~=\"bar\" i]"
+PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "foo bar [foo~=\"bar\" i]"
 PASS document.getElementById('style-container').sheet.cssRules.length is 1
-PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "foo >> bar [*|foo~=\"bar\" i]"
+PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "foo bar [*|foo~=\"bar\" i]"
 PASS document.querySelector(":nth-child(2n+1 of [foo~=\"bar\" i])") did not throw exception.
 PASS document.querySelector(":nth-child(2n+1 of [*|foo~=\"bar\" i])") did not throw exception.
 PASS document.querySelector(":nth-child(2n+1 of [|foo~=\"bar\" i])") did not throw exception.
@@ -229,15 +229,15 @@ PASS document.getElementById('style-container').sheet.cssRules.length is 1
 PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "[foo|=\"bar\" i]"
 PASS document.getElementById('style-container').sheet.cssRules.length is 1
 PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "[*|foo|=\"bar\" i]"
-PASS document.querySelector("foo >> bar [foo|=bar i]") did not throw exception.
-PASS document.querySelector("foo >> bar [*|foo|=bar i]") did not throw exception.
-PASS document.querySelector("foo >> bar [|foo|=bar i]") did not throw exception.
+PASS document.querySelector("foo bar [foo|=bar i]") did not throw exception.
+PASS document.querySelector("foo bar [*|foo|=bar i]") did not throw exception.
+PASS document.querySelector("foo bar [|foo|=bar i]") did not throw exception.
 PASS document.getElementById('style-container').sheet.cssRules.length is 1
-PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "foo >> bar [foo|=\"bar\" i]"
+PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "foo bar [foo|=\"bar\" i]"
 PASS document.getElementById('style-container').sheet.cssRules.length is 1
-PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "foo >> bar [foo|=\"bar\" i]"
+PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "foo bar [foo|=\"bar\" i]"
 PASS document.getElementById('style-container').sheet.cssRules.length is 1
-PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "foo >> bar [*|foo|=\"bar\" i]"
+PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "foo bar [*|foo|=\"bar\" i]"
 PASS document.querySelector(":nth-child(2n+1 of [foo|=bar i])") did not throw exception.
 PASS document.querySelector(":nth-child(2n+1 of [*|foo|=bar i])") did not throw exception.
 PASS document.querySelector(":nth-child(2n+1 of [|foo|=bar i])") did not throw exception.
@@ -283,15 +283,15 @@ PASS document.getElementById('style-container').sheet.cssRules.length is 1
 PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "[foo|=\"bar\" i]"
 PASS document.getElementById('style-container').sheet.cssRules.length is 1
 PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "[*|foo|=\"bar\" i]"
-PASS document.querySelector("foo >> bar [foo|=\"bar\" i]") did not throw exception.
-PASS document.querySelector("foo >> bar [*|foo|=\"bar\" i]") did not throw exception.
-PASS document.querySelector("foo >> bar [|foo|=\"bar\" i]") did not throw exception.
+PASS document.querySelector("foo bar [foo|=\"bar\" i]") did not throw exception.
+PASS document.querySelector("foo bar [*|foo|=\"bar\" i]") did not throw exception.
+PASS document.querySelector("foo bar [|foo|=\"bar\" i]") did not throw exception.
 PASS document.getElementById('style-container').sheet.cssRules.length is 1
-PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "foo >> bar [foo|=\"bar\" i]"
+PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "foo bar [foo|=\"bar\" i]"
 PASS document.getElementById('style-container').sheet.cssRules.length is 1
-PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "foo >> bar [foo|=\"bar\" i]"
+PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "foo bar [foo|=\"bar\" i]"
 PASS document.getElementById('style-container').sheet.cssRules.length is 1
-PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "foo >> bar [*|foo|=\"bar\" i]"
+PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "foo bar [*|foo|=\"bar\" i]"
 PASS document.querySelector(":nth-child(2n+1 of [foo|=\"bar\" i])") did not throw exception.
 PASS document.querySelector(":nth-child(2n+1 of [*|foo|=\"bar\" i])") did not throw exception.
 PASS document.querySelector(":nth-child(2n+1 of [|foo|=\"bar\" i])") did not throw exception.
@@ -337,15 +337,15 @@ PASS document.getElementById('style-container').sheet.cssRules.length is 1
 PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "[foo^=\"bar\" i]"
 PASS document.getElementById('style-container').sheet.cssRules.length is 1
 PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "[*|foo^=\"bar\" i]"
-PASS document.querySelector("foo >> bar [foo^=bar i]") did not throw exception.
-PASS document.querySelector("foo >> bar [*|foo^=bar i]") did not throw exception.
-PASS document.querySelector("foo >> bar [|foo^=bar i]") did not throw exception.
+PASS document.querySelector("foo bar [foo^=bar i]") did not throw exception.
+PASS document.querySelector("foo bar [*|foo^=bar i]") did not throw exception.
+PASS document.querySelector("foo bar [|foo^=bar i]") did not throw exception.
 PASS document.getElementById('style-container').sheet.cssRules.length is 1
-PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "foo >> bar [foo^=\"bar\" i]"
+PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "foo bar [foo^=\"bar\" i]"
 PASS document.getElementById('style-container').sheet.cssRules.length is 1
-PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "foo >> bar [foo^=\"bar\" i]"
+PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "foo bar [foo^=\"bar\" i]"
 PASS document.getElementById('style-container').sheet.cssRules.length is 1
-PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "foo >> bar [*|foo^=\"bar\" i]"
+PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "foo bar [*|foo^=\"bar\" i]"
 PASS document.querySelector(":nth-child(2n+1 of [foo^=bar i])") did not throw exception.
 PASS document.querySelector(":nth-child(2n+1 of [*|foo^=bar i])") did not throw exception.
 PASS document.querySelector(":nth-child(2n+1 of [|foo^=bar i])") did not throw exception.
@@ -391,15 +391,15 @@ PASS document.getElementById('style-container').sheet.cssRules.length is 1
 PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "[foo^=\"bar\" i]"
 PASS document.getElementById('style-container').sheet.cssRules.length is 1
 PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "[*|foo^=\"bar\" i]"
-PASS document.querySelector("foo >> bar [foo^=\"bar\" i]") did not throw exception.
-PASS document.querySelector("foo >> bar [*|foo^=\"bar\" i]") did not throw exception.
-PASS document.querySelector("foo >> bar [|foo^=\"bar\" i]") did not throw exception.
+PASS document.querySelector("foo bar [foo^=\"bar\" i]") did not throw exception.
+PASS document.querySelector("foo bar [*|foo^=\"bar\" i]") did not throw exception.
+PASS document.querySelector("foo bar [|foo^=\"bar\" i]") did not throw exception.
 PASS document.getElementById('style-container').sheet.cssRules.length is 1
-PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "foo >> bar [foo^=\"bar\" i]"
+PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "foo bar [foo^=\"bar\" i]"
 PASS document.getElementById('style-container').sheet.cssRules.length is 1
-PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "foo >> bar [foo^=\"bar\" i]"
+PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "foo bar [foo^=\"bar\" i]"
 PASS document.getElementById('style-container').sheet.cssRules.length is 1
-PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "foo >> bar [*|foo^=\"bar\" i]"
+PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "foo bar [*|foo^=\"bar\" i]"
 PASS document.querySelector(":nth-child(2n+1 of [foo^=\"bar\" i])") did not throw exception.
 PASS document.querySelector(":nth-child(2n+1 of [*|foo^=\"bar\" i])") did not throw exception.
 PASS document.querySelector(":nth-child(2n+1 of [|foo^=\"bar\" i])") did not throw exception.
@@ -445,15 +445,15 @@ PASS document.getElementById('style-container').sheet.cssRules.length is 1
 PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "[foo$=\"bar\" i]"
 PASS document.getElementById('style-container').sheet.cssRules.length is 1
 PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "[*|foo$=\"bar\" i]"
-PASS document.querySelector("foo >> bar [foo$=bar i]") did not throw exception.
-PASS document.querySelector("foo >> bar [*|foo$=bar i]") did not throw exception.
-PASS document.querySelector("foo >> bar [|foo$=bar i]") did not throw exception.
+PASS document.querySelector("foo bar [foo$=bar i]") did not throw exception.
+PASS document.querySelector("foo bar [*|foo$=bar i]") did not throw exception.
+PASS document.querySelector("foo bar [|foo$=bar i]") did not throw exception.
 PASS document.getElementById('style-container').sheet.cssRules.length is 1
-PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "foo >> bar [foo$=\"bar\" i]"
+PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "foo bar [foo$=\"bar\" i]"
 PASS document.getElementById('style-container').sheet.cssRules.length is 1
-PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "foo >> bar [foo$=\"bar\" i]"
+PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "foo bar [foo$=\"bar\" i]"
 PASS document.getElementById('style-container').sheet.cssRules.length is 1
-PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "foo >> bar [*|foo$=\"bar\" i]"
+PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "foo bar [*|foo$=\"bar\" i]"
 PASS document.querySelector(":nth-child(2n+1 of [foo$=bar i])") did not throw exception.
 PASS document.querySelector(":nth-child(2n+1 of [*|foo$=bar i])") did not throw exception.
 PASS document.querySelector(":nth-child(2n+1 of [|foo$=bar i])") did not throw exception.
@@ -499,15 +499,15 @@ PASS document.getElementById('style-container').sheet.cssRules.length is 1
 PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "[foo$=\"bar\" i]"
 PASS document.getElementById('style-container').sheet.cssRules.length is 1
 PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "[*|foo$=\"bar\" i]"
-PASS document.querySelector("foo >> bar [foo$=\"bar\" i]") did not throw exception.
-PASS document.querySelector("foo >> bar [*|foo$=\"bar\" i]") did not throw exception.
-PASS document.querySelector("foo >> bar [|foo$=\"bar\" i]") did not throw exception.
+PASS document.querySelector("foo bar [foo$=\"bar\" i]") did not throw exception.
+PASS document.querySelector("foo bar [*|foo$=\"bar\" i]") did not throw exception.
+PASS document.querySelector("foo bar [|foo$=\"bar\" i]") did not throw exception.
 PASS document.getElementById('style-container').sheet.cssRules.length is 1
-PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "foo >> bar [foo$=\"bar\" i]"
+PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "foo bar [foo$=\"bar\" i]"
 PASS document.getElementById('style-container').sheet.cssRules.length is 1
-PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "foo >> bar [foo$=\"bar\" i]"
+PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "foo bar [foo$=\"bar\" i]"
 PASS document.getElementById('style-container').sheet.cssRules.length is 1
-PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "foo >> bar [*|foo$=\"bar\" i]"
+PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "foo bar [*|foo$=\"bar\" i]"
 PASS document.querySelector(":nth-child(2n+1 of [foo$=\"bar\" i])") did not throw exception.
 PASS document.querySelector(":nth-child(2n+1 of [*|foo$=\"bar\" i])") did not throw exception.
 PASS document.querySelector(":nth-child(2n+1 of [|foo$=\"bar\" i])") did not throw exception.
@@ -553,15 +553,15 @@ PASS document.getElementById('style-container').sheet.cssRules.length is 1
 PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "[foo*=\"bar\" i]"
 PASS document.getElementById('style-container').sheet.cssRules.length is 1
 PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "[*|foo*=\"bar\" i]"
-PASS document.querySelector("foo >> bar [foo*=bar i]") did not throw exception.
-PASS document.querySelector("foo >> bar [*|foo*=bar i]") did not throw exception.
-PASS document.querySelector("foo >> bar [|foo*=bar i]") did not throw exception.
+PASS document.querySelector("foo bar [foo*=bar i]") did not throw exception.
+PASS document.querySelector("foo bar [*|foo*=bar i]") did not throw exception.
+PASS document.querySelector("foo bar [|foo*=bar i]") did not throw exception.
 PASS document.getElementById('style-container').sheet.cssRules.length is 1
-PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "foo >> bar [foo*=\"bar\" i]"
+PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "foo bar [foo*=\"bar\" i]"
 PASS document.getElementById('style-container').sheet.cssRules.length is 1
-PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "foo >> bar [foo*=\"bar\" i]"
+PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "foo bar [foo*=\"bar\" i]"
 PASS document.getElementById('style-container').sheet.cssRules.length is 1
-PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "foo >> bar [*|foo*=\"bar\" i]"
+PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "foo bar [*|foo*=\"bar\" i]"
 PASS document.querySelector(":nth-child(2n+1 of [foo*=bar i])") did not throw exception.
 PASS document.querySelector(":nth-child(2n+1 of [*|foo*=bar i])") did not throw exception.
 PASS document.querySelector(":nth-child(2n+1 of [|foo*=bar i])") did not throw exception.
@@ -607,15 +607,15 @@ PASS document.getElementById('style-container').sheet.cssRules.length is 1
 PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "[foo*=\"bar\" i]"
 PASS document.getElementById('style-container').sheet.cssRules.length is 1
 PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "[*|foo*=\"bar\" i]"
-PASS document.querySelector("foo >> bar [foo*=\"bar\" i]") did not throw exception.
-PASS document.querySelector("foo >> bar [*|foo*=\"bar\" i]") did not throw exception.
-PASS document.querySelector("foo >> bar [|foo*=\"bar\" i]") did not throw exception.
+PASS document.querySelector("foo bar [foo*=\"bar\" i]") did not throw exception.
+PASS document.querySelector("foo bar [*|foo*=\"bar\" i]") did not throw exception.
+PASS document.querySelector("foo bar [|foo*=\"bar\" i]") did not throw exception.
 PASS document.getElementById('style-container').sheet.cssRules.length is 1
-PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "foo >> bar [foo*=\"bar\" i]"
+PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "foo bar [foo*=\"bar\" i]"
 PASS document.getElementById('style-container').sheet.cssRules.length is 1
-PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "foo >> bar [foo*=\"bar\" i]"
+PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "foo bar [foo*=\"bar\" i]"
 PASS document.getElementById('style-container').sheet.cssRules.length is 1
-PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "foo >> bar [*|foo*=\"bar\" i]"
+PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "foo bar [*|foo*=\"bar\" i]"
 PASS document.querySelector(":nth-child(2n+1 of [foo*=\"bar\" i])") did not throw exception.
 PASS document.querySelector(":nth-child(2n+1 of [*|foo*=\"bar\" i])") did not throw exception.
 PASS document.querySelector(":nth-child(2n+1 of [|foo*=\"bar\" i])") did not throw exception.
index 66b7338..28910a9 100644 (file)
@@ -50,7 +50,7 @@ for (var testCase of simpleValidSelectors) {
     testValidSelector(testCase[0], testCase[1]);
 
     // Used in function pseudo classes.
-    testValidSelector("foo >> bar " + testCase[0], "foo >> bar " + testCase[1]);
+    testValidSelector("foo bar " + testCase[0], "foo bar " + testCase[1]);
     testValidSelector(":nth-child(2n+1 of " + testCase[0] + ")", ":nth-child(2n+1 of " + testCase[1] + ")");
     testValidSelector(":nth-last-child(2n+1 of " + testCase[0] + ")", ":nth-last-child(2n+1 of " + testCase[1] + ")");
     testValidSelector(":matches(foo, " + testCase[0] + ", bar)", ":matches(foo, " + testCase[1] + ", bar)");
index 1e32576..889ea03 100644 (file)
@@ -6,10 +6,10 @@ On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE
 PASS getComputedStyle(document.getElementById('target')).color is "rgb(0, 255, 0)"
 PASS getComputedStyle(document.getElementById('target')).backgroundColor is "rgb(255, 0, 0)"
 PASS document.getElementById('style-container').sheet.cssRules.length is 2
-PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is ":matches(#notthere >> div, #target)"
-PASS document.getElementById('style-container').sheet.cssRules[0].cssText is ":matches(#notthere >> div, #target) { background-color: red; }"
-PASS document.getElementById('style-container').sheet.cssRules[1].selectorText is ":matches(#notthere >> foobar, #target)"
-PASS document.getElementById('style-container').sheet.cssRules[1].cssText is ":matches(#notthere >> foobar, #target) { color: lime; }"
+PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is ":matches(#notthere div, #target)"
+PASS document.getElementById('style-container').sheet.cssRules[0].cssText is ":matches(#notthere div, #target) { background-color: red; }"
+PASS document.getElementById('style-container').sheet.cssRules[1].selectorText is ":matches(#notthere foobar, #target)"
+PASS document.getElementById('style-container').sheet.cssRules[1].cssText is ":matches(#notthere foobar, #target) { color: lime; }"
 PASS successfullyParsed is true
 
 TEST COMPLETE
index 1a99662..451b372 100644 (file)
@@ -3,21 +3,21 @@
 <head>
 <script src="../../resources/js-test-pre.js"></script>
 <style id="style-container">
-    :matches(#notthere >> div, #target) {
+    :matches(#notthere div, #target) {
         background-color: red;
     }
 
     /* This selector list is invalid because the attribute flag "invalid" is invalid. */
-    :matches(#nothere >> valid, #notthere >> [invalid="yep" invalid], #target) {
+    :matches(#nothere valid, #notthere [invalid="yep" invalid], #target) {
         background-color: blue;
     }
 
-    :matches(#notthere >> foobar, #target) {
+    :matches(#notthere foobar, #target) {
         color: lime;
     }
 
     /* This selector list is invalid because the attribute flag "u" is invalid. */
-    :matches(#nothere >> valid, #notthere >> [invalid="yep" u], #target) {
+    :matches(#nothere valid, #notthere [invalid="yep" u], #target) {
         color: blue;
     }
 
@@ -32,10 +32,10 @@ description('This test verify that invalid case-insenstivie attribute value matc
 shouldBeEqualToString("getComputedStyle(document.getElementById('target')).color", "rgb(0, 255, 0)");
 shouldBeEqualToString("getComputedStyle(document.getElementById('target')).backgroundColor", "rgb(255, 0, 0)");
 shouldBe("document.getElementById('style-container').sheet.cssRules.length", "2");
-shouldBeEqualToString("document.getElementById('style-container').sheet.cssRules[0].selectorText", ":matches(#notthere >> div, #target)");
-shouldBeEqualToString("document.getElementById('style-container').sheet.cssRules[0].cssText", ":matches(#notthere >> div, #target) { background-color: red; }");
-shouldBeEqualToString("document.getElementById('style-container').sheet.cssRules[1].selectorText", ":matches(#notthere >> foobar, #target)");
-shouldBeEqualToString("document.getElementById('style-container').sheet.cssRules[1].cssText", ":matches(#notthere >> foobar, #target) { color: lime; }");
+shouldBeEqualToString("document.getElementById('style-container').sheet.cssRules[0].selectorText", ":matches(#notthere div, #target)");
+shouldBeEqualToString("document.getElementById('style-container').sheet.cssRules[0].cssText", ":matches(#notthere div, #target) { background-color: red; }");
+shouldBeEqualToString("document.getElementById('style-container').sheet.cssRules[1].selectorText", ":matches(#notthere foobar, #target)");
+shouldBeEqualToString("document.getElementById('style-container').sheet.cssRules[1].cssText", ":matches(#notthere foobar, #target) { color: lime; }");
 </script>
 <script src="../../resources/js-test-post.js"></script>
 </html>
diff --git a/LayoutTests/fast/css/parsing-css-descendant-combinator-doubled-child-syntax-expected.txt b/LayoutTests/fast/css/parsing-css-descendant-combinator-doubled-child-syntax-expected.txt
deleted file mode 100644 (file)
index ae91251..0000000
+++ /dev/null
@@ -1,159 +0,0 @@
-Test the parsing of the descendant combinator with the double-child syntax ">>" for querySelector and style.
-
-On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
-
-
-Valid selectors.
-PASS document.querySelector("ul >> li") did not throw exception.
-PASS document.getElementById('style-container').sheet.cssRules.length is 1
-PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "ul >> li"
-PASS document.querySelector(":nth-child(2n+1 of ul >> li)") did not throw exception.
-PASS document.getElementById('style-container').sheet.cssRules.length is 1
-PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is ":nth-child(2n+1 of ul >> li)"
-PASS document.querySelector(":nth-last-child(2n+1 of ul >> li)") did not throw exception.
-PASS document.getElementById('style-container').sheet.cssRules.length is 1
-PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is ":nth-last-child(2n+1 of ul >> li)"
-PASS document.querySelector(":matches(foo, ul >> li, bar)") did not throw exception.
-PASS document.getElementById('style-container').sheet.cssRules.length is 1
-PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is ":matches(foo, ul >> li, bar)"
-PASS document.querySelector(":not(ul >> li)") did not throw exception.
-PASS document.getElementById('style-container').sheet.cssRules.length is 1
-PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is ":not(ul >> li)"
-PASS document.querySelector("div >> ul >> li") did not throw exception.
-PASS document.getElementById('style-container').sheet.cssRules.length is 1
-PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "div >> ul >> li"
-PASS document.querySelector(":nth-child(2n+1 of div >> ul >> li)") did not throw exception.
-PASS document.getElementById('style-container').sheet.cssRules.length is 1
-PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is ":nth-child(2n+1 of div >> ul >> li)"
-PASS document.querySelector(":nth-last-child(2n+1 of div >> ul >> li)") did not throw exception.
-PASS document.getElementById('style-container').sheet.cssRules.length is 1
-PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is ":nth-last-child(2n+1 of div >> ul >> li)"
-PASS document.querySelector(":matches(foo, div >> ul >> li, bar)") did not throw exception.
-PASS document.getElementById('style-container').sheet.cssRules.length is 1
-PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is ":matches(foo, div >> ul >> li, bar)"
-PASS document.querySelector(":not(div >> ul >> li)") did not throw exception.
-PASS document.getElementById('style-container').sheet.cssRules.length is 1
-PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is ":not(div >> ul >> li)"
-PASS document.querySelector("div >> ul li") did not throw exception.
-PASS document.getElementById('style-container').sheet.cssRules.length is 1
-PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "div >> ul li"
-PASS document.querySelector(":nth-child(2n+1 of div >> ul li)") did not throw exception.
-PASS document.getElementById('style-container').sheet.cssRules.length is 1
-PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is ":nth-child(2n+1 of div >> ul li)"
-PASS document.querySelector(":nth-last-child(2n+1 of div >> ul li)") did not throw exception.
-PASS document.getElementById('style-container').sheet.cssRules.length is 1
-PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is ":nth-last-child(2n+1 of div >> ul li)"
-PASS document.querySelector(":matches(foo, div >> ul li, bar)") did not throw exception.
-PASS document.getElementById('style-container').sheet.cssRules.length is 1
-PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is ":matches(foo, div >> ul li, bar)"
-PASS document.querySelector(":not(div >> ul li)") did not throw exception.
-PASS document.getElementById('style-container').sheet.cssRules.length is 1
-PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is ":not(div >> ul li)"
-PASS document.querySelector("div ul >> li") did not throw exception.
-PASS document.getElementById('style-container').sheet.cssRules.length is 1
-PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "div ul >> li"
-PASS document.querySelector(":nth-child(2n+1 of div ul >> li)") did not throw exception.
-PASS document.getElementById('style-container').sheet.cssRules.length is 1
-PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is ":nth-child(2n+1 of div ul >> li)"
-PASS document.querySelector(":nth-last-child(2n+1 of div ul >> li)") did not throw exception.
-PASS document.getElementById('style-container').sheet.cssRules.length is 1
-PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is ":nth-last-child(2n+1 of div ul >> li)"
-PASS document.querySelector(":matches(foo, div ul >> li, bar)") did not throw exception.
-PASS document.getElementById('style-container').sheet.cssRules.length is 1
-PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is ":matches(foo, div ul >> li, bar)"
-PASS document.querySelector(":not(div ul >> li)") did not throw exception.
-PASS document.getElementById('style-container').sheet.cssRules.length is 1
-PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is ":not(div ul >> li)"
-PASS document.querySelector("div ul >> li + li") did not throw exception.
-PASS document.getElementById('style-container').sheet.cssRules.length is 1
-PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "div ul >> li + li"
-PASS document.querySelector(":nth-child(2n+1 of div ul >> li + li)") did not throw exception.
-PASS document.getElementById('style-container').sheet.cssRules.length is 1
-PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is ":nth-child(2n+1 of div ul >> li + li)"
-PASS document.querySelector(":nth-last-child(2n+1 of div ul >> li + li)") did not throw exception.
-PASS document.getElementById('style-container').sheet.cssRules.length is 1
-PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is ":nth-last-child(2n+1 of div ul >> li + li)"
-PASS document.querySelector(":matches(foo, div ul >> li + li, bar)") did not throw exception.
-PASS document.getElementById('style-container').sheet.cssRules.length is 1
-PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is ":matches(foo, div ul >> li + li, bar)"
-PASS document.querySelector(":not(div ul >> li + li)") did not throw exception.
-PASS document.getElementById('style-container').sheet.cssRules.length is 1
-PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is ":not(div ul >> li + li)"
-PASS document.querySelector("div ul >> li ~ li") did not throw exception.
-PASS document.getElementById('style-container').sheet.cssRules.length is 1
-PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "div ul >> li ~ li"
-PASS document.querySelector(":nth-child(2n+1 of div ul >> li ~ li)") did not throw exception.
-PASS document.getElementById('style-container').sheet.cssRules.length is 1
-PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is ":nth-child(2n+1 of div ul >> li ~ li)"
-PASS document.querySelector(":nth-last-child(2n+1 of div ul >> li ~ li)") did not throw exception.
-PASS document.getElementById('style-container').sheet.cssRules.length is 1
-PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is ":nth-last-child(2n+1 of div ul >> li ~ li)"
-PASS document.querySelector(":matches(foo, div ul >> li ~ li, bar)") did not throw exception.
-PASS document.getElementById('style-container').sheet.cssRules.length is 1
-PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is ":matches(foo, div ul >> li ~ li, bar)"
-PASS document.querySelector(":not(div ul >> li ~ li)") did not throw exception.
-PASS document.getElementById('style-container').sheet.cssRules.length is 1
-PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is ":not(div ul >> li ~ li)"
-PASS document.querySelector("div > ul >> li ~ li") did not throw exception.
-PASS document.getElementById('style-container').sheet.cssRules.length is 1
-PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "div > ul >> li ~ li"
-PASS document.querySelector(":nth-child(2n+1 of div > ul >> li ~ li)") did not throw exception.
-PASS document.getElementById('style-container').sheet.cssRules.length is 1
-PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is ":nth-child(2n+1 of div > ul >> li ~ li)"
-PASS document.querySelector(":nth-last-child(2n+1 of div > ul >> li ~ li)") did not throw exception.
-PASS document.getElementById('style-container').sheet.cssRules.length is 1
-PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is ":nth-last-child(2n+1 of div > ul >> li ~ li)"
-PASS document.querySelector(":matches(foo, div > ul >> li ~ li, bar)") did not throw exception.
-PASS document.getElementById('style-container').sheet.cssRules.length is 1
-PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is ":matches(foo, div > ul >> li ~ li, bar)"
-PASS document.querySelector(":not(div > ul >> li ~ li)") did not throw exception.
-PASS document.getElementById('style-container').sheet.cssRules.length is 1
-PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is ":not(div > ul >> li ~ li)"
-Serialization selectors.
-PASS document.querySelector("ul >> li") did not throw exception.
-PASS document.getElementById('style-container').sheet.cssRules.length is 1
-PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "ul >> li"
-PASS document.querySelector("ul        >> li") did not throw exception.
-PASS document.getElementById('style-container').sheet.cssRules.length is 1
-PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "ul >> li"
-PASS document.querySelector("ul >>     li") did not throw exception.
-PASS document.getElementById('style-container').sheet.cssRules.length is 1
-PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "ul >> li"
-PASS document.querySelector("ul        >>      li") did not throw exception.
-PASS document.getElementById('style-container').sheet.cssRules.length is 1
-PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "ul >> li"
-PASS document.querySelector("ul\f>> li") did not throw exception.
-PASS document.getElementById('style-container').sheet.cssRules.length is 1
-PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "ul >> li"
-PASS document.querySelector("ul >>\fli") did not throw exception.
-PASS document.getElementById('style-container').sheet.cssRules.length is 1
-PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "ul >> li"
-PASS document.querySelector("ul\f>>\fli") did not throw exception.
-PASS document.getElementById('style-container').sheet.cssRules.length is 1
-PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "ul >> li"
-PASS document.querySelector("ul    >> li") did not throw exception.
-PASS document.getElementById('style-container').sheet.cssRules.length is 1
-PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "ul >> li"
-PASS document.querySelector("ul >>    li") did not throw exception.
-PASS document.getElementById('style-container').sheet.cssRules.length is 1
-PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "ul >> li"
-PASS document.querySelector("ul    >>    li") did not throw exception.
-PASS document.getElementById('style-container').sheet.cssRules.length is 1
-PASS document.getElementById('style-container').sheet.cssRules[0].selectorText is "ul >> li"
-Invalid selectors.
-PASS document.querySelector("ul > > li") threw exception SyntaxError: The string did not match the expected pattern..
-PASS document.getElementById('style-container').sheet.cssRules.length is 0
-PASS document.querySelector("ul >      > li") threw exception SyntaxError: The string did not match the expected pattern..
-PASS document.getElementById('style-container').sheet.cssRules.length is 0
-PASS document.querySelector("ul >+> li") threw exception SyntaxError: The string did not match the expected pattern..
-PASS document.getElementById('style-container').sheet.cssRules.length is 0
-PASS document.querySelector("ul >~> li") threw exception SyntaxError: The string did not match the expected pattern..
-PASS document.getElementById('style-container').sheet.cssRules.length is 0
-PASS document.querySelector("ul >>> li") threw exception SyntaxError: The string did not match the expected pattern..
-PASS document.getElementById('style-container').sheet.cssRules.length is 0
-PASS document.querySelector("ul >>() li") threw exception SyntaxError: The string did not match the expected pattern..
-PASS document.getElementById('style-container').sheet.cssRules.length is 0
-PASS successfullyParsed is true
-
-TEST COMPLETE
-
diff --git a/LayoutTests/fast/css/parsing-css-descendant-combinator-doubled-child-syntax.html b/LayoutTests/fast/css/parsing-css-descendant-combinator-doubled-child-syntax.html
deleted file mode 100644 (file)
index 5355b49..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
-<!doctype html>
-<html>
-<head>
-<script src="../../resources/js-test-pre.js"></script>
-<style id="style-container"></style>
-</head>
-<body>
-</body>
-<script>
-description('Test the parsing of the descendant combinator with the double-child syntax ">>" for querySelector and style.');
-
-function testValidSelector(selectorString, expectedSerializedSelector) {
-    shouldNotThrow('document.querySelector("' + selectorString.replace(/\\/g, '\\\\') + '")');
-
-    var styleContainer = document.getElementById('style-container');
-    styleContainer.innerHTML = selectorString + ' { }';
-    shouldBe("document.getElementById('style-container').sheet.cssRules.length", "1");
-    if (!expectedSerializedSelector)
-        expectedSerializedSelector = selectorString;
-    shouldBeEqualToString("document.getElementById('style-container').sheet.cssRules[0].selectorText", expectedSerializedSelector);
-    styleContainer.innerHTML = '';
-}
-
-function testInvalidSelector(selectorString) {
-    shouldThrowErrorName('document.querySelector("' + selectorString + '")', 'SyntaxError');
-
-    var styleContainer = document.getElementById('style-container');
-    styleContainer.innerHTML = selectorString + ' { }';
-    shouldBe("document.getElementById('style-container').sheet.cssRules.length", "0");
-    styleContainer.innerHTML = '';
-}
-
-var simpleValidSelectors = [
-    "ul >> li",
-    "div >> ul >> li",
-    "div >> ul li",
-    "div ul >> li",
-    "div ul >> li + li",
-    "div ul >> li ~ li",
-    "div > ul >> li ~ li"
-];
-
-debug("Valid selectors.");
-for (var selectorString of simpleValidSelectors) {
-    // The basics: every combinator.
-    testValidSelector(selectorString);
-
-    // Used in function pseudo classes.
-    testValidSelector(":nth-child(2n+1 of " + selectorString + ")");
-    testValidSelector(":nth-last-child(2n+1 of " + selectorString + ")");
-    testValidSelector(":matches(foo, " + selectorString + ", bar)");
-    testValidSelector(":not(" + selectorString + ")");
-}
-
-var simpleValidSelectors = [
-    ["ul >> li", "ul >> li"],
-
-    // Tab spacing.
-    ["ul\t>> li", "ul >> li"],
-    ["ul >>\tli", "ul >> li"],
-    ["ul\t>>\tli", "ul >> li"],
-
-    // Form feed.
-    ["ul\u000c>> li", "ul >> li"],
-    ["ul >>\u000cli", "ul >> li"],
-    ["ul\u000c>>\u000cli", "ul >> li"],
-
-    // Extra spacings.
-    ["ul    >> li", "ul >> li"],
-    ["ul >>    li", "ul >> li"],
-    ["ul    >>    li", "ul >> li"],
-
-];
-
-debug("Serialization selectors.");
-
-for (var testCase of simpleValidSelectors) {
-    testValidSelector(testCase[0], testCase[1]);
-}
-
-
-var invalidSelectors = [
-    "ul > > li",
-    "ul >\t> li",
-    "ul >+> li",
-    "ul >~> li",
-    "ul >>> li",
-    "ul >>() li",
-];
-
-debug("Invalid selectors.");
-for (var selectorString of invalidSelectors) {
-    testInvalidSelector(selectorString);
-}
-
-</script>
-<script src="../../resources/js-test-post.js"></script>
-</html>
index ac57c86..065b88a 100644 (file)
@@ -3,16 +3,16 @@ Check various cases of register pressure with case-insensitive attribute matchin
 On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
 
 
-Testing "[type=foobar i] > * > * >> innerTestCase"
-PASS document.querySelectorAll('[type=foobar i] > * > * >> innerTestCase').length is 8
-PASS document.querySelectorAll('[type=foobar i] > * > * >> innerTestCase')[0].id is "innertestcase1"
-PASS document.querySelectorAll('[type=foobar i] > * > * >> innerTestCase')[1].id is "innertestcase2"
-PASS document.querySelectorAll('[type=foobar i] > * > * >> innerTestCase')[2].id is "innertestcase3"
-PASS document.querySelectorAll('[type=foobar i] > * > * >> innerTestCase')[3].id is "innertestcase4"
-PASS document.querySelectorAll('[type=foobar i] > * > * >> innerTestCase')[4].id is "innertestcase5"
-PASS document.querySelectorAll('[type=foobar i] > * > * >> innerTestCase')[5].id is "innertestcase6"
-PASS document.querySelectorAll('[type=foobar i] > * > * >> innerTestCase')[6].id is "innertestcase7"
-PASS document.querySelectorAll('[type=foobar i] > * > * >> innerTestCase')[7].id is "innertestcase8"
+Testing "[type=foobar i] > * > * innerTestCase"
+PASS document.querySelectorAll('[type=foobar i] > * > * innerTestCase').length is 8
+PASS document.querySelectorAll('[type=foobar i] > * > * innerTestCase')[0].id is "innertestcase1"
+PASS document.querySelectorAll('[type=foobar i] > * > * innerTestCase')[1].id is "innertestcase2"
+PASS document.querySelectorAll('[type=foobar i] > * > * innerTestCase')[2].id is "innertestcase3"
+PASS document.querySelectorAll('[type=foobar i] > * > * innerTestCase')[3].id is "innertestcase4"
+PASS document.querySelectorAll('[type=foobar i] > * > * innerTestCase')[4].id is "innertestcase5"
+PASS document.querySelectorAll('[type=foobar i] > * > * innerTestCase')[5].id is "innertestcase6"
+PASS document.querySelectorAll('[type=foobar i] > * > * innerTestCase')[6].id is "innertestcase7"
+PASS document.querySelectorAll('[type=foobar i] > * > * innerTestCase')[7].id is "innertestcase8"
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[0]).backgroundColor is "rgb(10, 100, 200)"
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[1]).backgroundColor is "rgb(10, 100, 200)"
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[2]).backgroundColor is "rgb(10, 100, 200)"
@@ -22,15 +22,15 @@ PASS getComputedStyle(document.querySelectorAll("innerTestCase")[5]).backgroundC
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[6]).backgroundColor is "rgb(10, 100, 200)"
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[7]).backgroundColor is "rgb(10, 100, 200)"
 
-Testing "[attribute1=VALUE1 i] > * > * >> innerTestCase"
-PASS document.querySelectorAll('[attribute1=VALUE1 i] > * > * >> innerTestCase').length is 7
-PASS document.querySelectorAll('[attribute1=VALUE1 i] > * > * >> innerTestCase')[0].id is "innertestcase1"
-PASS document.querySelectorAll('[attribute1=VALUE1 i] > * > * >> innerTestCase')[1].id is "innertestcase2"
-PASS document.querySelectorAll('[attribute1=VALUE1 i] > * > * >> innerTestCase')[2].id is "innertestcase3"
-PASS document.querySelectorAll('[attribute1=VALUE1 i] > * > * >> innerTestCase')[3].id is "innertestcase5"
-PASS document.querySelectorAll('[attribute1=VALUE1 i] > * > * >> innerTestCase')[4].id is "innertestcase6"
-PASS document.querySelectorAll('[attribute1=VALUE1 i] > * > * >> innerTestCase')[5].id is "innertestcase7"
-PASS document.querySelectorAll('[attribute1=VALUE1 i] > * > * >> innerTestCase')[6].id is "innertestcase8"
+Testing "[attribute1=VALUE1 i] > * > * innerTestCase"
+PASS document.querySelectorAll('[attribute1=VALUE1 i] > * > * innerTestCase').length is 7
+PASS document.querySelectorAll('[attribute1=VALUE1 i] > * > * innerTestCase')[0].id is "innertestcase1"
+PASS document.querySelectorAll('[attribute1=VALUE1 i] > * > * innerTestCase')[1].id is "innertestcase2"
+PASS document.querySelectorAll('[attribute1=VALUE1 i] > * > * innerTestCase')[2].id is "innertestcase3"
+PASS document.querySelectorAll('[attribute1=VALUE1 i] > * > * innerTestCase')[3].id is "innertestcase5"
+PASS document.querySelectorAll('[attribute1=VALUE1 i] > * > * innerTestCase')[4].id is "innertestcase6"
+PASS document.querySelectorAll('[attribute1=VALUE1 i] > * > * innerTestCase')[5].id is "innertestcase7"
+PASS document.querySelectorAll('[attribute1=VALUE1 i] > * > * innerTestCase')[6].id is "innertestcase8"
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[0]).backgroundColor is "rgb(10, 100, 200)"
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[1]).backgroundColor is "rgb(10, 100, 200)"
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[2]).backgroundColor is "rgb(10, 100, 200)"
@@ -40,15 +40,15 @@ PASS getComputedStyle(document.querySelectorAll("innerTestCase")[5]).backgroundC
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[6]).backgroundColor is "rgb(10, 100, 200)"
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[7]).backgroundColor is "rgb(10, 100, 200)"
 
-Testing "[type=foobar i] ~ * ~ * >> innerTestCase"
-PASS document.querySelectorAll('[type=foobar i] ~ * ~ * >> innerTestCase').length is 7
-PASS document.querySelectorAll('[type=foobar i] ~ * ~ * >> innerTestCase')[0].id is "innertestcase2"
-PASS document.querySelectorAll('[type=foobar i] ~ * ~ * >> innerTestCase')[1].id is "innertestcase3"
-PASS document.querySelectorAll('[type=foobar i] ~ * ~ * >> innerTestCase')[2].id is "innertestcase4"
-PASS document.querySelectorAll('[type=foobar i] ~ * ~ * >> innerTestCase')[3].id is "innertestcase5"
-PASS document.querySelectorAll('[type=foobar i] ~ * ~ * >> innerTestCase')[4].id is "innertestcase6"
-PASS document.querySelectorAll('[type=foobar i] ~ * ~ * >> innerTestCase')[5].id is "innertestcase7"
-PASS document.querySelectorAll('[type=foobar i] ~ * ~ * >> innerTestCase')[6].id is "innertestcase8"
+Testing "[type=foobar i] ~ * ~ * innerTestCase"
+PASS document.querySelectorAll('[type=foobar i] ~ * ~ * innerTestCase').length is 7
+PASS document.querySelectorAll('[type=foobar i] ~ * ~ * innerTestCase')[0].id is "innertestcase2"
+PASS document.querySelectorAll('[type=foobar i] ~ * ~ * innerTestCase')[1].id is "innertestcase3"
+PASS document.querySelectorAll('[type=foobar i] ~ * ~ * innerTestCase')[2].id is "innertestcase4"
+PASS document.querySelectorAll('[type=foobar i] ~ * ~ * innerTestCase')[3].id is "innertestcase5"
+PASS document.querySelectorAll('[type=foobar i] ~ * ~ * innerTestCase')[4].id is "innertestcase6"
+PASS document.querySelectorAll('[type=foobar i] ~ * ~ * innerTestCase')[5].id is "innertestcase7"
+PASS document.querySelectorAll('[type=foobar i] ~ * ~ * innerTestCase')[6].id is "innertestcase8"
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[0]).backgroundColor is "rgb(255, 0, 0)"
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[1]).backgroundColor is "rgb(10, 100, 200)"
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[2]).backgroundColor is "rgb(10, 100, 200)"
@@ -58,15 +58,15 @@ PASS getComputedStyle(document.querySelectorAll("innerTestCase")[5]).backgroundC
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[6]).backgroundColor is "rgb(10, 100, 200)"
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[7]).backgroundColor is "rgb(10, 100, 200)"
 
-Testing "[attribute1=VALUE1 i] ~ * ~ * >> innerTestCase"
-PASS document.querySelectorAll('[attribute1=VALUE1 i] ~ * ~ * >> innerTestCase').length is 7
-PASS document.querySelectorAll('[attribute1=VALUE1 i] ~ * ~ * >> innerTestCase')[0].id is "innertestcase2"
-PASS document.querySelectorAll('[attribute1=VALUE1 i] ~ * ~ * >> innerTestCase')[1].id is "innertestcase3"
-PASS document.querySelectorAll('[attribute1=VALUE1 i] ~ * ~ * >> innerTestCase')[2].id is "innertestcase4"
-PASS document.querySelectorAll('[attribute1=VALUE1 i] ~ * ~ * >> innerTestCase')[3].id is "innertestcase5"
-PASS document.querySelectorAll('[attribute1=VALUE1 i] ~ * ~ * >> innerTestCase')[4].id is "innertestcase6"
-PASS document.querySelectorAll('[attribute1=VALUE1 i] ~ * ~ * >> innerTestCase')[5].id is "innertestcase7"
-PASS document.querySelectorAll('[attribute1=VALUE1 i] ~ * ~ * >> innerTestCase')[6].id is "innertestcase8"
+Testing "[attribute1=VALUE1 i] ~ * ~ * innerTestCase"
+PASS document.querySelectorAll('[attribute1=VALUE1 i] ~ * ~ * innerTestCase').length is 7
+PASS document.querySelectorAll('[attribute1=VALUE1 i] ~ * ~ * innerTestCase')[0].id is "innertestcase2"
+PASS document.querySelectorAll('[attribute1=VALUE1 i] ~ * ~ * innerTestCase')[1].id is "innertestcase3"
+PASS document.querySelectorAll('[attribute1=VALUE1 i] ~ * ~ * innerTestCase')[2].id is "innertestcase4"
+PASS document.querySelectorAll('[attribute1=VALUE1 i] ~ * ~ * innerTestCase')[3].id is "innertestcase5"
+PASS document.querySelectorAll('[attribute1=VALUE1 i] ~ * ~ * innerTestCase')[4].id is "innertestcase6"
+PASS document.querySelectorAll('[attribute1=VALUE1 i] ~ * ~ * innerTestCase')[5].id is "innertestcase7"
+PASS document.querySelectorAll('[attribute1=VALUE1 i] ~ * ~ * innerTestCase')[6].id is "innertestcase8"
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[0]).backgroundColor is "rgb(255, 0, 0)"
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[1]).backgroundColor is "rgb(10, 100, 200)"
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[2]).backgroundColor is "rgb(10, 100, 200)"
@@ -76,15 +76,15 @@ PASS getComputedStyle(document.querySelectorAll("innerTestCase")[5]).backgroundC
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[6]).backgroundColor is "rgb(10, 100, 200)"
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[7]).backgroundColor is "rgb(10, 100, 200)"
 
-Testing "[type=foobar i] ~ * ~ *  > * > * >> innerTestCase"
-PASS document.querySelectorAll('[type=foobar i] ~ * ~ *  > * > * >> innerTestCase').length is 7
-PASS document.querySelectorAll('[type=foobar i] ~ * ~ *  > * > * >> innerTestCase')[0].id is "innertestcase2"
-PASS document.querySelectorAll('[type=foobar i] ~ * ~ *  > * > * >> innerTestCase')[1].id is "innertestcase3"
-PASS document.querySelectorAll('[type=foobar i] ~ * ~ *  > * > * >> innerTestCase')[2].id is "innertestcase4"
-PASS document.querySelectorAll('[type=foobar i] ~ * ~ *  > * > * >> innerTestCase')[3].id is "innertestcase5"
-PASS document.querySelectorAll('[type=foobar i] ~ * ~ *  > * > * >> innerTestCase')[4].id is "innertestcase6"
-PASS document.querySelectorAll('[type=foobar i] ~ * ~ *  > * > * >> innerTestCase')[5].id is "innertestcase7"
-PASS document.querySelectorAll('[type=foobar i] ~ * ~ *  > * > * >> innerTestCase')[6].id is "innertestcase8"
+Testing "[type=foobar i] ~ * ~ *  > * > * innerTestCase"
+PASS document.querySelectorAll('[type=foobar i] ~ * ~ *  > * > * innerTestCase').length is 7
+PASS document.querySelectorAll('[type=foobar i] ~ * ~ *  > * > * innerTestCase')[0].id is "innertestcase2"
+PASS document.querySelectorAll('[type=foobar i] ~ * ~ *  > * > * innerTestCase')[1].id is "innertestcase3"
+PASS document.querySelectorAll('[type=foobar i] ~ * ~ *  > * > * innerTestCase')[2].id is "innertestcase4"
+PASS document.querySelectorAll('[type=foobar i] ~ * ~ *  > * > * innerTestCase')[3].id is "innertestcase5"
+PASS document.querySelectorAll('[type=foobar i] ~ * ~ *  > * > * innerTestCase')[4].id is "innertestcase6"
+PASS document.querySelectorAll('[type=foobar i] ~ * ~ *  > * > * innerTestCase')[5].id is "innertestcase7"
+PASS document.querySelectorAll('[type=foobar i] ~ * ~ *  > * > * innerTestCase')[6].id is "innertestcase8"
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[0]).backgroundColor is "rgb(255, 0, 0)"
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[1]).backgroundColor is "rgb(10, 100, 200)"
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[2]).backgroundColor is "rgb(10, 100, 200)"
@@ -94,15 +94,15 @@ PASS getComputedStyle(document.querySelectorAll("innerTestCase")[5]).backgroundC
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[6]).backgroundColor is "rgb(10, 100, 200)"
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[7]).backgroundColor is "rgb(10, 100, 200)"
 
-Testing "[attribute1=VALUE1 i] ~ * ~ *  > * > * >> innerTestCase"
-PASS document.querySelectorAll('[attribute1=VALUE1 i] ~ * ~ *  > * > * >> innerTestCase').length is 7
-PASS document.querySelectorAll('[attribute1=VALUE1 i] ~ * ~ *  > * > * >> innerTestCase')[0].id is "innertestcase2"
-PASS document.querySelectorAll('[attribute1=VALUE1 i] ~ * ~ *  > * > * >> innerTestCase')[1].id is "innertestcase3"
-PASS document.querySelectorAll('[attribute1=VALUE1 i] ~ * ~ *  > * > * >> innerTestCase')[2].id is "innertestcase4"
-PASS document.querySelectorAll('[attribute1=VALUE1 i] ~ * ~ *  > * > * >> innerTestCase')[3].id is "innertestcase5"
-PASS document.querySelectorAll('[attribute1=VALUE1 i] ~ * ~ *  > * > * >> innerTestCase')[4].id is "innertestcase6"
-PASS document.querySelectorAll('[attribute1=VALUE1 i] ~ * ~ *  > * > * >> innerTestCase')[5].id is "innertestcase7"
-PASS document.querySelectorAll('[attribute1=VALUE1 i] ~ * ~ *  > * > * >> innerTestCase')[6].id is "innertestcase8"
+Testing "[attribute1=VALUE1 i] ~ * ~ *  > * > * innerTestCase"
+PASS document.querySelectorAll('[attribute1=VALUE1 i] ~ * ~ *  > * > * innerTestCase').length is 7
+PASS document.querySelectorAll('[attribute1=VALUE1 i] ~ * ~ *  > * > * innerTestCase')[0].id is "innertestcase2"
+PASS document.querySelectorAll('[attribute1=VALUE1 i] ~ * ~ *  > * > * innerTestCase')[1].id is "innertestcase3"
+PASS document.querySelectorAll('[attribute1=VALUE1 i] ~ * ~ *  > * > * innerTestCase')[2].id is "innertestcase4"
+PASS document.querySelectorAll('[attribute1=VALUE1 i] ~ * ~ *  > * > * innerTestCase')[3].id is "innertestcase5"
+PASS document.querySelectorAll('[attribute1=VALUE1 i] ~ * ~ *  > * > * innerTestCase')[4].id is "innertestcase6"
+PASS document.querySelectorAll('[attribute1=VALUE1 i] ~ * ~ *  > * > * innerTestCase')[5].id is "innertestcase7"
+PASS document.querySelectorAll('[attribute1=VALUE1 i] ~ * ~ *  > * > * innerTestCase')[6].id is "innertestcase8"
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[0]).backgroundColor is "rgb(255, 0, 0)"
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[1]).backgroundColor is "rgb(10, 100, 200)"
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[2]).backgroundColor is "rgb(10, 100, 200)"
@@ -112,16 +112,16 @@ PASS getComputedStyle(document.querySelectorAll("innerTestCase")[5]).backgroundC
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[6]).backgroundColor is "rgb(10, 100, 200)"
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[7]).backgroundColor is "rgb(10, 100, 200)"
 
-Testing "[type~=fOobar i] > * > * >> innerTestCase"
-PASS document.querySelectorAll('[type~=fOobar i] > * > * >> innerTestCase').length is 8
-PASS document.querySelectorAll('[type~=fOobar i] > * > * >> innerTestCase')[0].id is "innertestcase1"
-PASS document.querySelectorAll('[type~=fOobar i] > * > * >> innerTestCase')[1].id is "innertestcase2"
-PASS document.querySelectorAll('[type~=fOobar i] > * > * >> innerTestCase')[2].id is "innertestcase3"
-PASS document.querySelectorAll('[type~=fOobar i] > * > * >> innerTestCase')[3].id is "innertestcase4"
-PASS document.querySelectorAll('[type~=fOobar i] > * > * >> innerTestCase')[4].id is "innertestcase5"
-PASS document.querySelectorAll('[type~=fOobar i] > * > * >> innerTestCase')[5].id is "innertestcase6"
-PASS document.querySelectorAll('[type~=fOobar i] > * > * >> innerTestCase')[6].id is "innertestcase7"
-PASS document.querySelectorAll('[type~=fOobar i] > * > * >> innerTestCase')[7].id is "innertestcase8"
+Testing "[type~=fOobar i] > * > * innerTestCase"
+PASS document.querySelectorAll('[type~=fOobar i] > * > * innerTestCase').length is 8
+PASS document.querySelectorAll('[type~=fOobar i] > * > * innerTestCase')[0].id is "innertestcase1"
+PASS document.querySelectorAll('[type~=fOobar i] > * > * innerTestCase')[1].id is "innertestcase2"
+PASS document.querySelectorAll('[type~=fOobar i] > * > * innerTestCase')[2].id is "innertestcase3"
+PASS document.querySelectorAll('[type~=fOobar i] > * > * innerTestCase')[3].id is "innertestcase4"
+PASS document.querySelectorAll('[type~=fOobar i] > * > * innerTestCase')[4].id is "innertestcase5"
+PASS document.querySelectorAll('[type~=fOobar i] > * > * innerTestCase')[5].id is "innertestcase6"
+PASS document.querySelectorAll('[type~=fOobar i] > * > * innerTestCase')[6].id is "innertestcase7"
+PASS document.querySelectorAll('[type~=fOobar i] > * > * innerTestCase')[7].id is "innertestcase8"
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[0]).backgroundColor is "rgb(10, 100, 200)"
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[1]).backgroundColor is "rgb(10, 100, 200)"
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[2]).backgroundColor is "rgb(10, 100, 200)"
@@ -131,15 +131,15 @@ PASS getComputedStyle(document.querySelectorAll("innerTestCase")[5]).backgroundC
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[6]).backgroundColor is "rgb(10, 100, 200)"
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[7]).backgroundColor is "rgb(10, 100, 200)"
 
-Testing "[type~=foObar i] ~ * ~ * >> innerTestCase"
-PASS document.querySelectorAll('[type~=foObar i] ~ * ~ * >> innerTestCase').length is 7
-PASS document.querySelectorAll('[type~=foObar i] ~ * ~ * >> innerTestCase')[0].id is "innertestcase2"
-PASS document.querySelectorAll('[type~=foObar i] ~ * ~ * >> innerTestCase')[1].id is "innertestcase3"
-PASS document.querySelectorAll('[type~=foObar i] ~ * ~ * >> innerTestCase')[2].id is "innertestcase4"
-PASS document.querySelectorAll('[type~=foObar i] ~ * ~ * >> innerTestCase')[3].id is "innertestcase5"
-PASS document.querySelectorAll('[type~=foObar i] ~ * ~ * >> innerTestCase')[4].id is "innertestcase6"
-PASS document.querySelectorAll('[type~=foObar i] ~ * ~ * >> innerTestCase')[5].id is "innertestcase7"
-PASS document.querySelectorAll('[type~=foObar i] ~ * ~ * >> innerTestCase')[6].id is "innertestcase8"
+Testing "[type~=foObar i] ~ * ~ * innerTestCase"
+PASS document.querySelectorAll('[type~=foObar i] ~ * ~ * innerTestCase').length is 7
+PASS document.querySelectorAll('[type~=foObar i] ~ * ~ * innerTestCase')[0].id is "innertestcase2"
+PASS document.querySelectorAll('[type~=foObar i] ~ * ~ * innerTestCase')[1].id is "innertestcase3"
+PASS document.querySelectorAll('[type~=foObar i] ~ * ~ * innerTestCase')[2].id is "innertestcase4"
+PASS document.querySelectorAll('[type~=foObar i] ~ * ~ * innerTestCase')[3].id is "innertestcase5"
+PASS document.querySelectorAll('[type~=foObar i] ~ * ~ * innerTestCase')[4].id is "innertestcase6"
+PASS document.querySelectorAll('[type~=foObar i] ~ * ~ * innerTestCase')[5].id is "innertestcase7"
+PASS document.querySelectorAll('[type~=foObar i] ~ * ~ * innerTestCase')[6].id is "innertestcase8"
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[0]).backgroundColor is "rgb(255, 0, 0)"
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[1]).backgroundColor is "rgb(10, 100, 200)"
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[2]).backgroundColor is "rgb(10, 100, 200)"
@@ -149,15 +149,15 @@ PASS getComputedStyle(document.querySelectorAll("innerTestCase")[5]).backgroundC
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[6]).backgroundColor is "rgb(10, 100, 200)"
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[7]).backgroundColor is "rgb(10, 100, 200)"
 
-Testing "[type~=foobar i] ~ * ~ *  > * > * >> innerTestCase"
-PASS document.querySelectorAll('[type~=foobar i] ~ * ~ *  > * > * >> innerTestCase').length is 7
-PASS document.querySelectorAll('[type~=foobar i] ~ * ~ *  > * > * >> innerTestCase')[0].id is "innertestcase2"
-PASS document.querySelectorAll('[type~=foobar i] ~ * ~ *  > * > * >> innerTestCase')[1].id is "innertestcase3"
-PASS document.querySelectorAll('[type~=foobar i] ~ * ~ *  > * > * >> innerTestCase')[2].id is "innertestcase4"
-PASS document.querySelectorAll('[type~=foobar i] ~ * ~ *  > * > * >> innerTestCase')[3].id is "innertestcase5"
-PASS document.querySelectorAll('[type~=foobar i] ~ * ~ *  > * > * >> innerTestCase')[4].id is "innertestcase6"
-PASS document.querySelectorAll('[type~=foobar i] ~ * ~ *  > * > * >> innerTestCase')[5].id is "innertestcase7"
-PASS document.querySelectorAll('[type~=foobar i] ~ * ~ *  > * > * >> innerTestCase')[6].id is "innertestcase8"
+Testing "[type~=foobar i] ~ * ~ *  > * > * innerTestCase"
+PASS document.querySelectorAll('[type~=foobar i] ~ * ~ *  > * > * innerTestCase').length is 7
+PASS document.querySelectorAll('[type~=foobar i] ~ * ~ *  > * > * innerTestCase')[0].id is "innertestcase2"
+PASS document.querySelectorAll('[type~=foobar i] ~ * ~ *  > * > * innerTestCase')[1].id is "innertestcase3"
+PASS document.querySelectorAll('[type~=foobar i] ~ * ~ *  > * > * innerTestCase')[2].id is "innertestcase4"
+PASS document.querySelectorAll('[type~=foobar i] ~ * ~ *  > * > * innerTestCase')[3].id is "innertestcase5"
+PASS document.querySelectorAll('[type~=foobar i] ~ * ~ *  > * > * innerTestCase')[4].id is "innertestcase6"
+PASS document.querySelectorAll('[type~=foobar i] ~ * ~ *  > * > * innerTestCase')[5].id is "innertestcase7"
+PASS document.querySelectorAll('[type~=foobar i] ~ * ~ *  > * > * innerTestCase')[6].id is "innertestcase8"
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[0]).backgroundColor is "rgb(255, 0, 0)"
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[1]).backgroundColor is "rgb(10, 100, 200)"
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[2]).backgroundColor is "rgb(10, 100, 200)"
@@ -167,16 +167,16 @@ PASS getComputedStyle(document.querySelectorAll("innerTestCase")[5]).backgroundC
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[6]).backgroundColor is "rgb(10, 100, 200)"
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[7]).backgroundColor is "rgb(10, 100, 200)"
 
-Testing "[type|=foObar i] > * > * >> innerTestCase"
-PASS document.querySelectorAll('[type|=foObar i] > * > * >> innerTestCase').length is 8
-PASS document.querySelectorAll('[type|=foObar i] > * > * >> innerTestCase')[0].id is "innertestcase1"
-PASS document.querySelectorAll('[type|=foObar i] > * > * >> innerTestCase')[1].id is "innertestcase2"
-PASS document.querySelectorAll('[type|=foObar i] > * > * >> innerTestCase')[2].id is "innertestcase3"
-PASS document.querySelectorAll('[type|=foObar i] > * > * >> innerTestCase')[3].id is "innertestcase4"
-PASS document.querySelectorAll('[type|=foObar i] > * > * >> innerTestCase')[4].id is "innertestcase5"
-PASS document.querySelectorAll('[type|=foObar i] > * > * >> innerTestCase')[5].id is "innertestcase6"
-PASS document.querySelectorAll('[type|=foObar i] > * > * >> innerTestCase')[6].id is "innertestcase7"
-PASS document.querySelectorAll('[type|=foObar i] > * > * >> innerTestCase')[7].id is "innertestcase8"
+Testing "[type|=foObar i] > * > * innerTestCase"
+PASS document.querySelectorAll('[type|=foObar i] > * > * innerTestCase').length is 8
+PASS document.querySelectorAll('[type|=foObar i] > * > * innerTestCase')[0].id is "innertestcase1"
+PASS document.querySelectorAll('[type|=foObar i] > * > * innerTestCase')[1].id is "innertestcase2"
+PASS document.querySelectorAll('[type|=foObar i] > * > * innerTestCase')[2].id is "innertestcase3"
+PASS document.querySelectorAll('[type|=foObar i] > * > * innerTestCase')[3].id is "innertestcase4"
+PASS document.querySelectorAll('[type|=foObar i] > * > * innerTestCase')[4].id is "innertestcase5"
+PASS document.querySelectorAll('[type|=foObar i] > * > * innerTestCase')[5].id is "innertestcase6"
+PASS document.querySelectorAll('[type|=foObar i] > * > * innerTestCase')[6].id is "innertestcase7"
+PASS document.querySelectorAll('[type|=foObar i] > * > * innerTestCase')[7].id is "innertestcase8"
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[0]).backgroundColor is "rgb(10, 100, 200)"
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[1]).backgroundColor is "rgb(10, 100, 200)"
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[2]).backgroundColor is "rgb(10, 100, 200)"
@@ -186,15 +186,15 @@ PASS getComputedStyle(document.querySelectorAll("innerTestCase")[5]).backgroundC
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[6]).backgroundColor is "rgb(10, 100, 200)"
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[7]).backgroundColor is "rgb(10, 100, 200)"
 
-Testing "[type|=fooBar i] ~ * ~ * >> innerTestCase"
-PASS document.querySelectorAll('[type|=fooBar i] ~ * ~ * >> innerTestCase').length is 7
-PASS document.querySelectorAll('[type|=fooBar i] ~ * ~ * >> innerTestCase')[0].id is "innertestcase2"
-PASS document.querySelectorAll('[type|=fooBar i] ~ * ~ * >> innerTestCase')[1].id is "innertestcase3"
-PASS document.querySelectorAll('[type|=fooBar i] ~ * ~ * >> innerTestCase')[2].id is "innertestcase4"
-PASS document.querySelectorAll('[type|=fooBar i] ~ * ~ * >> innerTestCase')[3].id is "innertestcase5"
-PASS document.querySelectorAll('[type|=fooBar i] ~ * ~ * >> innerTestCase')[4].id is "innertestcase6"
-PASS document.querySelectorAll('[type|=fooBar i] ~ * ~ * >> innerTestCase')[5].id is "innertestcase7"
-PASS document.querySelectorAll('[type|=fooBar i] ~ * ~ * >> innerTestCase')[6].id is "innertestcase8"
+Testing "[type|=fooBar i] ~ * ~ * innerTestCase"
+PASS document.querySelectorAll('[type|=fooBar i] ~ * ~ * innerTestCase').length is 7
+PASS document.querySelectorAll('[type|=fooBar i] ~ * ~ * innerTestCase')[0].id is "innertestcase2"
+PASS document.querySelectorAll('[type|=fooBar i] ~ * ~ * innerTestCase')[1].id is "innertestcase3"
+PASS document.querySelectorAll('[type|=fooBar i] ~ * ~ * innerTestCase')[2].id is "innertestcase4"
+PASS document.querySelectorAll('[type|=fooBar i] ~ * ~ * innerTestCase')[3].id is "innertestcase5"
+PASS document.querySelectorAll('[type|=fooBar i] ~ * ~ * innerTestCase')[4].id is "innertestcase6"
+PASS document.querySelectorAll('[type|=fooBar i] ~ * ~ * innerTestCase')[5].id is "innertestcase7"
+PASS document.querySelectorAll('[type|=fooBar i] ~ * ~ * innerTestCase')[6].id is "innertestcase8"
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[0]).backgroundColor is "rgb(255, 0, 0)"
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[1]).backgroundColor is "rgb(10, 100, 200)"
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[2]).backgroundColor is "rgb(10, 100, 200)"
@@ -204,15 +204,15 @@ PASS getComputedStyle(document.querySelectorAll("innerTestCase")[5]).backgroundC
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[6]).backgroundColor is "rgb(10, 100, 200)"
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[7]).backgroundColor is "rgb(10, 100, 200)"
 
-Testing "[type|=foobar i] ~ * ~ *  > * > * >> innerTestCase"
-PASS document.querySelectorAll('[type|=foobar i] ~ * ~ *  > * > * >> innerTestCase').length is 7
-PASS document.querySelectorAll('[type|=foobar i] ~ * ~ *  > * > * >> innerTestCase')[0].id is "innertestcase2"
-PASS document.querySelectorAll('[type|=foobar i] ~ * ~ *  > * > * >> innerTestCase')[1].id is "innertestcase3"
-PASS document.querySelectorAll('[type|=foobar i] ~ * ~ *  > * > * >> innerTestCase')[2].id is "innertestcase4"
-PASS document.querySelectorAll('[type|=foobar i] ~ * ~ *  > * > * >> innerTestCase')[3].id is "innertestcase5"
-PASS document.querySelectorAll('[type|=foobar i] ~ * ~ *  > * > * >> innerTestCase')[4].id is "innertestcase6"
-PASS document.querySelectorAll('[type|=foobar i] ~ * ~ *  > * > * >> innerTestCase')[5].id is "innertestcase7"
-PASS document.querySelectorAll('[type|=foobar i] ~ * ~ *  > * > * >> innerTestCase')[6].id is "innertestcase8"
+Testing "[type|=foobar i] ~ * ~ *  > * > * innerTestCase"
+PASS document.querySelectorAll('[type|=foobar i] ~ * ~ *  > * > * innerTestCase').length is 7
+PASS document.querySelectorAll('[type|=foobar i] ~ * ~ *  > * > * innerTestCase')[0].id is "innertestcase2"
+PASS document.querySelectorAll('[type|=foobar i] ~ * ~ *  > * > * innerTestCase')[1].id is "innertestcase3"
+PASS document.querySelectorAll('[type|=foobar i] ~ * ~ *  > * > * innerTestCase')[2].id is "innertestcase4"
+PASS document.querySelectorAll('[type|=foobar i] ~ * ~ *  > * > * innerTestCase')[3].id is "innertestcase5"
+PASS document.querySelectorAll('[type|=foobar i] ~ * ~ *  > * > * innerTestCase')[4].id is "innertestcase6"
+PASS document.querySelectorAll('[type|=foobar i] ~ * ~ *  > * > * innerTestCase')[5].id is "innertestcase7"
+PASS document.querySelectorAll('[type|=foobar i] ~ * ~ *  > * > * innerTestCase')[6].id is "innertestcase8"
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[0]).backgroundColor is "rgb(255, 0, 0)"
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[1]).backgroundColor is "rgb(10, 100, 200)"
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[2]).backgroundColor is "rgb(10, 100, 200)"
@@ -222,16 +222,16 @@ PASS getComputedStyle(document.querySelectorAll("innerTestCase")[5]).backgroundC
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[6]).backgroundColor is "rgb(10, 100, 200)"
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[7]).backgroundColor is "rgb(10, 100, 200)"
 
-Testing "[type^=fooBa i] > * > * >> innerTestCase"
-PASS document.querySelectorAll('[type^=fooBa i] > * > * >> innerTestCase').length is 8
-PASS document.querySelectorAll('[type^=fooBa i] > * > * >> innerTestCase')[0].id is "innertestcase1"
-PASS document.querySelectorAll('[type^=fooBa i] > * > * >> innerTestCase')[1].id is "innertestcase2"
-PASS document.querySelectorAll('[type^=fooBa i] > * > * >> innerTestCase')[2].id is "innertestcase3"
-PASS document.querySelectorAll('[type^=fooBa i] > * > * >> innerTestCase')[3].id is "innertestcase4"
-PASS document.querySelectorAll('[type^=fooBa i] > * > * >> innerTestCase')[4].id is "innertestcase5"
-PASS document.querySelectorAll('[type^=fooBa i] > * > * >> innerTestCase')[5].id is "innertestcase6"
-PASS document.querySelectorAll('[type^=fooBa i] > * > * >> innerTestCase')[6].id is "innertestcase7"
-PASS document.querySelectorAll('[type^=fooBa i] > * > * >> innerTestCase')[7].id is "innertestcase8"
+Testing "[type^=fooBa i] > * > * innerTestCase"
+PASS document.querySelectorAll('[type^=fooBa i] > * > * innerTestCase').length is 8
+PASS document.querySelectorAll('[type^=fooBa i] > * > * innerTestCase')[0].id is "innertestcase1"
+PASS document.querySelectorAll('[type^=fooBa i] > * > * innerTestCase')[1].id is "innertestcase2"
+PASS document.querySelectorAll('[type^=fooBa i] > * > * innerTestCase')[2].id is "innertestcase3"
+PASS document.querySelectorAll('[type^=fooBa i] > * > * innerTestCase')[3].id is "innertestcase4"
+PASS document.querySelectorAll('[type^=fooBa i] > * > * innerTestCase')[4].id is "innertestcase5"
+PASS document.querySelectorAll('[type^=fooBa i] > * > * innerTestCase')[5].id is "innertestcase6"
+PASS document.querySelectorAll('[type^=fooBa i] > * > * innerTestCase')[6].id is "innertestcase7"
+PASS document.querySelectorAll('[type^=fooBa i] > * > * innerTestCase')[7].id is "innertestcase8"
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[0]).backgroundColor is "rgb(10, 100, 200)"
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[1]).backgroundColor is "rgb(10, 100, 200)"
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[2]).backgroundColor is "rgb(10, 100, 200)"
@@ -241,15 +241,15 @@ PASS getComputedStyle(document.querySelectorAll("innerTestCase")[5]).backgroundC
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[6]).backgroundColor is "rgb(10, 100, 200)"
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[7]).backgroundColor is "rgb(10, 100, 200)"
 
-Testing "[type^=fOoba i] ~ * ~ * >> innerTestCase"
-PASS document.querySelectorAll('[type^=fOoba i] ~ * ~ * >> innerTestCase').length is 7
-PASS document.querySelectorAll('[type^=fOoba i] ~ * ~ * >> innerTestCase')[0].id is "innertestcase2"
-PASS document.querySelectorAll('[type^=fOoba i] ~ * ~ * >> innerTestCase')[1].id is "innertestcase3"
-PASS document.querySelectorAll('[type^=fOoba i] ~ * ~ * >> innerTestCase')[2].id is "innertestcase4"
-PASS document.querySelectorAll('[type^=fOoba i] ~ * ~ * >> innerTestCase')[3].id is "innertestcase5"
-PASS document.querySelectorAll('[type^=fOoba i] ~ * ~ * >> innerTestCase')[4].id is "innertestcase6"
-PASS document.querySelectorAll('[type^=fOoba i] ~ * ~ * >> innerTestCase')[5].id is "innertestcase7"
-PASS document.querySelectorAll('[type^=fOoba i] ~ * ~ * >> innerTestCase')[6].id is "innertestcase8"
+Testing "[type^=fOoba i] ~ * ~ * innerTestCase"
+PASS document.querySelectorAll('[type^=fOoba i] ~ * ~ * innerTestCase').length is 7
+PASS document.querySelectorAll('[type^=fOoba i] ~ * ~ * innerTestCase')[0].id is "innertestcase2"
+PASS document.querySelectorAll('[type^=fOoba i] ~ * ~ * innerTestCase')[1].id is "innertestcase3"
+PASS document.querySelectorAll('[type^=fOoba i] ~ * ~ * innerTestCase')[2].id is "innertestcase4"
+PASS document.querySelectorAll('[type^=fOoba i] ~ * ~ * innerTestCase')[3].id is "innertestcase5"
+PASS document.querySelectorAll('[type^=fOoba i] ~ * ~ * innerTestCase')[4].id is "innertestcase6"
+PASS document.querySelectorAll('[type^=fOoba i] ~ * ~ * innerTestCase')[5].id is "innertestcase7"
+PASS document.querySelectorAll('[type^=fOoba i] ~ * ~ * innerTestCase')[6].id is "innertestcase8"
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[0]).backgroundColor is "rgb(255, 0, 0)"
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[1]).backgroundColor is "rgb(10, 100, 200)"
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[2]).backgroundColor is "rgb(10, 100, 200)"
@@ -259,15 +259,15 @@ PASS getComputedStyle(document.querySelectorAll("innerTestCase")[5]).backgroundC
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[6]).backgroundColor is "rgb(10, 100, 200)"
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[7]).backgroundColor is "rgb(10, 100, 200)"
 
-Testing "[type^=fooba i] ~ * ~ *  > * > * >> innerTestCase"
-PASS document.querySelectorAll('[type^=fooba i] ~ * ~ *  > * > * >> innerTestCase').length is 7
-PASS document.querySelectorAll('[type^=fooba i] ~ * ~ *  > * > * >> innerTestCase')[0].id is "innertestcase2"
-PASS document.querySelectorAll('[type^=fooba i] ~ * ~ *  > * > * >> innerTestCase')[1].id is "innertestcase3"
-PASS document.querySelectorAll('[type^=fooba i] ~ * ~ *  > * > * >> innerTestCase')[2].id is "innertestcase4"
-PASS document.querySelectorAll('[type^=fooba i] ~ * ~ *  > * > * >> innerTestCase')[3].id is "innertestcase5"
-PASS document.querySelectorAll('[type^=fooba i] ~ * ~ *  > * > * >> innerTestCase')[4].id is "innertestcase6"
-PASS document.querySelectorAll('[type^=fooba i] ~ * ~ *  > * > * >> innerTestCase')[5].id is "innertestcase7"
-PASS document.querySelectorAll('[type^=fooba i] ~ * ~ *  > * > * >> innerTestCase')[6].id is "innertestcase8"
+Testing "[type^=fooba i] ~ * ~ *  > * > * innerTestCase"
+PASS document.querySelectorAll('[type^=fooba i] ~ * ~ *  > * > * innerTestCase').length is 7
+PASS document.querySelectorAll('[type^=fooba i] ~ * ~ *  > * > * innerTestCase')[0].id is "innertestcase2"
+PASS document.querySelectorAll('[type^=fooba i] ~ * ~ *  > * > * innerTestCase')[1].id is "innertestcase3"
+PASS document.querySelectorAll('[type^=fooba i] ~ * ~ *  > * > * innerTestCase')[2].id is "innertestcase4"
+PASS document.querySelectorAll('[type^=fooba i] ~ * ~ *  > * > * innerTestCase')[3].id is "innertestcase5"
+PASS document.querySelectorAll('[type^=fooba i] ~ * ~ *  > * > * innerTestCase')[4].id is "innertestcase6"
+PASS document.querySelectorAll('[type^=fooba i] ~ * ~ *  > * > * innerTestCase')[5].id is "innertestcase7"
+PASS document.querySelectorAll('[type^=fooba i] ~ * ~ *  > * > * innerTestCase')[6].id is "innertestcase8"
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[0]).backgroundColor is "rgb(255, 0, 0)"
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[1]).backgroundColor is "rgb(10, 100, 200)"
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[2]).backgroundColor is "rgb(10, 100, 200)"
@@ -277,16 +277,16 @@ PASS getComputedStyle(document.querySelectorAll("innerTestCase")[5]).backgroundC
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[6]).backgroundColor is "rgb(10, 100, 200)"
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[7]).backgroundColor is "rgb(10, 100, 200)"
 
-Testing "[type$=oobAr i] > * > * >> innerTestCase"
-PASS document.querySelectorAll('[type$=oobAr i] > * > * >> innerTestCase').length is 8
-PASS document.querySelectorAll('[type$=oobAr i] > * > * >> innerTestCase')[0].id is "innertestcase1"
-PASS document.querySelectorAll('[type$=oobAr i] > * > * >> innerTestCase')[1].id is "innertestcase2"
-PASS document.querySelectorAll('[type$=oobAr i] > * > * >> innerTestCase')[2].id is "innertestcase3"
-PASS document.querySelectorAll('[type$=oobAr i] > * > * >> innerTestCase')[3].id is "innertestcase4"
-PASS document.querySelectorAll('[type$=oobAr i] > * > * >> innerTestCase')[4].id is "innertestcase5"
-PASS document.querySelectorAll('[type$=oobAr i] > * > * >> innerTestCase')[5].id is "innertestcase6"
-PASS document.querySelectorAll('[type$=oobAr i] > * > * >> innerTestCase')[6].id is "innertestcase7"
-PASS document.querySelectorAll('[type$=oobAr i] > * > * >> innerTestCase')[7].id is "innertestcase8"
+Testing "[type$=oobAr i] > * > * innerTestCase"
+PASS document.querySelectorAll('[type$=oobAr i] > * > * innerTestCase').length is 8
+PASS document.querySelectorAll('[type$=oobAr i] > * > * innerTestCase')[0].id is "innertestcase1"
+PASS document.querySelectorAll('[type$=oobAr i] > * > * innerTestCase')[1].id is "innertestcase2"
+PASS document.querySelectorAll('[type$=oobAr i] > * > * innerTestCase')[2].id is "innertestcase3"
+PASS document.querySelectorAll('[type$=oobAr i] > * > * innerTestCase')[3].id is "innertestcase4"
+PASS document.querySelectorAll('[type$=oobAr i] > * > * innerTestCase')[4].id is "innertestcase5"
+PASS document.querySelectorAll('[type$=oobAr i] > * > * innerTestCase')[5].id is "innertestcase6"
+PASS document.querySelectorAll('[type$=oobAr i] > * > * innerTestCase')[6].id is "innertestcase7"
+PASS document.querySelectorAll('[type$=oobAr i] > * > * innerTestCase')[7].id is "innertestcase8"
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[0]).backgroundColor is "rgb(10, 100, 200)"
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[1]).backgroundColor is "rgb(10, 100, 200)"
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[2]).backgroundColor is "rgb(10, 100, 200)"
@@ -296,15 +296,15 @@ PASS getComputedStyle(document.querySelectorAll("innerTestCase")[5]).backgroundC
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[6]).backgroundColor is "rgb(10, 100, 200)"
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[7]).backgroundColor is "rgb(10, 100, 200)"
 
-Testing "[type$=oObar i] ~ * ~ * >> innerTestCase"
-PASS document.querySelectorAll('[type$=oObar i] ~ * ~ * >> innerTestCase').length is 7
-PASS document.querySelectorAll('[type$=oObar i] ~ * ~ * >> innerTestCase')[0].id is "innertestcase2"
-PASS document.querySelectorAll('[type$=oObar i] ~ * ~ * >> innerTestCase')[1].id is "innertestcase3"
-PASS document.querySelectorAll('[type$=oObar i] ~ * ~ * >> innerTestCase')[2].id is "innertestcase4"
-PASS document.querySelectorAll('[type$=oObar i] ~ * ~ * >> innerTestCase')[3].id is "innertestcase5"
-PASS document.querySelectorAll('[type$=oObar i] ~ * ~ * >> innerTestCase')[4].id is "innertestcase6"
-PASS document.querySelectorAll('[type$=oObar i] ~ * ~ * >> innerTestCase')[5].id is "innertestcase7"
-PASS document.querySelectorAll('[type$=oObar i] ~ * ~ * >> innerTestCase')[6].id is "innertestcase8"
+Testing "[type$=oObar i] ~ * ~ * innerTestCase"
+PASS document.querySelectorAll('[type$=oObar i] ~ * ~ * innerTestCase').length is 7
+PASS document.querySelectorAll('[type$=oObar i] ~ * ~ * innerTestCase')[0].id is "innertestcase2"
+PASS document.querySelectorAll('[type$=oObar i] ~ * ~ * innerTestCase')[1].id is "innertestcase3"
+PASS document.querySelectorAll('[type$=oObar i] ~ * ~ * innerTestCase')[2].id is "innertestcase4"
+PASS document.querySelectorAll('[type$=oObar i] ~ * ~ * innerTestCase')[3].id is "innertestcase5"
+PASS document.querySelectorAll('[type$=oObar i] ~ * ~ * innerTestCase')[4].id is "innertestcase6"
+PASS document.querySelectorAll('[type$=oObar i] ~ * ~ * innerTestCase')[5].id is "innertestcase7"
+PASS document.querySelectorAll('[type$=oObar i] ~ * ~ * innerTestCase')[6].id is "innertestcase8"
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[0]).backgroundColor is "rgb(255, 0, 0)"
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[1]).backgroundColor is "rgb(10, 100, 200)"
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[2]).backgroundColor is "rgb(10, 100, 200)"
@@ -314,15 +314,15 @@ PASS getComputedStyle(document.querySelectorAll("innerTestCase")[5]).backgroundC
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[6]).backgroundColor is "rgb(10, 100, 200)"
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[7]).backgroundColor is "rgb(10, 100, 200)"
 
-Testing "[type$=oobar i] ~ * ~ *  > * > * >> innerTestCase"
-PASS document.querySelectorAll('[type$=oobar i] ~ * ~ *  > * > * >> innerTestCase').length is 7
-PASS document.querySelectorAll('[type$=oobar i] ~ * ~ *  > * > * >> innerTestCase')[0].id is "innertestcase2"
-PASS document.querySelectorAll('[type$=oobar i] ~ * ~ *  > * > * >> innerTestCase')[1].id is "innertestcase3"
-PASS document.querySelectorAll('[type$=oobar i] ~ * ~ *  > * > * >> innerTestCase')[2].id is "innertestcase4"
-PASS document.querySelectorAll('[type$=oobar i] ~ * ~ *  > * > * >> innerTestCase')[3].id is "innertestcase5"
-PASS document.querySelectorAll('[type$=oobar i] ~ * ~ *  > * > * >> innerTestCase')[4].id is "innertestcase6"
-PASS document.querySelectorAll('[type$=oobar i] ~ * ~ *  > * > * >> innerTestCase')[5].id is "innertestcase7"
-PASS document.querySelectorAll('[type$=oobar i] ~ * ~ *  > * > * >> innerTestCase')[6].id is "innertestcase8"
+Testing "[type$=oobar i] ~ * ~ *  > * > * innerTestCase"
+PASS document.querySelectorAll('[type$=oobar i] ~ * ~ *  > * > * innerTestCase').length is 7
+PASS document.querySelectorAll('[type$=oobar i] ~ * ~ *  > * > * innerTestCase')[0].id is "innertestcase2"
+PASS document.querySelectorAll('[type$=oobar i] ~ * ~ *  > * > * innerTestCase')[1].id is "innertestcase3"
+PASS document.querySelectorAll('[type$=oobar i] ~ * ~ *  > * > * innerTestCase')[2].id is "innertestcase4"
+PASS document.querySelectorAll('[type$=oobar i] ~ * ~ *  > * > * innerTestCase')[3].id is "innertestcase5"
+PASS document.querySelectorAll('[type$=oobar i] ~ * ~ *  > * > * innerTestCase')[4].id is "innertestcase6"
+PASS document.querySelectorAll('[type$=oobar i] ~ * ~ *  > * > * innerTestCase')[5].id is "innertestcase7"
+PASS document.querySelectorAll('[type$=oobar i] ~ * ~ *  > * > * innerTestCase')[6].id is "innertestcase8"
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[0]).backgroundColor is "rgb(255, 0, 0)"
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[1]).backgroundColor is "rgb(10, 100, 200)"
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[2]).backgroundColor is "rgb(10, 100, 200)"
@@ -332,16 +332,16 @@ PASS getComputedStyle(document.querySelectorAll("innerTestCase")[5]).backgroundC
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[6]).backgroundColor is "rgb(10, 100, 200)"
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[7]).backgroundColor is "rgb(10, 100, 200)"
 
-Testing "[type*=oOba i] > * > * >> innerTestCase"
-PASS document.querySelectorAll('[type*=oOba i] > * > * >> innerTestCase').length is 8
-PASS document.querySelectorAll('[type*=oOba i] > * > * >> innerTestCase')[0].id is "innertestcase1"
-PASS document.querySelectorAll('[type*=oOba i] > * > * >> innerTestCase')[1].id is "innertestcase2"
-PASS document.querySelectorAll('[type*=oOba i] > * > * >> innerTestCase')[2].id is "innertestcase3"
-PASS document.querySelectorAll('[type*=oOba i] > * > * >> innerTestCase')[3].id is "innertestcase4"
-PASS document.querySelectorAll('[type*=oOba i] > * > * >> innerTestCase')[4].id is "innertestcase5"
-PASS document.querySelectorAll('[type*=oOba i] > * > * >> innerTestCase')[5].id is "innertestcase6"
-PASS document.querySelectorAll('[type*=oOba i] > * > * >> innerTestCase')[6].id is "innertestcase7"
-PASS document.querySelectorAll('[type*=oOba i] > * > * >> innerTestCase')[7].id is "innertestcase8"
+Testing "[type*=oOba i] > * > * innerTestCase"
+PASS document.querySelectorAll('[type*=oOba i] > * > * innerTestCase').length is 8
+PASS document.querySelectorAll('[type*=oOba i] > * > * innerTestCase')[0].id is "innertestcase1"
+PASS document.querySelectorAll('[type*=oOba i] > * > * innerTestCase')[1].id is "innertestcase2"
+PASS document.querySelectorAll('[type*=oOba i] > * > * innerTestCase')[2].id is "innertestcase3"
+PASS document.querySelectorAll('[type*=oOba i] > * > * innerTestCase')[3].id is "innertestcase4"
+PASS document.querySelectorAll('[type*=oOba i] > * > * innerTestCase')[4].id is "innertestcase5"
+PASS document.querySelectorAll('[type*=oOba i] > * > * innerTestCase')[5].id is "innertestcase6"
+PASS document.querySelectorAll('[type*=oOba i] > * > * innerTestCase')[6].id is "innertestcase7"
+PASS document.querySelectorAll('[type*=oOba i] > * > * innerTestCase')[7].id is "innertestcase8"
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[0]).backgroundColor is "rgb(10, 100, 200)"
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[1]).backgroundColor is "rgb(10, 100, 200)"
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[2]).backgroundColor is "rgb(10, 100, 200)"
@@ -351,15 +351,15 @@ PASS getComputedStyle(document.querySelectorAll("innerTestCase")[5]).backgroundC
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[6]).backgroundColor is "rgb(10, 100, 200)"
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[7]).backgroundColor is "rgb(10, 100, 200)"
 
-Testing "[type*=ooBa i] ~ * ~ * >> innerTestCase"
-PASS document.querySelectorAll('[type*=ooBa i] ~ * ~ * >> innerTestCase').length is 7
-PASS document.querySelectorAll('[type*=ooBa i] ~ * ~ * >> innerTestCase')[0].id is "innertestcase2"
-PASS document.querySelectorAll('[type*=ooBa i] ~ * ~ * >> innerTestCase')[1].id is "innertestcase3"
-PASS document.querySelectorAll('[type*=ooBa i] ~ * ~ * >> innerTestCase')[2].id is "innertestcase4"
-PASS document.querySelectorAll('[type*=ooBa i] ~ * ~ * >> innerTestCase')[3].id is "innertestcase5"
-PASS document.querySelectorAll('[type*=ooBa i] ~ * ~ * >> innerTestCase')[4].id is "innertestcase6"
-PASS document.querySelectorAll('[type*=ooBa i] ~ * ~ * >> innerTestCase')[5].id is "innertestcase7"
-PASS document.querySelectorAll('[type*=ooBa i] ~ * ~ * >> innerTestCase')[6].id is "innertestcase8"
+Testing "[type*=ooBa i] ~ * ~ * innerTestCase"
+PASS document.querySelectorAll('[type*=ooBa i] ~ * ~ * innerTestCase').length is 7
+PASS document.querySelectorAll('[type*=ooBa i] ~ * ~ * innerTestCase')[0].id is "innertestcase2"
+PASS document.querySelectorAll('[type*=ooBa i] ~ * ~ * innerTestCase')[1].id is "innertestcase3"
+PASS document.querySelectorAll('[type*=ooBa i] ~ * ~ * innerTestCase')[2].id is "innertestcase4"
+PASS document.querySelectorAll('[type*=ooBa i] ~ * ~ * innerTestCase')[3].id is "innertestcase5"
+PASS document.querySelectorAll('[type*=ooBa i] ~ * ~ * innerTestCase')[4].id is "innertestcase6"
+PASS document.querySelectorAll('[type*=ooBa i] ~ * ~ * innerTestCase')[5].id is "innertestcase7"
+PASS document.querySelectorAll('[type*=ooBa i] ~ * ~ * innerTestCase')[6].id is "innertestcase8"
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[0]).backgroundColor is "rgb(255, 0, 0)"
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[1]).backgroundColor is "rgb(10, 100, 200)"
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[2]).backgroundColor is "rgb(10, 100, 200)"
@@ -369,15 +369,15 @@ PASS getComputedStyle(document.querySelectorAll("innerTestCase")[5]).backgroundC
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[6]).backgroundColor is "rgb(10, 100, 200)"
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[7]).backgroundColor is "rgb(10, 100, 200)"
 
-Testing "[type*=ooba i] ~ * ~ *  > * > * >> innerTestCase"
-PASS document.querySelectorAll('[type*=ooba i] ~ * ~ *  > * > * >> innerTestCase').length is 7
-PASS document.querySelectorAll('[type*=ooba i] ~ * ~ *  > * > * >> innerTestCase')[0].id is "innertestcase2"
-PASS document.querySelectorAll('[type*=ooba i] ~ * ~ *  > * > * >> innerTestCase')[1].id is "innertestcase3"
-PASS document.querySelectorAll('[type*=ooba i] ~ * ~ *  > * > * >> innerTestCase')[2].id is "innertestcase4"
-PASS document.querySelectorAll('[type*=ooba i] ~ * ~ *  > * > * >> innerTestCase')[3].id is "innertestcase5"
-PASS document.querySelectorAll('[type*=ooba i] ~ * ~ *  > * > * >> innerTestCase')[4].id is "innertestcase6"
-PASS document.querySelectorAll('[type*=ooba i] ~ * ~ *  > * > * >> innerTestCase')[5].id is "innertestcase7"
-PASS document.querySelectorAll('[type*=ooba i] ~ * ~ *  > * > * >> innerTestCase')[6].id is "innertestcase8"
+Testing "[type*=ooba i] ~ * ~ *  > * > * innerTestCase"
+PASS document.querySelectorAll('[type*=ooba i] ~ * ~ *  > * > * innerTestCase').length is 7
+PASS document.querySelectorAll('[type*=ooba i] ~ * ~ *  > * > * innerTestCase')[0].id is "innertestcase2"
+PASS document.querySelectorAll('[type*=ooba i] ~ * ~ *  > * > * innerTestCase')[1].id is "innertestcase3"
+PASS document.querySelectorAll('[type*=ooba i] ~ * ~ *  > * > * innerTestCase')[2].id is "innertestcase4"
+PASS document.querySelectorAll('[type*=ooba i] ~ * ~ *  > * > * innerTestCase')[3].id is "innertestcase5"
+PASS document.querySelectorAll('[type*=ooba i] ~ * ~ *  > * > * innerTestCase')[4].id is "innertestcase6"
+PASS document.querySelectorAll('[type*=ooba i] ~ * ~ *  > * > * innerTestCase')[5].id is "innertestcase7"
+PASS document.querySelectorAll('[type*=ooba i] ~ * ~ *  > * > * innerTestCase')[6].id is "innertestcase8"
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[0]).backgroundColor is "rgb(255, 0, 0)"
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[1]).backgroundColor is "rgb(10, 100, 200)"
 PASS getComputedStyle(document.querySelectorAll("innerTestCase")[2]).backgroundColor is "rgb(10, 100, 200)"
index 89742c4..e152c8b 100644 (file)
@@ -54,32 +54,32 @@ function testSelector(selector, expectedIds) {
 }
 
 var simpleCases = [
-    ["[type=foobar i] > * > * >> innerTestCase", ["innertestcase1", "innertestcase2", "innertestcase3", "innertestcase4", "innertestcase5", "innertestcase6", "innertestcase7", "innertestcase8"]],
-    ["[attribute1=VALUE1 i] > * > * >> innerTestCase",["innertestcase1", "innertestcase2", "innertestcase3", "innertestcase5", "innertestcase6", "innertestcase7", "innertestcase8"]],
-    ["[type=foobar i] ~ * ~ * >> innerTestCase", ["innertestcase2", "innertestcase3", "innertestcase4", "innertestcase5", "innertestcase6", "innertestcase7", "innertestcase8"]],
-    ["[attribute1=VALUE1 i] ~ * ~ * >> innerTestCase",["innertestcase2", "innertestcase3", "innertestcase4", "innertestcase5", "innertestcase6", "innertestcase7", "innertestcase8"]],
-    ["[type=foobar i] ~ * ~ *  > * > * >> innerTestCase", ["innertestcase2", "innertestcase3", "innertestcase4", "innertestcase5", "innertestcase6", "innertestcase7", "innertestcase8"]],
-    ["[attribute1=VALUE1 i] ~ * ~ *  > * > * >> innerTestCase",["innertestcase2", "innertestcase3", "innertestcase4", "innertestcase5", "innertestcase6", "innertestcase7", "innertestcase8"]],
+    ["[type=foobar i] > * > * innerTestCase", ["innertestcase1", "innertestcase2", "innertestcase3", "innertestcase4", "innertestcase5", "innertestcase6", "innertestcase7", "innertestcase8"]],
+    ["[attribute1=VALUE1 i] > * > * innerTestCase",["innertestcase1", "innertestcase2", "innertestcase3", "innertestcase5", "innertestcase6", "innertestcase7", "innertestcase8"]],
+    ["[type=foobar i] ~ * ~ * innerTestCase", ["innertestcase2", "innertestcase3", "innertestcase4", "innertestcase5", "innertestcase6", "innertestcase7", "innertestcase8"]],
+    ["[attribute1=VALUE1 i] ~ * ~ * innerTestCase",["innertestcase2", "innertestcase3", "innertestcase4", "innertestcase5", "innertestcase6", "innertestcase7", "innertestcase8"]],
+    ["[type=foobar i] ~ * ~ *  > * > * innerTestCase", ["innertestcase2", "innertestcase3", "innertestcase4", "innertestcase5", "innertestcase6", "innertestcase7", "innertestcase8"]],
+    ["[attribute1=VALUE1 i] ~ * ~ *  > * > * innerTestCase",["innertestcase2", "innertestcase3", "innertestcase4", "innertestcase5", "innertestcase6", "innertestcase7", "innertestcase8"]],
 
-    ["[type~=fOobar i] > * > * >> innerTestCase", ["innertestcase1", "innertestcase2", "innertestcase3", "innertestcase4", "innertestcase5", "innertestcase6", "innertestcase7", "innertestcase8"]],
-    ["[type~=foObar i] ~ * ~ * >> innerTestCase", ["innertestcase2", "innertestcase3", "innertestcase4", "innertestcase5", "innertestcase6", "innertestcase7", "innertestcase8"]],
-    ["[type~=foobar i] ~ * ~ *  > * > * >> innerTestCase", ["innertestcase2", "innertestcase3", "innertestcase4", "innertestcase5", "innertestcase6", "innertestcase7", "innertestcase8"]],
+    ["[type~=fOobar i] > * > * innerTestCase", ["innertestcase1", "innertestcase2", "innertestcase3", "innertestcase4", "innertestcase5", "innertestcase6", "innertestcase7", "innertestcase8"]],
+    ["[type~=foObar i] ~ * ~ * innerTestCase", ["innertestcase2", "innertestcase3", "innertestcase4", "innertestcase5", "innertestcase6", "innertestcase7", "innertestcase8"]],
+    ["[type~=foobar i] ~ * ~ *  > * > * innerTestCase", ["innertestcase2", "innertestcase3", "innertestcase4", "innertestcase5", "innertestcase6", "innertestcase7", "innertestcase8"]],
 
-    ["[type|=foObar i] > * > * >> innerTestCase", ["innertestcase1", "innertestcase2", "innertestcase3", "innertestcase4", "innertestcase5", "innertestcase6", "innertestcase7", "innertestcase8"]],
-    ["[type|=fooBar i] ~ * ~ * >> innerTestCase", ["innertestcase2", "innertestcase3", "innertestcase4", "innertestcase5", "innertestcase6", "innertestcase7", "innertestcase8"]],
-    ["[type|=foobar i] ~ * ~ *  > * > * >> innerTestCase", ["innertestcase2", "innertestcase3", "innertestcase4", "innertestcase5", "innertestcase6", "innertestcase7", "innertestcase8"]],
+    ["[type|=foObar i] > * > * innerTestCase", ["innertestcase1", "innertestcase2", "innertestcase3", "innertestcase4", "innertestcase5", "innertestcase6", "innertestcase7", "innertestcase8"]],
+    ["[type|=fooBar i] ~ * ~ * innerTestCase", ["innertestcase2", "innertestcase3", "innertestcase4", "innertestcase5", "innertestcase6", "innertestcase7", "innertestcase8"]],
+    ["[type|=foobar i] ~ * ~ *  > * > * innerTestCase", ["innertestcase2", "innertestcase3", "innertestcase4", "innertestcase5", "innertestcase6", "innertestcase7", "innertestcase8"]],
 
-    ["[type^=fooBa i] > * > * >> innerTestCase", ["innertestcase1", "innertestcase2", "innertestcase3", "innertestcase4", "innertestcase5", "innertestcase6", "innertestcase7", "innertestcase8"]],
-    ["[type^=fOoba i] ~ * ~ * >> innerTestCase", ["innertestcase2", "innertestcase3", "innertestcase4", "innertestcase5", "innertestcase6", "innertestcase7", "innertestcase8"]],
-    ["[type^=fooba i] ~ * ~ *  > * > * >> innerTestCase", ["innertestcase2", "innertestcase3", "innertestcase4", "innertestcase5", "innertestcase6", "innertestcase7", "innertestcase8"]],
+    ["[type^=fooBa i] > * > * innerTestCase", ["innertestcase1", "innertestcase2", "innertestcase3", "innertestcase4", "innertestcase5", "innertestcase6", "innertestcase7", "innertestcase8"]],
+    ["[type^=fOoba i] ~ * ~ * innerTestCase", ["innertestcase2", "innertestcase3", "innertestcase4", "innertestcase5", "innertestcase6", "innertestcase7", "innertestcase8"]],
+    ["[type^=fooba i] ~ * ~ *  > * > * innerTestCase", ["innertestcase2", "innertestcase3", "innertestcase4", "innertestcase5", "innertestcase6", "innertestcase7", "innertestcase8"]],
 
-    ["[type$=oobAr i] > * > * >> innerTestCase", ["innertestcase1", "innertestcase2", "innertestcase3", "innertestcase4", "innertestcase5", "innertestcase6", "innertestcase7", "innertestcase8"]],
-    ["[type$=oObar i] ~ * ~ * >> innerTestCase", ["innertestcase2", "innertestcase3", "innertestcase4", "innertestcase5", "innertestcase6", "innertestcase7", "innertestcase8"]],
-    ["[type$=oobar i] ~ * ~ *  > * > * >> innerTestCase", ["innertestcase2", "innertestcase3", "innertestcase4", "innertestcase5", "innertestcase6", "innertestcase7", "innertestcase8"]],
+    ["[type$=oobAr i] > * > * innerTestCase", ["innertestcase1", "innertestcase2", "innertestcase3", "innertestcase4", "innertestcase5", "innertestcase6", "innertestcase7", "innertestcase8"]],
+    ["[type$=oObar i] ~ * ~ * innerTestCase", ["innertestcase2", "innertestcase3", "innertestcase4", "innertestcase5", "innertestcase6", "innertestcase7", "innertestcase8"]],
+    ["[type$=oobar i] ~ * ~ *  > * > * innerTestCase", ["innertestcase2", "innertestcase3", "innertestcase4", "innertestcase5", "innertestcase6", "innertestcase7", "innertestcase8"]],
 
-    ["[type*=oOba i] > * > * >> innerTestCase", ["innertestcase1", "innertestcase2", "innertestcase3", "innertestcase4", "innertestcase5", "innertestcase6", "innertestcase7", "innertestcase8"]],
-    ["[type*=ooBa i] ~ * ~ * >> innerTestCase", ["innertestcase2", "innertestcase3", "innertestcase4", "innertestcase5", "innertestcase6", "innertestcase7", "innertestcase8"]],
-    ["[type*=ooba i] ~ * ~ *  > * > * >> innerTestCase", ["innertestcase2", "innertestcase3", "innertestcase4", "innertestcase5", "innertestcase6", "innertestcase7", "innertestcase8"]],
+    ["[type*=oOba i] > * > * innerTestCase", ["innertestcase1", "innertestcase2", "innertestcase3", "innertestcase4", "innertestcase5", "innertestcase6", "innertestcase7", "innertestcase8"]],
+    ["[type*=ooBa i] ~ * ~ * innerTestCase", ["innertestcase2", "innertestcase3", "innertestcase4", "innertestcase5", "innertestcase6", "innertestcase7", "innertestcase8"]],
+    ["[type*=ooba i] ~ * ~ *  > * > * innerTestCase", ["innertestcase2", "innertestcase3", "innertestcase4", "innertestcase5", "innertestcase6", "innertestcase7", "innertestcase8"]],
 ];
 
 for (var testCase of simpleCases) {
diff --git a/LayoutTests/fast/selectors/element-closest-descendant-combinator-doubled-child-syntax-expected.txt b/LayoutTests/fast/selectors/element-closest-descendant-combinator-doubled-child-syntax-expected.txt
deleted file mode 100644 (file)
index 9d3399b..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-Test using the descendant combinator with the double-child syntax ">>" in Element.closest().
-
-On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
-
-
-PASS document.getElementById("target1").closest("body >> target").id is "target1"
-PASS document.getElementById("target2").closest("body >> target").id is "target2"
-PASS document.getElementById("target1").closest("body >> container").id is "container2"
-PASS document.getElementById("target2").closest("body >> container").id is "container3"
-PASS document.getElementById("target1").closest("container >> container").id is "container2"
-PASS document.getElementById("target2").closest("container >> container").id is "container3"
-PASS document.getElementById("target1").closest("target >> container") is null
-PASS document.getElementById("target2").closest("target >> container") is null
-PASS document.getElementById("container1").closest("target >> container") is null
-PASS document.getElementById("container2").closest("target >> container") is null
-PASS document.getElementById("container3").closest("target >> container") is null
-PASS successfullyParsed is true
-
-TEST COMPLETE
-
diff --git a/LayoutTests/fast/selectors/element-closest-descendant-combinator-doubled-child-syntax.html b/LayoutTests/fast/selectors/element-closest-descendant-combinator-doubled-child-syntax.html
deleted file mode 100644 (file)
index 92c03ca..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-<!doctype html>
-<html>
-<head>
-<script src="../../resources/js-test-pre.js"></script>
-<style id="style-container"></style>
-</head>
-<body>
-    <container id="container1">
-        <container id="container2">
-            <target id="target1"></target>
-        </container>
-        <container id="container3">
-            <target id="target2"></target>
-        </container>
-    </container>
-</body>
-<script>
-description('Test using the descendant combinator with the double-child syntax "&gt;&gt;" in Element.closest().');
-
-shouldBeEqualToString('document.getElementById("target1").closest("body >> target").id', 'target1');
-shouldBeEqualToString('document.getElementById("target2").closest("body >> target").id', 'target2');
-
-shouldBeEqualToString('document.getElementById("target1").closest("body >> container").id', 'container2');
-shouldBeEqualToString('document.getElementById("target2").closest("body >> container").id', 'container3');
-
-shouldBeEqualToString('document.getElementById("target1").closest("container >> container").id', 'container2');
-shouldBeEqualToString('document.getElementById("target2").closest("container >> container").id', 'container3');
-
-shouldBe('document.getElementById("target1").closest("target >> container")', 'null');
-shouldBe('document.getElementById("target2").closest("target >> container")', 'null');
-shouldBe('document.getElementById("container1").closest("target >> container")', 'null');
-shouldBe('document.getElementById("container2").closest("target >> container")', 'null');
-shouldBe('document.getElementById("container3").closest("target >> container")', 'null');
-
-</script>
-<script src="../../resources/js-test-post.js"></script>
-</html>
index cd016d0..f8887c7 100644 (file)
@@ -51,54 +51,54 @@ PASS document.querySelectorAll('[id^=target]')[0].matches('[DATA-æØå^="Web"]'
 PASS document.querySelectorAll('[id^=target]')[1].matches('[DATA-æØå^="Web"]') is false
 PASS document.querySelectorAll('[id^=target]')[2].matches('[DATA-æØå^="Web"]') is false
 PASS document.querySelectorAll('[id^=target]')[3].matches('[DATA-æØå^="Web"]') is false
-PASS document.querySelectorAll('[id^=target]')[0].matches(':root >> :matches(body, html) >> [data-æøå]') is true
-PASS document.querySelectorAll('[id^=target]')[1].matches(':root >> :matches(body, html) >> [data-æøå]') is false
-PASS document.querySelectorAll('[id^=target]')[2].matches(':root >> :matches(body, html) >> [data-æøå]') is false
-PASS document.querySelectorAll('[id^=target]')[3].matches(':root >> :matches(body, html) >> [data-æøå]') is true
-PASS document.querySelectorAll('[id^=target]')[0].matches(':root >> :matches(body, html) >> [data-Æøå]') is false
-PASS document.querySelectorAll('[id^=target]')[1].matches(':root >> :matches(body, html) >> [data-Æøå]') is true
-PASS document.querySelectorAll('[id^=target]')[2].matches(':root >> :matches(body, html) >> [data-Æøå]') is false
-PASS document.querySelectorAll('[id^=target]')[3].matches(':root >> :matches(body, html) >> [data-Æøå]') is true
-PASS document.querySelectorAll('[id^=target]')[0].matches(':root >> :matches(body, html) >> [data-ÆØÅ]') is false
-PASS document.querySelectorAll('[id^=target]')[1].matches(':root >> :matches(body, html) >> [data-ÆØÅ]') is false
-PASS document.querySelectorAll('[id^=target]')[2].matches(':root >> :matches(body, html) >> [data-ÆØÅ]') is true
-PASS document.querySelectorAll('[id^=target]')[3].matches(':root >> :matches(body, html) >> [data-ÆØÅ]') is true
-PASS document.querySelectorAll('[id^=target]')[0].matches(':root >> :matches(body, html) >> [data-æØå]') is false
-PASS document.querySelectorAll('[id^=target]')[1].matches(':root >> :matches(body, html) >> [data-æØå]') is false
-PASS document.querySelectorAll('[id^=target]')[2].matches(':root >> :matches(body, html) >> [data-æØå]') is false
-PASS document.querySelectorAll('[id^=target]')[3].matches(':root >> :matches(body, html) >> [data-æØå]') is false
-PASS document.querySelectorAll('[id^=target]')[0].matches(':root >> :matches(body, html) >> [Data-æøå="WebKit!"]') is true
-PASS document.querySelectorAll('[id^=target]')[1].matches(':root >> :matches(body, html) >> [Data-æøå="WebKit!"]') is false
-PASS document.querySelectorAll('[id^=target]')[2].matches(':root >> :matches(body, html) >> [Data-æøå="WebKit!"]') is false
-PASS document.querySelectorAll('[id^=target]')[3].matches(':root >> :matches(body, html) >> [Data-æøå="WebKit!"]') is true
-PASS document.querySelectorAll('[id^=target]')[0].matches(':root >> :matches(body, html) >> [Data-Æøå="WebKit!"]') is false
-PASS document.querySelectorAll('[id^=target]')[1].matches(':root >> :matches(body, html) >> [Data-Æøå="WebKit!"]') is true
-PASS document.querySelectorAll('[id^=target]')[2].matches(':root >> :matches(body, html) >> [Data-Æøå="WebKit!"]') is false
-PASS document.querySelectorAll('[id^=target]')[3].matches(':root >> :matches(body, html) >> [Data-Æøå="WebKit!"]') is true
-PASS document.querySelectorAll('[id^=target]')[0].matches(':root >> :matches(body, html) >> [Data-ÆØÅ="WebKit!"]') is false
-PASS document.querySelectorAll('[id^=target]')[1].matches(':root >> :matches(body, html) >> [Data-ÆØÅ="WebKit!"]') is false
-PASS document.querySelectorAll('[id^=target]')[2].matches(':root >> :matches(body, html) >> [Data-ÆØÅ="WebKit!"]') is true
-PASS document.querySelectorAll('[id^=target]')[3].matches(':root >> :matches(body, html) >> [Data-ÆØÅ="WebKit!"]') is true
-PASS document.querySelectorAll('[id^=target]')[0].matches(':root >> :matches(body, html) >> [Data-æØå="WebKit!"]') is false
-PASS document.querySelectorAll('[id^=target]')[1].matches(':root >> :matches(body, html) >> [Data-æØå="WebKit!"]') is false
-PASS document.querySelectorAll('[id^=target]')[2].matches(':root >> :matches(body, html) >> [Data-æØå="WebKit!"]') is false
-PASS document.querySelectorAll('[id^=target]')[3].matches(':root >> :matches(body, html) >> [Data-æØå="WebKit!"]') is false
-PASS document.querySelectorAll('[id^=target]')[0].matches(':root >> :matches(body, html) >> [DATA-æøå^="Web"]') is true
-PASS document.querySelectorAll('[id^=target]')[1].matches(':root >> :matches(body, html) >> [DATA-æøå^="Web"]') is false
-PASS document.querySelectorAll('[id^=target]')[2].matches(':root >> :matches(body, html) >> [DATA-æøå^="Web"]') is false
-PASS document.querySelectorAll('[id^=target]')[3].matches(':root >> :matches(body, html) >> [DATA-æøå^="Web"]') is true
-PASS document.querySelectorAll('[id^=target]')[0].matches(':root >> :matches(body, html) >> [DATA-Æøå^="Web"]') is false
-PASS document.querySelectorAll('[id^=target]')[1].matches(':root >> :matches(body, html) >> [DATA-Æøå^="Web"]') is true
-PASS document.querySelectorAll('[id^=target]')[2].matches(':root >> :matches(body, html) >> [DATA-Æøå^="Web"]') is false
-PASS document.querySelectorAll('[id^=target]')[3].matches(':root >> :matches(body, html) >> [DATA-Æøå^="Web"]') is true
-PASS document.querySelectorAll('[id^=target]')[0].matches(':root >> :matches(body, html) >> [DATA-ÆØÅ^="Web"]') is false
-PASS document.querySelectorAll('[id^=target]')[1].matches(':root >> :matches(body, html) >> [DATA-ÆØÅ^="Web"]') is false
-PASS document.querySelectorAll('[id^=target]')[2].matches(':root >> :matches(body, html) >> [DATA-ÆØÅ^="Web"]') is true
-PASS document.querySelectorAll('[id^=target]')[3].matches(':root >> :matches(body, html) >> [DATA-ÆØÅ^="Web"]') is true
-PASS document.querySelectorAll('[id^=target]')[0].matches(':root >> :matches(body, html) >> [DATA-æØå^="Web"]') is false
-PASS document.querySelectorAll('[id^=target]')[1].matches(':root >> :matches(body, html) >> [DATA-æØå^="Web"]') is false
-PASS document.querySelectorAll('[id^=target]')[2].matches(':root >> :matches(body, html) >> [DATA-æØå^="Web"]') is false
-PASS document.querySelectorAll('[id^=target]')[3].matches(':root >> :matches(body, html) >> [DATA-æØå^="Web"]') is false
+PASS document.querySelectorAll('[id^=target]')[0].matches(':root :matches(body, html) [data-æøå]') is true
+PASS document.querySelectorAll('[id^=target]')[1].matches(':root :matches(body, html) [data-æøå]') is false
+PASS document.querySelectorAll('[id^=target]')[2].matches(':root :matches(body, html) [data-æøå]') is false
+PASS document.querySelectorAll('[id^=target]')[3].matches(':root :matches(body, html) [data-æøå]') is true
+PASS document.querySelectorAll('[id^=target]')[0].matches(':root :matches(body, html) [data-Æøå]') is false
+PASS document.querySelectorAll('[id^=target]')[1].matches(':root :matches(body, html) [data-Æøå]') is true
+PASS document.querySelectorAll('[id^=target]')[2].matches(':root :matches(body, html) [data-Æøå]') is false
+PASS document.querySelectorAll('[id^=target]')[3].matches(':root :matches(body, html) [data-Æøå]') is true
+PASS document.querySelectorAll('[id^=target]')[0].matches(':root :matches(body, html) [data-ÆØÅ]') is false
+PASS document.querySelectorAll('[id^=target]')[1].matches(':root :matches(body, html) [data-ÆØÅ]') is false
+PASS document.querySelectorAll('[id^=target]')[2].matches(':root :matches(body, html) [data-ÆØÅ]') is true
+PASS document.querySelectorAll('[id^=target]')[3].matches(':root :matches(body, html) [data-ÆØÅ]') is true
+PASS document.querySelectorAll('[id^=target]')[0].matches(':root :matches(body, html) [data-æØå]') is false
+PASS document.querySelectorAll('[id^=target]')[1].matches(':root :matches(body, html) [data-æØå]') is false
+PASS document.querySelectorAll('[id^=target]')[2].matches(':root :matches(body, html) [data-æØå]') is false
+PASS document.querySelectorAll('[id^=target]')[3].matches(':root :matches(body, html) [data-æØå]') is false
+PASS document.querySelectorAll('[id^=target]')[0].matches(':root :matches(body, html) [Data-æøå="WebKit!"]') is true
+PASS document.querySelectorAll('[id^=target]')[1].matches(':root :matches(body, html) [Data-æøå="WebKit!"]') is false
+PASS document.querySelectorAll('[id^=target]')[2].matches(':root :matches(body, html) [Data-æøå="WebKit!"]') is false
+PASS document.querySelectorAll('[id^=target]')[3].matches(':root :matches(body, html) [Data-æøå="WebKit!"]') is true
+PASS document.querySelectorAll('[id^=target]')[0].matches(':root :matches(body, html) [Data-Æøå="WebKit!"]') is false
+PASS document.querySelectorAll('[id^=target]')[1].matches(':root :matches(body, html) [Data-Æøå="WebKit!"]') is true
+PASS document.querySelectorAll('[id^=target]')[2].matches(':root :matches(body, html) [Data-Æøå="WebKit!"]') is false
+PASS document.querySelectorAll('[id^=target]')[3].matches(':root :matches(body, html) [Data-Æøå="WebKit!"]') is true
+PASS document.querySelectorAll('[id^=target]')[0].matches(':root :matches(body, html) [Data-ÆØÅ="WebKit!"]') is false
+PASS document.querySelectorAll('[id^=target]')[1].matches(':root :matches(body, html) [Data-ÆØÅ="WebKit!"]') is false
+PASS document.querySelectorAll('[id^=target]')[2].matches(':root :matches(body, html) [Data-ÆØÅ="WebKit!"]') is true
+PASS document.querySelectorAll('[id^=target]')[3].matches(':root :matches(body, html) [Data-ÆØÅ="WebKit!"]') is true
+PASS document.querySelectorAll('[id^=target]')[0].matches(':root :matches(body, html) [Data-æØå="WebKit!"]') is false
+PASS document.querySelectorAll('[id^=target]')[1].matches(':root :matches(body, html) [Data-æØå="WebKit!"]') is false
+PASS document.querySelectorAll('[id^=target]')[2].matches(':root :matches(body, html) [Data-æØå="WebKit!"]') is false
+PASS document.querySelectorAll('[id^=target]')[3].matches(':root :matches(body, html) [Data-æØå="WebKit!"]') is false
+PASS document.querySelectorAll('[id^=target]')[0].matches(':root :matches(body, html) [DATA-æøå^="Web"]') is true
+PASS document.querySelectorAll('[id^=target]')[1].matches(':root :matches(body, html) [DATA-æøå^="Web"]') is false
+PASS document.querySelectorAll('[id^=target]')[2].matches(':root :matches(body, html) [DATA-æøå^="Web"]') is false
+PASS document.querySelectorAll('[id^=target]')[3].matches(':root :matches(body, html) [DATA-æøå^="Web"]') is true
+PASS document.querySelectorAll('[id^=target]')[0].matches(':root :matches(body, html) [DATA-Æøå^="Web"]') is false
+PASS document.querySelectorAll('[id^=target]')[1].matches(':root :matches(body, html) [DATA-Æøå^="Web"]') is true
+PASS document.querySelectorAll('[id^=target]')[2].matches(':root :matches(body, html) [DATA-Æøå^="Web"]') is false
+PASS document.querySelectorAll('[id^=target]')[3].matches(':root :matches(body, html) [DATA-Æøå^="Web"]') is true
+PASS document.querySelectorAll('[id^=target]')[0].matches(':root :matches(body, html) [DATA-ÆØÅ^="Web"]') is false
+PASS document.querySelectorAll('[id^=target]')[1].matches(':root :matches(body, html) [DATA-ÆØÅ^="Web"]') is false
+PASS document.querySelectorAll('[id^=target]')[2].matches(':root :matches(body, html) [DATA-ÆØÅ^="Web"]') is true
+PASS document.querySelectorAll('[id^=target]')[3].matches(':root :matches(body, html) [DATA-ÆØÅ^="Web"]') is true
+PASS document.querySelectorAll('[id^=target]')[0].matches(':root :matches(body, html) [DATA-æØå^="Web"]') is false
+PASS document.querySelectorAll('[id^=target]')[1].matches(':root :matches(body, html) [DATA-æØå^="Web"]') is false
+PASS document.querySelectorAll('[id^=target]')[2].matches(':root :matches(body, html) [DATA-æØå^="Web"]') is false
+PASS document.querySelectorAll('[id^=target]')[3].matches(':root :matches(body, html) [DATA-æØå^="Web"]') is false
 PASS successfullyParsed is true
 
 TEST COMPLETE
index afc9d4d..3d401aa 100644 (file)
@@ -42,20 +42,20 @@ testSelector('[DATA-ÆØÅ^="Web"]', [3, 4]);
 testSelector('[DATA-æØå^="Web"]', []);
 
 // Complex selectors.
-testSelector(':root >> :matches(body, html) >> [data-æøå]', [1, 4]);
-testSelector(':root >> :matches(body, html) >> [data-Æøå]', [2, 4]);
-testSelector(':root >> :matches(body, html) >> [data-ÆØÅ]', [3, 4]);
-testSelector(':root >> :matches(body, html) >> [data-æØå]', []);
+testSelector(':root :matches(body, html) [data-æøå]', [1, 4]);
+testSelector(':root :matches(body, html) [data-Æøå]', [2, 4]);
+testSelector(':root :matches(body, html) [data-ÆØÅ]', [3, 4]);
+testSelector(':root :matches(body, html) [data-æØå]', []);
 
-testSelector(':root >> :matches(body, html) >> [Data-æøå="WebKit!"]', [1, 4]);
-testSelector(':root >> :matches(body, html) >> [Data-Æøå="WebKit!"]', [2, 4]);
-testSelector(':root >> :matches(body, html) >> [Data-ÆØÅ="WebKit!"]', [3, 4]);
-testSelector(':root >> :matches(body, html) >> [Data-æØå="WebKit!"]', []);
+testSelector(':root :matches(body, html) [Data-æøå="WebKit!"]', [1, 4]);
+testSelector(':root :matches(body, html) [Data-Æøå="WebKit!"]', [2, 4]);
+testSelector(':root :matches(body, html) [Data-ÆØÅ="WebKit!"]', [3, 4]);
+testSelector(':root :matches(body, html) [Data-æØå="WebKit!"]', []);
 
-testSelector(':root >> :matches(body, html) >> [DATA-æøå^="Web"]', [1, 4]);
-testSelector(':root >> :matches(body, html) >> [DATA-Æøå^="Web"]', [2, 4]);
-testSelector(':root >> :matches(body, html) >> [DATA-ÆØÅ^="Web"]', [3, 4]);
-testSelector(':root >> :matches(body, html) >> [DATA-æØå^="Web"]', []);
+testSelector(':root :matches(body, html) [DATA-æøå^="Web"]', [1, 4]);
+testSelector(':root :matches(body, html) [DATA-Æøå^="Web"]', [2, 4]);
+testSelector(':root :matches(body, html) [DATA-ÆØÅ^="Web"]', [3, 4]);
+testSelector(':root :matches(body, html) [DATA-æØå^="Web"]', []);
 </script>
 <script src="../../resources/js-test-post.js"></script>
 </html>
diff --git a/LayoutTests/fast/selectors/element-matches-descendant-combinator-doubled-child-syntax-expected.txt b/LayoutTests/fast/selectors/element-matches-descendant-combinator-doubled-child-syntax-expected.txt
deleted file mode 100644 (file)
index 8afe2e8..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-Test using the descendant combinator with the double-child syntax ">>" in Element.matches().
-
-On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
-
-
-PASS document.getElementById("target1").matches("body >> target") is true
-PASS document.getElementById("target2").matches("body >> target") is true
-PASS document.getElementById("target1").matches("target >> container") is false
-PASS document.getElementById("target2").matches("target >> container") is false
-PASS document.getElementById("container1").matches("target >> container") is false
-PASS document.getElementById("container2").matches("target >> container") is false
-PASS document.getElementById("container3").matches("target >> container") is false
-PASS document.getElementById("target1").matches("container >> target") is true
-PASS document.getElementById("target2").matches("container >> target") is true
-PASS document.getElementById("container1").matches("container >> target") is false
-PASS document.getElementById("container2").matches("container >> target") is false
-PASS document.getElementById("container3").matches("container >> target") is false
-PASS document.getElementById("target1").matches("container >> container") is false
-PASS document.getElementById("target2").matches("container >> container") is false
-PASS document.getElementById("container1").matches("container >> container") is false
-PASS document.getElementById("container2").matches("container >> container") is true
-PASS document.getElementById("container3").matches("container >> container") is true
-PASS document.getElementById("target1").matches("body >> container") is false
-PASS document.getElementById("target2").matches("body >> container") is false
-PASS document.getElementById("container1").matches("body >> container") is true
-PASS document.getElementById("container2").matches("body >> container") is true
-PASS document.getElementById("container3").matches("body >> container") is true
-PASS document.getElementById("target1").matches("container >> *") is true
-PASS document.getElementById("target2").matches("container >> *") is true
-PASS document.getElementById("container1").matches("container >> *") is false
-PASS document.getElementById("container2").matches("container >> *") is true
-PASS document.getElementById("container3").matches("container >> *") is true
-PASS successfullyParsed is true
-
-TEST COMPLETE
-
diff --git a/LayoutTests/fast/selectors/element-matches-descendant-combinator-doubled-child-syntax.html b/LayoutTests/fast/selectors/element-matches-descendant-combinator-doubled-child-syntax.html
deleted file mode 100644 (file)
index 31fb25f..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-<!doctype html>
-<html>
-<head>
-<script src="../../resources/js-test-pre.js"></script>
-<style id="style-container"></style>
-</head>
-<body>
-    <container id="container1">
-        <container id="container2">
-            <target id="target1"></target>
-        </container>
-        <container id="container3">
-            <target id="target2"></target>
-        </container>
-    </container>
-</body>
-<script>
-description('Test using the descendant combinator with the double-child syntax "&gt;&gt;" in Element.matches().');
-
-shouldBeTrue('document.getElementById("target1").matches("body >> target")');
-shouldBeTrue('document.getElementById("target2").matches("body >> target")');
-
-shouldBeFalse('document.getElementById("target1").matches("target >> container")');
-shouldBeFalse('document.getElementById("target2").matches("target >> container")');
-shouldBeFalse('document.getElementById("container1").matches("target >> container")');
-shouldBeFalse('document.getElementById("container2").matches("target >> container")');
-shouldBeFalse('document.getElementById("container3").matches("target >> container")');
-
-shouldBeTrue('document.getElementById("target1").matches("container >> target")');
-shouldBeTrue('document.getElementById("target2").matches("container >> target")');
-shouldBeFalse('document.getElementById("container1").matches("container >> target")');
-shouldBeFalse('document.getElementById("container2").matches("container >> target")');
-shouldBeFalse('document.getElementById("container3").matches("container >> target")');
-
-shouldBeFalse('document.getElementById("target1").matches("container >> container")');
-shouldBeFalse('document.getElementById("target2").matches("container >> container")');
-shouldBeFalse('document.getElementById("container1").matches("container >> container")');
-shouldBeTrue('document.getElementById("container2").matches("container >> container")');
-shouldBeTrue('document.getElementById("container3").matches("container >> container")');
-
-shouldBeFalse('document.getElementById("target1").matches("body >> container")');
-shouldBeFalse('document.getElementById("target2").matches("body >> container")');
-shouldBeTrue('document.getElementById("container1").matches("body >> container")');
-shouldBeTrue('document.getElementById("container2").matches("body >> container")');
-shouldBeTrue('document.getElementById("container3").matches("body >> container")');
-
-shouldBeTrue('document.getElementById("target1").matches("container >> *")');
-shouldBeTrue('document.getElementById("target2").matches("container >> *")');
-shouldBeFalse('document.getElementById("container1").matches("container >> *")');
-shouldBeTrue('document.getElementById("container2").matches("container >> *")');
-shouldBeTrue('document.getElementById("container3").matches("container >> *")');
-</script>
-<script src="../../resources/js-test-post.js"></script>
-</html>
index f802026..4d51d53 100644 (file)
@@ -12,31 +12,31 @@ PASS document.querySelectorAll("div[id=simple_unique][data-case]").length is 1
 PASS document.querySelectorAll("div[id=simple_Duplicated][data-case]").length is 3
 PASS document.querySelectorAll("div[id=simple_duplicated][data-case]").length is 0
 Trivial Selector used as ancestor filter
-PASS document.querySelectorAll("[id=Ancestor_Unique] >> *").length is 4
-PASS document.querySelectorAll("[id=Ancestor_Unique] > * >> *").length is 2
-PASS document.querySelectorAll("[id=Ancestor_Unique] >> * > *").length is 2
-PASS document.querySelectorAll("[id=ancestor_unique] >> *").length is 0
-PASS document.querySelectorAll("[id=ancestor_unique] > * >> *").length is 0
-PASS document.querySelectorAll("[id=ancestor_unique] >> * > *").length is 0
-PASS document.querySelectorAll("[id=ANCESTOR_DUPLICATED] >> *").length is 5
-PASS document.querySelectorAll("[id=ANCESTOR_DUPLICATED] > * >> *").length is 2
-PASS document.querySelectorAll("[id=ANCESTOR_DUPLICATED] >> * > *").length is 2
-PASS document.querySelectorAll("[id=ancestor_duplicated] >> *").length is 0
-PASS document.querySelectorAll("[id=ancestor_duplicated] > * >> *").length is 0
-PASS document.querySelectorAll("[id=ancestor_duplicated] >> * > *").length is 0
+PASS document.querySelectorAll("[id=Ancestor_Unique] *").length is 4
+PASS document.querySelectorAll("[id=Ancestor_Unique] > * *").length is 2
+PASS document.querySelectorAll("[id=Ancestor_Unique] * > *").length is 2
+PASS document.querySelectorAll("[id=ancestor_unique] *").length is 0
+PASS document.querySelectorAll("[id=ancestor_unique] > * *").length is 0
+PASS document.querySelectorAll("[id=ancestor_unique] * > *").length is 0
+PASS document.querySelectorAll("[id=ANCESTOR_DUPLICATED] *").length is 5
+PASS document.querySelectorAll("[id=ANCESTOR_DUPLICATED] > * *").length is 2
+PASS document.querySelectorAll("[id=ANCESTOR_DUPLICATED] * > *").length is 2
+PASS document.querySelectorAll("[id=ancestor_duplicated] *").length is 0
+PASS document.querySelectorAll("[id=ancestor_duplicated] > * *").length is 0
+PASS document.querySelectorAll("[id=ancestor_duplicated] * > *").length is 0
 Non-Trivial Selector used as ancestor filter
-PASS document.querySelectorAll("div[id=Ancestor_Unique][data-case] >> *").length is 4
-PASS document.querySelectorAll("div[id=Ancestor_Unique][data-case] > * >> *").length is 2
-PASS document.querySelectorAll("div[id=Ancestor_Unique][data-case] >> * > *").length is 2
-PASS document.querySelectorAll("div[id=ancestor_unique][data-case] >> *").length is 0
-PASS document.querySelectorAll("div[id=ancestor_unique][data-case] > * >> *").length is 0
-PASS document.querySelectorAll("div[id=ancestor_unique][data-case] >> * > *").length is 0
-PASS document.querySelectorAll("div[id=ANCESTOR_DUPLICATED][data-case] >> *").length is 5
-PASS document.querySelectorAll("div[id=ANCESTOR_DUPLICATED][data-case] > * >> *").length is 2
-PASS document.querySelectorAll("div[id=ANCESTOR_DUPLICATED][data-case] >> * > *").length is 2
-PASS document.querySelectorAll("div[id=ancestor_duplicated][data-case] >> *").length is 0
-PASS document.querySelectorAll("div[id=ancestor_duplicated][data-case] > * >> *").length is 0
-PASS document.querySelectorAll("div[id=ancestor_duplicated][data-case] >> * > *").length is 0
+PASS document.querySelectorAll("div[id=Ancestor_Unique][data-case] *").length is 4
+PASS document.querySelectorAll("div[id=Ancestor_Unique][data-case] > * *").length is 2
+PASS document.querySelectorAll("div[id=Ancestor_Unique][data-case] * > *").length is 2
+PASS document.querySelectorAll("div[id=ancestor_unique][data-case] *").length is 0
+PASS document.querySelectorAll("div[id=ancestor_unique][data-case] > * *").length is 0
+PASS document.querySelectorAll("div[id=ancestor_unique][data-case] * > *").length is 0
+PASS document.querySelectorAll("div[id=ANCESTOR_DUPLICATED][data-case] *").length is 5
+PASS document.querySelectorAll("div[id=ANCESTOR_DUPLICATED][data-case] > * *").length is 2
+PASS document.querySelectorAll("div[id=ANCESTOR_DUPLICATED][data-case] * > *").length is 2
+PASS document.querySelectorAll("div[id=ancestor_duplicated][data-case] *").length is 0
+PASS document.querySelectorAll("div[id=ancestor_duplicated][data-case] > * *").length is 0
+PASS document.querySelectorAll("div[id=ancestor_duplicated][data-case] * > *").length is 0
 Trivial Selector used as sibling filter
 PASS document.querySelectorAll("[id=simple_unique] + *").length is 1
 PASS document.querySelectorAll("[id=simple_unique] ~ *").length is 5
index f802026..4d51d53 100644 (file)
@@ -12,31 +12,31 @@ PASS document.querySelectorAll("div[id=simple_unique][data-case]").length is 1
 PASS document.querySelectorAll("div[id=simple_Duplicated][data-case]").length is 3
 PASS document.querySelectorAll("div[id=simple_duplicated][data-case]").length is 0
 Trivial Selector used as ancestor filter
-PASS document.querySelectorAll("[id=Ancestor_Unique] >> *").length is 4
-PASS document.querySelectorAll("[id=Ancestor_Unique] > * >> *").length is 2
-PASS document.querySelectorAll("[id=Ancestor_Unique] >> * > *").length is 2
-PASS document.querySelectorAll("[id=ancestor_unique] >> *").length is 0
-PASS document.querySelectorAll("[id=ancestor_unique] > * >> *").length is 0
-PASS document.querySelectorAll("[id=ancestor_unique] >> * > *").length is 0
-PASS document.querySelectorAll("[id=ANCESTOR_DUPLICATED] >> *").length is 5
-PASS document.querySelectorAll("[id=ANCESTOR_DUPLICATED] > * >> *").length is 2
-PASS document.querySelectorAll("[id=ANCESTOR_DUPLICATED] >> * > *").length is 2
-PASS document.querySelectorAll("[id=ancestor_duplicated] >> *").length is 0
-PASS document.querySelectorAll("[id=ancestor_duplicated] > * >> *").length is 0
-PASS document.querySelectorAll("[id=ancestor_duplicated] >> * > *").length is 0
+PASS document.querySelectorAll("[id=Ancestor_Unique] *").length is 4
+PASS document.querySelectorAll("[id=Ancestor_Unique] > * *").length is 2
+PASS document.querySelectorAll("[id=Ancestor_Unique] * > *").length is 2
+PASS document.querySelectorAll("[id=ancestor_unique] *").length is 0
+PASS document.querySelectorAll("[id=ancestor_unique] > * *").length is 0
+PASS document.querySelectorAll("[id=ancestor_unique] * > *").length is 0
+PASS document.querySelectorAll("[id=ANCESTOR_DUPLICATED] *").length is 5
+PASS document.querySelectorAll("[id=ANCESTOR_DUPLICATED] > * *").length is 2
+PASS document.querySelectorAll("[id=ANCESTOR_DUPLICATED] * > *").length is 2
+PASS document.querySelectorAll("[id=ancestor_duplicated] *").length is 0
+PASS document.querySelectorAll("[id=ancestor_duplicated] > * *").length is 0
+PASS document.querySelectorAll("[id=ancestor_duplicated] * > *").length is 0
 Non-Trivial Selector used as ancestor filter
-PASS document.querySelectorAll("div[id=Ancestor_Unique][data-case] >> *").length is 4
-PASS document.querySelectorAll("div[id=Ancestor_Unique][data-case] > * >> *").length is 2
-PASS document.querySelectorAll("div[id=Ancestor_Unique][data-case] >> * > *").length is 2
-PASS document.querySelectorAll("div[id=ancestor_unique][data-case] >> *").length is 0
-PASS document.querySelectorAll("div[id=ancestor_unique][data-case] > * >> *").length is 0
-PASS document.querySelectorAll("div[id=ancestor_unique][data-case] >> * > *").length is 0
-PASS document.querySelectorAll("div[id=ANCESTOR_DUPLICATED][data-case] >> *").length is 5
-PASS document.querySelectorAll("div[id=ANCESTOR_DUPLICATED][data-case] > * >> *").length is 2
-PASS document.querySelectorAll("div[id=ANCESTOR_DUPLICATED][data-case] >> * > *").length is 2
-PASS document.querySelectorAll("div[id=ancestor_duplicated][data-case] >> *").length is 0
-PASS document.querySelectorAll("div[id=ancestor_duplicated][data-case] > * >> *").length is 0
-PASS document.querySelectorAll("div[id=ancestor_duplicated][data-case] >> * > *").length is 0
+PASS document.querySelectorAll("div[id=Ancestor_Unique][data-case] *").length is 4
+PASS document.querySelectorAll("div[id=Ancestor_Unique][data-case] > * *").length is 2
+PASS document.querySelectorAll("div[id=Ancestor_Unique][data-case] * > *").length is 2
+PASS document.querySelectorAll("div[id=ancestor_unique][data-case] *").length is 0
+PASS document.querySelectorAll("div[id=ancestor_unique][data-case] > * *").length is 0
+PASS document.querySelectorAll("div[id=ancestor_unique][data-case] * > *").length is 0
+PASS document.querySelectorAll("div[id=ANCESTOR_DUPLICATED][data-case] *").length is 5
+PASS document.querySelectorAll("div[id=ANCESTOR_DUPLICATED][data-case] > * *").length is 2
+PASS document.querySelectorAll("div[id=ANCESTOR_DUPLICATED][data-case] * > *").length is 2
+PASS document.querySelectorAll("div[id=ancestor_duplicated][data-case] *").length is 0
+PASS document.querySelectorAll("div[id=ancestor_duplicated][data-case] > * *").length is 0
+PASS document.querySelectorAll("div[id=ancestor_duplicated][data-case] * > *").length is 0
 Trivial Selector used as sibling filter
 PASS document.querySelectorAll("[id=simple_unique] + *").length is 1
 PASS document.querySelectorAll("[id=simple_unique] ~ *").length is 5
index 25ad9d3..6489c81 100644 (file)
             test("div[id=simple_duplicated][data-case]", []);
 
             debug("Trivial Selector used as ancestor filter");
-            test("[id=Ancestor_Unique] >> *", [6, 7, 8, 9]);
-            test("[id=Ancestor_Unique] > * >> *", [7, 9]);
-            test("[id=Ancestor_Unique] >> * > *", [7, 9]);
-            test("[id=ancestor_unique] >> *", []);
-            test("[id=ancestor_unique] > * >> *", []);
-            test("[id=ancestor_unique] >> * > *", []);
-            test("[id=ANCESTOR_DUPLICATED] >> *", [9, 11, 12, 13, 14]);
-            test("[id=ANCESTOR_DUPLICATED] > * >> *", [12, 14]);
-            test("[id=ANCESTOR_DUPLICATED] >> * > *", [12, 14]);
-            test("[id=ancestor_duplicated] >> *", []);
-            test("[id=ancestor_duplicated] > * >> *", []);
-            test("[id=ancestor_duplicated] >> * > *", []);
+            test("[id=Ancestor_Unique] *", [6, 7, 8, 9]);
+            test("[id=Ancestor_Unique] > * *", [7, 9]);
+            test("[id=Ancestor_Unique] * > *", [7, 9]);
+            test("[id=ancestor_unique] *", []);
+            test("[id=ancestor_unique] > * *", []);
+            test("[id=ancestor_unique] * > *", []);
+            test("[id=ANCESTOR_DUPLICATED] *", [9, 11, 12, 13, 14]);
+            test("[id=ANCESTOR_DUPLICATED] > * *", [12, 14]);
+            test("[id=ANCESTOR_DUPLICATED] * > *", [12, 14]);
+            test("[id=ancestor_duplicated] *", []);
+            test("[id=ancestor_duplicated] > * *", []);
+            test("[id=ancestor_duplicated] * > *", []);
 
             debug("Non-Trivial Selector used as ancestor filter");
-            test("div[id=Ancestor_Unique][data-case] >> *", [6, 7, 8, 9]);
-            test("div[id=Ancestor_Unique][data-case] > * >> *", [7, 9]);
-            test("div[id=Ancestor_Unique][data-case] >> * > *", [7, 9]);
-            test("div[id=ancestor_unique][data-case] >> *", []);
-            test("div[id=ancestor_unique][data-case] > * >> *", []);
-            test("div[id=ancestor_unique][data-case] >> * > *", []);
-            test("div[id=ANCESTOR_DUPLICATED][data-case] >> *", [9, 11, 12, 13, 14]);
-            test("div[id=ANCESTOR_DUPLICATED][data-case] > * >> *", [12, 14]);
-            test("div[id=ANCESTOR_DUPLICATED][data-case] >> * > *", [12, 14]);
-            test("div[id=ancestor_duplicated][data-case] >> *", []);
-            test("div[id=ancestor_duplicated][data-case] > * >> *", []);
-            test("div[id=ancestor_duplicated][data-case] >> * > *", []);
+            test("div[id=Ancestor_Unique][data-case] *", [6, 7, 8, 9]);
+            test("div[id=Ancestor_Unique][data-case] > * *", [7, 9]);
+            test("div[id=Ancestor_Unique][data-case] * > *", [7, 9]);
+            test("div[id=ancestor_unique][data-case] *", []);
+            test("div[id=ancestor_unique][data-case] > * *", []);
+            test("div[id=ancestor_unique][data-case] * > *", []);
+            test("div[id=ANCESTOR_DUPLICATED][data-case] *", [9, 11, 12, 13, 14]);
+            test("div[id=ANCESTOR_DUPLICATED][data-case] > * *", [12, 14]);
+            test("div[id=ANCESTOR_DUPLICATED][data-case] * > *", [12, 14]);
+            test("div[id=ancestor_duplicated][data-case] *", []);
+            test("div[id=ancestor_duplicated][data-case] > * *", []);
+            test("div[id=ancestor_duplicated][data-case] * > *", []);
 
             debug("Trivial Selector used as sibling filter");
             test("[id=simple_unique] + *", [2]);
index 39a9d95..a1e6737 100644 (file)
             test("div[id=simple_duplicated][data-case]", []);
 
             debug("Trivial Selector used as ancestor filter");
-            test("[id=Ancestor_Unique] >> *", [6, 7, 8, 9]);
-            test("[id=Ancestor_Unique] > * >> *", [7, 9]);
-            test("[id=Ancestor_Unique] >> * > *", [7, 9]);
-            test("[id=ancestor_unique] >> *", []);
-            test("[id=ancestor_unique] > * >> *", []);
-            test("[id=ancestor_unique] >> * > *", []);
-            test("[id=ANCESTOR_DUPLICATED] >> *", [9, 11, 12, 13, 14]);
-            test("[id=ANCESTOR_DUPLICATED] > * >> *", [12, 14]);
-            test("[id=ANCESTOR_DUPLICATED] >> * > *", [12, 14]);
-            test("[id=ancestor_duplicated] >> *", []);
-            test("[id=ancestor_duplicated] > * >> *", []);
-            test("[id=ancestor_duplicated] >> * > *", []);
+            test("[id=Ancestor_Unique] *", [6, 7, 8, 9]);
+            test("[id=Ancestor_Unique] > * *", [7, 9]);
+            test("[id=Ancestor_Unique] * > *", [7, 9]);
+            test("[id=ancestor_unique] *", []);
+            test("[id=ancestor_unique] > * *", []);
+            test("[id=ancestor_unique] * > *", []);
+            test("[id=ANCESTOR_DUPLICATED] *", [9, 11, 12, 13, 14]);
+            test("[id=ANCESTOR_DUPLICATED] > * *", [12, 14]);
+            test("[id=ANCESTOR_DUPLICATED] * > *", [12, 14]);
+            test("[id=ancestor_duplicated] *", []);
+            test("[id=ancestor_duplicated] > * *", []);
+            test("[id=ancestor_duplicated] * > *", []);
 
             debug("Non-Trivial Selector used as ancestor filter");
-            test("div[id=Ancestor_Unique][data-case] >> *", [6, 7, 8, 9]);
-            test("div[id=Ancestor_Unique][data-case] > * >> *", [7, 9]);
-            test("div[id=Ancestor_Unique][data-case] >> * > *", [7, 9]);
-            test("div[id=ancestor_unique][data-case] >> *", []);
-            test("div[id=ancestor_unique][data-case] > * >> *", []);
-            test("div[id=ancestor_unique][data-case] >> * > *", []);
-            test("div[id=ANCESTOR_DUPLICATED][data-case] >> *", [9, 11, 12, 13, 14]);
-            test("div[id=ANCESTOR_DUPLICATED][data-case] > * >> *", [12, 14]);
-            test("div[id=ANCESTOR_DUPLICATED][data-case] >> * > *", [12, 14]);
-            test("div[id=ancestor_duplicated][data-case] >> *", []);
-            test("div[id=ancestor_duplicated][data-case] > * >> *", []);
-            test("div[id=ancestor_duplicated][data-case] >> * > *", []);
+            test("div[id=Ancestor_Unique][data-case] *", [6, 7, 8, 9]);
+            test("div[id=Ancestor_Unique][data-case] > * *", [7, 9]);
+            test("div[id=Ancestor_Unique][data-case] * > *", [7, 9]);
+            test("div[id=ancestor_unique][data-case] *", []);
+            test("div[id=ancestor_unique][data-case] > * *", []);
+            test("div[id=ancestor_unique][data-case] * > *", []);
+            test("div[id=ANCESTOR_DUPLICATED][data-case] *", [9, 11, 12, 13, 14]);
+            test("div[id=ANCESTOR_DUPLICATED][data-case] > * *", [12, 14]);
+            test("div[id=ANCESTOR_DUPLICATED][data-case] * > *", [12, 14]);
+            test("div[id=ancestor_duplicated][data-case] *", []);
+            test("div[id=ancestor_duplicated][data-case] > * *", []);
+            test("div[id=ancestor_duplicated][data-case] * > *", []);
 
             debug("Trivial Selector used as sibling filter");
             test("[id=simple_unique] + *", [2]);
index f7a1680..82581a0 100644 (file)
@@ -4,8 +4,8 @@ On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE
 
 
 Testing ":nth-child(1)"
-PASS document.querySelectorAll('#test-root >> :nth-child(1)').length is 1
-PASS document.querySelectorAll('#test-root >> :nth-child(1)')[0].id is "testcase1"
+PASS document.querySelectorAll('#test-root :nth-child(1)').length is 1
+PASS document.querySelectorAll('#test-root :nth-child(1)')[0].id is "testcase1"
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[0]).backgroundColor is "rgb(10, 100, 200)"
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[1]).backgroundColor is "rgb(255, 0, 0)"
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[2]).backgroundColor is "rgb(255, 0, 0)"
@@ -13,8 +13,8 @@ PASS getComputedStyle(document.querySelectorAll("#test-root *")[3]).backgroundCo
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[4]).backgroundColor is "rgb(255, 0, 0)"
 
 Testing ":nth-child(+1)"
-PASS document.querySelectorAll('#test-root >> :nth-child(+1)').length is 1
-PASS document.querySelectorAll('#test-root >> :nth-child(+1)')[0].id is "testcase1"
+PASS document.querySelectorAll('#test-root :nth-child(+1)').length is 1
+PASS document.querySelectorAll('#test-root :nth-child(+1)')[0].id is "testcase1"
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[0]).backgroundColor is "rgb(10, 100, 200)"
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[1]).backgroundColor is "rgb(255, 0, 0)"
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[2]).backgroundColor is "rgb(255, 0, 0)"
@@ -22,8 +22,8 @@ PASS getComputedStyle(document.querySelectorAll("#test-root *")[3]).backgroundCo
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[4]).backgroundColor is "rgb(255, 0, 0)"
 
 Testing ":nth-child(-n+1)"
-PASS document.querySelectorAll('#test-root >> :nth-child(-n+1)').length is 1
-PASS document.querySelectorAll('#test-root >> :nth-child(-n+1)')[0].id is "testcase1"
+PASS document.querySelectorAll('#test-root :nth-child(-n+1)').length is 1
+PASS document.querySelectorAll('#test-root :nth-child(-n+1)')[0].id is "testcase1"
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[0]).backgroundColor is "rgb(10, 100, 200)"
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[1]).backgroundColor is "rgb(255, 0, 0)"
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[2]).backgroundColor is "rgb(255, 0, 0)"
@@ -31,8 +31,8 @@ PASS getComputedStyle(document.querySelectorAll("#test-root *")[3]).backgroundCo
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[4]).backgroundColor is "rgb(255, 0, 0)"
 
 Testing ":nth-child(-2n+1)"
-PASS document.querySelectorAll('#test-root >> :nth-child(-2n+1)').length is 1
-PASS document.querySelectorAll('#test-root >> :nth-child(-2n+1)')[0].id is "testcase1"
+PASS document.querySelectorAll('#test-root :nth-child(-2n+1)').length is 1
+PASS document.querySelectorAll('#test-root :nth-child(-2n+1)')[0].id is "testcase1"
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[0]).backgroundColor is "rgb(10, 100, 200)"
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[1]).backgroundColor is "rgb(255, 0, 0)"
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[2]).backgroundColor is "rgb(255, 0, 0)"
@@ -40,8 +40,8 @@ PASS getComputedStyle(document.querySelectorAll("#test-root *")[3]).backgroundCo
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[4]).backgroundColor is "rgb(255, 0, 0)"
 
 Testing ":nth-child(-3n+1)"
-PASS document.querySelectorAll('#test-root >> :nth-child(-3n+1)').length is 1
-PASS document.querySelectorAll('#test-root >> :nth-child(-3n+1)')[0].id is "testcase1"
+PASS document.querySelectorAll('#test-root :nth-child(-3n+1)').length is 1
+PASS document.querySelectorAll('#test-root :nth-child(-3n+1)')[0].id is "testcase1"
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[0]).backgroundColor is "rgb(10, 100, 200)"
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[1]).backgroundColor is "rgb(255, 0, 0)"
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[2]).backgroundColor is "rgb(255, 0, 0)"
@@ -49,8 +49,8 @@ PASS getComputedStyle(document.querySelectorAll("#test-root *")[3]).backgroundCo
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[4]).backgroundColor is "rgb(255, 0, 0)"
 
 Testing ":nth-child(odd):nth-child(1):nth-child(2n+1)"
-PASS document.querySelectorAll('#test-root >> :nth-child(odd):nth-child(1):nth-child(2n+1)').length is 1
-PASS document.querySelectorAll('#test-root >> :nth-child(odd):nth-child(1):nth-child(2n+1)')[0].id is "testcase1"
+PASS document.querySelectorAll('#test-root :nth-child(odd):nth-child(1):nth-child(2n+1)').length is 1
+PASS document.querySelectorAll('#test-root :nth-child(odd):nth-child(1):nth-child(2n+1)')[0].id is "testcase1"
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[0]).backgroundColor is "rgb(10, 100, 200)"
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[1]).backgroundColor is "rgb(255, 0, 0)"
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[2]).backgroundColor is "rgb(255, 0, 0)"
@@ -58,8 +58,8 @@ PASS getComputedStyle(document.querySelectorAll("#test-root *")[3]).backgroundCo
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[4]).backgroundColor is "rgb(255, 0, 0)"
 
 Testing ":nth-child(odd):nth-child(+1):nth-child(2n+1)"
-PASS document.querySelectorAll('#test-root >> :nth-child(odd):nth-child(+1):nth-child(2n+1)').length is 1
-PASS document.querySelectorAll('#test-root >> :nth-child(odd):nth-child(+1):nth-child(2n+1)')[0].id is "testcase1"
+PASS document.querySelectorAll('#test-root :nth-child(odd):nth-child(+1):nth-child(2n+1)').length is 1
+PASS document.querySelectorAll('#test-root :nth-child(odd):nth-child(+1):nth-child(2n+1)')[0].id is "testcase1"
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[0]).backgroundColor is "rgb(10, 100, 200)"
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[1]).backgroundColor is "rgb(255, 0, 0)"
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[2]).backgroundColor is "rgb(255, 0, 0)"
@@ -67,8 +67,8 @@ PASS getComputedStyle(document.querySelectorAll("#test-root *")[3]).backgroundCo
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[4]).backgroundColor is "rgb(255, 0, 0)"
 
 Testing ":nth-child(odd):nth-child(-n+1):nth-child(2n+1)"
-PASS document.querySelectorAll('#test-root >> :nth-child(odd):nth-child(-n+1):nth-child(2n+1)').length is 1
-PASS document.querySelectorAll('#test-root >> :nth-child(odd):nth-child(-n+1):nth-child(2n+1)')[0].id is "testcase1"
+PASS document.querySelectorAll('#test-root :nth-child(odd):nth-child(-n+1):nth-child(2n+1)').length is 1
+PASS document.querySelectorAll('#test-root :nth-child(odd):nth-child(-n+1):nth-child(2n+1)')[0].id is "testcase1"
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[0]).backgroundColor is "rgb(10, 100, 200)"
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[1]).backgroundColor is "rgb(255, 0, 0)"
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[2]).backgroundColor is "rgb(255, 0, 0)"
@@ -76,8 +76,8 @@ PASS getComputedStyle(document.querySelectorAll("#test-root *")[3]).backgroundCo
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[4]).backgroundColor is "rgb(255, 0, 0)"
 
 Testing ":nth-child(odd):nth-child(-2n+1):nth-child(2n+1)"
-PASS document.querySelectorAll('#test-root >> :nth-child(odd):nth-child(-2n+1):nth-child(2n+1)').length is 1
-PASS document.querySelectorAll('#test-root >> :nth-child(odd):nth-child(-2n+1):nth-child(2n+1)')[0].id is "testcase1"
+PASS document.querySelectorAll('#test-root :nth-child(odd):nth-child(-2n+1):nth-child(2n+1)').length is 1
+PASS document.querySelectorAll('#test-root :nth-child(odd):nth-child(-2n+1):nth-child(2n+1)')[0].id is "testcase1"
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[0]).backgroundColor is "rgb(10, 100, 200)"
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[1]).backgroundColor is "rgb(255, 0, 0)"
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[2]).backgroundColor is "rgb(255, 0, 0)"
@@ -85,8 +85,8 @@ PASS getComputedStyle(document.querySelectorAll("#test-root *")[3]).backgroundCo
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[4]).backgroundColor is "rgb(255, 0, 0)"
 
 Testing ":nth-child(odd):nth-child(-3n+1):nth-child(2n+1)"
-PASS document.querySelectorAll('#test-root >> :nth-child(odd):nth-child(-3n+1):nth-child(2n+1)').length is 1
-PASS document.querySelectorAll('#test-root >> :nth-child(odd):nth-child(-3n+1):nth-child(2n+1)')[0].id is "testcase1"
+PASS document.querySelectorAll('#test-root :nth-child(odd):nth-child(-3n+1):nth-child(2n+1)').length is 1
+PASS document.querySelectorAll('#test-root :nth-child(odd):nth-child(-3n+1):nth-child(2n+1)')[0].id is "testcase1"
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[0]).backgroundColor is "rgb(10, 100, 200)"
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[1]).backgroundColor is "rgb(255, 0, 0)"
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[2]).backgroundColor is "rgb(255, 0, 0)"
@@ -94,7 +94,7 @@ PASS getComputedStyle(document.querySelectorAll("#test-root *")[3]).backgroundCo
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[4]).backgroundColor is "rgb(255, 0, 0)"
 
 Testing ":nth-child(-n-1)"
-PASS document.querySelectorAll('#test-root >> :nth-child(-n-1)').length is 0
+PASS document.querySelectorAll('#test-root :nth-child(-n-1)').length is 0
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[0]).backgroundColor is "rgb(255, 0, 0)"
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[1]).backgroundColor is "rgb(255, 0, 0)"
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[2]).backgroundColor is "rgb(255, 0, 0)"
@@ -102,12 +102,12 @@ PASS getComputedStyle(document.querySelectorAll("#test-root *")[3]).backgroundCo
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[4]).backgroundColor is "rgb(255, 0, 0)"
 
 Testing ":nth-child(n+1)"
-PASS document.querySelectorAll('#test-root >> :nth-child(n+1)').length is 5
-PASS document.querySelectorAll('#test-root >> :nth-child(n+1)')[0].id is "testcase1"
-PASS document.querySelectorAll('#test-root >> :nth-child(n+1)')[1].id is "testcase2"
-PASS document.querySelectorAll('#test-root >> :nth-child(n+1)')[2].id is "testcase3"
-PASS document.querySelectorAll('#test-root >> :nth-child(n+1)')[3].id is "testcase4"
-PASS document.querySelectorAll('#test-root >> :nth-child(n+1)')[4].id is "testcase5"
+PASS document.querySelectorAll('#test-root :nth-child(n+1)').length is 5
+PASS document.querySelectorAll('#test-root :nth-child(n+1)')[0].id is "testcase1"
+PASS document.querySelectorAll('#test-root :nth-child(n+1)')[1].id is "testcase2"
+PASS document.querySelectorAll('#test-root :nth-child(n+1)')[2].id is "testcase3"
+PASS document.querySelectorAll('#test-root :nth-child(n+1)')[3].id is "testcase4"
+PASS document.querySelectorAll('#test-root :nth-child(n+1)')[4].id is "testcase5"
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[0]).backgroundColor is "rgb(10, 100, 200)"
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[1]).backgroundColor is "rgb(10, 100, 200)"
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[2]).backgroundColor is "rgb(10, 100, 200)"
@@ -115,12 +115,12 @@ PASS getComputedStyle(document.querySelectorAll("#test-root *")[3]).backgroundCo
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[4]).backgroundColor is "rgb(10, 100, 200)"
 
 Testing ":nth-child(n-1)"
-PASS document.querySelectorAll('#test-root >> :nth-child(n-1)').length is 5
-PASS document.querySelectorAll('#test-root >> :nth-child(n-1)')[0].id is "testcase1"
-PASS document.querySelectorAll('#test-root >> :nth-child(n-1)')[1].id is "testcase2"
-PASS document.querySelectorAll('#test-root >> :nth-child(n-1)')[2].id is "testcase3"
-PASS document.querySelectorAll('#test-root >> :nth-child(n-1)')[3].id is "testcase4"
-PASS document.querySelectorAll('#test-root >> :nth-child(n-1)')[4].id is "testcase5"
+PASS document.querySelectorAll('#test-root :nth-child(n-1)').length is 5
+PASS document.querySelectorAll('#test-root :nth-child(n-1)')[0].id is "testcase1"
+PASS document.querySelectorAll('#test-root :nth-child(n-1)')[1].id is "testcase2"
+PASS document.querySelectorAll('#test-root :nth-child(n-1)')[2].id is "testcase3"
+PASS document.querySelectorAll('#test-root :nth-child(n-1)')[3].id is "testcase4"
+PASS document.querySelectorAll('#test-root :nth-child(n-1)')[4].id is "testcase5"
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[0]).backgroundColor is "rgb(10, 100, 200)"
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[1]).backgroundColor is "rgb(10, 100, 200)"
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[2]).backgroundColor is "rgb(10, 100, 200)"
index 1d52836..84ae774 100644 (file)
@@ -43,8 +43,8 @@ function testStyling(selector, expectedIds) {
 
 function testSelector(selector, expectedIds) {
     debug("Testing \"" + selector + "\"");
-    testQuerySelector("#test-root >> " + selector, expectedIds);
-    testStyling("#test-root >> " + selector, expectedIds);
+    testQuerySelector("#test-root " + selector, expectedIds);
+    testStyling("#test-root " + selector, expectedIds);
     debug("");
 }
 
index 82e1deb..2d03a4c 100644 (file)
@@ -4,8 +4,8 @@ On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE
 
 
 Testing ":nth-last-child(1)"
-PASS document.querySelectorAll('#test-root >> :nth-last-child(1)').length is 1
-PASS document.querySelectorAll('#test-root >> :nth-last-child(1)')[0].id is "testcase5"
+PASS document.querySelectorAll('#test-root :nth-last-child(1)').length is 1
+PASS document.querySelectorAll('#test-root :nth-last-child(1)')[0].id is "testcase5"
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[0]).backgroundColor is "rgb(255, 0, 0)"
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[1]).backgroundColor is "rgb(255, 0, 0)"
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[2]).backgroundColor is "rgb(255, 0, 0)"
@@ -13,8 +13,8 @@ PASS getComputedStyle(document.querySelectorAll("#test-root *")[3]).backgroundCo
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[4]).backgroundColor is "rgb(10, 100, 200)"
 
 Testing ":nth-last-child(+1)"
-PASS document.querySelectorAll('#test-root >> :nth-last-child(+1)').length is 1
-PASS document.querySelectorAll('#test-root >> :nth-last-child(+1)')[0].id is "testcase5"
+PASS document.querySelectorAll('#test-root :nth-last-child(+1)').length is 1
+PASS document.querySelectorAll('#test-root :nth-last-child(+1)')[0].id is "testcase5"
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[0]).backgroundColor is "rgb(255, 0, 0)"
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[1]).backgroundColor is "rgb(255, 0, 0)"
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[2]).backgroundColor is "rgb(255, 0, 0)"
@@ -22,8 +22,8 @@ PASS getComputedStyle(document.querySelectorAll("#test-root *")[3]).backgroundCo
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[4]).backgroundColor is "rgb(10, 100, 200)"
 
 Testing ":nth-last-child(-n+1)"
-PASS document.querySelectorAll('#test-root >> :nth-last-child(-n+1)').length is 1
-PASS document.querySelectorAll('#test-root >> :nth-last-child(-n+1)')[0].id is "testcase5"
+PASS document.querySelectorAll('#test-root :nth-last-child(-n+1)').length is 1
+PASS document.querySelectorAll('#test-root :nth-last-child(-n+1)')[0].id is "testcase5"
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[0]).backgroundColor is "rgb(255, 0, 0)"
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[1]).backgroundColor is "rgb(255, 0, 0)"
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[2]).backgroundColor is "rgb(255, 0, 0)"
@@ -31,8 +31,8 @@ PASS getComputedStyle(document.querySelectorAll("#test-root *")[3]).backgroundCo
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[4]).backgroundColor is "rgb(10, 100, 200)"
 
 Testing ":nth-last-child(-2n+1)"
-PASS document.querySelectorAll('#test-root >> :nth-last-child(-2n+1)').length is 1
-PASS document.querySelectorAll('#test-root >> :nth-last-child(-2n+1)')[0].id is "testcase5"
+PASS document.querySelectorAll('#test-root :nth-last-child(-2n+1)').length is 1
+PASS document.querySelectorAll('#test-root :nth-last-child(-2n+1)')[0].id is "testcase5"
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[0]).backgroundColor is "rgb(255, 0, 0)"
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[1]).backgroundColor is "rgb(255, 0, 0)"
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[2]).backgroundColor is "rgb(255, 0, 0)"
@@ -40,8 +40,8 @@ PASS getComputedStyle(document.querySelectorAll("#test-root *")[3]).backgroundCo
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[4]).backgroundColor is "rgb(10, 100, 200)"
 
 Testing ":nth-last-child(-3n+1)"
-PASS document.querySelectorAll('#test-root >> :nth-last-child(-3n+1)').length is 1
-PASS document.querySelectorAll('#test-root >> :nth-last-child(-3n+1)')[0].id is "testcase5"
+PASS document.querySelectorAll('#test-root :nth-last-child(-3n+1)').length is 1
+PASS document.querySelectorAll('#test-root :nth-last-child(-3n+1)')[0].id is "testcase5"
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[0]).backgroundColor is "rgb(255, 0, 0)"
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[1]).backgroundColor is "rgb(255, 0, 0)"
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[2]).backgroundColor is "rgb(255, 0, 0)"
@@ -49,8 +49,8 @@ PASS getComputedStyle(document.querySelectorAll("#test-root *")[3]).backgroundCo
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[4]).backgroundColor is "rgb(10, 100, 200)"
 
 Testing ":nth-last-child(odd):nth-last-child(1):nth-last-child(2n+1)"
-PASS document.querySelectorAll('#test-root >> :nth-last-child(odd):nth-last-child(1):nth-last-child(2n+1)').length is 1
-PASS document.querySelectorAll('#test-root >> :nth-last-child(odd):nth-last-child(1):nth-last-child(2n+1)')[0].id is "testcase5"
+PASS document.querySelectorAll('#test-root :nth-last-child(odd):nth-last-child(1):nth-last-child(2n+1)').length is 1
+PASS document.querySelectorAll('#test-root :nth-last-child(odd):nth-last-child(1):nth-last-child(2n+1)')[0].id is "testcase5"
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[0]).backgroundColor is "rgb(255, 0, 0)"
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[1]).backgroundColor is "rgb(255, 0, 0)"
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[2]).backgroundColor is "rgb(255, 0, 0)"
@@ -58,8 +58,8 @@ PASS getComputedStyle(document.querySelectorAll("#test-root *")[3]).backgroundCo
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[4]).backgroundColor is "rgb(10, 100, 200)"
 
 Testing ":nth-last-child(odd):nth-last-child(+1):nth-last-child(2n+1)"
-PASS document.querySelectorAll('#test-root >> :nth-last-child(odd):nth-last-child(+1):nth-last-child(2n+1)').length is 1
-PASS document.querySelectorAll('#test-root >> :nth-last-child(odd):nth-last-child(+1):nth-last-child(2n+1)')[0].id is "testcase5"
+PASS document.querySelectorAll('#test-root :nth-last-child(odd):nth-last-child(+1):nth-last-child(2n+1)').length is 1
+PASS document.querySelectorAll('#test-root :nth-last-child(odd):nth-last-child(+1):nth-last-child(2n+1)')[0].id is "testcase5"
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[0]).backgroundColor is "rgb(255, 0, 0)"
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[1]).backgroundColor is "rgb(255, 0, 0)"
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[2]).backgroundColor is "rgb(255, 0, 0)"
@@ -67,8 +67,8 @@ PASS getComputedStyle(document.querySelectorAll("#test-root *")[3]).backgroundCo
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[4]).backgroundColor is "rgb(10, 100, 200)"
 
 Testing ":nth-last-child(odd):nth-last-child(-n+1):nth-last-child(2n+1)"
-PASS document.querySelectorAll('#test-root >> :nth-last-child(odd):nth-last-child(-n+1):nth-last-child(2n+1)').length is 1
-PASS document.querySelectorAll('#test-root >> :nth-last-child(odd):nth-last-child(-n+1):nth-last-child(2n+1)')[0].id is "testcase5"
+PASS document.querySelectorAll('#test-root :nth-last-child(odd):nth-last-child(-n+1):nth-last-child(2n+1)').length is 1
+PASS document.querySelectorAll('#test-root :nth-last-child(odd):nth-last-child(-n+1):nth-last-child(2n+1)')[0].id is "testcase5"
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[0]).backgroundColor is "rgb(255, 0, 0)"
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[1]).backgroundColor is "rgb(255, 0, 0)"
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[2]).backgroundColor is "rgb(255, 0, 0)"
@@ -76,8 +76,8 @@ PASS getComputedStyle(document.querySelectorAll("#test-root *")[3]).backgroundCo
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[4]).backgroundColor is "rgb(10, 100, 200)"
 
 Testing ":nth-last-child(odd):nth-last-child(-2n+1):nth-last-child(2n+1)"
-PASS document.querySelectorAll('#test-root >> :nth-last-child(odd):nth-last-child(-2n+1):nth-last-child(2n+1)').length is 1
-PASS document.querySelectorAll('#test-root >> :nth-last-child(odd):nth-last-child(-2n+1):nth-last-child(2n+1)')[0].id is "testcase5"
+PASS document.querySelectorAll('#test-root :nth-last-child(odd):nth-last-child(-2n+1):nth-last-child(2n+1)').length is 1
+PASS document.querySelectorAll('#test-root :nth-last-child(odd):nth-last-child(-2n+1):nth-last-child(2n+1)')[0].id is "testcase5"
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[0]).backgroundColor is "rgb(255, 0, 0)"
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[1]).backgroundColor is "rgb(255, 0, 0)"
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[2]).backgroundColor is "rgb(255, 0, 0)"
@@ -85,8 +85,8 @@ PASS getComputedStyle(document.querySelectorAll("#test-root *")[3]).backgroundCo
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[4]).backgroundColor is "rgb(10, 100, 200)"
 
 Testing ":nth-last-child(odd):nth-last-child(-3n+1):nth-last-child(2n+1)"
-PASS document.querySelectorAll('#test-root >> :nth-last-child(odd):nth-last-child(-3n+1):nth-last-child(2n+1)').length is 1
-PASS document.querySelectorAll('#test-root >> :nth-last-child(odd):nth-last-child(-3n+1):nth-last-child(2n+1)')[0].id is "testcase5"
+PASS document.querySelectorAll('#test-root :nth-last-child(odd):nth-last-child(-3n+1):nth-last-child(2n+1)').length is 1
+PASS document.querySelectorAll('#test-root :nth-last-child(odd):nth-last-child(-3n+1):nth-last-child(2n+1)')[0].id is "testcase5"
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[0]).backgroundColor is "rgb(255, 0, 0)"
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[1]).backgroundColor is "rgb(255, 0, 0)"
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[2]).backgroundColor is "rgb(255, 0, 0)"
@@ -94,7 +94,7 @@ PASS getComputedStyle(document.querySelectorAll("#test-root *")[3]).backgroundCo
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[4]).backgroundColor is "rgb(10, 100, 200)"
 
 Testing ":nth-last-child(-n-1)"
-PASS document.querySelectorAll('#test-root >> :nth-last-child(-n-1)').length is 0
+PASS document.querySelectorAll('#test-root :nth-last-child(-n-1)').length is 0
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[0]).backgroundColor is "rgb(255, 0, 0)"
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[1]).backgroundColor is "rgb(255, 0, 0)"
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[2]).backgroundColor is "rgb(255, 0, 0)"
@@ -102,12 +102,12 @@ PASS getComputedStyle(document.querySelectorAll("#test-root *")[3]).backgroundCo
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[4]).backgroundColor is "rgb(255, 0, 0)"
 
 Testing ":nth-last-child(n+1)"
-PASS document.querySelectorAll('#test-root >> :nth-last-child(n+1)').length is 5
-PASS document.querySelectorAll('#test-root >> :nth-last-child(n+1)')[0].id is "testcase1"
-PASS document.querySelectorAll('#test-root >> :nth-last-child(n+1)')[1].id is "testcase2"
-PASS document.querySelectorAll('#test-root >> :nth-last-child(n+1)')[2].id is "testcase3"
-PASS document.querySelectorAll('#test-root >> :nth-last-child(n+1)')[3].id is "testcase4"
-PASS document.querySelectorAll('#test-root >> :nth-last-child(n+1)')[4].id is "testcase5"
+PASS document.querySelectorAll('#test-root :nth-last-child(n+1)').length is 5
+PASS document.querySelectorAll('#test-root :nth-last-child(n+1)')[0].id is "testcase1"
+PASS document.querySelectorAll('#test-root :nth-last-child(n+1)')[1].id is "testcase2"
+PASS document.querySelectorAll('#test-root :nth-last-child(n+1)')[2].id is "testcase3"
+PASS document.querySelectorAll('#test-root :nth-last-child(n+1)')[3].id is "testcase4"
+PASS document.querySelectorAll('#test-root :nth-last-child(n+1)')[4].id is "testcase5"
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[0]).backgroundColor is "rgb(10, 100, 200)"
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[1]).backgroundColor is "rgb(10, 100, 200)"
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[2]).backgroundColor is "rgb(10, 100, 200)"
@@ -115,12 +115,12 @@ PASS getComputedStyle(document.querySelectorAll("#test-root *")[3]).backgroundCo
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[4]).backgroundColor is "rgb(10, 100, 200)"
 
 Testing ":nth-last-child(n-1)"
-PASS document.querySelectorAll('#test-root >> :nth-last-child(n-1)').length is 5
-PASS document.querySelectorAll('#test-root >> :nth-last-child(n-1)')[0].id is "testcase1"
-PASS document.querySelectorAll('#test-root >> :nth-last-child(n-1)')[1].id is "testcase2"
-PASS document.querySelectorAll('#test-root >> :nth-last-child(n-1)')[2].id is "testcase3"
-PASS document.querySelectorAll('#test-root >> :nth-last-child(n-1)')[3].id is "testcase4"
-PASS document.querySelectorAll('#test-root >> :nth-last-child(n-1)')[4].id is "testcase5"
+PASS document.querySelectorAll('#test-root :nth-last-child(n-1)').length is 5
+PASS document.querySelectorAll('#test-root :nth-last-child(n-1)')[0].id is "testcase1"
+PASS document.querySelectorAll('#test-root :nth-last-child(n-1)')[1].id is "testcase2"
+PASS document.querySelectorAll('#test-root :nth-last-child(n-1)')[2].id is "testcase3"
+PASS document.querySelectorAll('#test-root :nth-last-child(n-1)')[3].id is "testcase4"
+PASS document.querySelectorAll('#test-root :nth-last-child(n-1)')[4].id is "testcase5"
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[0]).backgroundColor is "rgb(10, 100, 200)"
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[1]).backgroundColor is "rgb(10, 100, 200)"
 PASS getComputedStyle(document.querySelectorAll("#test-root *")[2]).backgroundColor is "rgb(10, 100, 200)"
index a4ff46a..19ba9b6 100644 (file)
@@ -43,8 +43,8 @@ function testStyling(selector, expectedIds) {
 
 function testSelector(selector, expectedIds) {
     debug("Testing \"" + selector + "\"");
-    testQuerySelector("#test-root >> " + selector, expectedIds);
-    testStyling("#test-root >> " + selector, expectedIds);
+    testQuerySelector("#test-root " + selector, expectedIds);
+    testStyling("#test-root " + selector, expectedIds);
     debug("");
 }
 
index b3569f7..5e597cc 100644 (file)
@@ -33,36 +33,36 @@ PASS document.querySelectorAll('[DATA-ÆØÅ^="Web"]').length is 2
 PASS document.querySelectorAll('[DATA-ÆØÅ^="Web"]')[0].id is "target3"
 PASS document.querySelectorAll('[DATA-ÆØÅ^="Web"]')[1].id is "target4"
 PASS document.querySelectorAll('[DATA-æØå^="Web"]').length is 0
-PASS document.querySelectorAll(':root >> :matches(body, html) >> [data-æøå]').length is 2
-PASS document.querySelectorAll(':root >> :matches(body, html) >> [data-æøå]')[0].id is "target1"
-PASS document.querySelectorAll(':root >> :matches(body, html) >> [data-æøå]')[1].id is "target4"
-PASS document.querySelectorAll(':root >> :matches(body, html) >> [data-Æøå]').length is 2
-PASS document.querySelectorAll(':root >> :matches(body, html) >> [data-Æøå]')[0].id is "target2"
-PASS document.querySelectorAll(':root >> :matches(body, html) >> [data-Æøå]')[1].id is "target4"
-PASS document.querySelectorAll(':root >> :matches(body, html) >> [data-ÆØÅ]').length is 2
-PASS document.querySelectorAll(':root >> :matches(body, html) >> [data-ÆØÅ]')[0].id is "target3"
-PASS document.querySelectorAll(':root >> :matches(body, html) >> [data-ÆØÅ]')[1].id is "target4"
-PASS document.querySelectorAll(':root >> :matches(body, html) >> [data-æØå]').length is 0
-PASS document.querySelectorAll(':root >> :matches(body, html) >> [Data-æøå="WebKit!"]').length is 2
-PASS document.querySelectorAll(':root >> :matches(body, html) >> [Data-æøå="WebKit!"]')[0].id is "target1"
-PASS document.querySelectorAll(':root >> :matches(body, html) >> [Data-æøå="WebKit!"]')[1].id is "target4"
-PASS document.querySelectorAll(':root >> :matches(body, html) >> [Data-Æøå="WebKit!"]').length is 2
-PASS document.querySelectorAll(':root >> :matches(body, html) >> [Data-Æøå="WebKit!"]')[0].id is "target2"
-PASS document.querySelectorAll(':root >> :matches(body, html) >> [Data-Æøå="WebKit!"]')[1].id is "target4"
-PASS document.querySelectorAll(':root >> :matches(body, html) >> [Data-ÆØÅ="WebKit!"]').length is 2
-PASS document.querySelectorAll(':root >> :matches(body, html) >> [Data-ÆØÅ="WebKit!"]')[0].id is "target3"
-PASS document.querySelectorAll(':root >> :matches(body, html) >> [Data-ÆØÅ="WebKit!"]')[1].id is "target4"
-PASS document.querySelectorAll(':root >> :matches(body, html) >> [Data-æØå="WebKit!"]').length is 0
-PASS document.querySelectorAll(':root >> :matches(body, html) >> [DATA-æøå^="Web"]').length is 2
-PASS document.querySelectorAll(':root >> :matches(body, html) >> [DATA-æøå^="Web"]')[0].id is "target1"
-PASS document.querySelectorAll(':root >> :matches(body, html) >> [DATA-æøå^="Web"]')[1].id is "target4"
-PASS document.querySelectorAll(':root >> :matches(body, html) >> [DATA-Æøå^="Web"]').length is 2
-PASS document.querySelectorAll(':root >> :matches(body, html) >> [DATA-Æøå^="Web"]')[0].id is "target2"
-PASS document.querySelectorAll(':root >> :matches(body, html) >> [DATA-Æøå^="Web"]')[1].id is "target4"
-PASS document.querySelectorAll(':root >> :matches(body, html) >> [DATA-ÆØÅ^="Web"]').length is 2
-PASS document.querySelectorAll(':root >> :matches(body, html) >> [DATA-ÆØÅ^="Web"]')[0].id is "target3"
-PASS document.querySelectorAll(':root >> :matches(body, html) >> [DATA-ÆØÅ^="Web"]')[1].id is "target4"
-PASS document.querySelectorAll(':root >> :matches(body, html) >> [DATA-æØå^="Web"]').length is 0
+PASS document.querySelectorAll(':root :matches(body, html) [data-æøå]').length is 2
+PASS document.querySelectorAll(':root :matches(body, html) [data-æøå]')[0].id is "target1"
+PASS document.querySelectorAll(':root :matches(body, html) [data-æøå]')[1].id is "target4"
+PASS document.querySelectorAll(':root :matches(body, html) [data-Æøå]').length is 2
+PASS document.querySelectorAll(':root :matches(body, html) [data-Æøå]')[0].id is "target2"
+PASS document.querySelectorAll(':root :matches(body, html) [data-Æøå]')[1].id is "target4"
+PASS document.querySelectorAll(':root :matches(body, html) [data-ÆØÅ]').length is 2
+PASS document.querySelectorAll(':root :matches(body, html) [data-ÆØÅ]')[0].id is "target3"
+PASS document.querySelectorAll(':root :matches(body, html) [data-ÆØÅ]')[1].id is "target4"
+PASS document.querySelectorAll(':root :matches(body, html) [data-æØå]').length is 0
+PASS document.querySelectorAll(':root :matches(body, html) [Data-æøå="WebKit!"]').length is 2
+PASS document.querySelectorAll(':root :matches(body, html) [Data-æøå="WebKit!"]')[0].id is "target1"
+PASS document.querySelectorAll(':root :matches(body, html) [Data-æøå="WebKit!"]')[1].id is "target4"
+PASS document.querySelectorAll(':root :matches(body, html) [Data-Æøå="WebKit!"]').length is 2
+PASS document.querySelectorAll(':root :matches(body, html) [Data-Æøå="WebKit!"]')[0].id is "target2"
+PASS document.querySelectorAll(':root :matches(body, html) [Data-Æøå="WebKit!"]')[1].id is "target4"
+PASS document.querySelectorAll(':root :matches(body, html) [Data-ÆØÅ="WebKit!"]').length is 2
+PASS document.querySelectorAll(':root :matches(body, html) [Data-ÆØÅ="WebKit!"]')[0].id is "target3"
+PASS document.querySelectorAll(':root :matches(body, html) [Data-ÆØÅ="WebKit!"]')[1].id is "target4"
+PASS document.querySelectorAll(':root :matches(body, html) [Data-æØå="WebKit!"]').length is 0
+PASS document.querySelectorAll(':root :matches(body, html) [DATA-æøå^="Web"]').length is 2
+PASS document.querySelectorAll(':root :matches(body, html) [DATA-æøå^="Web"]')[0].id is "target1"
+PASS document.querySelectorAll(':root :matches(body, html) [DATA-æøå^="Web"]')[1].id is "target4"
+PASS document.querySelectorAll(':root :matches(body, html) [DATA-Æøå^="Web"]').length is 2
+PASS document.querySelectorAll(':root :matches(body, html) [DATA-Æøå^="Web"]')[0].id is "target2"
+PASS document.querySelectorAll(':root :matches(body, html) [DATA-Æøå^="Web"]')[1].id is "target4"
+PASS document.querySelectorAll(':root :matches(body, html) [DATA-ÆØÅ^="Web"]').length is 2
+PASS document.querySelectorAll(':root :matches(body, html) [DATA-ÆØÅ^="Web"]')[0].id is "target3"
+PASS document.querySelectorAll(':root :matches(body, html) [DATA-ÆØÅ^="Web"]')[1].id is "target4"
+PASS document.querySelectorAll(':root :matches(body, html) [DATA-æØå^="Web"]').length is 0
 PASS successfullyParsed is true
 
 TEST COMPLETE
index b91c6e0..b5ab652 100644 (file)
@@ -39,20 +39,20 @@ testSelector('[DATA-ÆØÅ^="Web"]', [3, 4]);
 testSelector('[DATA-æØå^="Web"]', []);
 
 // Complex selectors.
-testSelector(':root >> :matches(body, html) >> [data-æøå]', [1, 4]);
-testSelector(':root >> :matches(body, html) >> [data-Æøå]', [2, 4]);
-testSelector(':root >> :matches(body, html) >> [data-ÆØÅ]', [3, 4]);
-testSelector(':root >> :matches(body, html) >> [data-æØå]', []);
+testSelector(':root :matches(body, html) [data-æøå]', [1, 4]);
+testSelector(':root :matches(body, html) [data-Æøå]', [2, 4]);
+testSelector(':root :matches(body, html) [data-ÆØÅ]', [3, 4]);
+testSelector(':root :matches(body, html) [data-æØå]', []);
 
-testSelector(':root >> :matches(body, html) >> [Data-æøå="WebKit!"]', [1, 4]);
-testSelector(':root >> :matches(body, html) >> [Data-Æøå="WebKit!"]', [2, 4]);
-testSelector(':root >> :matches(body, html) >> [Data-ÆØÅ="WebKit!"]', [3, 4]);
-testSelector(':root >> :matches(body, html) >> [Data-æØå="WebKit!"]', []);
+testSelector(':root :matches(body, html) [Data-æøå="WebKit!"]', [1, 4]);
+testSelector(':root :matches(body, html) [Data-Æøå="WebKit!"]', [2, 4]);
+testSelector(':root :matches(body, html) [Data-ÆØÅ="WebKit!"]', [3, 4]);
+testSelector(':root :matches(body, html) [Data-æØå="WebKit!"]', []);
 
-testSelector(':root >> :matches(body, html) >> [DATA-æøå^="Web"]', [1, 4]);
-testSelector(':root >> :matches(body, html) >> [DATA-Æøå^="Web"]', [2, 4]);
-testSelector(':root >> :matches(body, html) >> [DATA-ÆØÅ^="Web"]', [3, 4]);
-testSelector(':root >> :matches(body, html) >> [DATA-æØå^="Web"]', []);
+testSelector(':root :matches(body, html) [DATA-æøå^="Web"]', [1, 4]);
+testSelector(':root :matches(body, html) [DATA-Æøå^="Web"]', [2, 4]);
+testSelector(':root :matches(body, html) [DATA-ÆØÅ^="Web"]', [3, 4]);
+testSelector(':root :matches(body, html) [DATA-æØå^="Web"]', []);
 </script>
 <script src="../../resources/js-test-post.js"></script>
 </html>
diff --git a/LayoutTests/fast/selectors/querySelector-descendant-combinator-doubled-child-syntax-expected.txt b/LayoutTests/fast/selectors/querySelector-descendant-combinator-doubled-child-syntax-expected.txt
deleted file mode 100644 (file)
index fb8a272..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-Test using the descendant combinator with the double-child syntax ">>" in querySelector.
-
-On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
-
-
-PASS document.querySelectorAll("body >> target").length is 2
-PASS document.querySelectorAll("body >> target")[0].id is "target1"
-PASS document.querySelectorAll("body >> target")[1].id is "target2"
-PASS document.querySelectorAll("target >> container").length is 0
-PASS document.querySelectorAll("container >> target").length is 2
-PASS document.querySelectorAll("container >> target")[0].id is "target1"
-PASS document.querySelectorAll("container >> target")[1].id is "target2"
-PASS document.querySelectorAll("container >> container").length is 2
-PASS document.querySelectorAll("container >> container")[0].id is "container2"
-PASS document.querySelectorAll("container >> container")[1].id is "container3"
-PASS document.querySelectorAll("body >> container").length is 3
-PASS document.querySelectorAll("body >> container")[0].id is "container1"
-PASS document.querySelectorAll("body >> container")[1].id is "container2"
-PASS document.querySelectorAll("body >> container")[2].id is "container3"
-PASS document.querySelectorAll("container >> *").length is 4
-PASS document.querySelectorAll("container >> *")[0].id is "container2"
-PASS document.querySelectorAll("container >> *")[1].id is "target1"
-PASS document.querySelectorAll("container >> *")[2].id is "container3"
-PASS document.querySelectorAll("container >> *")[3].id is "target2"
-PASS successfullyParsed is true
-
-TEST COMPLETE
-
diff --git a/LayoutTests/fast/selectors/querySelector-descendant-combinator-doubled-child-syntax.html b/LayoutTests/fast/selectors/querySelector-descendant-combinator-doubled-child-syntax.html
deleted file mode 100644 (file)
index 632c9cb..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-<!doctype html>
-<html>
-<head>
-<script src="../../resources/js-test-pre.js"></script>
-<style id="style-container"></style>
-</head>
-<body>
-    <container id="container1">
-        <container id="container2">
-            <target id="target1"></target>
-        </container>
-        <container id="container3">
-            <target id="target2"></target>
-        </container>
-    </container>
-</body>
-<script>
-description('Test using the descendant combinator with the double-child syntax "&gt;&gt;" in querySelector.');
-
-shouldBe('document.querySelectorAll("body >> target").length', '2');
-shouldBeEqualToString('document.querySelectorAll("body >> target")[0].id', 'target1');
-shouldBeEqualToString('document.querySelectorAll("body >> target")[1].id', 'target2');
-
-shouldBe('document.querySelectorAll("target >> container").length', '0');
-
-shouldBe('document.querySelectorAll("container >> target").length', '2');
-shouldBeEqualToString('document.querySelectorAll("container >> target")[0].id', 'target1');
-shouldBeEqualToString('document.querySelectorAll("container >> target")[1].id', 'target2');
-
-shouldBe('document.querySelectorAll("container >> container").length', '2');
-shouldBeEqualToString('document.querySelectorAll("container >> container")[0].id', 'container2');
-shouldBeEqualToString('document.querySelectorAll("container >> container")[1].id', 'container3');
-
-shouldBe('document.querySelectorAll("body >> container").length', '3');
-shouldBeEqualToString('document.querySelectorAll("body >> container")[0].id', 'container1');
-shouldBeEqualToString('document.querySelectorAll("body >> container")[1].id', 'container2');
-shouldBeEqualToString('document.querySelectorAll("body >> container")[2].id', 'container3');
-
-shouldBe('document.querySelectorAll("container >> *").length', '4');
-shouldBeEqualToString('document.querySelectorAll("container >> *")[0].id', 'container2');
-shouldBeEqualToString('document.querySelectorAll("container >> *")[1].id', 'target1');
-shouldBeEqualToString('document.querySelectorAll("container >> *")[2].id', 'container3');
-shouldBeEqualToString('document.querySelectorAll("container >> *")[3].id', 'target2');
-</script>
-<script src="../../resources/js-test-post.js"></script>
-</html>
index c05152b..4b22d65 100644 (file)
@@ -1,3 +1,17 @@
+2017-09-08  Antti Koivisto  <antti@apple.com>
+
+        Remove support for >> descendant combinator syntax
+        https://bugs.webkit.org/show_bug.cgi?id=175765
+
+        Reviewed by Sam Weinig.
+
+        Tests for these have been removed in WPT master, just update expectations until new version is imported.
+
+        * web-platform-tests/dom/nodes/Element-matches-expected.txt:
+        * web-platform-tests/dom/nodes/Element-webkitMatchesSelector-expected.txt:
+        * web-platform-tests/dom/nodes/ParentNode-querySelector-All-expected.txt:
+        * web-platform-tests/dom/nodes/ParentNode-querySelector-All-xht-expected.txt:
+
 2017-09-07  Youenn Fablet  <youenn@apple.com>
 
         Align FetchResponse and FetchRequest body handling
index 02afe0f..af6a058 100644 (file)
@@ -192,12 +192,12 @@ PASS In-document Element.matches: Descendant combinator, matching element with c
 PASS In-document Element.matches: Descendant combinator, matching element with class that is a descendant of an element with class (with no refNodes): .descendant-div1 .descendant-div3 
 PASS In-document Element.matches: Descendant combinator, whitespace characters (with no refNodes): #descendant \r
 #descendant-div2 
-PASS In-document Element.matches: Descendant combinator '>>', matching element that is a descendant of an element with id (with no refNodes): #descendant>>div 
-PASS In-document Element.matches: Descendant combinator '>>', matching element with id that is a descendant of an element (with no refNodes): body>>#descendant-div1 
-PASS In-document Element.matches: Descendant combinator '>>', matching element with id that is a descendant of an element (with no refNodes): div>>#descendant-div1 
-PASS In-document Element.matches: Descendant combinator '>>', matching element with id that is a descendant of an element with id (with no refNodes): #descendant>>#descendant-div2 
-PASS In-document Element.matches: Descendant combinator '>>', matching element with class that is a descendant of an element with id (with no refNodes): #descendant>>.descendant-div2 
-PASS In-document Element.matches: Descendant combinator '>>', matching element with class that is a descendant of an element with class (with no refNodes): .descendant-div1>>.descendant-div3 
+FAIL In-document Element.matches: Descendant combinator '>>', matching element that is a descendant of an element with id (with no refNodes): #descendant>>div The string did not match the expected pattern.
+FAIL In-document Element.matches: Descendant combinator '>>', matching element with id that is a descendant of an element (with no refNodes): body>>#descendant-div1 The string did not match the expected pattern.
+FAIL In-document Element.matches: Descendant combinator '>>', matching element with id that is a descendant of an element (with no refNodes): div>>#descendant-div1 The string did not match the expected pattern.
+FAIL In-document Element.matches: Descendant combinator '>>', matching element with id that is a descendant of an element with id (with no refNodes): #descendant>>#descendant-div2 The string did not match the expected pattern.
+FAIL In-document Element.matches: Descendant combinator '>>', matching element with class that is a descendant of an element with id (with no refNodes): #descendant>>.descendant-div2 The string did not match the expected pattern.
+FAIL In-document Element.matches: Descendant combinator '>>', matching element with class that is a descendant of an element with class (with no refNodes): .descendant-div1>>.descendant-div3 The string did not match the expected pattern.
 PASS In-document Element.matches: Child combinator, matching element that is a child of an element with id (with no refNodes): #child>div 
 PASS In-document Element.matches: Child combinator, matching element with id that is a child of an element (with no refNodes): div>#child-div1 
 PASS In-document Element.matches: Child combinator, matching element with id that is a child of an element with id (with no refNodes): #child>#child-div1 
@@ -355,11 +355,11 @@ PASS Detached Element.matches: Descendant combinator, matching element with clas
 PASS Detached Element.matches: Descendant combinator, matching element with class that is a descendant of an element with class (with no refNodes): .descendant-div1 .descendant-div3 
 PASS Detached Element.matches: Descendant combinator, whitespace characters (with no refNodes): #descendant    \r
 #descendant-div2 
-PASS Detached Element.matches: Descendant combinator '>>', matching element that is a descendant of an element with id (with no refNodes): #descendant>>div 
-PASS Detached Element.matches: Descendant combinator '>>', matching element with id that is a descendant of an element (with no refNodes): div>>#descendant-div1 
-PASS Detached Element.matches: Descendant combinator '>>', matching element with id that is a descendant of an element with id (with no refNodes): #descendant>>#descendant-div2 
-PASS Detached Element.matches: Descendant combinator '>>', matching element with class that is a descendant of an element with id (with no refNodes): #descendant>>.descendant-div2 
-PASS Detached Element.matches: Descendant combinator '>>', matching element with class that is a descendant of an element with class (with no refNodes): .descendant-div1>>.descendant-div3 
+FAIL Detached Element.matches: Descendant combinator '>>', matching element that is a descendant of an element with id (with no refNodes): #descendant>>div The string did not match the expected pattern.
+FAIL Detached Element.matches: Descendant combinator '>>', matching element with id that is a descendant of an element (with no refNodes): div>>#descendant-div1 The string did not match the expected pattern.
+FAIL Detached Element.matches: Descendant combinator '>>', matching element with id that is a descendant of an element with id (with no refNodes): #descendant>>#descendant-div2 The string did not match the expected pattern.
+FAIL Detached Element.matches: Descendant combinator '>>', matching element with class that is a descendant of an element with id (with no refNodes): #descendant>>.descendant-div2 The string did not match the expected pattern.
+FAIL Detached Element.matches: Descendant combinator '>>', matching element with class that is a descendant of an element with class (with no refNodes): .descendant-div1>>.descendant-div3 The string did not match the expected pattern.
 PASS Detached Element.matches: Child combinator, matching element that is a child of an element with id (with no refNodes): #child>div 
 PASS Detached Element.matches: Child combinator, matching element with id that is a child of an element (with no refNodes): div>#child-div1 
 PASS Detached Element.matches: Child combinator, matching element with id that is a child of an element with id (with no refNodes): #child>#child-div1 
@@ -517,11 +517,11 @@ PASS Fragment Element.matches: Descendant combinator, matching element with clas
 PASS Fragment Element.matches: Descendant combinator, matching element with class that is a descendant of an element with class (with no refNodes): .descendant-div1 .descendant-div3 
 PASS Fragment Element.matches: Descendant combinator, whitespace characters (with no refNodes): #descendant    \r
 #descendant-div2 
-PASS Fragment Element.matches: Descendant combinator '>>', matching element that is a descendant of an element with id (with no refNodes): #descendant>>div 
-PASS Fragment Element.matches: Descendant combinator '>>', matching element with id that is a descendant of an element (with no refNodes): div>>#descendant-div1 
-PASS Fragment Element.matches: Descendant combinator '>>', matching element with id that is a descendant of an element with id (with no refNodes): #descendant>>#descendant-div2 
-PASS Fragment Element.matches: Descendant combinator '>>', matching element with class that is a descendant of an element with id (with no refNodes): #descendant>>.descendant-div2 
-PASS Fragment Element.matches: Descendant combinator '>>', matching element with class that is a descendant of an element with class (with no refNodes): .descendant-div1>>.descendant-div3 
+FAIL Fragment Element.matches: Descendant combinator '>>', matching element that is a descendant of an element with id (with no refNodes): #descendant>>div The string did not match the expected pattern.
+FAIL Fragment Element.matches: Descendant combinator '>>', matching element with id that is a descendant of an element (with no refNodes): div>>#descendant-div1 The string did not match the expected pattern.
+FAIL Fragment Element.matches: Descendant combinator '>>', matching element with id that is a descendant of an element with id (with no refNodes): #descendant>>#descendant-div2 The string did not match the expected pattern.
+FAIL Fragment Element.matches: Descendant combinator '>>', matching element with class that is a descendant of an element with id (with no refNodes): #descendant>>.descendant-div2 The string did not match the expected pattern.
+FAIL Fragment Element.matches: Descendant combinator '>>', matching element with class that is a descendant of an element with class (with no refNodes): .descendant-div1>>.descendant-div3 The string did not match the expected pattern.
 PASS Fragment Element.matches: Child combinator, matching element that is a child of an element with id (with no refNodes): #child>div 
 PASS Fragment Element.matches: Child combinator, matching element with id that is a child of an element (with no refNodes): div>#child-div1 
 PASS Fragment Element.matches: Child combinator, matching element with id that is a child of an element with id (with no refNodes): #child>#child-div1 
@@ -682,12 +682,12 @@ PASS In-document Element.matches: Descendant combinator, matching element with c
 PASS In-document Element.matches: Descendant combinator, matching element with class that is a descendant of an element with class (1) (with no refNodes): .descendant-div1 .descendant-div3 
 PASS In-document Element.matches: Descendant combinator, whitespace characters (1) (with no refNodes): #descendant     \r
 #descendant-div2 
-PASS In-document Element.matches: Descendant combinator '>>', matching element that is a descendant of an element with id (1) (with no refNodes): #descendant>>div 
-PASS In-document Element.matches: Descendant combinator '>>', matching element with id that is a descendant of an element (1) (with no refNodes): body>>#descendant-div1 
-PASS In-document Element.matches: Descendant combinator '>>', matching element with id that is a descendant of an element (1) (with no refNodes): div>>#descendant-div1 
-PASS In-document Element.matches: Descendant combinator '>>', matching element with id that is a descendant of an element with id (1) (with no refNodes): #descendant>>#descendant-div2 
-PASS In-document Element.matches: Descendant combinator '>>', matching element with class that is a descendant of an element with id (1) (with no refNodes): #descendant>>.descendant-div2 
-PASS In-document Element.matches: Descendant combinator, '>>', matching element with class that is a descendant of an element with class (1) (with no refNodes): .descendant-div1>>.descendant-div3 
+FAIL In-document Element.matches: Descendant combinator '>>', matching element that is a descendant of an element with id (1) (with no refNodes): #descendant>>div The string did not match the expected pattern.
+FAIL In-document Element.matches: Descendant combinator '>>', matching element with id that is a descendant of an element (1) (with no refNodes): body>>#descendant-div1 The string did not match the expected pattern.
+FAIL In-document Element.matches: Descendant combinator '>>', matching element with id that is a descendant of an element (1) (with no refNodes): div>>#descendant-div1 The string did not match the expected pattern.
+FAIL In-document Element.matches: Descendant combinator '>>', matching element with id that is a descendant of an element with id (1) (with no refNodes): #descendant>>#descendant-div2 The string did not match the expected pattern.
+FAIL In-document Element.matches: Descendant combinator '>>', matching element with class that is a descendant of an element with id (1) (with no refNodes): #descendant>>.descendant-div2 The string did not match the expected pattern.
+FAIL In-document Element.matches: Descendant combinator, '>>', matching element with class that is a descendant of an element with class (1) (with no refNodes): .descendant-div1>>.descendant-div3 The string did not match the expected pattern.
 PASS In-document Element.matches: Child combinator, matching element that is a child of an element with id (1) (with no refNodes): #child>div 
 PASS In-document Element.matches: Child combinator, matching element with id that is a child of an element (1) (with no refNodes): div>#child-div1 
 PASS In-document Element.matches: Child combinator, matching element with id that is a child of an element with id (1) (with no refNodes): #child>#child-div1 
index bb67370..a37d806 100644 (file)
@@ -192,12 +192,12 @@ PASS In-document Element.webkitMatchesSelector: Descendant combinator, matching
 PASS In-document Element.webkitMatchesSelector: Descendant combinator, matching element with class that is a descendant of an element with class (with no refNodes): .descendant-div1 .descendant-div3 
 PASS In-document Element.webkitMatchesSelector: Descendant combinator, whitespace characters (with no refNodes): #descendant   \r
 #descendant-div2 
-PASS In-document Element.webkitMatchesSelector: Descendant combinator '>>', matching element that is a descendant of an element with id (with no refNodes): #descendant>>div 
-PASS In-document Element.webkitMatchesSelector: Descendant combinator '>>', matching element with id that is a descendant of an element (with no refNodes): body>>#descendant-div1 
-PASS In-document Element.webkitMatchesSelector: Descendant combinator '>>', matching element with id that is a descendant of an element (with no refNodes): div>>#descendant-div1 
-PASS In-document Element.webkitMatchesSelector: Descendant combinator '>>', matching element with id that is a descendant of an element with id (with no refNodes): #descendant>>#descendant-div2 
-PASS In-document Element.webkitMatchesSelector: Descendant combinator '>>', matching element with class that is a descendant of an element with id (with no refNodes): #descendant>>.descendant-div2 
-PASS In-document Element.webkitMatchesSelector: Descendant combinator '>>', matching element with class that is a descendant of an element with class (with no refNodes): .descendant-div1>>.descendant-div3 
+FAIL In-document Element.webkitMatchesSelector: Descendant combinator '>>', matching element that is a descendant of an element with id (with no refNodes): #descendant>>div The string did not match the expected pattern.
+FAIL In-document Element.webkitMatchesSelector: Descendant combinator '>>', matching element with id that is a descendant of an element (with no refNodes): body>>#descendant-div1 The string did not match the expected pattern.
+FAIL In-document Element.webkitMatchesSelector: Descendant combinator '>>', matching element with id that is a descendant of an element (with no refNodes): div>>#descendant-div1 The string did not match the expected pattern.
+FAIL In-document Element.webkitMatchesSelector: Descendant combinator '>>', matching element with id that is a descendant of an element with id (with no refNodes): #descendant>>#descendant-div2 The string did not match the expected pattern.
+FAIL In-document Element.webkitMatchesSelector: Descendant combinator '>>', matching element with class that is a descendant of an element with id (with no refNodes): #descendant>>.descendant-div2 The string did not match the expected pattern.
+FAIL In-document Element.webkitMatchesSelector: Descendant combinator '>>', matching element with class that is a descendant of an element with class (with no refNodes): .descendant-div1>>.descendant-div3 The string did not match the expected pattern.
 PASS In-document Element.webkitMatchesSelector: Child combinator, matching element that is a child of an element with id (with no refNodes): #child>div 
 PASS In-document Element.webkitMatchesSelector: Child combinator, matching element with id that is a child of an element (with no refNodes): div>#child-div1 
 PASS In-document Element.webkitMatchesSelector: Child combinator, matching element with id that is a child of an element with id (with no refNodes): #child>#child-div1 
@@ -355,11 +355,11 @@ PASS Detached Element.webkitMatchesSelector: Descendant combinator, matching ele
 PASS Detached Element.webkitMatchesSelector: Descendant combinator, matching element with class that is a descendant of an element with class (with no refNodes): .descendant-div1 .descendant-div3 
 PASS Detached Element.webkitMatchesSelector: Descendant combinator, whitespace characters (with no refNodes): #descendant      \r
 #descendant-div2 
-PASS Detached Element.webkitMatchesSelector: Descendant combinator '>>', matching element that is a descendant of an element with id (with no refNodes): #descendant>>div 
-PASS Detached Element.webkitMatchesSelector: Descendant combinator '>>', matching element with id that is a descendant of an element (with no refNodes): div>>#descendant-div1 
-PASS Detached Element.webkitMatchesSelector: Descendant combinator '>>', matching element with id that is a descendant of an element with id (with no refNodes): #descendant>>#descendant-div2 
-PASS Detached Element.webkitMatchesSelector: Descendant combinator '>>', matching element with class that is a descendant of an element with id (with no refNodes): #descendant>>.descendant-div2 
-PASS Detached Element.webkitMatchesSelector: Descendant combinator '>>', matching element with class that is a descendant of an element with class (with no refNodes): .descendant-div1>>.descendant-div3 
+FAIL Detached Element.webkitMatchesSelector: Descendant combinator '>>', matching element that is a descendant of an element with id (with no refNodes): #descendant>>div The string did not match the expected pattern.
+FAIL Detached Element.webkitMatchesSelector: Descendant combinator '>>', matching element with id that is a descendant of an element (with no refNodes): div>>#descendant-div1 The string did not match the expected pattern.
+FAIL Detached Element.webkitMatchesSelector: Descendant combinator '>>', matching element with id that is a descendant of an element with id (with no refNodes): #descendant>>#descendant-div2 The string did not match the expected pattern.
+FAIL Detached Element.webkitMatchesSelector: Descendant combinator '>>', matching element with class that is a descendant of an element with id (with no refNodes): #descendant>>.descendant-div2 The string did not match the expected pattern.
+FAIL Detached Element.webkitMatchesSelector: Descendant combinator '>>', matching element with class that is a descendant of an element with class (with no refNodes): .descendant-div1>>.descendant-div3 The string did not match the expected pattern.
 PASS Detached Element.webkitMatchesSelector: Child combinator, matching element that is a child of an element with id (with no refNodes): #child>div 
 PASS Detached Element.webkitMatchesSelector: Child combinator, matching element with id that is a child of an element (with no refNodes): div>#child-div1 
 PASS Detached Element.webkitMatchesSelector: Child combinator, matching element with id that is a child of an element with id (with no refNodes): #child>#child-div1 
@@ -517,11 +517,11 @@ PASS Fragment Element.webkitMatchesSelector: Descendant combinator, matching ele
 PASS Fragment Element.webkitMatchesSelector: Descendant combinator, matching element with class that is a descendant of an element with class (with no refNodes): .descendant-div1 .descendant-div3 
 PASS Fragment Element.webkitMatchesSelector: Descendant combinator, whitespace characters (with no refNodes): #descendant      \r
 #descendant-div2 
-PASS Fragment Element.webkitMatchesSelector: Descendant combinator '>>', matching element that is a descendant of an element with id (with no refNodes): #descendant>>div 
-PASS Fragment Element.webkitMatchesSelector: Descendant combinator '>>', matching element with id that is a descendant of an element (with no refNodes): div>>#descendant-div1 
-PASS Fragment Element.webkitMatchesSelector: Descendant combinator '>>', matching element with id that is a descendant of an element with id (with no refNodes): #descendant>>#descendant-div2 
-PASS Fragment Element.webkitMatchesSelector: Descendant combinator '>>', matching element with class that is a descendant of an element with id (with no refNodes): #descendant>>.descendant-div2 
-PASS Fragment Element.webkitMatchesSelector: Descendant combinator '>>', matching element with class that is a descendant of an element with class (with no refNodes): .descendant-div1>>.descendant-div3 
+FAIL Fragment Element.webkitMatchesSelector: Descendant combinator '>>', matching element that is a descendant of an element with id (with no refNodes): #descendant>>div The string did not match the expected pattern.
+FAIL Fragment Element.webkitMatchesSelector: Descendant combinator '>>', matching element with id that is a descendant of an element (with no refNodes): div>>#descendant-div1 The string did not match the expected pattern.
+FAIL Fragment Element.webkitMatchesSelector: Descendant combinator '>>', matching element with id that is a descendant of an element with id (with no refNodes): #descendant>>#descendant-div2 The string did not match the expected pattern.
+FAIL Fragment Element.webkitMatchesSelector: Descendant combinator '>>', matching element with class that is a descendant of an element with id (with no refNodes): #descendant>>.descendant-div2 The string did not match the expected pattern.
+FAIL Fragment Element.webkitMatchesSelector: Descendant combinator '>>', matching element with class that is a descendant of an element with class (with no refNodes): .descendant-div1>>.descendant-div3 The string did not match the expected pattern.
 PASS Fragment Element.webkitMatchesSelector: Child combinator, matching element that is a child of an element with id (with no refNodes): #child>div 
 PASS Fragment Element.webkitMatchesSelector: Child combinator, matching element with id that is a child of an element (with no refNodes): div>#child-div1 
 PASS Fragment Element.webkitMatchesSelector: Child combinator, matching element with id that is a child of an element with id (with no refNodes): #child>#child-div1 
@@ -682,12 +682,12 @@ PASS In-document Element.webkitMatchesSelector: Descendant combinator, matching
 PASS In-document Element.webkitMatchesSelector: Descendant combinator, matching element with class that is a descendant of an element with class (1) (with no refNodes): .descendant-div1 .descendant-div3 
 PASS In-document Element.webkitMatchesSelector: Descendant combinator, whitespace characters (1) (with no refNodes): #descendant       \r
 #descendant-div2 
-PASS In-document Element.webkitMatchesSelector: Descendant combinator '>>', matching element that is a descendant of an element with id (1) (with no refNodes): #descendant>>div 
-PASS In-document Element.webkitMatchesSelector: Descendant combinator '>>', matching element with id that is a descendant of an element (1) (with no refNodes): body>>#descendant-div1 
-PASS In-document Element.webkitMatchesSelector: Descendant combinator '>>', matching element with id that is a descendant of an element (1) (with no refNodes): div>>#descendant-div1 
-PASS In-document Element.webkitMatchesSelector: Descendant combinator '>>', matching element with id that is a descendant of an element with id (1) (with no refNodes): #descendant>>#descendant-div2 
-PASS In-document Element.webkitMatchesSelector: Descendant combinator '>>', matching element with class that is a descendant of an element with id (1) (with no refNodes): #descendant>>.descendant-div2 
-PASS In-document Element.webkitMatchesSelector: Descendant combinator, '>>', matching element with class that is a descendant of an element with class (1) (with no refNodes): .descendant-div1>>.descendant-div3 
+FAIL In-document Element.webkitMatchesSelector: Descendant combinator '>>', matching element that is a descendant of an element with id (1) (with no refNodes): #descendant>>div The string did not match the expected pattern.
+FAIL In-document Element.webkitMatchesSelector: Descendant combinator '>>', matching element with id that is a descendant of an element (1) (with no refNodes): body>>#descendant-div1 The string did not match the expected pattern.
+FAIL In-document Element.webkitMatchesSelector: Descendant combinator '>>', matching element with id that is a descendant of an element (1) (with no refNodes): div>>#descendant-div1 The string did not match the expected pattern.
+FAIL In-document Element.webkitMatchesSelector: Descendant combinator '>>', matching element with id that is a descendant of an element with id (1) (with no refNodes): #descendant>>#descendant-div2 The string did not match the expected pattern.
+FAIL In-document Element.webkitMatchesSelector: Descendant combinator '>>', matching element with class that is a descendant of an element with id (1) (with no refNodes): #descendant>>.descendant-div2 The string did not match the expected pattern.
+FAIL In-document Element.webkitMatchesSelector: Descendant combinator, '>>', matching element with class that is a descendant of an element with class (1) (with no refNodes): .descendant-div1>>.descendant-div3 The string did not match the expected pattern.
 PASS In-document Element.webkitMatchesSelector: Child combinator, matching element that is a child of an element with id (1) (with no refNodes): #child>div 
 PASS In-document Element.webkitMatchesSelector: Child combinator, matching element with id that is a child of an element (1) (with no refNodes): div>#child-div1 
 PASS In-document Element.webkitMatchesSelector: Child combinator, matching element with id that is a child of an element with id (1) (with no refNodes): #child>#child-div1 
index 36b1f88..6d9aef3 100644 (file)
@@ -601,20 +601,20 @@ PASS Document.querySelectorAll: Descendant combinator, whitespace characters: #d
 #descendant-div2 
 PASS Document.querySelector: Descendant combinator, whitespace characters: #descendant \r
 #descendant-div2 
-PASS Document.querySelectorAll: Descendant combinator '>>', matching element that is a descendant of an element with id: #descendant>>div 
-PASS Document.querySelector: Descendant combinator '>>', matching element that is a descendant of an element with id: #descendant>>div 
-PASS Document.querySelectorAll: Descendant combinator '>>', matching element with id that is a descendant of an element: body>>#descendant-div1 
-PASS Document.querySelector: Descendant combinator '>>', matching element with id that is a descendant of an element: body>>#descendant-div1 
-PASS Document.querySelectorAll: Descendant combinator '>>', matching element with id that is a descendant of an element: div>>#descendant-div1 
-PASS Document.querySelector: Descendant combinator '>>', matching element with id that is a descendant of an element: div>>#descendant-div1 
-PASS Document.querySelectorAll: Descendant combinator '>>', matching element with id that is a descendant of an element with id: #descendant>>#descendant-div2 
-PASS Document.querySelector: Descendant combinator '>>', matching element with id that is a descendant of an element with id: #descendant>>#descendant-div2 
-PASS Document.querySelectorAll: Descendant combinator '>>', matching element with class that is a descendant of an element with id: #descendant>>.descendant-div2 
-PASS Document.querySelector: Descendant combinator '>>', matching element with class that is a descendant of an element with id: #descendant>>.descendant-div2 
-PASS Document.querySelectorAll: Descendant combinator '>>', matching element with class that is a descendant of an element with class: .descendant-div1>>.descendant-div3 
-PASS Document.querySelector: Descendant combinator '>>', matching element with class that is a descendant of an element with class: .descendant-div1>>.descendant-div3 
-PASS Document.querySelectorAll: Descendant combinator '>>', not matching element with id that is not a descendant of an element with id: #descendant-div1>>#descendant-div4 
-PASS Document.querySelector: Descendant combinator '>>', not matching element with id that is not a descendant of an element with id: #descendant-div1>>#descendant-div4 
+FAIL Document.querySelectorAll: Descendant combinator '>>', matching element that is a descendant of an element with id: #descendant>>div The string did not match the expected pattern.
+FAIL Document.querySelector: Descendant combinator '>>', matching element that is a descendant of an element with id: #descendant>>div The string did not match the expected pattern.
+FAIL Document.querySelectorAll: Descendant combinator '>>', matching element with id that is a descendant of an element: body>>#descendant-div1 The string did not match the expected pattern.
+FAIL Document.querySelector: Descendant combinator '>>', matching element with id that is a descendant of an element: body>>#descendant-div1 The string did not match the expected pattern.
+FAIL Document.querySelectorAll: Descendant combinator '>>', matching element with id that is a descendant of an element: div>>#descendant-div1 The string did not match the expected pattern.
+FAIL Document.querySelector: Descendant combinator '>>', matching element with id that is a descendant of an element: div>>#descendant-div1 The string did not match the expected pattern.
+FAIL Document.querySelectorAll: Descendant combinator '>>', matching element with id that is a descendant of an element with id: #descendant>>#descendant-div2 The string did not match the expected pattern.
+FAIL Document.querySelector: Descendant combinator '>>', matching element with id that is a descendant of an element with id: #descendant>>#descendant-div2 The string did not match the expected pattern.
+FAIL Document.querySelectorAll: Descendant combinator '>>', matching element with class that is a descendant of an element with id: #descendant>>.descendant-div2 The string did not match the expected pattern.
+FAIL Document.querySelector: Descendant combinator '>>', matching element with class that is a descendant of an element with id: #descendant>>.descendant-div2 The string did not match the expected pattern.
+FAIL Document.querySelectorAll: Descendant combinator '>>', matching element with class that is a descendant of an element with class: .descendant-div1>>.descendant-div3 The string did not match the expected pattern.
+FAIL Document.querySelector: Descendant combinator '>>', matching element with class that is a descendant of an element with class: .descendant-div1>>.descendant-div3 The string did not match the expected pattern.
+FAIL Document.querySelectorAll: Descendant combinator '>>', not matching element with id that is not a descendant of an element with id: #descendant-div1>>#descendant-div4 The string did not match the expected pattern.
+FAIL Document.querySelector: Descendant combinator '>>', not matching element with id that is not a descendant of an element with id: #descendant-div1>>#descendant-div4 The string did not match the expected pattern.
 PASS Document.querySelectorAll: Child combinator, matching element that is a child of an element with id: #child>div 
 PASS Document.querySelector: Child combinator, matching element that is a child of an element with id: #child>div 
 PASS Document.querySelectorAll: Child combinator, matching element with id that is a child of an element: div>#child-div1 
@@ -1027,18 +1027,18 @@ PASS Detached Element.querySelectorAll: Descendant combinator, whitespace charac
 #descendant-div2 
 PASS Detached Element.querySelector: Descendant combinator, whitespace characters: #descendant \r
 #descendant-div2 
-PASS Detached Element.querySelectorAll: Descendant combinator '>>', matching element that is a descendant of an element with id: #descendant>>div 
-PASS Detached Element.querySelector: Descendant combinator '>>', matching element that is a descendant of an element with id: #descendant>>div 
-PASS Detached Element.querySelectorAll: Descendant combinator '>>', matching element with id that is a descendant of an element: div>>#descendant-div1 
-PASS Detached Element.querySelector: Descendant combinator '>>', matching element with id that is a descendant of an element: div>>#descendant-div1 
-PASS Detached Element.querySelectorAll: Descendant combinator '>>', matching element with id that is a descendant of an element with id: #descendant>>#descendant-div2 
-PASS Detached Element.querySelector: Descendant combinator '>>', matching element with id that is a descendant of an element with id: #descendant>>#descendant-div2 
-PASS Detached Element.querySelectorAll: Descendant combinator '>>', matching element with class that is a descendant of an element with id: #descendant>>.descendant-div2 
-PASS Detached Element.querySelector: Descendant combinator '>>', matching element with class that is a descendant of an element with id: #descendant>>.descendant-div2 
-PASS Detached Element.querySelectorAll: Descendant combinator '>>', matching element with class that is a descendant of an element with class: .descendant-div1>>.descendant-div3 
-PASS Detached Element.querySelector: Descendant combinator '>>', matching element with class that is a descendant of an element with class: .descendant-div1>>.descendant-div3 
-PASS Detached Element.querySelectorAll: Descendant combinator '>>', not matching element with id that is not a descendant of an element with id: #descendant-div1>>#descendant-div4 
-PASS Detached Element.querySelector: Descendant combinator '>>', not matching element with id that is not a descendant of an element with id: #descendant-div1>>#descendant-div4 
+FAIL Detached Element.querySelectorAll: Descendant combinator '>>', matching element that is a descendant of an element with id: #descendant>>div The string did not match the expected pattern.
+FAIL Detached Element.querySelector: Descendant combinator '>>', matching element that is a descendant of an element with id: #descendant>>div The string did not match the expected pattern.
+FAIL Detached Element.querySelectorAll: Descendant combinator '>>', matching element with id that is a descendant of an element: div>>#descendant-div1 The string did not match the expected pattern.
+FAIL Detached Element.querySelector: Descendant combinator '>>', matching element with id that is a descendant of an element: div>>#descendant-div1 The string did not match the expected pattern.
+FAIL Detached Element.querySelectorAll: Descendant combinator '>>', matching element with id that is a descendant of an element with id: #descendant>>#descendant-div2 The string did not match the expected pattern.
+FAIL Detached Element.querySelector: Descendant combinator '>>', matching element with id that is a descendant of an element with id: #descendant>>#descendant-div2 The string did not match the expected pattern.
+FAIL Detached Element.querySelectorAll: Descendant combinator '>>', matching element with class that is a descendant of an element with id: #descendant>>.descendant-div2 The string did not match the expected pattern.
+FAIL Detached Element.querySelector: Descendant combinator '>>', matching element with class that is a descendant of an element with id: #descendant>>.descendant-div2 The string did not match the expected pattern.
+FAIL Detached Element.querySelectorAll: Descendant combinator '>>', matching element with class that is a descendant of an element with class: .descendant-div1>>.descendant-div3 The string did not match the expected pattern.
+FAIL Detached Element.querySelector: Descendant combinator '>>', matching element with class that is a descendant of an element with class: .descendant-div1>>.descendant-div3 The string did not match the expected pattern.
+FAIL Detached Element.querySelectorAll: Descendant combinator '>>', not matching element with id that is not a descendant of an element with id: #descendant-div1>>#descendant-div4 The string did not match the expected pattern.
+FAIL Detached Element.querySelector: Descendant combinator '>>', not matching element with id that is not a descendant of an element with id: #descendant-div1>>#descendant-div4 The string did not match the expected pattern.
 PASS Detached Element.querySelectorAll: Child combinator, matching element that is a child of an element with id: #child>div 
 PASS Detached Element.querySelector: Child combinator, matching element that is a child of an element with id: #child>div 
 PASS Detached Element.querySelectorAll: Child combinator, matching element with id that is a child of an element: div>#child-div1 
@@ -1451,18 +1451,18 @@ PASS Fragment.querySelectorAll: Descendant combinator, whitespace characters: #d
 #descendant-div2 
 PASS Fragment.querySelector: Descendant combinator, whitespace characters: #descendant \r
 #descendant-div2 
-PASS Fragment.querySelectorAll: Descendant combinator '>>', matching element that is a descendant of an element with id: #descendant>>div 
-PASS Fragment.querySelector: Descendant combinator '>>', matching element that is a descendant of an element with id: #descendant>>div 
-PASS Fragment.querySelectorAll: Descendant combinator '>>', matching element with id that is a descendant of an element: div>>#descendant-div1 
-PASS Fragment.querySelector: Descendant combinator '>>', matching element with id that is a descendant of an element: div>>#descendant-div1 
-PASS Fragment.querySelectorAll: Descendant combinator '>>', matching element with id that is a descendant of an element with id: #descendant>>#descendant-div2 
-PASS Fragment.querySelector: Descendant combinator '>>', matching element with id that is a descendant of an element with id: #descendant>>#descendant-div2 
-PASS Fragment.querySelectorAll: Descendant combinator '>>', matching element with class that is a descendant of an element with id: #descendant>>.descendant-div2 
-PASS Fragment.querySelector: Descendant combinator '>>', matching element with class that is a descendant of an element with id: #descendant>>.descendant-div2 
-PASS Fragment.querySelectorAll: Descendant combinator '>>', matching element with class that is a descendant of an element with class: .descendant-div1>>.descendant-div3 
-PASS Fragment.querySelector: Descendant combinator '>>', matching element with class that is a descendant of an element with class: .descendant-div1>>.descendant-div3 
-PASS Fragment.querySelectorAll: Descendant combinator '>>', not matching element with id that is not a descendant of an element with id: #descendant-div1>>#descendant-div4 
-PASS Fragment.querySelector: Descendant combinator '>>', not matching element with id that is not a descendant of an element with id: #descendant-div1>>#descendant-div4 
+FAIL Fragment.querySelectorAll: Descendant combinator '>>', matching element that is a descendant of an element with id: #descendant>>div The string did not match the expected pattern.
+FAIL Fragment.querySelector: Descendant combinator '>>', matching element that is a descendant of an element with id: #descendant>>div The string did not match the expected pattern.
+FAIL Fragment.querySelectorAll: Descendant combinator '>>', matching element with id that is a descendant of an element: div>>#descendant-div1 The string did not match the expected pattern.
+FAIL Fragment.querySelector: Descendant combinator '>>', matching element with id that is a descendant of an element: div>>#descendant-div1 The string did not match the expected pattern.
+FAIL Fragment.querySelectorAll: Descendant combinator '>>', matching element with id that is a descendant of an element with id: #descendant>>#descendant-div2 The string did not match the expected pattern.
+FAIL Fragment.querySelector: Descendant combinator '>>', matching element with id that is a descendant of an element with id: #descendant>>#descendant-div2 The string did not match the expected pattern.
+FAIL Fragment.querySelectorAll: Descendant combinator '>>', matching element with class that is a descendant of an element with id: #descendant>>.descendant-div2 The string did not match the expected pattern.
+FAIL Fragment.querySelector: Descendant combinator '>>', matching element with class that is a descendant of an element with id: #descendant>>.descendant-div2 The string did not match the expected pattern.
+FAIL Fragment.querySelectorAll: Descendant combinator '>>', matching element with class that is a descendant of an element with class: .descendant-div1>>.descendant-div3 The string did not match the expected pattern.
+FAIL Fragment.querySelector: Descendant combinator '>>', matching element with class that is a descendant of an element with class: .descendant-div1>>.descendant-div3 The string did not match the expected pattern.
+FAIL Fragment.querySelectorAll: Descendant combinator '>>', not matching element with id that is not a descendant of an element with id: #descendant-div1>>#descendant-div4 The string did not match the expected pattern.
+FAIL Fragment.querySelector: Descendant combinator '>>', not matching element with id that is not a descendant of an element with id: #descendant-div1>>#descendant-div4 The string did not match the expected pattern.
 PASS Fragment.querySelectorAll: Child combinator, matching element that is a child of an element with id: #child>div 
 PASS Fragment.querySelector: Child combinator, matching element that is a child of an element with id: #child>div 
 PASS Fragment.querySelectorAll: Child combinator, matching element with id that is a child of an element: div>#child-div1 
@@ -1877,20 +1877,20 @@ PASS In-document Element.querySelectorAll: Descendant combinator, whitespace cha
 #descendant-div2 
 PASS In-document Element.querySelector: Descendant combinator, whitespace characters: #descendant      \r
 #descendant-div2 
-PASS In-document Element.querySelectorAll: Descendant combinator '>>', matching element that is a descendant of an element with id: #descendant>>div 
-PASS In-document Element.querySelector: Descendant combinator '>>', matching element that is a descendant of an element with id: #descendant>>div 
-PASS In-document Element.querySelectorAll: Descendant combinator '>>', matching element with id that is a descendant of an element: body>>#descendant-div1 
-PASS In-document Element.querySelector: Descendant combinator '>>', matching element with id that is a descendant of an element: body>>#descendant-div1 
-PASS In-document Element.querySelectorAll: Descendant combinator '>>', matching element with id that is a descendant of an element: div>>#descendant-div1 
-PASS In-document Element.querySelector: Descendant combinator '>>', matching element with id that is a descendant of an element: div>>#descendant-div1 
-PASS In-document Element.querySelectorAll: Descendant combinator '>>', matching element with id that is a descendant of an element with id: #descendant>>#descendant-div2 
-PASS In-document Element.querySelector: Descendant combinator '>>', matching element with id that is a descendant of an element with id: #descendant>>#descendant-div2 
-PASS In-document Element.querySelectorAll: Descendant combinator '>>', matching element with class that is a descendant of an element with id: #descendant>>.descendant-div2 
-PASS In-document Element.querySelector: Descendant combinator '>>', matching element with class that is a descendant of an element with id: #descendant>>.descendant-div2 
-PASS In-document Element.querySelectorAll: Descendant combinator '>>', matching element with class that is a descendant of an element with class: .descendant-div1>>.descendant-div3 
-PASS In-document Element.querySelector: Descendant combinator '>>', matching element with class that is a descendant of an element with class: .descendant-div1>>.descendant-div3 
-PASS In-document Element.querySelectorAll: Descendant combinator '>>', not matching element with id that is not a descendant of an element with id: #descendant-div1>>#descendant-div4 
-PASS In-document Element.querySelector: Descendant combinator '>>', not matching element with id that is not a descendant of an element with id: #descendant-div1>>#descendant-div4 
+FAIL In-document Element.querySelectorAll: Descendant combinator '>>', matching element that is a descendant of an element with id: #descendant>>div The string did not match the expected pattern.
+FAIL In-document Element.querySelector: Descendant combinator '>>', matching element that is a descendant of an element with id: #descendant>>div The string did not match the expected pattern.
+FAIL In-document Element.querySelectorAll: Descendant combinator '>>', matching element with id that is a descendant of an element: body>>#descendant-div1 The string did not match the expected pattern.
+FAIL In-document Element.querySelector: Descendant combinator '>>', matching element with id that is a descendant of an element: body>>#descendant-div1 The string did not match the expected pattern.
+FAIL In-document Element.querySelectorAll: Descendant combinator '>>', matching element with id that is a descendant of an element: div>>#descendant-div1 The string did not match the expected pattern.
+FAIL In-document Element.querySelector: Descendant combinator '>>', matching element with id that is a descendant of an element: div>>#descendant-div1 The string did not match the expected pattern.
+FAIL In-document Element.querySelectorAll: Descendant combinator '>>', matching element with id that is a descendant of an element with id: #descendant>>#descendant-div2 The string did not match the expected pattern.
+FAIL In-document Element.querySelector: Descendant combinator '>>', matching element with id that is a descendant of an element with id: #descendant>>#descendant-div2 The string did not match the expected pattern.
+FAIL In-document Element.querySelectorAll: Descendant combinator '>>', matching element with class that is a descendant of an element with id: #descendant>>.descendant-div2 The string did not match the expected pattern.
+FAIL In-document Element.querySelector: Descendant combinator '>>', matching element with class that is a descendant of an element with id: #descendant>>.descendant-div2 The string did not match the expected pattern.
+FAIL In-document Element.querySelectorAll: Descendant combinator '>>', matching element with class that is a descendant of an element with class: .descendant-div1>>.descendant-div3 The string did not match the expected pattern.
+FAIL In-document Element.querySelector: Descendant combinator '>>', matching element with class that is a descendant of an element with class: .descendant-div1>>.descendant-div3 The string did not match the expected pattern.
+FAIL In-document Element.querySelectorAll: Descendant combinator '>>', not matching element with id that is not a descendant of an element with id: #descendant-div1>>#descendant-div4 The string did not match the expected pattern.
+FAIL In-document Element.querySelector: Descendant combinator '>>', not matching element with id that is not a descendant of an element with id: #descendant-div1>>#descendant-div4 The string did not match the expected pattern.
 PASS In-document Element.querySelectorAll: Child combinator, matching element that is a child of an element with id: #child>div 
 PASS In-document Element.querySelector: Child combinator, matching element that is a child of an element with id: #child>div 
 PASS In-document Element.querySelectorAll: Child combinator, matching element with id that is a child of an element: div>#child-div1 
index 8f8b915..de58cad 100644 (file)
@@ -601,20 +601,20 @@ PASS Document.querySelectorAll: Descendant combinator, whitespace characters: #d
 #descendant-div2 
 PASS Document.querySelector: Descendant combinator, whitespace characters: #descendant \r
 #descendant-div2 
-PASS Document.querySelectorAll: Descendant combinator '>>', matching element that is a descendant of an element with id: #descendant>>div 
-PASS Document.querySelector: Descendant combinator '>>', matching element that is a descendant of an element with id: #descendant>>div 
-PASS Document.querySelectorAll: Descendant combinator '>>', matching element with id that is a descendant of an element: body>>#descendant-div1 
-PASS Document.querySelector: Descendant combinator '>>', matching element with id that is a descendant of an element: body>>#descendant-div1 
-PASS Document.querySelectorAll: Descendant combinator '>>', matching element with id that is a descendant of an element: div>>#descendant-div1 
-PASS Document.querySelector: Descendant combinator '>>', matching element with id that is a descendant of an element: div>>#descendant-div1 
-PASS Document.querySelectorAll: Descendant combinator '>>', matching element with id that is a descendant of an element with id: #descendant>>#descendant-div2 
-PASS Document.querySelector: Descendant combinator '>>', matching element with id that is a descendant of an element with id: #descendant>>#descendant-div2 
-PASS Document.querySelectorAll: Descendant combinator '>>', matching element with class that is a descendant of an element with id: #descendant>>.descendant-div2 
-PASS Document.querySelector: Descendant combinator '>>', matching element with class that is a descendant of an element with id: #descendant>>.descendant-div2 
-PASS Document.querySelectorAll: Descendant combinator '>>', matching element with class that is a descendant of an element with class: .descendant-div1>>.descendant-div3 
-PASS Document.querySelector: Descendant combinator '>>', matching element with class that is a descendant of an element with class: .descendant-div1>>.descendant-div3 
-PASS Document.querySelectorAll: Descendant combinator '>>', not matching element with id that is not a descendant of an element with id: #descendant-div1>>#descendant-div4 
-PASS Document.querySelector: Descendant combinator '>>', not matching element with id that is not a descendant of an element with id: #descendant-div1>>#descendant-div4 
+FAIL Document.querySelectorAll: Descendant combinator '>>', matching element that is a descendant of an element with id: #descendant>>div The string did not match the expected pattern.
+FAIL Document.querySelector: Descendant combinator '>>', matching element that is a descendant of an element with id: #descendant>>div The string did not match the expected pattern.
+FAIL Document.querySelectorAll: Descendant combinator '>>', matching element with id that is a descendant of an element: body>>#descendant-div1 The string did not match the expected pattern.
+FAIL Document.querySelector: Descendant combinator '>>', matching element with id that is a descendant of an element: body>>#descendant-div1 The string did not match the expected pattern.
+FAIL Document.querySelectorAll: Descendant combinator '>>', matching element with id that is a descendant of an element: div>>#descendant-div1 The string did not match the expected pattern.
+FAIL Document.querySelector: Descendant combinator '>>', matching element with id that is a descendant of an element: div>>#descendant-div1 The string did not match the expected pattern.
+FAIL Document.querySelectorAll: Descendant combinator '>>', matching element with id that is a descendant of an element with id: #descendant>>#descendant-div2 The string did not match the expected pattern.
+FAIL Document.querySelector: Descendant combinator '>>', matching element with id that is a descendant of an element with id: #descendant>>#descendant-div2 The string did not match the expected pattern.
+FAIL Document.querySelectorAll: Descendant combinator '>>', matching element with class that is a descendant of an element with id: #descendant>>.descendant-div2 The string did not match the expected pattern.
+FAIL Document.querySelector: Descendant combinator '>>', matching element with class that is a descendant of an element with id: #descendant>>.descendant-div2 The string did not match the expected pattern.
+FAIL Document.querySelectorAll: Descendant combinator '>>', matching element with class that is a descendant of an element with class: .descendant-div1>>.descendant-div3 The string did not match the expected pattern.
+FAIL Document.querySelector: Descendant combinator '>>', matching element with class that is a descendant of an element with class: .descendant-div1>>.descendant-div3 The string did not match the expected pattern.
+FAIL Document.querySelectorAll: Descendant combinator '>>', not matching element with id that is not a descendant of an element with id: #descendant-div1>>#descendant-div4 The string did not match the expected pattern.
+FAIL Document.querySelector: Descendant combinator '>>', not matching element with id that is not a descendant of an element with id: #descendant-div1>>#descendant-div4 The string did not match the expected pattern.
 PASS Document.querySelectorAll: Child combinator, matching element that is a child of an element with id: #child>div 
 PASS Document.querySelector: Child combinator, matching element that is a child of an element with id: #child>div 
 PASS Document.querySelectorAll: Child combinator, matching element with id that is a child of an element: div>#child-div1 
@@ -1027,18 +1027,18 @@ PASS Detached Element.querySelectorAll: Descendant combinator, whitespace charac
 #descendant-div2 
 PASS Detached Element.querySelector: Descendant combinator, whitespace characters: #descendant \r
 #descendant-div2 
-PASS Detached Element.querySelectorAll: Descendant combinator '>>', matching element that is a descendant of an element with id: #descendant>>div 
-PASS Detached Element.querySelector: Descendant combinator '>>', matching element that is a descendant of an element with id: #descendant>>div 
-PASS Detached Element.querySelectorAll: Descendant combinator '>>', matching element with id that is a descendant of an element: div>>#descendant-div1 
-PASS Detached Element.querySelector: Descendant combinator '>>', matching element with id that is a descendant of an element: div>>#descendant-div1 
-PASS Detached Element.querySelectorAll: Descendant combinator '>>', matching element with id that is a descendant of an element with id: #descendant>>#descendant-div2 
-PASS Detached Element.querySelector: Descendant combinator '>>', matching element with id that is a descendant of an element with id: #descendant>>#descendant-div2 
-PASS Detached Element.querySelectorAll: Descendant combinator '>>', matching element with class that is a descendant of an element with id: #descendant>>.descendant-div2 
-PASS Detached Element.querySelector: Descendant combinator '>>', matching element with class that is a descendant of an element with id: #descendant>>.descendant-div2 
-PASS Detached Element.querySelectorAll: Descendant combinator '>>', matching element with class that is a descendant of an element with class: .descendant-div1>>.descendant-div3 
-PASS Detached Element.querySelector: Descendant combinator '>>', matching element with class that is a descendant of an element with class: .descendant-div1>>.descendant-div3 
-PASS Detached Element.querySelectorAll: Descendant combinator '>>', not matching element with id that is not a descendant of an element with id: #descendant-div1>>#descendant-div4 
-PASS Detached Element.querySelector: Descendant combinator '>>', not matching element with id that is not a descendant of an element with id: #descendant-div1>>#descendant-div4 
+FAIL Detached Element.querySelectorAll: Descendant combinator '>>', matching element that is a descendant of an element with id: #descendant>>div The string did not match the expected pattern.
+FAIL Detached Element.querySelector: Descendant combinator '>>', matching element that is a descendant of an element with id: #descendant>>div The string did not match the expected pattern.
+FAIL Detached Element.querySelectorAll: Descendant combinator '>>', matching element with id that is a descendant of an element: div>>#descendant-div1 The string did not match the expected pattern.
+FAIL Detached Element.querySelector: Descendant combinator '>>', matching element with id that is a descendant of an element: div>>#descendant-div1 The string did not match the expected pattern.
+FAIL Detached Element.querySelectorAll: Descendant combinator '>>', matching element with id that is a descendant of an element with id: #descendant>>#descendant-div2 The string did not match the expected pattern.
+FAIL Detached Element.querySelector: Descendant combinator '>>', matching element with id that is a descendant of an element with id: #descendant>>#descendant-div2 The string did not match the expected pattern.
+FAIL Detached Element.querySelectorAll: Descendant combinator '>>', matching element with class that is a descendant of an element with id: #descendant>>.descendant-div2 The string did not match the expected pattern.
+FAIL Detached Element.querySelector: Descendant combinator '>>', matching element with class that is a descendant of an element with id: #descendant>>.descendant-div2 The string did not match the expected pattern.
+FAIL Detached Element.querySelectorAll: Descendant combinator '>>', matching element with class that is a descendant of an element with class: .descendant-div1>>.descendant-div3 The string did not match the expected pattern.
+FAIL Detached Element.querySelector: Descendant combinator '>>', matching element with class that is a descendant of an element with class: .descendant-div1>>.descendant-div3 The string did not match the expected pattern.
+FAIL Detached Element.querySelectorAll: Descendant combinator '>>', not matching element with id that is not a descendant of an element with id: #descendant-div1>>#descendant-div4 The string did not match the expected pattern.
+FAIL Detached Element.querySelector: Descendant combinator '>>', not matching element with id that is not a descendant of an element with id: #descendant-div1>>#descendant-div4 The string did not match the expected pattern.
 PASS Detached Element.querySelectorAll: Child combinator, matching element that is a child of an element with id: #child>div 
 PASS Detached Element.querySelector: Child combinator, matching element that is a child of an element with id: #child>div 
 PASS Detached Element.querySelectorAll: Child combinator, matching element with id that is a child of an element: div>#child-div1 
@@ -1451,18 +1451,18 @@ PASS Fragment.querySelectorAll: Descendant combinator, whitespace characters: #d
 #descendant-div2 
 PASS Fragment.querySelector: Descendant combinator, whitespace characters: #descendant \r
 #descendant-div2 
-PASS Fragment.querySelectorAll: Descendant combinator '>>', matching element that is a descendant of an element with id: #descendant>>div 
-PASS Fragment.querySelector: Descendant combinator '>>', matching element that is a descendant of an element with id: #descendant>>div 
-PASS Fragment.querySelectorAll: Descendant combinator '>>', matching element with id that is a descendant of an element: div>>#descendant-div1 
-PASS Fragment.querySelector: Descendant combinator '>>', matching element with id that is a descendant of an element: div>>#descendant-div1 
-PASS Fragment.querySelectorAll: Descendant combinator '>>', matching element with id that is a descendant of an element with id: #descendant>>#descendant-div2 
-PASS Fragment.querySelector: Descendant combinator '>>', matching element with id that is a descendant of an element with id: #descendant>>#descendant-div2 
-PASS Fragment.querySelectorAll: Descendant combinator '>>', matching element with class that is a descendant of an element with id: #descendant>>.descendant-div2 
-PASS Fragment.querySelector: Descendant combinator '>>', matching element with class that is a descendant of an element with id: #descendant>>.descendant-div2 
-PASS Fragment.querySelectorAll: Descendant combinator '>>', matching element with class that is a descendant of an element with class: .descendant-div1>>.descendant-div3 
-PASS Fragment.querySelector: Descendant combinator '>>', matching element with class that is a descendant of an element with class: .descendant-div1>>.descendant-div3 
-PASS Fragment.querySelectorAll: Descendant combinator '>>', not matching element with id that is not a descendant of an element with id: #descendant-div1>>#descendant-div4 
-PASS Fragment.querySelector: Descendant combinator '>>', not matching element with id that is not a descendant of an element with id: #descendant-div1>>#descendant-div4 
+FAIL Fragment.querySelectorAll: Descendant combinator '>>', matching element that is a descendant of an element with id: #descendant>>div The string did not match the expected pattern.
+FAIL Fragment.querySelector: Descendant combinator '>>', matching element that is a descendant of an element with id: #descendant>>div The string did not match the expected pattern.
+FAIL Fragment.querySelectorAll: Descendant combinator '>>', matching element with id that is a descendant of an element: div>>#descendant-div1 The string did not match the expected pattern.
+FAIL Fragment.querySelector: Descendant combinator '>>', matching element with id that is a descendant of an element: div>>#descendant-div1 The string did not match the expected pattern.
+FAIL Fragment.querySelectorAll: Descendant combinator '>>', matching element with id that is a descendant of an element with id: #descendant>>#descendant-div2 The string did not match the expected pattern.
+FAIL Fragment.querySelector: Descendant combinator '>>', matching element with id that is a descendant of an element with id: #descendant>>#descendant-div2 The string did not match the expected pattern.
+FAIL Fragment.querySelectorAll: Descendant combinator '>>', matching element with class that is a descendant of an element with id: #descendant>>.descendant-div2 The string did not match the expected pattern.
+FAIL Fragment.querySelector: Descendant combinator '>>', matching element with class that is a descendant of an element with id: #descendant>>.descendant-div2 The string did not match the expected pattern.
+FAIL Fragment.querySelectorAll: Descendant combinator '>>', matching element with class that is a descendant of an element with class: .descendant-div1>>.descendant-div3 The string did not match the expected pattern.
+FAIL Fragment.querySelector: Descendant combinator '>>', matching element with class that is a descendant of an element with class: .descendant-div1>>.descendant-div3 The string did not match the expected pattern.
+FAIL Fragment.querySelectorAll: Descendant combinator '>>', not matching element with id that is not a descendant of an element with id: #descendant-div1>>#descendant-div4 The string did not match the expected pattern.
+FAIL Fragment.querySelector: Descendant combinator '>>', not matching element with id that is not a descendant of an element with id: #descendant-div1>>#descendant-div4 The string did not match the expected pattern.
 PASS Fragment.querySelectorAll: Child combinator, matching element that is a child of an element with id: #child>div 
 PASS Fragment.querySelector: Child combinator, matching element that is a child of an element with id: #child>div 
 PASS Fragment.querySelectorAll: Child combinator, matching element with id that is a child of an element: div>#child-div1 
@@ -1877,20 +1877,20 @@ PASS In-document Element.querySelectorAll: Descendant combinator, whitespace cha
 #descendant-div2 
 PASS In-document Element.querySelector: Descendant combinator, whitespace characters: #descendant      \r
 #descendant-div2 
-PASS In-document Element.querySelectorAll: Descendant combinator '>>', matching element that is a descendant of an element with id: #descendant>>div 
-PASS In-document Element.querySelector: Descendant combinator '>>', matching element that is a descendant of an element with id: #descendant>>div 
-PASS In-document Element.querySelectorAll: Descendant combinator '>>', matching element with id that is a descendant of an element: body>>#descendant-div1 
-PASS In-document Element.querySelector: Descendant combinator '>>', matching element with id that is a descendant of an element: body>>#descendant-div1 
-PASS In-document Element.querySelectorAll: Descendant combinator '>>', matching element with id that is a descendant of an element: div>>#descendant-div1 
-PASS In-document Element.querySelector: Descendant combinator '>>', matching element with id that is a descendant of an element: div>>#descendant-div1 
-PASS In-document Element.querySelectorAll: Descendant combinator '>>', matching element with id that is a descendant of an element with id: #descendant>>#descendant-div2 
-PASS In-document Element.querySelector: Descendant combinator '>>', matching element with id that is a descendant of an element with id: #descendant>>#descendant-div2 
-PASS In-document Element.querySelectorAll: Descendant combinator '>>', matching element with class that is a descendant of an element with id: #descendant>>.descendant-div2 
-PASS In-document Element.querySelector: Descendant combinator '>>', matching element with class that is a descendant of an element with id: #descendant>>.descendant-div2 
-PASS In-document Element.querySelectorAll: Descendant combinator '>>', matching element with class that is a descendant of an element with class: .descendant-div1>>.descendant-div3 
-PASS In-document Element.querySelector: Descendant combinator '>>', matching element with class that is a descendant of an element with class: .descendant-div1>>.descendant-div3 
-PASS In-document Element.querySelectorAll: Descendant combinator '>>', not matching element with id that is not a descendant of an element with id: #descendant-div1>>#descendant-div4 
-PASS In-document Element.querySelector: Descendant combinator '>>', not matching element with id that is not a descendant of an element with id: #descendant-div1>>#descendant-div4 
+FAIL In-document Element.querySelectorAll: Descendant combinator '>>', matching element that is a descendant of an element with id: #descendant>>div The string did not match the expected pattern.
+FAIL In-document Element.querySelector: Descendant combinator '>>', matching element that is a descendant of an element with id: #descendant>>div The string did not match the expected pattern.
+FAIL In-document Element.querySelectorAll: Descendant combinator '>>', matching element with id that is a descendant of an element: body>>#descendant-div1 The string did not match the expected pattern.
+FAIL In-document Element.querySelector: Descendant combinator '>>', matching element with id that is a descendant of an element: body>>#descendant-div1 The string did not match the expected pattern.
+FAIL In-document Element.querySelectorAll: Descendant combinator '>>', matching element with id that is a descendant of an element: div>>#descendant-div1 The string did not match the expected pattern.
+FAIL In-document Element.querySelector: Descendant combinator '>>', matching element with id that is a descendant of an element: div>>#descendant-div1 The string did not match the expected pattern.
+FAIL In-document Element.querySelectorAll: Descendant combinator '>>', matching element with id that is a descendant of an element with id: #descendant>>#descendant-div2 The string did not match the expected pattern.
+FAIL In-document Element.querySelector: Descendant combinator '>>', matching element with id that is a descendant of an element with id: #descendant>>#descendant-div2 The string did not match the expected pattern.
+FAIL In-document Element.querySelectorAll: Descendant combinator '>>', matching element with class that is a descendant of an element with id: #descendant>>.descendant-div2 The string did not match the expected pattern.
+FAIL In-document Element.querySelector: Descendant combinator '>>', matching element with class that is a descendant of an element with id: #descendant>>.descendant-div2 The string did not match the expected pattern.
+FAIL In-document Element.querySelectorAll: Descendant combinator '>>', matching element with class that is a descendant of an element with class: .descendant-div1>>.descendant-div3 The string did not match the expected pattern.
+FAIL In-document Element.querySelector: Descendant combinator '>>', matching element with class that is a descendant of an element with class: .descendant-div1>>.descendant-div3 The string did not match the expected pattern.
+FAIL In-document Element.querySelectorAll: Descendant combinator '>>', not matching element with id that is not a descendant of an element with id: #descendant-div1>>#descendant-div4 The string did not match the expected pattern.
+FAIL In-document Element.querySelector: Descendant combinator '>>', not matching element with id that is not a descendant of an element with id: #descendant-div1>>#descendant-div4 The string did not match the expected pattern.
 PASS In-document Element.querySelectorAll: Child combinator, matching element that is a child of an element with id: #child>div 
 PASS In-document Element.querySelector: Child combinator, matching element that is a child of an element with id: #child>div 
 PASS In-document Element.querySelectorAll: Child combinator, matching element with id that is a child of an element: div>#child-div1 
index 3b09582..ee04946 100644 (file)
@@ -1,3 +1,39 @@
+2017-09-08  Antti Koivisto  <antti@apple.com>
+
+        Remove support for >> descendant combinator syntax
+        https://bugs.webkit.org/show_bug.cgi?id=175765
+
+        Reviewed by Sam Weinig.
+
+        This is an alternative syntax for the normal descendant combinator (just space) that was
+        advertised as being consistent with > (child combinator) and >>> (shadow piercing combinator).
+        The latter has been killed so it is not consistent with anything anymore.
+
+        No other engine besides WebKit has implemented this and the WPT tests have been removed
+        (in https://github.com/w3c/web-platform-tests/pull/6785). Full removal from spec is still
+        open (https://github.com/w3c/csswg-drafts/issues/641) but we shouldn't encourage adoption of
+        this pointless feature.
+
+        While this has shipped the compatibility risk is low as no other engine implemented it and
+        there were no incentives to use it over the standard syntax.
+
+        * css/CSSSelector.cpp:
+        (WebCore::CSSSelector::selectorText const):
+        * css/CSSSelector.h:
+        (WebCore::CSSSelector::hasDescendantRelation const):
+        * css/SelectorChecker.cpp:
+        (WebCore::SelectorChecker::matchRecursively const):
+        * css/SelectorFilter.cpp:
+        (WebCore::SelectorFilter::collectIdentifierHashes):
+        * css/parser/CSSParserSelector.cpp:
+        (WebCore::CSSParserSelector::appendTagHistory):
+        * css/parser/CSSParserSelector.h:
+        * css/parser/CSSSelectorParser.cpp:
+        (WebCore::isDescendantCombinator):
+        (WebCore::CSSSelectorParser::consumeCombinator):
+        * cssjit/SelectorCompiler.cpp:
+        (WebCore::SelectorCompiler::fragmentRelationForSelectorRelation):
+
 2017-09-08  Zan Dobersek  <zdobersek@igalia.com>
 
         [GStreamer] initializationDataEncountered() dispatch can outlive MediaPlayerPrivateGStreamerBase
index daccd47..83f07c9 100644 (file)
@@ -733,10 +733,6 @@ String CSSSelector::selectorText(const String& rightSide) const
             return tagHistory->selectorText(" + " + str.toString() + rightSide);
         case CSSSelector::IndirectAdjacent:
             return tagHistory->selectorText(" ~ " + str.toString() + rightSide);
-#if ENABLE(CSS_SELECTORS_LEVEL4)
-        case CSSSelector::DescendantDoubleChild:
-            return tagHistory->selectorText(" >> " + str.toString() + rightSide);
-#endif
         case CSSSelector::Subselector:
             ASSERT_NOT_REACHED();
 #if ASSERT_DISABLED
index a6c8292..6b43dd8 100644 (file)
@@ -85,9 +85,6 @@ namespace WebCore {
             Child,
             DirectAdjacent,
             IndirectAdjacent,
-#if ENABLE(CSS_SELECTORS_LEVEL4)
-            DescendantDoubleChild,
-#endif
             ShadowDescendant
         };
 
@@ -257,11 +254,7 @@ namespace WebCore {
         int nthA() const;
         int nthB() const;
 
-#if ENABLE(CSS_SELECTORS_LEVEL4)
-        bool hasDescendantRelation() const { return relation() == DescendantSpace || relation() == DescendantDoubleChild; }
-#else
         bool hasDescendantRelation() const { return relation() == DescendantSpace; }
-#endif
 
         bool hasDescendantOrChildRelation() const { return relation() == Child || hasDescendantRelation(); }
 
index ff04b15..030958a 100644 (file)
@@ -332,9 +332,6 @@ SelectorChecker::MatchResult SelectorChecker::matchRecursively(CheckingContext&
 
     switch (relation) {
     case CSSSelector::DescendantSpace:
-#if ENABLE(CSS_SELECTORS_LEVEL4)
-    case CSSSelector::DescendantDoubleChild:
-#endif
         nextContext = localContextForParent(nextContext);
         nextContext.firstSelectorOfTheFragment = nextContext.selector;
         for (; nextContext.element; nextContext = localContextForParent(nextContext)) {
index 2bd313f..903d56b 100644 (file)
@@ -139,9 +139,6 @@ void SelectorFilter::collectIdentifierHashes(const CSSSelector* selector, unsign
             skipOverSubselectors = true;
             break;
         case CSSSelector::DescendantSpace:
-#if ENABLE(CSS_SELECTORS_LEVEL4)
-        case CSSSelector::DescendantDoubleChild:
-#endif
         case CSSSelector::Child:
             skipOverSubselectors = false;
             collectDescendantSelectorIdentifierHashes(selector, hash);
index a7fdaa6..82e6659 100644 (file)
@@ -198,11 +198,6 @@ void CSSParserSelector::appendTagHistory(CSSParserSelectorCombinator relation, s
     case CSSParserSelectorCombinator::DescendantSpace:
         selectorRelation = CSSSelector::DescendantSpace;
         break;
-#if ENABLE(CSS_SELECTORS_LEVEL4)
-    case CSSParserSelectorCombinator::DescendantDoubleChild:
-        selectorRelation = CSSSelector::DescendantDoubleChild;
-        break;
-#endif
     case CSSParserSelectorCombinator::DirectAdjacent:
         selectorRelation = CSSSelector::DirectAdjacent;
         break;
index c2f0dd1..23ab5e1 100644 (file)
@@ -34,9 +34,6 @@ class QualifiedName;
 enum class CSSParserSelectorCombinator {
     Child,
     DescendantSpace,
-#if ENABLE(CSS_SELECTORS_LEVEL4)
-    DescendantDoubleChild,
-#endif
     DirectAdjacent,
     IndirectAdjacent
 };
index 14e1c92..b7d3780 100644 (file)
@@ -145,12 +145,9 @@ unsigned extractCompoundFlags(const CSSParserSelector& simpleSelector, CSSParser
 
 static bool isDescendantCombinator(CSSSelector::RelationType relation)
 {
-#if ENABLE(CSS_SELECTORS_LEVEL4)
-    return relation == CSSSelector::DescendantSpace || relation == CSSSelector::DescendantDoubleChild;
-#else
     return relation == CSSSelector::DescendantSpace;
-#endif
 }
+
 std::unique_ptr<CSSParserSelector> CSSSelectorParser::consumeComplexSelector(CSSParserTokenRange& range)
 {
     std::unique_ptr<CSSParserSelector> selector = consumeCompoundSelector(range);
@@ -661,26 +658,11 @@ CSSSelector::RelationType CSSSelectorParser::consumeCombinator(CSSParserTokenRan
     UChar delimiter = range.peek().delimiter();
 
     if (delimiter == '+' || delimiter == '~' || delimiter == '>') {
-        if (delimiter == '+') {
-            range.consumeIncludingWhitespace();
+        range.consumeIncludingWhitespace();
+        if (delimiter == '+')
             return CSSSelector::DirectAdjacent;
-        }
-        
-        if (delimiter == '~') {
-            range.consumeIncludingWhitespace();
+        if (delimiter == '~')
             return CSSSelector::IndirectAdjacent;
-        }
-        
-#if ENABLE(CSS_SELECTORS_LEVEL4)
-        range.consume();
-        if (range.peek().type() == DelimiterToken && range.peek().delimiter() == '>') {
-            range.consumeIncludingWhitespace();
-            return CSSSelector::DescendantDoubleChild;
-        }
-        range.consumeWhitespace();
-#else
-        range.consumeIncludingWhitespace();
-#endif
         return CSSSelector::Child;
     }
 
index 36fea29..b40eab1 100644 (file)
@@ -402,9 +402,6 @@ static inline FragmentRelation fragmentRelationForSelectorRelation(CSSSelector::
 {
     switch (relation) {
     case CSSSelector::DescendantSpace:
-#if ENABLE(CSS_SELECTORS_LEVEL4)
-    case CSSSelector::DescendantDoubleChild:
-#endif
         return FragmentRelation::Descendant;
     case CSSSelector::Child:
         return FragmentRelation::Child;