Update web-platform-tests and CSS tests.

- Update CSS tests to revision e05bfd5e30ed662c2f8a353577003f8eed230180.
- Update web-platform-tests to revision a052787dd5c069a340031011196b73affbd68cd9.
This commit is contained in:
Ms2ger 2017-02-06 11:06:12 +01:00
parent fb4f421c8b
commit 296fa2512b
21852 changed files with 2080936 additions and 892894 deletions

View file

@ -0,0 +1,39 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Introduction - CSS Scoping Module Level 1 CR Test Suite</title>
<style type="text/css">
@import "http://www.w3.org/StyleSheets/TR/base.css";
@import "../indices.css";
</style>
</head>
<body>
<h1>CSS Scoping Module Level 1 CR Test Suite</h1>
<h2>Introduction (0 tests)</h2>
<table width="100%">
<col id="test-column"></col>
<col id="refs-column"></col>
<col id="flags-column"></col>
<col id="info-column"></col>
<thead>
<tr>
<th>Test</th>
<th><abbr title="Rendering References">Refs</abbr></th>
<th>Flags</th>
<th>Info</th>
</tr>
</thead>
<tbody id="s1">
<tr><th colspan="4" scope="rowgroup">
<a href="#s1">+</a>
<a href="https://www.w3.org/TR/css-scoping-1/#intro">1 Introduction</a></th></tr>
<!-- 0 tests -->
</tbody>
</table>
</body>
</html>

View file

@ -0,0 +1,87 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Scoped Styles - CSS Scoping Module Level 1 CR Test Suite</title>
<style type="text/css">
@import "http://www.w3.org/StyleSheets/TR/base.css";
@import "../indices.css";
</style>
</head>
<body>
<h1>CSS Scoping Module Level 1 CR Test Suite</h1>
<h2>Scoped Styles (0 tests)</h2>
<table width="100%">
<col id="test-column"></col>
<col id="refs-column"></col>
<col id="flags-column"></col>
<col id="info-column"></col>
<thead>
<tr>
<th>Test</th>
<th><abbr title="Rendering References">Refs</abbr></th>
<th>Flags</th>
<th>Info</th>
</tr>
</thead>
<tbody id="s2">
<tr><th colspan="4" scope="rowgroup">
<a href="#s2">+</a>
<a href="https://www.w3.org/TR/css-scoping-1/#scope">2 Scoped Styles</a></th></tr>
<!-- 0 tests -->
</tbody>
<tbody id="s2.1">
<tr><th colspan="4" scope="rowgroup">
<a href="#s2.1">+</a>
<a href="https://www.w3.org/TR/css-scoping-1/#scoping-mechanisms">2.1 Scoping Mechanisms</a></th></tr>
<!-- 0 tests -->
</tbody>
<tbody id="s2.1.1">
<tr><th colspan="4" scope="rowgroup">
<a href="#s2.1.1">+</a>
<a href="https://www.w3.org/TR/css-scoping-1/#scoping-markup">2.1.1 Document Markup for Scoping</a></th></tr>
<!-- 0 tests -->
</tbody>
<tbody id="s2.1.2">
<tr><th colspan="4" scope="rowgroup">
<a href="#s2.1.2">+</a>
<a href="https://www.w3.org/TR/css-scoping-1/#scope-atrule">2.1.2 CSS Syntax for Scoping: the @scope rule</a></th></tr>
<!-- 0 tests -->
</tbody>
<tbody id="s2.1.2.#at-ruledef-scope">
<!-- 0 tests -->
</tbody>
<tbody id="s2.1.2.#issue-5c7571b6">
<!-- 0 tests -->
</tbody>
<tbody id="s2.1.2.#issue-5f568f10">
<!-- 0 tests -->
</tbody>
<tbody id="s2.2">
<tr><th colspan="4" scope="rowgroup">
<a href="#s2.2">+</a>
<a href="https://www.w3.org/TR/css-scoping-1/#scoping-context">2.2 Querying the Scoping Context</a></th></tr>
<!-- 0 tests -->
</tbody>
<tbody id="s2.2.1">
<tr><th colspan="4" scope="rowgroup">
<a href="#s2.2.1">+</a>
<a href="https://www.w3.org/TR/css-scoping-1/#scope-pseudo">2.2.1 Selecting the Scoping Root: :scope pseudo-class</a></th></tr>
<!-- 0 tests -->
</tbody>
<tbody id="s2.2.2">
<tr><th colspan="4" scope="rowgroup">
<a href="#s2.2.2">+</a>
<a href="https://www.w3.org/TR/css-scoping-1/#scope-content-pseudo">2.2.2 Selecting Outside the Scope: :scope-context() pseudo-class</a></th></tr>
<!-- 0 tests -->
</tbody>
<tbody id="s2.2.2.#issue-aecbd194">
<!-- 0 tests -->
</tbody>
</table>
</body>
</html>

View file

