| OLD | NEW |
| 1 <!DOCTYPE html> | 1 <!DOCTYPE html> |
| 2 <html> | 2 <html> |
| 3 <head> | 3 <head> |
| 4 <script src="resources/shadow-dom.js"></script> | 4 <script src="resources/shadow-dom.js"></script> |
| 5 <script src="../../../resources/js-test.js"></script> | 5 <script src="../../../resources/js-test.js"></script> |
| 6 </head> | 6 </head> |
| 7 <body> | 7 <body> |
| 8 </body> | 8 </body> |
| 9 <script> | 9 <script> |
| 10 document.body.appendChild( | 10 document.body.appendChild( |
| 11 createDOM('div', {'id': 'foo-host'}, | 11 createDOM('div', {'id': 'foo-host'}, |
| 12 createShadowRoot( | 12 createShadowRoot( |
| 13 createDOM('div', {}, | 13 createDOM('div', {}, |
| 14 createDOM('span', {'id': 'not-top'})), | 14 createDOM('span', {'id': 'not-top'})), |
| 15 createDOM('span', {'id': 'top'}), | 15 createDOM('span', {'id': 'top'}), |
| 16 createDOM('div', {'id': 'bar-host'}, | 16 createDOM('div', {'id': 'bar-host'}, |
| 17 createShadowRoot( | 17 createShadowRoot( |
| 18 createDOM('span', {'id': 'nested'})), | 18 createDOM('span', {'id': 'nested'})), |
| 19 createDOM('span', {'id': 'inner-host'}))), | 19 createDOM('span', {'id': 'inner-host'}))), |
| 20 createDOM('span', {'id': 'outer-host'}))); | 20 createDOM('span', {'id': 'outer-host'}))); |
| 21 | 21 |
| 22 document.body.appendChild( | 22 document.body.appendChild( |
| 23 createDOM('pre', {'id': 'console'})); | 23 createDOM('pre', {'id': 'console'})); |
| 24 | 24 |
| 25 description('crbug.com/337616: test for querySelectorAll with /shadow/ and /shad
ow-deep/'); | 25 description('crbug.com/337616: test for querySelectorAll with /shadow/ and /deep
/'); |
| 26 | 26 |
| 27 shouldBe('document.querySelectorAll("#foo-host /shadow/ span").length', '3'); | 27 shouldBe('document.querySelectorAll("#foo-host /shadow/ span").length', '3'); |
| 28 shouldBe('document.querySelectorAll("#foo-host /shadow/ span")[0].id', '"not-top
"'); | 28 shouldBe('document.querySelectorAll("#foo-host /shadow/ span")[0].id', '"not-top
"'); |
| 29 shouldBe('document.querySelectorAll("#foo-host /shadow/ span")[1].id', '"top"'); | 29 shouldBe('document.querySelectorAll("#foo-host /shadow/ span")[1].id', '"top"'); |
| 30 shouldBe('document.querySelectorAll("#foo-host /shadow/ span")[2].id', '"inner-h
ost"'); | 30 shouldBe('document.querySelectorAll("#foo-host /shadow/ span")[2].id', '"inner-h
ost"'); |
| 31 | 31 |
| 32 shouldBe('document.querySelectorAll("#foo-host /shadow-deep/ span").length', '5'
); | 32 shouldBe('document.querySelectorAll("#foo-host /deep/ span").length', '5'); |
| 33 shouldBe('document.querySelectorAll("#foo-host /shadow-deep/ span")[0].id', '"no
t-top"'); | 33 shouldBe('document.querySelectorAll("#foo-host /deep/ span")[0].id', '"not-top"'
); |
| 34 shouldBe('document.querySelectorAll("#foo-host /shadow-deep/ span")[1].id', '"to
p"'); | 34 shouldBe('document.querySelectorAll("#foo-host /deep/ span")[1].id', '"top"'); |
| 35 shouldBe('document.querySelectorAll("#foo-host /shadow-deep/ span")[2].id', '"ne
sted"'); | 35 shouldBe('document.querySelectorAll("#foo-host /deep/ span")[2].id', '"nested"')
; |
| 36 shouldBe('document.querySelectorAll("#foo-host /shadow-deep/ span")[3].id', '"in
ner-host"'); | 36 shouldBe('document.querySelectorAll("#foo-host /deep/ span")[3].id', '"inner-hos
t"'); |
| 37 shouldBe('document.querySelectorAll("#foo-host /shadow-deep/ span")[4].id', '"ou
ter-host"'); | 37 shouldBe('document.querySelectorAll("#foo-host /deep/ span")[4].id', '"outer-hos
t"'); |
| 38 | 38 |
| 39 // FIXME: after making "*" in shadow tree not to match shadow host, rebaseline. | 39 // FIXME: after making "*" in shadow tree not to match shadow host, rebaseline. |
| 40 var fooShadowRoot = getNodeInTreeOfTrees('foo-host/'); | 40 var fooShadowRoot = getNodeInTreeOfTrees('foo-host/'); |
| 41 shouldBe('fooShadowRoot.querySelectorAll("* /shadow/ span").length', '1'); | 41 shouldBe('fooShadowRoot.querySelectorAll("* /shadow/ span").length', '1'); |
| 42 shouldBe('fooShadowRoot.querySelectorAll("* /shadow/ span")[0].id', '"nested"'); | 42 shouldBe('fooShadowRoot.querySelectorAll("* /shadow/ span")[0].id', '"nested"'); |
| 43 | 43 |
| 44 shouldBe('fooShadowRoot.querySelectorAll("* /shadow-deep/ span").length', '3'); | 44 shouldBe('fooShadowRoot.querySelectorAll("* /deep/ span").length', '3'); |
| 45 shouldBe('fooShadowRoot.querySelectorAll("* /shadow-deep/ span")[0].id', '"not-t
op"'); | 45 shouldBe('fooShadowRoot.querySelectorAll("* /deep/ span")[0].id', '"not-top"'); |
| 46 shouldBe('fooShadowRoot.querySelectorAll("* /shadow-deep/ span")[1].id', '"neste
d"'); | 46 shouldBe('fooShadowRoot.querySelectorAll("* /deep/ span")[1].id', '"nested"'); |
| 47 shouldBe('fooShadowRoot.querySelectorAll("* /shadow-deep/ span")[2].id', '"inner
-host"'); | 47 shouldBe('fooShadowRoot.querySelectorAll("* /deep/ span")[2].id', '"inner-host"'
); |
| 48 | 48 |
| 49 // #foo-host in foo's shadow tree cannot match div#foo-host. | 49 // #foo-host in foo's shadow tree cannot match div#foo-host. |
| 50 shouldBe('fooShadowRoot.querySelectorAll("#foo-host /shadow-deep/ span").length'
, '0'); | 50 shouldBe('fooShadowRoot.querySelectorAll("#foo-host /deep/ span").length', '0'); |
| 51 | 51 |
| 52 // :host in foo's shadow tree can match div#foo-host. | 52 // :host in foo's shadow tree can match div#foo-host. |
| 53 shouldBe('fooShadowRoot.querySelectorAll(":host(div#foo-host) /shadow/ span").le
ngth', '3'); | 53 shouldBe('fooShadowRoot.querySelectorAll(":host(div#foo-host) /shadow/ span").le
ngth', '3'); |
| 54 shouldBe('fooShadowRoot.querySelectorAll(":host(div#foo-host) /shadow/ span")[0]
.id', '"not-top"'); | 54 shouldBe('fooShadowRoot.querySelectorAll(":host(div#foo-host) /shadow/ span")[0]
.id', '"not-top"'); |
| 55 shouldBe('fooShadowRoot.querySelectorAll(":host(div#foo-host) /shadow/ span")[1]
.id', '"top"'); | 55 shouldBe('fooShadowRoot.querySelectorAll(":host(div#foo-host) /shadow/ span")[1]
.id', '"top"'); |
| 56 shouldBe('fooShadowRoot.querySelectorAll(":host(div#foo-host) /shadow/ span")[2]
.id', '"inner-host"'); | 56 shouldBe('fooShadowRoot.querySelectorAll(":host(div#foo-host) /shadow/ span")[2]
.id', '"inner-host"'); |
| 57 | 57 |
| 58 // :ancestor in foo's shadow tree can match div#foo-host. | 58 // :ancestor in foo's shadow tree can match div#foo-host. |
| 59 shouldBe('fooShadowRoot.querySelectorAll(":ancestor(body) /shadow/ span").length
', '3'); | 59 shouldBe('fooShadowRoot.querySelectorAll(":ancestor(body) /shadow/ span").length
', '3'); |
| 60 shouldBe('fooShadowRoot.querySelectorAll(":ancestor(body) /shadow/ span")[0].id'
, '"not-top"'); | 60 shouldBe('fooShadowRoot.querySelectorAll(":ancestor(body) /shadow/ span")[0].id'
, '"not-top"'); |
| 61 shouldBe('fooShadowRoot.querySelectorAll(":ancestor(body) /shadow/ span")[1].id'
, '"top"'); | 61 shouldBe('fooShadowRoot.querySelectorAll(":ancestor(body) /shadow/ span")[1].id'
, '"top"'); |
| 62 shouldBe('fooShadowRoot.querySelectorAll(":ancestor(body) /shadow/ span")[2].id'
, '"inner-host"'); | 62 shouldBe('fooShadowRoot.querySelectorAll(":ancestor(body) /shadow/ span")[2].id'
, '"inner-host"'); |
| 63 | 63 |
| 64 var barHost = fooShadowRoot.getElementById('bar-host'); | 64 var barHost = fooShadowRoot.getElementById('bar-host'); |
| 65 shouldBe('barHost.querySelectorAll("#bar-host /shadow/ span").length', '1'); | 65 shouldBe('barHost.querySelectorAll("#bar-host /shadow/ span").length', '1'); |
| 66 shouldBe('barHost.querySelectorAll("#bar-host /shadow/ span")[0].id', '"nested"'
); | 66 shouldBe('barHost.querySelectorAll("#bar-host /shadow/ span")[0].id', '"nested"'
); |
| 67 shouldBe('barHost.querySelectorAll(":host :scope span").length', '1'); | 67 shouldBe('barHost.querySelectorAll(":host :scope span").length', '1'); |
| 68 shouldBe('barHost.querySelectorAll(":host :scope span")[0].id', '"inner-host"'); | 68 shouldBe('barHost.querySelectorAll(":host :scope span")[0].id', '"inner-host"'); |
| 69 shouldBe('barHost.querySelectorAll(":host /shadow-deep/ #bar-host span").length'
, '1'); | 69 shouldBe('barHost.querySelectorAll(":host /deep/ #bar-host span").length', '1'); |
| 70 shouldBe('barHost.querySelectorAll(":host /shadow-deep/ #bar-host span")[0].id',
'"inner-host"'); | 70 shouldBe('barHost.querySelectorAll(":host /deep/ #bar-host span")[0].id', '"inne
r-host"'); |
| 71 | 71 |
| 72 var barShadowRoot = getNodeInTreeOfTrees('foo-host/bar-host/'); | 72 var barShadowRoot = getNodeInTreeOfTrees('foo-host/bar-host/'); |
| 73 shouldBe('barShadowRoot.querySelectorAll("* /shadow/ span").length', '0'); | 73 shouldBe('barShadowRoot.querySelectorAll("* /shadow/ span").length', '0'); |
| 74 shouldBe('barShadowRoot.querySelectorAll("* /shadow-deep/ span").length', '0'); | 74 shouldBe('barShadowRoot.querySelectorAll("* /deep/ span").length', '0'); |
| 75 | 75 |
| 76 shouldBe('barShadowRoot.querySelectorAll(":host(div#bar-host) /shadow/ span").le
ngth', '1'); | 76 shouldBe('barShadowRoot.querySelectorAll(":host(div#bar-host) /shadow/ span").le
ngth', '1'); |
| 77 shouldBe('barShadowRoot.querySelectorAll(":host(div#bar-host) /shadow/ span")[0]
.id', '"nested"'); | 77 shouldBe('barShadowRoot.querySelectorAll(":host(div#bar-host) /shadow/ span")[0]
.id', '"nested"'); |
| 78 shouldBe('barShadowRoot.querySelectorAll(":host(div#bar-host) /shadow-deep/ span
").length', '1'); | 78 shouldBe('barShadowRoot.querySelectorAll(":host(div#bar-host) /deep/ span").leng
th', '1'); |
| 79 shouldBe('barShadowRoot.querySelectorAll(":host(div#bar-host) /shadow-deep/ span
")[0].id', '"nested"'); | 79 shouldBe('barShadowRoot.querySelectorAll(":host(div#bar-host) /deep/ span")[0].i
d', '"nested"'); |
| 80 | 80 |
| 81 shouldBe('barShadowRoot.querySelectorAll(":ancestor(div#foo-host) /shadow/ span"
).length', '1'); | 81 shouldBe('barShadowRoot.querySelectorAll(":ancestor(div#foo-host) /shadow/ span"
).length', '1'); |
| 82 shouldBe('barShadowRoot.querySelectorAll(":ancestor(div#foo-host) /shadow/ span"
)[0].id', '"nested"'); | 82 shouldBe('barShadowRoot.querySelectorAll(":ancestor(div#foo-host) /shadow/ span"
)[0].id', '"nested"'); |
| 83 shouldBe('barShadowRoot.querySelectorAll(":ancestor(div#foo-host) /shadow-deep/
span").length', '1'); | 83 shouldBe('barShadowRoot.querySelectorAll(":ancestor(div#foo-host) /deep/ span").
length', '1'); |
| 84 shouldBe('barShadowRoot.querySelectorAll(":ancestor(div#foo-host) /shadow-deep/
span")[0].id', '"nested"'); | 84 shouldBe('barShadowRoot.querySelectorAll(":ancestor(div#foo-host) /deep/ span")[
0].id', '"nested"'); |
| 85 </script> | 85 </script> |
| 86 </html> | 86 </html> |
| 87 | 87 |
| OLD | NEW |