@ -0,0 +1,273 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Shadow Encapsulation - CSS Scoping Module Level 1 CR Test Suite</title>
<style type="text/css">
@import "http://www.w3.org/StyleSheets/TR/base.css";
@import "../indices.css";
</style>
</head>
<body>
<h1>CSS Scoping Module Level 1 CR Test Suite</h1>
<h2>Shadow Encapsulation (15 tests)</h2>
<table width="100%">
<col id="test-column"></col>
<col id="refs-column"></col>
<col id="flags-column"></col>
<col id="info-column"></col>
<thead>
<tr>
<th>Test</th>
<th><abbr title="Rendering References">Refs</abbr></th>
<th>Flags</th>
<th>Info</th>
</tr>
</thead>
<tbody id="s3">
<tr><th colspan="4" scope="rowgroup">
<a href="#s3">+</a>
<a href="https://www.w3.org/TR/css-scoping-1/#shadow-dom">3 Shadow Encapsulation</a></th></tr>
<!-- 0 tests -->
</tbody>
<tbody id="s3.#active-shadow-tree">
<!-- 0 tests -->
</tbody>
<tbody id="s3.#distribution-list">
<!-- 0 tests -->
</tbody>
<tbody id="s3.#host-element0">
<!-- 0 tests -->
</tbody>
<tbody id="s3.#insertion-point">
<!-- 0 tests -->
</tbody>
<tbody id="s3.#shadow-host">
<!-- 0 tests -->
</tbody>
<tbody id="s3.#shadow-root">
<!-- 0 tests -->
</tbody>
<tbody id="s3.#shadow-tree">
<!-- 0 tests -->
</tbody>
<tbody id="s3.#top-level-element">
<!-- 0 tests -->
</tbody>
<tbody id="s3.1">
<tr><th colspan="4" scope="rowgroup">
<a href="#s3.1">+</a>
<a href="https://www.w3.org/TR/css-scoping-1/#selectors-data-model">3.1 Shadow DOM Selection Model</a></th></tr>
<!-- 12 tests -->
<tr id="css-scoping-shadow-assigned-node-with-before-after-3.1" class="">
<td>
<a href="css-scoping-shadow-assigned-node-with-before-after.xht">css-scoping-shadow-assigned-node-with-before-after</a></td>
<td><a href="reference/green-box.xht">=</a> </td>
<td></td>
<td>CSS Scoping Module Level 1 - ::before and ::after pseudo class' contents on a node assigned to a slot element must be rendered
</td>
</tr>
<tr id="css-scoping-shadow-assigned-node-with-rules-3.1" class="">
<td>
<a href="css-scoping-shadow-assigned-node-with-rules.xht">css-scoping-shadow-assigned-node-with-rules</a></td>
<td><a href="reference/green-box.xht">=</a> </td>
<td></td>
<td>CSS Scoping Module Level 1 - Only rules outside a shadow tree must apply to nodes assigned to a slot in the shadow tree.
</td>
</tr>
<tr id="css-scoping-shadow-host-with-before-after-3.1" class="">
<td>
<a href="css-scoping-shadow-host-with-before-after.xht">css-scoping-shadow-host-with-before-after</a></td>
<td><a href="reference/green-box.xht">=</a> </td>
<td></td>
<td>CSS Scoping Module Level 1 - ::before and ::after pseudo elements' contents on a shadow host must be rendered
</td>
</tr>
<tr id="css-scoping-shadow-invisible-slot-3.1" class="">
<td>
<a href="css-scoping-shadow-invisible-slot.xht">css-scoping-shadow-invisible-slot</a></td>
<td><a href="reference/green-box.xht">=</a> </td>
<td></td>
<td>CSS Scoping Module Level 1 - elements with a distribution list should generate boxes in the formatting tree.
</td>
</tr>
<tr id="css-scoping-shadow-root-hides-children-3.1" class="">
<td>
<a href="css-scoping-shadow-root-hides-children.xht">css-scoping-shadow-root-hides-children</a></td>
<td><a href="reference/green-box.xht">=</a> </td>
<td></td>
<td>CSS Scoping Module Level 1 - a shadow tree hides non-distributed children of the host
</td>
</tr>
<tr id="css-scoping-shadow-slot-3.1" class="">
<td>
<a href="css-scoping-shadow-slot.xht">css-scoping-shadow-slot</a></td>
<td><a href="reference/green-box.xht">=</a> </td>
<td></td>
<td>CSS Scoping Module Level 1 - elements with a distribution list should generate boxes in the formatting tree.
</td>
</tr>
<tr id="css-scoping-shadow-slot-display-override-3.1" class="">
<td>
<a href="css-scoping-shadow-slot-display-override.xht">css-scoping-shadow-slot-display-override</a></td>
<td><a href="reference/green-box.xht">=</a> </td>
<td></td>
<td>CSS Scoping Module Level 1 - overriding slot element's display value should generate boxes
</td>
</tr>
<tr id="css-scoping-shadow-slot-fallback-3.1" class="">
<td>
<a href="css-scoping-shadow-slot-fallback.xht">css-scoping-shadow-slot-fallback</a></td>
<td><a href="reference/green-box.xht">=</a> </td>
<td></td>
<td>CSS Scoping Module Level 1 - slot element without distributed nodes must render its fallback content
</td>
</tr>
<tr id="css-scoping-shadow-slot-style-3.1" class="">
<td>
<a href="css-scoping-shadow-slot-style.xht">css-scoping-shadow-slot-style</a></td>
<td><a href="reference/green-box.xht">=</a> </td>
<td></td>
<td>CSS Scoping Module Level 1 - Ensure that slot's style is inherited by slotted children
</td>
</tr>
<tr id="css-scoping-shadow-with-outside-rules-3.1" class="">
<td>
<a href="css-scoping-shadow-with-outside-rules.xht">css-scoping-shadow-with-outside-rules</a></td>
<td><a href="reference/green-box.xht">=</a> </td>
<td></td>
<td>CSS Scoping Module Level 1 - a selector outside a shadow tree should not match nodes inside the shadow tree
</td>
</tr>
<tr id="css-scoping-shadow-with-rules-3.1" class="">
<td>
<a href="css-scoping-shadow-with-rules.xht">css-scoping-shadow-with-rules</a></td>
<td><a href="reference/green-box.xht">=</a> </td>
<td></td>
<td>CSS Scoping Module Level 1 - a selector inside a shadow tree is matched against nodes in the shadow tree
</td>
</tr>
<tr id="css-scoping-shadow-with-rules-no-style-leak-3.1" class="">
<td>
<a href="css-scoping-shadow-with-rules-no-style-leak.xht">css-scoping-shadow-with-rules-no-style-leak</a></td>
<td><a href="reference/green-box.xht">=</a> </td>
<td></td>
<td>CSS Scoping Module Level 1 - a style rule inside a shadow tree doesn't affect the normal dom
</td>
</tr>
</tbody>
<tbody id="s3.1.1">
<tr><th colspan="4" scope="rowgroup">
<a href="#s3.1.1">+</a>
<a href="https://www.w3.org/TR/css-scoping-1/#host-element">3.1.1 Host Elements in a Shadow Tree</a></th></tr>
<!-- 0 tests -->
</tbody>
<tbody id="s3.2">
<tr><th colspan="4" scope="rowgroup">
<a href="#s3.2">+</a>
<a href="https://www.w3.org/TR/css-scoping-1/#selectors">3.2 Shadow DOM Selectors</a></th></tr>
<!-- 0 tests -->
</tbody>
<tbody id="s3.2.#issue-dea392ae">
<!-- 0 tests -->
</tbody>
<tbody id="s3.2.1">
<tr><th colspan="4" scope="rowgroup">
<a href="#s3.2.1">+</a>
<a href="https://www.w3.org/TR/css-scoping-1/#host-selector">3.2.1 Selecting Into the Light: the :host, :host(), and :host-context() pseudo-classes</a></th></tr>
<!-- 2 tests -->
<tr id="css-scoping-shadow-host-functional-rule-3.2.1" class="">
<td>
<a href="css-scoping-shadow-host-functional-rule.xht">css-scoping-shadow-host-functional-rule</a></td>
<td><a href="reference/green-box.xht">=</a> </td>
<td></td>
<td>CSS Scoping Module Level 1 - :host() rules must apply to the shadow host.
</td>
</tr>
<tr id="css-scoping-shadow-host-rule-3.2.1" class="">
<td>
<a href="css-scoping-shadow-host-rule.xht">css-scoping-shadow-host-rule</a></td>
<td><a href="reference/green-box.xht">=</a> </td>
<td></td>
<td>CSS Scoping Module Level 1 - :host rules must apply to the shadow host.
</td>
</tr>
</tbody>
<tbody id="s3.2.1.#selectordef-host">
<!-- 0 tests -->
</tbody>
<tbody id="s3.2.1.#selectordef-host-context">
<!-- 0 tests -->
</tbody>
<tbody id="s3.2.1.#selectordef-host0">
<!-- 0 tests -->
</tbody>
<tbody id="s3.2.2">
<tr><th colspan="4" scope="rowgroup">
<a href="#s3.2.2">+</a>
<a href="https://www.w3.org/TR/css-scoping-1/#shadow-pseudoelement">3.2.2 Selecting Into the Dark: the ::shadow pseudo-element</a></th></tr>
<!-- 0 tests -->
</tbody>
<tbody id="s3.2.2.#selectordef-shadow">
<!-- 0 tests -->
</tbody>
<tbody id="s3.2.3">
<tr><th colspan="4" scope="rowgroup">
<a href="#s3.2.3">+</a>
<a href="https://www.w3.org/TR/css-scoping-1/#content-combinator">3.2.3 Selecting Shadow-Projected Content: the ::content pseudo-element</a></th></tr>
<!-- 0 tests -->
</tbody>
<tbody id="s3.2.3.#issue-1b6118ae">
<!-- 0 tests -->
</tbody>
<tbody id="s3.2.3.#selectordef-content">
<!-- 0 tests -->
</tbody>
<tbody id="s3.2.4">
<tr><th colspan="4" scope="rowgroup">
<a href="#s3.2.4">+</a>
<a href="https://www.w3.org/TR/css-scoping-1/#deep-combinator">3.2.4 Selecting Through Shadows: the /deep/ combinator</a></th></tr>
<!-- 0 tests -->
</tbody>
<tbody id="s3.2.4.#issue-250ee37f">
<!-- 0 tests -->
</tbody>
<tbody id="s3.2.4.#selectordef-deep">
<!-- 0 tests -->
</tbody>
<tbody id="s3.3">
<tr><th colspan="4" scope="rowgroup">
<a href="#s3.3">+</a>
<a href="https://www.w3.org/TR/css-scoping-1/#shadow-cascading">3.3 Shadow Cascading & Inheritance</a></th></tr>
<!-- 1 tests -->
<tr id="shadow-cascade-order-001-3.3" class="primary script">
<td><strong>
<a href="shadow-cascade-order-001.xht">shadow-cascade-order-001</a></strong></td>
<td></td>
<td><abbr class="script" title="Executes tests in script">Script</abbr></td>
<td>Shadow DOM: CSS Style Rule cascading
<ul class="assert">
<li>Cascading order test for style rules from various shadow trees.</li>
</ul>
</td>
</tr>
</tbody>
<tbody id="s3.3.1">
<tr><th colspan="4" scope="rowgroup">
<a href="#s3.3.1">+</a>
<a href="https://www.w3.org/TR/css-scoping-1/#cascading">3.3.1 Cascading</a></th></tr>
<!-- 0 tests -->
</tbody>
<tbody id="s3.3.2">
<tr><th colspan="4" scope="rowgroup">
<a href="#s3.3.2">+</a>
<a href="https://www.w3.org/TR/css-scoping-1/#inheritance">3.3.2 Inheritance</a></th></tr>
<!-- 0 tests -->
</tbody>
</table>
</body>
</html>

View file

@ -0,0 +1,135 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Fragmented Styling - CSS Scoping Module Level 1 CR Test Suite</title>
<style type="text/css">
@import "http://www.w3.org/StyleSheets/TR/base.css";
@import "../indices.css";
</style>
</head>
<body>
<h1>CSS Scoping Module Level 1 CR Test Suite</h1>
<h2>Fragmented Styling (0 tests)</h2>
<table width="100%">
<col id="test-column"></col>
<col id="refs-column"></col>
<col id="flags-column"></col>
<col id="info-column"></col>
<thead>
<tr>
<th>Test</th>
<th><abbr title="Rendering References">Refs</abbr></th>
<th>Flags</th>
<th>Info</th>
</tr>
</thead>
<tbody id="s4">
<tr><th colspan="4" scope="rowgroup">
<a href="#s4">+</a>
<a href="https://www.w3.org/TR/css-scoping-1/#fragment-scoping">4 Fragmented Styling</a></th></tr>
<!-- 0 tests -->
</tbody>
<tbody id="s4.#fragment-pseudo-element">
<!-- 0 tests -->
</tbody>
<tbody id="s4.1">
<tr><th colspan="4" scope="rowgroup">
<a href="#s4.1">+</a>
<a href="https://www.w3.org/TR/css-scoping-1/#the-region-pseudo-element">4.1 Region-based Styling: the ::region pseudo-element</a></th></tr>
<!-- 0 tests -->
</tbody>
<tbody id="s4.1.#issue-5bff6297">
<!-- 0 tests -->
</tbody>
<tbody id="s4.1.#issue-9b00b7af">
<!-- 0 tests -->
</tbody>
<tbody id="s4.1.#issue-f778a2c0">
<!-- 0 tests -->
</tbody>
<tbody id="s4.1.#region-style-example">
<!-- 0 tests -->
</tbody>
<tbody id="s4.1.#region_styling_illustration">
<!-- 0 tests -->
</tbody>
<tbody id="s4.1.#region_styling_img_2">
<!-- 0 tests -->
</tbody>
<tbody id="s.#abstract">
<!-- 0 tests -->
</tbody>
<tbody id="s.#conformance">
<!-- 0 tests -->
</tbody>
<tbody id="s.#contents">
<!-- 0 tests -->
</tbody>
<tbody id="s.#index">
<!-- 0 tests -->
</tbody>
<tbody id="s.#issues-index">
<!-- 0 tests -->
</tbody>
<tbody id="s.#property-index">
<!-- 0 tests -->
</tbody>
<tbody id="s.#references">
<!-- 0 tests -->
</tbody>
<tbody id="s.#status">
<!-- 0 tests -->
</tbody>
<tbody id="s.#subtitle">
<!-- 0 tests -->
</tbody>
<tbody id="s.#title">
<!-- 0 tests -->
</tbody>
<tbody id="sconformance.#conformance-classes">
<!-- 0 tests -->
</tbody>
<tbody id="sconformance.#conventions">
<!-- 0 tests -->
</tbody>
<tbody id="sconformance.#experimental">
<!-- 0 tests -->
</tbody>
<tbody id="sconformance.#partial">
<!-- 0 tests -->
</tbody>
<tbody id="sconformance.#testing">
<!-- 0 tests -->
</tbody>
<tbody id="sinformative.#html">
<!-- 0 tests -->
</tbody>
<tbody id="sinformative.#selectors4">
<!-- 0 tests -->
</tbody>
<tbody id="snormative.#css21">
<!-- 0 tests -->
</tbody>
<tbody id="snormative.#css3cascade">
<!-- 0 tests -->
</tbody>
<tbody id="snormative.#dom">
<!-- 0 tests -->
</tbody>
<tbody id="snormative.#rfc2119">
<!-- 0 tests -->
</tbody>
<tbody id="sreferences.#informative">
<!-- 0 tests -->
</tbody>
<tbody id="sreferences.#normative">
<!-- 0 tests -->
</tbody>
</table>
</body>
</html>

View file

@ -0,0 +1,58 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head>
<title>CSS Scoping Module Level 1 - ::before and ::after pseudo class' contents on a node assigned to a slot element must be rendered</title>
<link href="mailto:rniwa@webkit.org" rel="author" title="Ryosuke Niwa" />
<link href="http://www.w3.org/TR/css-scoping-1/#selectors-data-model" rel="help" />
<link href="reference/green-box.xht" rel="match" />
</head>
<body>
<style>
my-host {
display: block;
width: 100px;
height: 100px;
background: red;
}
div {
display: block;
background: red;
line-height: 0px;
width: 100%;
height: 50px;
}
[slot=foo]::before,
[slot=foo]::after {
display: block;
content: "";
width: 100%;
height: 25px;
}
[slot=foo]::before,
[slot=foo]::after {
background: green;
}
[slot=bar]::before,
[slot=bar]::after {
background: yellow;
}
</style>
<p>Test passes if you see a single 100px by 100px green box below.</p>
<my-host>
<div slot="foo"></div>
<div slot="bar"></div>
<div slot="foo"></div>
</my-host>
<script>
try {
var shadowHost = document.querySelector('my-host');
shadowRoot = shadowHost.attachShadow({mode: 'open'});
shadowRoot.innerHTML = '&lt;slot name="foo"&gt;&lt;/slot&gt;';
} catch (exception) {
document.body.appendChild(document.createTextNode(exception));
}
</script>
</body></html>

View file

@ -0,0 +1,48 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head>
<title>CSS Scoping Module Level 1 - Only rules outside a shadow tree must apply to nodes assigned to a slot in the shadow tree.</title>
<link href="mailto:rniwa@webkit.org" rel="author" title="Ryosuke Niwa" />
<link href="http://www.w3.org/TR/css-scoping-1/#selectors-data-model" rel="help" />
<link href="reference/green-box.xht" rel="match" />
</head>
<body>
<style>
my-host {
display: block;
width: 100px;
height: 100px;
overflow: hidden;
background: green;
}
div {
width: 100%;
height: 50%;
}
.green {
color: green;
}
.red {
color: red;
}
</style>
<p>Test passes if you see a single 100px by 100px green box below.</p>
<my-host>
<div class="red">FAIL</div>
<div slot="green" class="green">FAIL</div>
<div slot="invalid" class="red">FAIL</div>
<div slot="green" class="green">FAIL</div>
</my-host>
<script>
try {
var shadowHost = document.querySelector('my-host');
shadowRoot = shadowHost.attachShadow({mode: 'open'});
shadowRoot.innerHTML = '&lt;style&gt; div { color: yellow; } &lt;/style&gt;&lt;slot name="green"&gt;&lt;/slot&gt;';
} catch (exception) {
document.body.appendChild(document.createTextNode(exception));
}
</script>
</body></html>

View file

@ -0,0 +1,67 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head>
<title>CSS Scoping Module Level 1 - :host() rules must apply to the shadow host.</title>
<link href="mailto:rniwa@webkit.org" rel="author" title="Ryosuke Niwa" />
<link href="http://www.w3.org/TR/css-scoping-1/#host-selector" rel="help" />
<link href="reference/green-box.xht" rel="match" />
</head>
<body>
<style>
host-1, host-2, host-3, host-4, host-5 {
display: block;
width: 100px;
height: 20px;
background: red;
}
host-3, host-4, host-5 {
background: green;
}
</style>
<p>Test passes if you see a single 100px by 100px green box below.</p>
<host-1>
<div>FAIL1</div>
</host-1>
<host-2 class="foo" id="bar" name="baz">
<div>FAIL2</div>
</host-2>
<div>
<host-3>
FAIL3
</host-3>
</div>
<host-4>
<div class="child">FAIL4</div>
</host-4>
<host-5>
<div>FAIL5</div>
</host-5>
<script>
try {
var shadowHost = document.querySelector('host-1');
shadowRoot = shadowHost.attachShadow({mode: 'open'});
shadowRoot.innerHTML = '&lt;style&gt; :host(host-1) { background: green !important; } &lt;/style&gt;';
shadowHost = document.querySelector('host-2');
shadowRoot = shadowHost.attachShadow({mode: 'open'});
shadowRoot.innerHTML = '&lt;style&gt; :host(host-2.foo#bar[name=baz]) { background: green !important; } &lt;/style&gt;';
shadowHost = document.querySelector('host-3');
shadowRoot = shadowHost.attachShadow({mode: 'open'});
shadowRoot.innerHTML = '&lt;style&gt; :host(div host-3) { background: red !important; } &lt;/style&gt;';
shadowHost = document.querySelector('host-4');
shadowRoot = shadowHost.attachShadow({mode: 'open'});
shadowRoot.innerHTML = '&lt;style&gt; :host(.child) { background: red !important; } &lt;/style&gt;';
shadowHost = document.querySelector('host-5');
shadowRoot = shadowHost.attachShadow({mode: 'open'});
shadowRoot.innerHTML = '&lt;style&gt; :host(host-1) { background: red !important; } &lt;/style&gt;';
} catch (exception) {
document.body.appendChild(document.createTextNode(exception));
}
</script>
</body></html>

View file

@ -0,0 +1,67 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head>
<title>CSS Scoping Module Level 1 - :host rules must apply to the shadow host.</title>
<link href="mailto:rniwa@webkit.org" rel="author" title="Ryosuke Niwa" />
<link href="http://www.w3.org/TR/css-scoping-1/#host-selector" rel="help" />
<link href="reference/green-box.xht" rel="match" />
</head>
<body>
<style>
my-host, my-host2, my-host3, my-host4 {
display: block;
width: 100px;
height: 25px;
}
my-host2 {
background: green;
}
my-host3 {
background: red;
color: green;
}
my-host4 {
background: green;
color: green;
}
</style>
<p>Test passes if you see a single 100px by 100px green box below.</p>
<my-host>
<div>FAIL</div>
</my-host>
<my-host2>
<div>FAIL</div>
</my-host2>
<my-host3>
<div>FAIL</div>
</my-host3>
<div class="container">
<my-host4>
<div>FAIL</div>
</my-host4>
</div>
<script>
try {
var shadowHost = document.querySelector('my-host');
var shadowRoot = shadowHost.attachShadow({mode: 'open'});
shadowRoot.innerHTML = '&lt;style&gt; :host { color: green; background: green; } &lt;/style&gt;&lt;div&gt;FAIL&lt;/div&gt;';
shadowHost = document.querySelector('my-host2');
shadowRoot = shadowHost.attachShadow({mode: 'open'});
shadowRoot.innerHTML = '&lt;style&gt; :host { color: red; background: red; } div { color: green }&lt;/style&gt;&lt;div&gt;FAIL&lt;/div&gt;';
shadowHost = document.querySelector('my-host3');
shadowRoot = shadowHost.attachShadow({mode: 'open'});
shadowRoot.innerHTML = '&lt;style&gt; :host { background: green !important; color: green !important; } &lt;/style&gt;&lt;div&gt;FAIL&lt;/div&gt;';
shadowHost = document.querySelector('my-host4');
shadowRoot = shadowHost.attachShadow({mode: 'open'});
shadowRoot.innerHTML = '&lt;style&gt; .container :host { background: red !important; } &lt;/style&gt;&lt;div&gt;FAIL&lt;/div&gt;';
} catch (exception) {
document.body.appendChild(document.createTextNode(exception));
}
</script>
</body></html>

View file

@ -0,0 +1,48 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head>
<title>CSS Scoping Module Level 1 - ::before and ::after pseudo elements' contents on a shadow host must be rendered</title>
<link href="mailto:rniwa@webkit.org" rel="author" title="Ryosuke Niwa" />
<link href="http://www.w3.org/TR/css-scoping-1/#selectors-data-model" rel="help" />
<link href="reference/green-box.xht" rel="match" />
</head>
<body>
<style>
my-host {
display: block;
width: 100px;
height: 100px;
background: red;
}
my-host::before {
display: block;
content: "";
width: 100px;
height: 25px;
background: green;
}
my-host::after {
display: block;
content: "";
width: 100px;
height: 25px;
background: green;
}
</style>
<p>Test passes if you see a single 100px by 100px green box below.</p>
<my-host>
<div>FAIL</div>
</my-host>
<script>
try {
var shadowHost = document.querySelector('my-host');
shadowRoot = shadowHost.attachShadow({mode: 'open'});
shadowRoot.innerHTML = '&lt;div style="width: 100px; height: 50px; background: green"&gt;&lt;/div&gt;';
} catch (exception) {
document.body.appendChild(document.createTextNode(exception));
}
</script>
</body></html>

View file

@ -0,0 +1,40 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head>
<title>CSS Scoping Module Level 1 - elements with a distribution list should generate boxes in the formatting tree.</title>
<link href="mailto:rniwa@webkit.org" rel="author" title="Ryosuke Niwa" />
<link href="http://www.w3.org/TR/css-scoping-1/#selectors-data-model" rel="help" />
<link href="reference/green-box.xht" rel="match" />
</head>
<body>
<style>
my-host {
display: block;
width: 100px;
height: 100px;
overflow: hidden;
}
div {
width: 100%;
height: 50%;
}
</style>
<p>Test passes if you see a single 100px by 100px green box below.</p>
<my-host>
<div slot="green" style="background: green;"></div>
<div style="background: red;">FAIL</div>
<div slot="green" style="background: green;"></div>
</my-host>
<script>
try {
var shadowHost = document.querySelector('my-host');
shadowRoot = shadowHost.attachShadow({mode: 'open'});
shadowRoot.innerHTML = '&lt;slot name="green" style="border: solid 50px red;"&gt;&lt;/slot&gt;';
} catch (exception) {
document.body.appendChild(document.createTextNode(exception));
}
</script>
</body></html>

View file

@ -0,0 +1,36 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head>
<title>CSS Scoping Module Level 1 - a shadow tree hides non-distributed children of the host</title>
<link href="mailto:rniwa@webkit.org" rel="author" title="Ryosuke Niwa" />
<link href="http://www.w3.org/TR/css-scoping-1/#selectors-data-model" rel="help" />
<link href="reference/green-box.xht" rel="match" />
</head>
<body>
<style>
my-host {
display: block;
width: 100px;
height: 100px;
}
div {
width: 100%; height: 100%; background: red;
}
</style>
<p>Test passes if you see a single 100px by 100px green box below.</p>
<my-host>
<div>FAIL</div>
</my-host>
<script>
try {
var shadowHost = document.querySelector('my-host');
shadowRoot = shadowHost.attachShadow({mode: 'open'});
shadowRoot.innerHTML = '&lt;div style="width: 100px; height: 100px; background: green; color:green"&gt;FAIL&lt;/div&gt;';
} catch (exception) {
document.body.appendChild(document.createTextNode(exception));
}
</script>
</body></html>

View file

@ -0,0 +1,39 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head>
<title>CSS Scoping Module Level 1 - overriding slot element's display value should generate boxes</title>
<link href="mailto:rniwa@webkit.org" rel="author" title="Ryosuke Niwa" />
<link href="http://www.w3.org/TR/css-scoping-1/#selectors-data-model" rel="help" />
<link href="reference/green-box.xht" rel="match" />
</head>
<body>
<style>
my-host {
display: block;
width: 100px;
height: 100px;
background: red;
}
my-host &gt; div {
width: 50px;
height: 50px;
background: green;
}
</style>
<p>Test passes if you see a single 100px by 100px green box below.</p>
<my-host>
<div></div>
</my-host>
<script>
try {
var shadowHost = document.querySelector('my-host');
shadowRoot = shadowHost.attachShadow({mode: 'open'});
shadowRoot.innerHTML = '&lt;slot style="display:block; border: solid 25px green;"&gt;&lt;/slot&gt;';
} catch (exception) {
document.body.appendChild(document.createTextNode(exception));
}
</script>
</body></html>

View file

@ -0,0 +1,47 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head>
<title>CSS Scoping Module Level 1 - slot element without distributed nodes must render its fallback content</title>
<link href="mailto:rniwa@webkit.org" rel="author" title="Ryosuke Niwa" />
<link href="http://www.w3.org/TR/css-scoping-1/#selectors-data-model" rel="help" />
<link href="reference/green-box.xht" rel="match" />
</head>
<body>
<style>
my-host {
display: block;
background-color: red;
width: 100px;
height: 50px;
}
.red {
background-color: red;
}
.green {
background-color: green;
}
div {
width: 100px;
height: 50px;
}
slot {
border: solid 10px red;
}
</style>
<p>Test passes if you see a single 100px by 100px green box below.</p>
<my-host></my-host>
<div class="red"><slot><div class="green"></div></slot></div>
<script>
try {
var shadowHost = document.querySelector('my-host');
shadowRoot = shadowHost.attachShadow({mode: 'open'});
shadowRoot.innerHTML = '&lt;slot style="border: solid 10px red;"&gt;'
+ '&lt;div style="width: 100%; height: 100%; background-color: green;"&gt;&lt;/div&gt;&lt;/slot&gt;';
} catch (exception) {
document.body.appendChild(document.createTextNode(exception));
}
</script>
</body></html>

View file

@ -0,0 +1,47 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head>
<title>CSS Scoping Module Level 1 - Ensure that slot's style is inherited by slotted children</title>
<link href="mailto:rniwa@webkit.org" rel="author" title="Ryosuke Niwa" />
<link href="http://www.w3.org/TR/css-scoping-1/#selectors-data-model" rel="help" />
<link href="reference/green-box.xht" rel="match" />
</head>
<body>
<style>
my-host, my-non-host {
display: block;
width: 100px;
height: 50px;
overflow: hidden;
background: red;
color: red;
}
div {
width: 100%;
height: 50%;
}
</style>
<p>Test passes if you see a single 100px by 100px green box below.</p>
<my-host>
<div slot="green" style="background: green;">FAIL</div>
<div slot="green" style="background: inherit;">FAIL</div>
</my-host>
<my-non-host>
<slot style="color: green; background: green" name="green">
<div slot="green" style="background: green;">FAIL</div>
<div slot="green" style="background: inherit;">FAIL</div>
</slot>
</my-non-host>
<script>
try {
var shadowHost = document.querySelector('my-host');
shadowRoot = shadowHost.attachShadow({mode: 'open'});
shadowRoot.innerHTML = '&lt;slot name="green" style="color: green; background: green"&gt;&lt;/slot&gt;';
} catch (exception) {
document.body.appendChild(document.createTextNode(exception));
}
</script>
</body></html>

View file

@ -0,0 +1,40 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head>
<title>CSS Scoping Module Level 1 - elements with a distribution list should generate boxes in the formatting tree.</title>
<link href="mailto:rniwa@webkit.org" rel="author" title="Ryosuke Niwa" />
<link href="http://www.w3.org/TR/css-scoping-1/#selectors-data-model" rel="help" />
<link href="reference/green-box.xht" rel="match" />
</head>
<body>
<style>
my-host {
display: block;
width: 100px;
height: 100px;
overflow: hidden;
}
div {
width: 100%;
height: 50%;
}
</style>
<p>Test passes if you see a single 100px by 100px green box below.</p>
<my-host>
<div slot="green" style="background: green;"></div>
<div style="background: red;">FAIL</div>
<div slot="green" style="background: green;"></div>
</my-host>
<script>
try {
var shadowHost = document.querySelector('my-host');
shadowRoot = shadowHost.attachShadow({mode: 'open'});
shadowRoot.innerHTML = '&lt;slot name="green"&gt;&lt;/slot&gt;';
} catch (exception) {
document.body.appendChild(document.createTextNode(exception));
}
</script>
</body></html>

View file

@ -0,0 +1,66 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head>
<title>CSS Scoping Module Level 1 - ::slotted pseudo element rule must apply to an element that got slotted via another slot</title>
<link href="mailto:rniwa@webkit.org" rel="author" title="Ryosuke Niwa" />
<link href="http://www.w3.org/TR/css-scoping-1/#slotted-pseudo" rel="help" />
<link href="reference/green-box.xht" rel="match" />
</head>
<body>
<style>
outer-host {
display: block;
width: 100px;
height: 100px;
background: red;
}
outer-host &gt; * {
display: block;
width: 100px;
height: 25px;
}
</style>
<p>Test passes if you see a single 100px by 100px green box below.</p>
<outer-host>
<span slot="outer">FAIL1</span>
<span slot="inner">FAIL2</span>
<span slot="both">FAIL3</span>
</outer-host>
<template id="outer-host-template">
<inner-host>
<style>
::slotted([slot=outer]) { background: green; color: green; }
::slotted([slot=both]) { background: green; }
span { display: block; width: 100px; height: 25px; }
</style>
<slot name="outer"></slot>
<slot name="inner"></slot>
<slot name="both"></slot>
<span slot="inner">FAIL4</span>
</inner-host>
</template>
<template id="inner-host-template">
<style>
::slotted([slot=inner]) { background: green; color: green; }
::slotted([slot=both]) { color: green; }
</style>
<slot></slot>
<slot name="inner"></slot>
</template>
<script>
try {
var outerHost = document.querySelector('outer-host');
outerShadow = outerHost.attachShadow({mode: 'closed'});
outerShadow.appendChild(document.getElementById('outer-host-template').content.cloneNode(true));
var innerHost = outerShadow.querySelector('inner-host');
innerShadow = innerHost.attachShadow({mode: 'closed'});
innerShadow.appendChild(document.getElementById('inner-host-template').content.cloneNode(true));
} catch (exception) {
document.body.appendChild(document.createTextNode(exception));
}
</script>
</body></html>

View file

@ -0,0 +1,55 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head>
<title>CSS Scoping Module Level 1 - :slotted pseudo element must allow selecting elements assigned to a slot element</title>
<link href="mailto:rniwa@webkit.org" rel="author" title="Ryosuke Niwa" />
<link href="http://www.w3.org/TR/css-scoping-1/#slotted-pseudo" rel="help" />
<link href="reference/green-box.xht" rel="match" />
</head>
<body>
<style>
my-host {
display: block;
width: 100px;
height: 100px;
color: red;
background: green;
}
my-host &gt; div, nested-host {
display: block;
width: 100px;
height: 25px;
}
</style>
<p>Test passes if you see a single 100px by 100px green box below.</p>
<my-host>
<div class="green">FAIL1</div>
<myelem><span>FAIL2</span></myelem>
<nested-host>
<span>FAIL3</span>
</nested-host>
<another-host>
<b>FAIL4</b>
</another-host>
</my-host>
<script>
try {
var shadowHost = document.querySelector('my-host');
shadowRoot = shadowHost.attachShadow({mode: 'open'});
shadowRoot.innerHTML = '&lt;slot&gt;&lt;/slot&gt;&lt;style&gt; ::slotted(.green), ::slotted(myelem) { color:green; } &lt;/style&gt;';
shadowHost = document.querySelector('nested-host');
shadowRoot = shadowHost.attachShadow({mode: 'open'});
shadowRoot.innerHTML = '&lt;style&gt; .mydiv ::slotted(*) { color:green; } &lt;/style&gt;&lt;div class=mydiv&gt;&lt;slot&gt;&lt;/slot&gt;&lt;/div&gt;';
shadowHost = document.querySelector('another-host');
shadowRoot = shadowHost.attachShadow({mode: 'open'});
shadowRoot.innerHTML = '&lt;style&gt; ::slotted(*) { color:green; } &lt;/style&gt;&lt;slot&gt;&lt;/slot&gt;';
} catch (exception) {
document.body.appendChild(document.createTextNode(exception));
}
</script>
</body></html>

View file

@ -0,0 +1,43 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head>
<title>CSS Scoping Module Level 1 - a selector outside a shadow tree should not match nodes inside the shadow tree</title>
<link href="mailto:rniwa@webkit.org" rel="author" title="Ryosuke Niwa" />
<link href="http://www.w3.org/TR/css-scoping-1/#selectors-data-model" rel="help" />
<link href="reference/green-box.xht" rel="match" />
</head>
<body>
<style>
my-host {
display: block;
width: 100px;
height: 100px;
background: green;
}
div {
width: 100%;
height: 100%;
background: red;
content: "FAIL";
}
</style>
<p>Test passes if you see a single 100px by 100px green box below.</p>
<my-host>
<div>FAIL</div>
</my-host>
<script>
try {
var shadowHost = document.querySelector('my-host');
shadowRoot = shadowHost.attachShadow({mode: 'open'});
shadowRoot.innerHTML = '&lt;div&gt;&lt;/div&gt;';
} catch (exception) {
document.body.appendChild(document.createTextNode(exception));
}
</script>
</body></html>

View file

@ -0,0 +1,37 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head>
<title>CSS Scoping Module Level 1 - a style rule inside a shadow tree doesn't affect the normal dom</title>
<link href="mailto:rniwa@webkit.org" rel="author" title="Ryosuke Niwa" />
<link href="http://www.w3.org/TR/css-scoping-1/#selectors-data-model" rel="help" />
<link href="reference/green-box.xht" rel="match" />
</head>
<body>
<style>
my-host {
display: block;
}
div {
width: 100px;
height: 100px;
background: green;
color:green;
}
</style>
<p>Test passes if you see a single 100px by 100px green box below.</p>
<my-host>
</my-host>
<div>FAIL</div>
<script>
try {
var shadowHost = document.querySelector('my-host');
shadowRoot = shadowHost.attachShadow({mode: 'open'});
shadowRoot.innerHTML = '&lt;style&gt; div { background: red; } &lt;/style&gt;';
} catch (exception) {
document.body.appendChild(document.createTextNode(exception));
}
</script>
</body></html>

View file

@ -0,0 +1,36 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head>
<title>CSS Scoping Module Level 1 - a selector inside a shadow tree is matched against nodes in the shadow tree</title>
<link href="mailto:rniwa@webkit.org" rel="author" title="Ryosuke Niwa" />
<link href="http://www.w3.org/TR/css-scoping-1/#selectors-data-model" rel="help" />
<link href="reference/green-box.xht" rel="match" />
</head>
<body>
<style>
my-host {
display: block;
width: 100px;
height: 100px;
}
div {
width: 100%; height: 100%; background: red;
}
</style>
<p>Test passes if you see a single 100px by 100px green box below.</p>
<my-host>
<div>FAIL</div>
</my-host>
<script>
try {
var shadowHost = document.querySelector('my-host');
shadowRoot = shadowHost.attachShadow({mode: 'open'});
shadowRoot.innerHTML = '&lt;div&gt;FAIL&lt;/div&gt;&lt;style&gt; div {width: 100px; height: 100px; background: green; color:green; } &lt;/style&gt;';
} catch (exception) {
document.body.appendChild(document.createTextNode(exception));
}
</script>
</body></html>

View file

@ -0,0 +1,11 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head>
<title>CSS Scoping Module Level 1 - A green box reference</title>
<link href="mailto:rniwa@webkit.org" rel="author" title="Ryosuke Niwa" />
</head>
<body>
<p>Test passes if you see a single 100px by 100px green box below.</p>
<div style="width: 100px; height: 100px; background: green;"></div>
</body></html>

View file

@ -0,0 +1,158 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>CSS Scoping Module Level 1 CR Test Suite Reftest Index</title>
<style type="text/css">
@import "http://www.w3.org/StyleSheets/TR/base.css";
@import "../indices.css";
</style>
</head>
<body>
<h1>CSS Scoping Module Level 1 CR Test Suite Reftest Index</h1>
<table width="100%">
<col id="test-column"></col>
<col id="ref-column"></col>
<col id="flags-column"></col>
<thead>
<tr>
<th>Test</th>
<th>Reference</th>
<th>Flags</th>
</tr>
</thead>
<tbody id="css-scoping-shadow-assigned-node-with-before-after" class="">
<tr>
<td rowspan="1" title="CSS Scoping Module Level 1 - ::before and ::after pseudo class' contents on a node assigned to a slot element must be rendered">
<a href="css-scoping-shadow-assigned-node-with-before-after.xht">css-scoping-shadow-assigned-node-with-before-after</a></td>
<td><a href="reference/green-box.xht">=</a> </td>
<td rowspan="1"></td>
</tr>
</tbody>
<tbody id="css-scoping-shadow-assigned-node-with-rules" class="">
<tr>
<td rowspan="1" title="CSS Scoping Module Level 1 - Only rules outside a shadow tree must apply to nodes assigned to a slot in the shadow tree.">
<a href="css-scoping-shadow-assigned-node-with-rules.xht">css-scoping-shadow-assigned-node-with-rules</a></td>
<td><a href="reference/green-box.xht">=</a> </td>
<td rowspan="1"></td>
</tr>
</tbody>
<tbody id="css-scoping-shadow-host-functional-rule" class="">
<tr>
<td rowspan="1" title="CSS Scoping Module Level 1 - :host() rules must apply to the shadow host.">
<a href="css-scoping-shadow-host-functional-rule.xht">css-scoping-shadow-host-functional-rule</a></td>
<td><a href="reference/green-box.xht">=</a> </td>
<td rowspan="1"></td>
</tr>
</tbody>
<tbody id="css-scoping-shadow-host-rule" class="">
<tr>
<td rowspan="1" title="CSS Scoping Module Level 1 - :host rules must apply to the shadow host.">
<a href="css-scoping-shadow-host-rule.xht">css-scoping-shadow-host-rule</a></td>
<td><a href="reference/green-box.xht">=</a> </td>
<td rowspan="1"></td>
</tr>
</tbody>
<tbody id="css-scoping-shadow-host-with-before-after" class="">
<tr>
<td rowspan="1" title="CSS Scoping Module Level 1 - ::before and ::after pseudo elements' contents on a shadow host must be rendered">
<a href="css-scoping-shadow-host-with-before-after.xht">css-scoping-shadow-host-with-before-after</a></td>
<td><a href="reference/green-box.xht">=</a> </td>
<td rowspan="1"></td>
</tr>
</tbody>
<tbody id="css-scoping-shadow-invisible-slot" class="">
<tr>
<td rowspan="1" title="CSS Scoping Module Level 1 - elements with a distribution list should generate boxes in the formatting tree.">
<a href="css-scoping-shadow-invisible-slot.xht">css-scoping-shadow-invisible-slot</a></td>
<td><a href="reference/green-box.xht">=</a> </td>
<td rowspan="1"></td>
</tr>
</tbody>
<tbody id="css-scoping-shadow-root-hides-children" class="">
<tr>
<td rowspan="1" title="CSS Scoping Module Level 1 - a shadow tree hides non-distributed children of the host">
<a href="css-scoping-shadow-root-hides-children.xht">css-scoping-shadow-root-hides-children</a></td>
<td><a href="reference/green-box.xht">=</a> </td>
<td rowspan="1"></td>
</tr>
</tbody>
<tbody id="css-scoping-shadow-slot" class="">
<tr>
<td rowspan="1" title="CSS Scoping Module Level 1 - elements with a distribution list should generate boxes in the formatting tree.">
<a href="css-scoping-shadow-slot.xht">css-scoping-shadow-slot</a></td>
<td><a href="reference/green-box.xht">=</a> </td>
<td rowspan="1"></td>
</tr>
</tbody>
<tbody id="css-scoping-shadow-slot-display-override" class="">
<tr>
<td rowspan="1" title="CSS Scoping Module Level 1 - overriding slot element's display value should generate boxes">
<a href="css-scoping-shadow-slot-display-override.xht">css-scoping-shadow-slot-display-override</a></td>
<td><a href="reference/green-box.xht">=</a> </td>
<td rowspan="1"></td>
</tr>
</tbody>
<tbody id="css-scoping-shadow-slot-fallback" class="">
<tr>
<td rowspan="1" title="CSS Scoping Module Level 1 - slot element without distributed nodes must render its fallback content">
<a href="css-scoping-shadow-slot-fallback.xht">css-scoping-shadow-slot-fallback</a></td>
<td><a href="reference/green-box.xht">=</a> </td>
<td rowspan="1"></td>
</tr>
</tbody>
<tbody id="css-scoping-shadow-slot-style" class="">
<tr>
<td rowspan="1" title="CSS Scoping Module Level 1 - Ensure that slot's style is inherited by slotted children">
<a href="css-scoping-shadow-slot-style.xht">css-scoping-shadow-slot-style</a></td>
<td><a href="reference/green-box.xht">=</a> </td>
<td rowspan="1"></td>
</tr>
</tbody>
<tbody id="css-scoping-shadow-slotted-nested" class="">
<tr>
<td rowspan="1" title="CSS Scoping Module Level 1 - ::slotted pseudo element rule must apply to an element that got slotted via another slot">
<a href="css-scoping-shadow-slotted-nested.xht">css-scoping-shadow-slotted-nested</a></td>
<td><a href="reference/green-box.xht">=</a> </td>
<td rowspan="1"></td>
</tr>
</tbody>
<tbody id="css-scoping-shadow-slotted-rule" class="">
<tr>
<td rowspan="1" title="CSS Scoping Module Level 1 - :slotted pseudo element must allow selecting elements assigned to a slot element">
<a href="css-scoping-shadow-slotted-rule.xht">css-scoping-shadow-slotted-rule</a></td>
<td><a href="reference/green-box.xht">=</a> </td>
<td rowspan="1"></td>
</tr>
</tbody>
<tbody id="css-scoping-shadow-with-outside-rules" class="">
<tr>
<td rowspan="1" title="CSS Scoping Module Level 1 - a selector outside a shadow tree should not match nodes inside the shadow tree">
<a href="css-scoping-shadow-with-outside-rules.xht">css-scoping-shadow-with-outside-rules</a></td>
<td><a href="reference/green-box.xht">=</a> </td>
<td rowspan="1"></td>
</tr>
</tbody>
<tbody id="css-scoping-shadow-with-rules" class="">
<tr>
<td rowspan="1" title="CSS Scoping Module Level 1 - a selector inside a shadow tree is matched against nodes in the shadow tree">
<a href="css-scoping-shadow-with-rules.xht">css-scoping-shadow-with-rules</a></td>
<td><a href="reference/green-box.xht">=</a> </td>
<td rowspan="1"></td>
</tr>
</tbody>
<tbody id="css-scoping-shadow-with-rules-no-style-leak" class="">
<tr>
<td rowspan="1" title="CSS Scoping Module Level 1 - a style rule inside a shadow tree doesn't affect the normal dom">
<a href="css-scoping-shadow-with-rules-no-style-leak.xht">css-scoping-shadow-with-rules-no-style-leak</a></td>
<td><a href="reference/green-box.xht">=</a> </td>
<td rowspan="1"></td>
</tr>
</tbody>
</table>
</body>
</html>

View file

@ -0,0 +1,17 @@
css-scoping-shadow-assigned-node-with-before-after.xht == reference/green-box.xht
css-scoping-shadow-assigned-node-with-rules.xht == reference/green-box.xht
css-scoping-shadow-host-functional-rule.xht == reference/green-box.xht
css-scoping-shadow-host-rule.xht == reference/green-box.xht
css-scoping-shadow-host-with-before-after.xht == reference/green-box.xht
css-scoping-shadow-invisible-slot.xht == reference/green-box.xht
css-scoping-shadow-root-hides-children.xht == reference/green-box.xht
css-scoping-shadow-slot.xht == reference/green-box.xht
css-scoping-shadow-slot-display-override.xht == reference/green-box.xht
css-scoping-shadow-slot-fallback.xht == reference/green-box.xht
css-scoping-shadow-slot-style.xht == reference/green-box.xht
css-scoping-shadow-slotted-nested.xht == reference/green-box.xht
css-scoping-shadow-slotted-rule.xht == reference/green-box.xht
css-scoping-shadow-with-outside-rules.xht == reference/green-box.xht
css-scoping-shadow-with-rules.xht == reference/green-box.xht
css-scoping-shadow-with-rules-no-style-leak.xht == reference/green-box.xht

View file

@ -0,0 +1,403 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head>
<title>Shadow DOM: CSS Style Rule cascading</title>
<meta content="Cascading order test for style rules from various shadow trees." name="assert" />
<link href="mailto:kochi@google.com" rel="author" title="Takayoshi Kochi" />
<link href="https://drafts.csswg.org/css-scoping-1/#shadow-cascading" rel="help" />
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
</head>
<body>
<div id="log"></div>
<script>
// Taken from the example in
// https://github.com/w3c/webcomponents/blob/gh-pages/proposals/Shadow-DOM-Cascade-Order.md
// https://github.com/w3c/webcomponents/issues/316
// https://github.com/w3c/webcomponents/blob/gh-pages/proposals/Shadow-DOM-Cascade-Order-in-v1.md
// with element renamed and style rule location changed.
//
// &lt;style&gt;my-item { color: red; }&lt;/style&gt;
// &lt;my-list&gt;
// &lt;:shadow&gt;
// &lt;style&gt;::slotted(my-item) { color: blue; }&lt;/style&gt;
// &lt;slot/&gt;
// &lt;/:shadow&gt;
// &lt;my-item style="color: green;"&gt;
// &lt;:shadow&gt;
// &lt;style&gt;:host { color: yellow; }&lt;/style&gt;
// &lt;slot/&gt;
// &lt;/:shadow&gt;
// ITEM
// &lt;/my-item&gt;
// &lt;/my-list&gt;
//
// There are 4 possible style rules that applies to &lt;my-item&gt; above:
// 1. document-wide style
// 2. ::slotted style in the shadow in &lt;my-list&gt;
// 3. :host style in the shadow in &lt;my-item&gt;
// 4. inline style within &lt;my-item&gt; itself.
//
// It could be possible to nest many more shadow trees in &lt;my-list&gt;,
// but to prevent the number of combination explosion, such case is covered
// in another test file.
//
// So testing cases where 2 style rules are competing,
// 4C2 = 6 combinations exist, multiplied by 4, which is the possible
// combination of applying "!important" for the 2 style rules.
function createMyList(mode, slottedStyle, hostStyle, inlineStyle) {
var myList = document.createElement('my-list');
var root = myList.attachShadow({'mode': mode});
root.innerHTML = '&lt;style&gt;' + slottedStyle + '&lt;/style&gt;&lt;slot&gt;&lt;/slot&gt;';
var myItem = document.createElement('my-item');
if (inlineStyle !== '')
myItem.setAttribute('style', inlineStyle);
myList.appendChild(myItem);
var root2 = myItem.attachShadow({'mode': mode});
root2.innerHTML = '&lt;style&gt;' + hostStyle + '&lt;/style&gt;&lt;slot&gt;&lt;/slot&gt;';
myItem.appendChild(document.createTextNode('ITEM'));
return myList;
}
function testCascadingOrder(mode) {
// In all test cases, the rule specified as "color: green" should win.
var testCases = [
// [A] Cases between document, ::slotteed, :host, and inline
{
title: 'A1. document vs ::slotted, document rule should win',
documentStyle: 'my-item { color: green; }',
slottedStyle: '::slotted(my-item) { color: red; }',
hostStyle: '',
inlineStyle: ''
},
{
title: 'A2. document vs :host, document rule should win',
documentStyle: 'my-item { color: green; }',
slottedStyle: '',
hostStyle: ':host { color: red; }',
inlineStyle: ''
},
{
title: 'A3. document vs inline, inline rule should win',
documentStyle: 'my-item { color: red; }',
slottedStyle: '',
hostStyle: '',
inlineStyle: 'color: green;'
},
{
title: 'A4. ::slotted vs :host, earlier in tree-of-trees rule should win',
documentStyle: '',
slottedStyle: '::slotted(my-item) { color: green; }',
hostStyle: ':host { color: red; }',
inlineStyle: ''
},
{
title: 'A5. ::slotted vs inline, inline rule should win',
documentStyle: '',
slottedStyle: '::slotted(my-item) { color: red; }',
hostStyle: '',
inlineStyle: 'color: green;'
},
{
title: 'A6. :host vs inline, inline rule should win',
documentStyle: '',
slottedStyle: '',
hostStyle: ':host { color: red; }',
inlineStyle: 'color: green;'
},
// [B] Stronger rule is still stronger with !important
{
title: 'B1. document with !important vs ::slotted, document rule should win',
documentStyle: 'my-item { color: green !important; }',
slottedStyle: '::slotted(my-item) { color: red; }',
hostStyle: '',
inlineStyle: ''
},
{
title: 'B2. document with !important vs :host, document rule should win',
documentStyle: 'my-item { color: green !important; }',
slottedStyle: '',
hostStyle: ':host { color: red; }',
inlineStyle: ''
},
{
title: 'B3. document vs inline with !important, inline rule should win',
documentStyle: 'my-item { color: red; }',
slottedStyle: '',
hostStyle: '',
inlineStyle: 'color: green !important;'
},
{
title: 'B4. ::slotted with !important vs :host, earlier in tree-of-trees rule should win',
documentStyle: '',
slottedStyle: '::slotted(my-item) { color: green !important; }',
hostStyle: ':host { color: red; }',
inlineStyle: ''
},
{
title: 'B5. ::slotted vs inline with !important, inline rule should win',
documentStyle: '',
slottedStyle: '::slotted(my-item) { color: green !important; }',
hostStyle: '',
inlineStyle: 'color: red;'
},
{
title: 'B6. :host vs inline with !important, inline rule should win',
documentStyle: '',
slottedStyle: '',
hostStyle: ':host { color: red; }',
inlineStyle: 'color: green !important;'
},
// [C] Weaker rule gets stronger with !important
{
title: 'C1. document vs ::slotted with !important, ::slotted rule should win',
documentStyle: 'my-item { color: red; }',
slottedStyle: '::slotted(my-item) { color: green !important; }',
hostStyle: '',
inlineStyle: ''
},
{
title: 'C2. document vs :host with !important, :host rule should win',
documentStyle: 'my-item { color: red; }',
slottedStyle: '',
hostStyle: ':host { color: green !important; }',
inlineStyle: ''
},
{
title: 'C3. document with !important vs inline, document rule should win',
documentStyle: 'my-item { color: green !important; }',
slottedStyle: '',
hostStyle: '',
inlineStyle: 'color: red;'
},
{
title: 'C4. ::slotted vs :host with !important, later in tree-of-trees rule should win',
documentStyle: '',
slottedStyle: '::slotted(my-item) { color: green !important; }',
hostStyle: ':host { color: red; }',
inlineStyle: ''
},
{
title: 'C5. ::slotted with !important vs inline, ::slotted rule should win',
documentStyle: '',
slottedStyle: '::slotted(my-item) { color: green !important; }',
hostStyle: '',
inlineStyle: 'color: red;'
},
{
title: 'C6. :host with !important vs inline, :host rule should win',
documentStyle: '',
slottedStyle: '',
hostStyle: ':host { color: green !important; }',
inlineStyle: 'color: red;'
},
// [D] Cases between document, ::slotteed, :host, and inline, both with !important
{
title: 'D1. document vs ::slotted both with !important, ::slotted rule should win',
documentStyle: 'my-item { color: red !important; }',
slottedStyle: '::slotted(my-item) { color: green !important; }',
hostStyle: '',
inlineStyle: ''
},
{
title: 'D2. document vs :host both with !important, :host rule should win',
documentStyle: 'my-item { color: red !important; }',
slottedStyle: '',
hostStyle: ':host { color: green !important; }',
inlineStyle: ''
},
{
title: 'D3. document vs inline both with !important, inline rule should win',
documentStyle: 'my-item { color: red !important; }',
slottedStyle: '',
hostStyle: '',
inlineStyle: 'color: green !important;'
},
{
title: 'D4. ::slotted vs :host both with !important, later in tree-of-trees rule should win',
documentStyle: '',
slottedStyle: '::slotted(my-item) { color: red !important; }',
hostStyle: ':host { color: green !important; }',
inlineStyle: ''
},
{
title: 'D5. ::slotted vs inline both with !important, ::slotted rule should win',
documentStyle: '',
slottedStyle: '::slotted(my-item) { color: green !important; }',
hostStyle: '',
inlineStyle: 'color: red !important;'
},
{
title: 'D6. :host vs inline both with !important, :host rule should win',
documentStyle: '',
slottedStyle: '',
hostStyle: ':host { color: green !important; }',
inlineStyle: 'color: red !important;'
},
// [E] Putting all together
{
title: 'E1. all style applied, inline rule should win',
documentStyle: 'my-item { color: red; }',
slottedStyle: '::slotted(my-item) { color: blue; }',
hostStyle: ':host { color: yellow; }',
inlineStyle: 'color: green;'
},
{
title: 'E2. all styles with !important applied, rule in the last tree-of-trees should win',
documentStyle: 'my-item { color: red !important; }',
slottedStyle: '::slotted(my-item) { color: blue !important; }',
hostStyle: ':host { color: green !important; }',
inlineStyle: 'color: yellow !important;'
},
];
for (var i = 0; i &lt; testCases.length; ++i) {
var testCase = testCases[i];
var documentStyle = document.createElement('style');
documentStyle.appendChild(document.createTextNode(testCase['documentStyle']));
document.head.appendChild(documentStyle);
var myList = createMyList(mode,
testCase['slottedStyle'], testCase['hostStyle'], testCase['inlineStyle']);
document.body.appendChild(myList);
test(function () {
var myItem = myList.querySelector('my-item');
assert_equals(window.getComputedStyle(myItem).color, 'rgb(0, 128, 0)',
testCase['title']);
}, testCase['title'] + ' for ' + mode + ' mode.');
myList.parentNode.removeChild(myList);
document.head.removeChild(documentStyle)
}
}
// Open or Closed should not make any difference in style application.
testCascadingOrder('open');
testCascadingOrder('closed');
// Taken from the example in
// https://github.com/w3c/webcomponents/blob/gh-pages/proposals/Shadow-DOM-Cascade-Order.md
// https://github.com/w3c/webcomponents/issues/316
// https://github.com/w3c/webcomponents/blob/gh-pages/proposals/Shadow-DOM-Cascade-Order-in-v1.md
// with element renamed and style rule location changed.
//
// &lt;style&gt;my-item { color: red; }&lt;/style&gt;
// &lt;my-list&gt;
// &lt;:shadow&gt;
// &lt;style&gt;::slotted(my-item) { color: blue; }&lt;/style&gt;
// &lt;div&gt;
// &lt;:shadow&gt;
// &lt;slot/&gt;
// &lt;/:shadow&gt;
// &lt;slot/&gt;
// &lt;/div&gt;
// &lt;/:shadow&gt;
// &lt;my-item style="color: green;"&gt;
// &lt;:shadow&gt;
// &lt;style&gt;:host { color: yellow; }&lt;/style&gt;
// &lt;slot/&gt;
// &lt;/:shadow&gt;
// ITEM
// &lt;/my-item&gt;
// &lt;/my-list&gt;
//
// The difference from the example tree above is that &lt;my-list&gt; has 2 levels of
// shadow trees, each with ::slotted(my-list) style rules.
function createMyListWith2LevelShadow(mode, slottedStyle1, slottedStyle2, hostStyle) {
var myList = document.createElement('my-list');
var root = myList.attachShadow({'mode': mode});
root.innerHTML = '&lt;style&gt;' + slottedStyle1 + '&lt;/style&gt;&lt;div&gt;&lt;slot&gt;&lt;/slot&gt;&lt;/div&gt;';
var div = root.querySelector('div');
var root2 = div.attachShadow({'mode': mode});
root2.innerHTML = '&lt;style&gt;' + slottedStyle2 + '&lt;/style&gt;&lt;slot&gt;&lt;/slot&gt;';
var myItem = document.createElement('my-item');
myList.appendChild(myItem);
var root3 = myItem.attachShadow({'mode': mode});
root3.innerHTML = '&lt;style&gt;' + hostStyle + '&lt;/style&gt;&lt;slot&gt;&lt;/slot&gt;';
myItem.appendChild(document.createTextNode('ITEM'));
return myList;
}
function testCascadingOrderWith2LevelShadow(mode) {
// In all test cases, the rule specified as "color: green" should win.
var testCases = [
{
title: 'F1. document vs others, document (the first rule in tree-of-trees order) rule should win',
documentStyle: 'my-item { color: green; }',
slottedStyle1: '::slotted(my-item) { color: red; }',
slottedStyle2: '::slotted(my-item) { color: red; }',
hostStyle: ':host { color: red; }',
},
{
title: 'F2. document with !important vs others, document rule should win',
documentStyle: 'my-item { color: green !important; }',
slottedStyle1: '::slotted(my-item) { color: red; }',
slottedStyle2: '::slotted(my-item) { color: red; }',
hostStyle: ':host { color: red; }',
},
{
title: 'F3. document vs ::slotted with !important, important rule should win',
documentStyle: 'my-item { color: red; }',
slottedStyle1: '::slotted(my-item) { color: green !important; }',
slottedStyle2: '::slotted(my-item) { color: red; }',
hostStyle: ':host { color: red; }',
},
{
title: 'F4. document vs ::slotted with !important, important rule should win',
documentStyle: 'my-item { color: red; }',
slottedStyle1: '::slotted(my-item) { color: red; }',
slottedStyle2: '::slotted(my-item) { color: green !important; }',
hostStyle: ':host { color: red; }',
},
{
title: 'F5. document vs :host with !important, important rule should win',
documentStyle: 'my-item { color: red; }',
slottedStyle1: '::slotted(my-item) { color: red; }',
slottedStyle2: '::slotted(my-item) { color: red; }',
hostStyle: ':host { color: green !important; }',
},
{
title: 'F6. all rules with !important, the last rule in tree-of-trees should win',
documentStyle: 'my-item { color: red !important; }',
slottedStyle1: '::slotted(my-item) { color: red !important; }',
slottedStyle2: '::slotted(my-item) { color: red !important; }',
hostStyle: ':host { color: green !important ; }',
}
];
for (var i = 0; i &lt; testCases.length; ++i) {
var testCase = testCases[i];
var documentStyle = document.createElement('style');
documentStyle.appendChild(document.createTextNode(testCase['documentStyle']));
document.head.appendChild(documentStyle);
var myList = createMyListWith2LevelShadow(mode,
testCase['slottedStyle1'], testCase['slottedStyle2'], testCase['hostStyle']);
document.body.appendChild(myList);
test(function () {
var myItem = myList.querySelector('my-item');
assert_equals(window.getComputedStyle(myItem).color, 'rgb(0, 128, 0)',
testCase['title']);
}, testCase['title'] + ' for ' + mode + ' mode.');
myList.parentNode.removeChild(myList);
document.head.removeChild(documentStyle)
}
}
// Open or Closed should not make any difference in style application.
testCascadingOrderWith2LevelShadow('open');
testCascadingOrderWith2LevelShadow('closed');
</script>
</body></html>

View file

@ -0,0 +1,44 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>CSS Scoping Module Level 1 CR Test Suite</title>
<style type="text/css">
@import "http://www.w3.org/StyleSheets/TR/base.css";
@import "../indices.css";
</style>
</head>
<body>
<h1>CSS Scoping Module Level 1 CR Test Suite By Chapter</h1>
<p>This index contains both
<a href="http://wiki.csswg.org/test/selftest">self-describing tests</a>
and reftests.
A separate <a href="reftest-toc.xht">alphabetical reftest index</a>
is provided for tests in <a href="http://wiki.csswg.org/test/reftest">reftest
format</a> along with the <a href="reftest.list">reftest manifest</a>.</p>
<table>
<tbody id="s1">
<tr><th><a href="chapter-1.xht">Chapter 1 -
Introduction</a></th>
<td>(0 Tests)</td></tr>
</tbody>
<tbody id="s2">
<tr><th><a href="chapter-2.xht">Chapter 2 -
Scoped Styles</a></th>
<td>(0 Tests)</td></tr>
</tbody>
<tbody id="s3">
<tr><th><a href="chapter-3.xht">Chapter 3 -
Shadow Encapsulation</a></th>
<td>(15 Tests)</td></tr>
</tbody>
<tbody id="s4">
<tr><th><a href="chapter-4.xht">Chapter 4 -
Fragmented Styling</a></th>
<td>(0 Tests)</td></tr>
</tbody>
</table>
</body>
</html>