Diff
Modified: trunk/LayoutTests/ChangeLog (286646 => 286647)
--- trunk/LayoutTests/ChangeLog 2021-12-08 08:28:46 UTC (rev 286646)
+++ trunk/LayoutTests/ChangeLog 2021-12-08 08:55:35 UTC (rev 286647)
@@ -1,3 +1,12 @@
+2021-12-08 Antti Koivisto <[email protected]>
+
+ [CSS Cascade Layers] import some new WPTs
+ https://bugs.webkit.org/show_bug.cgi?id=233947
+
+ Reviewed by Kimmo Kinnunen.
+
+ * TestExpectations:
+
2021-12-07 Saam Barati <[email protected]>
TypedArray prototype set should go down the fast path when using non clamped integer types of the same byte size
Modified: trunk/LayoutTests/TestExpectations (286646 => 286647)
--- trunk/LayoutTests/TestExpectations 2021-12-08 08:28:46 UTC (rev 286646)
+++ trunk/LayoutTests/TestExpectations 2021-12-08 08:55:35 UTC (rev 286647)
@@ -2140,6 +2140,11 @@
imported/w3c/web-platform-tests/css/css-cascade/important-prop.html [ ImageOnlyFailure ]
webkit.org/b/187093 [ Debug ] imported/w3c/web-platform-tests/css/css-cascade/all-prop-initial-xml.html [ Skip ]
+webkit.org/b/233937 imported/w3c/web-platform-tests/css/css-cascade/revert-layer-009.html [ ImageOnlyFailure ]
+webkit.org/b/233937 imported/w3c/web-platform-tests/css/css-cascade/revert-layer-010.html [ ImageOnlyFailure ]
+webkit.org/b/233937 imported/w3c/web-platform-tests/css/css-cascade/revert-layer-011.html [ ImageOnlyFailure ]
+webkit.org/b/233937 imported/w3c/web-platform-tests/css/css-cascade/revert-layer-012.html [ ImageOnlyFailure ]
+webkit.org/b/233944 imported/w3c/web-platform-tests/css/css-cascade/layer-statement-before-import.html [ Pass Failure ]
webkit.org/b/148801 imported/w3c/web-platform-tests/css/css-color/t422-rgba-onscreen-b.xht [ ImageOnlyFailure ]
webkit.org/b/148801 imported/w3c/web-platform-tests/css/css-color/t422-rgba-onscreen-multiple-boxes-c.xht [ ImageOnlyFailure ]
Modified: trunk/LayoutTests/imported/w3c/ChangeLog (286646 => 286647)
--- trunk/LayoutTests/imported/w3c/ChangeLog 2021-12-08 08:28:46 UTC (rev 286646)
+++ trunk/LayoutTests/imported/w3c/ChangeLog 2021-12-08 08:55:35 UTC (rev 286647)
@@ -1,3 +1,38 @@
+2021-12-08 Antti Koivisto <[email protected]>
+
+ [CSS Cascade Layers] import some new WPTs
+ https://bugs.webkit.org/show_bug.cgi?id=233947
+
+ Reviewed by Kimmo Kinnunen.
+
+ * web-platform-tests/css/css-cascade/idlharness-expected.txt: Added.
+ * web-platform-tests/css/css-cascade/idlharness.html: Added.
+ * web-platform-tests/css/css-cascade/layer-cssom-order-reverse-expected.txt: Added.
+ * web-platform-tests/css/css-cascade/layer-cssom-order-reverse.html: Added.
+ * web-platform-tests/css/css-cascade/layer-import-expected.txt:
+ * web-platform-tests/css/css-cascade/layer-import.html:
+ * web-platform-tests/css/css-cascade/layer-media-query-expected.txt:
+ * web-platform-tests/css/css-cascade/layer-media-query.html:
+ * web-platform-tests/css/css-cascade/layer-rules-cssom-expected.txt: Added.
+ * web-platform-tests/css/css-cascade/layer-rules-cssom.html: Added.
+ * web-platform-tests/css/css-cascade/layer-slotted-rule-expected.xht: Added.
+ * web-platform-tests/css/css-cascade/layer-slotted-rule.html: Added.
+ * web-platform-tests/css/css-cascade/layer-statement-before-import-expected.txt: Added.
+ * web-platform-tests/css/css-cascade/layer-statement-before-import.html: Added.
+ * web-platform-tests/css/css-cascade/parsing/layer-import-parsing-expected.txt: Added.
+ * web-platform-tests/css/css-cascade/parsing/layer-import-parsing.html: Added.
+ * web-platform-tests/css/css-cascade/parsing/w3c-import.log:
+ * web-platform-tests/css/css-cascade/revert-layer-009-expected.xht: Added.
+ * web-platform-tests/css/css-cascade/revert-layer-009.html: Added.
+ * web-platform-tests/css/css-cascade/revert-layer-010-expected.xht: Added.
+ * web-platform-tests/css/css-cascade/revert-layer-010.html: Added.
+ * web-platform-tests/css/css-cascade/revert-layer-011-expected.xht: Added.
+ * web-platform-tests/css/css-cascade/revert-layer-011.html: Added.
+ * web-platform-tests/css/css-cascade/revert-layer-012-expected.xht: Added.
+ * web-platform-tests/css/css-cascade/revert-layer-012.html: Added.
+ * web-platform-tests/css/css-cascade/w3c-import.log:
+ * web-platform-tests/interfaces/css-cascade-5.idl: Added.
+
2021-12-07 Martin Robinson <[email protected]>
perspective() <= 1px should be clamped to 1px
Added: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/idlharness-expected.txt (0 => 286647)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/idlharness-expected.txt (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/idlharness-expected.txt 2021-12-08 08:55:35 UTC (rev 286647)
@@ -0,0 +1,29 @@
+
+PASS idl_test setup
+PASS idl_test validation
+PASS Partial interface CSSImportRule: original interface defined
+PASS Partial interface CSSImportRule: valid exposure set
+PASS Partial interface CSSImportRule: member names are unique
+FAIL CSSLayerBlockRule interface: existence and properties of interface object assert_own_property: self does not have own property "CSSLayerBlockRule" expected property "CSSLayerBlockRule" missing
+FAIL CSSLayerBlockRule interface object length assert_own_property: self does not have own property "CSSLayerBlockRule" expected property "CSSLayerBlockRule" missing
+FAIL CSSLayerBlockRule interface object name assert_own_property: self does not have own property "CSSLayerBlockRule" expected property "CSSLayerBlockRule" missing
+FAIL CSSLayerBlockRule interface: existence and properties of interface prototype object assert_own_property: self does not have own property "CSSLayerBlockRule" expected property "CSSLayerBlockRule" missing
+FAIL CSSLayerBlockRule interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "CSSLayerBlockRule" expected property "CSSLayerBlockRule" missing
+FAIL CSSLayerBlockRule interface: existence and properties of interface prototype object's @@unscopables property assert_own_property: self does not have own property "CSSLayerBlockRule" expected property "CSSLayerBlockRule" missing
+FAIL CSSLayerBlockRule interface: attribute name assert_own_property: self does not have own property "CSSLayerBlockRule" expected property "CSSLayerBlockRule" missing
+FAIL CSSLayerBlockRule must be primary interface of block assert_own_property: self does not have own property "CSSLayerBlockRule" expected property "CSSLayerBlockRule" missing
+FAIL Stringification of block assert_class_string: class string of block expected "[object CSSLayerBlockRule]" but got "[object CSSRule]"
+FAIL CSSLayerBlockRule interface: block must inherit property "name" with the proper type assert_inherits: property "name" not found in prototype chain
+FAIL CSSLayerStatementRule interface: existence and properties of interface object assert_own_property: self does not have own property "CSSLayerStatementRule" expected property "CSSLayerStatementRule" missing
+FAIL CSSLayerStatementRule interface object length assert_own_property: self does not have own property "CSSLayerStatementRule" expected property "CSSLayerStatementRule" missing
+FAIL CSSLayerStatementRule interface object name assert_own_property: self does not have own property "CSSLayerStatementRule" expected property "CSSLayerStatementRule" missing
+FAIL CSSLayerStatementRule interface: existence and properties of interface prototype object assert_own_property: self does not have own property "CSSLayerStatementRule" expected property "CSSLayerStatementRule" missing
+FAIL CSSLayerStatementRule interface: existence and properties of interface prototype object's "constructor" property assert_own_property: self does not have own property "CSSLayerStatementRule" expected property "CSSLayerStatementRule" missing
+FAIL CSSLayerStatementRule interface: existence and properties of interface prototype object's @@unscopables property assert_own_property: self does not have own property "CSSLayerStatementRule" expected property "CSSLayerStatementRule" missing
+FAIL CSSLayerStatementRule interface: attribute nameList assert_own_property: self does not have own property "CSSLayerStatementRule" expected property "CSSLayerStatementRule" missing
+FAIL CSSLayerStatementRule must be primary interface of statement assert_own_property: self does not have own property "CSSLayerStatementRule" expected property "CSSLayerStatementRule" missing
+FAIL Stringification of statement assert_class_string: class string of statement expected "[object CSSLayerStatementRule]" but got "[object CSSRule]"
+FAIL CSSLayerStatementRule interface: statement must inherit property "nameList" with the proper type assert_inherits: property "nameList" not found in prototype chain
+FAIL CSSImportRule interface: attribute layerName assert_true: The prototype object must have a property "layerName" expected true got false
+FAIL CSSImportRule interface: layeredImport must inherit property "layerName" with the proper type assert_inherits: property "layerName" not found in prototype chain
+
Added: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/idlharness.html (0 => 286647)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/idlharness.html (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/idlharness.html 2021-12-08 08:55:35 UTC (rev 286647)
@@ -0,0 +1,36 @@
+<!doctype html>
+<title>CSS Cascade Layers IDL tests</title>
+<link rel="help" href=""
+<script src=""
+<script src=""
+<script src=""
+<script src=""
+
+<style>
+@layer bar, baz;
+@import url('data:text/css,') layer(qux);
+@layer foo { }
+</style>
+
+<script>
+ 'use strict';
+ idl_test(
+ ['css-cascade-5'],
+ ['cssom'],
+ idl_array => {
+ try {
+ self.statement = document.styleSheets[0].cssRules.item(0);
+ self.layeredImport = document.styleSheets[0].cssRules.item(1);
+ self.block = document.styleSheets[0].cssRules.item(2);
+ } catch (e) {
+ // Will be surfaced when any rule is undefined below.
+ }
+
+ idl_array.add_objects({
+ CSSLayerBlockRule: ['block'],
+ CSSLayerStatementRule: ['statement'],
+ CSSImportRule: ['layeredImport']
+ });
+ }
+ );
+</script>
Added: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/layer-cssom-order-reverse-expected.txt (0 => 286647)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/layer-cssom-order-reverse-expected.txt (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/layer-cssom-order-reverse-expected.txt 2021-12-08 08:55:35 UTC (rev 286647)
@@ -0,0 +1,10 @@
+Lorem ipsum
+Lorem ipsum
+
+PASS Insert layer invalidates style
+PASS Delete layer invalidates style
+PASS Insert layer invalidates @font-face
+PASS Delete layer invalidates @font-face
+FAIL Insert layer invalidates @property assert_equals: expected "green" but got ""
+FAIL Delete layer invalidates @property assert_equals: expected "green" but got ""
+
Added: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/layer-cssom-order-reverse.html (0 => 286647)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/layer-cssom-order-reverse.html (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/layer-cssom-order-reverse.html 2021-12-08 08:55:35 UTC (rev 286647)
@@ -0,0 +1,190 @@
+<!DOCTYPE html>
+<title>CSS Cascade Layers: at-rule and style invalidation on layer order changes</title>
+<link rel="help" href=""
+<link rel="author" href=""
+<link rel="stylesheet" href=""
+<script src=""
+<script src=""
+<style>
+#reference {
+ color: green;
+ font: 20px/1 ahem;
+ width: max-content;
+ --foo: green;
+}
+</style>
+
+<div id=target>Lorem ipsum</div>
+<div id=reference>Lorem ipsum</div>
+
+<script>
+const testCases = [
+ {
+ title: 'Insert layer invalidates style',
+ sheets: [
+ '',
+ `
+ @layer first {
+ #target { color: green; }
+ }
+ @layer second {
+ #target { color: red; }
+ }
+ `,
+ ],
+ update: function(sheets) {
+ sheets[0].insertRule('@layer second {}', 0);
+ },
+ property: 'color',
+ },
+ {
+ title: 'Delete layer invalidates style',
+ sheets: [
+ '@layer second {}',
+ `
+ @layer first {
+ #target { color: red; }
+ }
+ @layer second {
+ #target { color: green; }
+ }
+ `,
+ ],
+ update: function(sheets) {
+ sheets[0].deleteRule(0);
+ },
+ property: 'color',
+ },
+ {
+ title: 'Insert layer invalidates @font-face',
+ sheets: [
+ '',
+ `
+ @layer first {
+ @font-face {
+ font-family: custom;
+ src: local('Ahem'), url('/fonts/Ahem.ttf');
+ }
+ }
+ @layer second {
+ @font-face {
+ font-family: custom;
+ src: url('/fonts/noto/noto-sans-v8-latin-regular.woff') format('woff');
+ }
+ }
+ #target { font: 20px/1 custom; width: max-content; }
+ `,
+ ],
+ update: async function(sheets) {
+ await document.fonts.load('20px/1 ahem');
+ await document.fonts.load('20px/1 custom');
+ document.body.offsetLeft; // Force style recalc
+ sheets[0].insertRule('@layer second {}', 0);
+ await document.fonts.load('20px/1 custom');
+ },
+ property: 'width',
+ },
+ {
+ title: 'Delete layer invalidates @font-face',
+ sheets: [
+ '@layer second {}',
+ `
+ @layer first {
+ @font-face {
+ font-family: custom;
+ src: url('/fonts/noto/noto-sans-v8-latin-regular.woff') format('woff');
+ }
+ }
+ @layer second {
+ @font-face {
+ font-family: custom;
+ src: local('Ahem'), url('/fonts/Ahem.ttf');
+ }
+ }
+ #target { font: 20px/1 custom; width: max-content; }
+ `,
+ ],
+ update: async function(sheets) {
+ await document.fonts.load('20px/1 ahem');
+ await document.fonts.load('20px/1 custom');
+ document.body.offsetLeft; // Force style recalc
+ sheets[0].deleteRule(0);
+ await document.fonts.load('20px/1 custom');
+ },
+ property: 'width',
+ },
+ {
+ title: 'Insert layer invalidates @property',
+ sheets: [
+ '',
+ `
+ @layer first {
+ @property --foo {
+ syntax: '<color>';
+ inherits: false;
+ initial-value: green;
+ }
+ }
+ @layer second {
+ @property --foo {
+ syntax: '<color>';
+ inherits: false;
+ initial-value: red;
+ }
+ }
+ `,
+ ],
+ update: function(sheets) {
+ sheets[0].insertRule('@layer second {}', 0);
+ },
+ property: '--foo',
+ },
+ {
+ title: 'Delete layer invalidates @property',
+ sheets: [
+ '@layer second {}',
+ `
+ @layer first {
+ @property --foo {
+ syntax: '<color>';
+ inherits: false;
+ initial-value: red;
+ }
+ }
+ @layer second {
+ @property --foo {
+ syntax: '<color>';
+ inherits: false;
+ initial-value: green;
+ }
+ }
+ `,
+ ],
+ update: function(sheets) {
+ sheets[0].deleteRule(0);
+ },
+ property: '--foo',
+ },
+];
+
+for (let testCase of testCases) {
+ promise_test(async test => {
+ const styleElements = testCase.sheets.map(sheet => {
+ const element = document.createElement('style');
+ element.appendChild(document.createTextNode(sheet));
+ document.head.appendChild(element);
+ return element;
+ });
+ test.add_cleanup(() => {
+ for (let element of styleElements)
+ element.remove();
+ });
+
+ const sheets = styleElements.map(element => element.sheet);
+ await testCase.update(sheets);
+ const actual = getComputedStyle(target).getPropertyValue(testCase.property);
+ const expected = getComputedStyle(reference).getPropertyValue(testCase.property);
+ assert_equals(actual, expected);
+}, testCase.title);
+}
+</script>
Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/layer-import-expected.txt (286646 => 286647)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/layer-import-expected.txt 2021-12-08 08:28:46 UTC (rev 286646)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/layer-import-expected.txt 2021-12-08 08:55:35 UTC (rev 286647)
@@ -22,4 +22,5 @@
PASS D4 Layer statement with imports
PASS D5 Layer statement with imports
PASS D6 Layer statement with imports
+PASS E1 Named imports establish layer even with network errors
Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/layer-import.html (286646 => 286647)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/layer-import.html 2021-12-08 08:28:46 UTC (rev 286646)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/layer-import.html 2021-12-08 08:55:35 UTC (rev 286647)
@@ -252,6 +252,18 @@
}
`
},
+ {
+ title: 'E1 Named imports establish layer even with network errors',
+ style: `
+ @import "nonexist.css" layer(A);
+ @layer B {
+ target { color: green; }
+ }
+ @layer A {
+ target { color: red; }
+ }
+ `,
+ },
];
for (let testCase of testCases) {
@@ -264,6 +276,7 @@
await new Promise(resolve => {
styleElement._onload_ = resolve;
+ styleElement._onerror_ = resolve;
document.head.append(styleElement);
});
Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/layer-media-query-expected.txt (286646 => 286647)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/layer-media-query-expected.txt 2021-12-08 08:28:46 UTC (rev 286646)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/layer-media-query-expected.txt 2021-12-08 08:55:35 UTC (rev 286647)
@@ -7,4 +7,5 @@
PASS C1 Reordering
PASS C2 Reordering
PASS C3 Reordering
+FAIL C4 Reordering assert_equals: C4 Reordering expected "rgb(0, 128, 0)" but got "rgb(255, 0, 0)"
Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/layer-media-query.html (286646 => 286647)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/layer-media-query.html 2021-12-08 08:28:46 UTC (rev 286646)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/layer-media-query.html 2021-12-08 08:55:35 UTC (rev 286647)
@@ -2,7 +2,7 @@
<html>
<head>
<title>CSS Cascade Layers: Media queries</title>
-<meta name="assert" content="Import functionality of CSS Cascade Layers">
+<meta name="assert" content="CSS Cascade Layers nested in Media Queries">
<link rel="author" title="Antti Koivisto" href=""
<link rel="help" href=""
<script src=""
@@ -20,6 +20,7 @@
"basic-red.css": `
target { color: red; }
`,
+ "empty.css": "",
};
// For 300px wide iframe the target should be red and for 500px green.
@@ -118,6 +119,21 @@
}
`
},
+ {
+ title: 'C4 Reordering',
+ style: `
+ @import url(empty.css) layer(B) (max-width: 300px);
+ @import url(empty.css) layer(A) (max-width: 300px);
+ @import url(empty.css) layer(A) (min-width: 500px);
+ @import url(empty.css) layer(B) (min-width: 500px);
+ @layer A {
+ target { color: red; }
+ }
+ @layer B {
+ target { color: green; }
+ }
+ `
+ },
];
let iframe = document.querySelector("iframe");
Added: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/layer-rules-cssom-expected.txt (0 => 286647)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/layer-rules-cssom-expected.txt (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/layer-rules-cssom-expected.txt 2021-12-08 08:55:35 UTC (rev 286647)
@@ -0,0 +1,11 @@
+
+FAIL Basic layer block name assert_implements: undefined
+FAIL Anonymous layer block name assert_implements: undefined
+FAIL Basic layer statement name assert_implements: undefined
+FAIL Layer statement with multiple names assert_implements: undefined
+FAIL Nested layer block names assert_implements: undefined
+FAIL Nested layer statement name lists assert_implements: undefined
+FAIL Import into anonymous layer assert_implements: undefined
+FAIL Import into named layer assert_implements: undefined
+FAIL Import without layer assert_implements: undefined
+
Added: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/layer-rules-cssom.html (0 => 286647)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/layer-rules-cssom.html (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/layer-rules-cssom.html 2021-12-08 08:55:35 UTC (rev 286647)
@@ -0,0 +1,104 @@
+<!DOCTYPE html>
+<title>The CSSOM API for Cascade Layers</title>
+<link rel="help" href=""
+<link rel="author" href=""
+<script src=""
+<script src=""
+<script>
+const testCases = [
+ {
+ style: `@layer foo { }`,
+ expectedNames: ['foo'],
+ title: 'Basic layer block name',
+ },
+ {
+ style: `@layer { }`,
+ expectedNames: [''],
+ title: 'Anonymous layer block name',
+ },
+ {
+ style: `
+ @layer foo;
+ `,
+ expectedNames: [['foo']],
+ title: 'Basic layer statement name',
+ },
+ {
+ style: `
+ @layer foo, bar;
+ `,
+ expectedNames: [['foo', 'bar']],
+ title: 'Layer statement with multiple names',
+ },
+ {
+ style: `
+ @layer outer {
+ @layer foo.bar { }
+ }
+ @layer outer.foo.bar { }
+ `,
+ expectedNames: ['outer', 'foo.bar', 'outer.foo.bar'],
+ title: 'Nested layer block names',
+ },
+ {
+ style: `
+ @layer outer {
+ @layer foo.bar, baz;
+ }
+ @layer outer.foo.bar, outer.baz;
+ `,
+ expectedNames: ['outer', ['foo.bar', 'baz'], ['outer.foo.bar', 'outer.baz']],
+ title: 'Nested layer statement name lists',
+ },
+ {
+ style: `
+ @import url('data:text/css,') layer;
+ `,
+ expectedNames: [''],
+ title: 'Import into anonymous layer',
+ },
+ {
+ style: `
+ @import url('data:text/css,') layer(foo);
+ `,
+ expectedNames: ['foo'],
+ title: 'Import into named layer',
+ },
+ {
+ style: `
+ @import url('data:text/css,');
+ `,
+ expectedNames: [null],
+ title: 'Import without layer',
+ },
+];
+
+for (let testCase of testCases) {
+ const style = document.createElement('style');
+ style.appendChild(document.createTextNode(testCase.style));
+ document.head.appendChild(style);
+
+ test(function () {
+ assert_implements(window.CSSLayerBlockRule);
+ assert_implements(window.CSSLayerStatementRule);
+
+ let index = 0;
+ function compareNames(ruleOrSheet) {
+ if (ruleOrSheet instanceof CSSLayerBlockRule)
+ assert_equals(ruleOrSheet.name, testCase.expectedNames[index++]);
+ else if (ruleOrSheet instanceof CSSImportRule)
+ assert_equals(ruleOrSheet.layerName, testCase.expectedNames[index++]);
+ else if (ruleOrSheet instanceof CSSLayerStatementRule)
+ assert_array_equals(ruleOrSheet.nameList, testCase.expectedNames[index++]);
+ if (ruleOrSheet.cssRules) {
+ for (let i = 0; i < ruleOrSheet.cssRules.length; ++i)
+ compareNames(ruleOrSheet.cssRules.item(i));
+ }
+ }
+ compareNames(style.sheet);
+ assert_equals(index, testCase.expectedNames.length);
+ }, testCase.title);
+
+ style.remove();
+}
+</script>
Added: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/layer-slotted-rule-expected.xht (0 => 286647)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/layer-slotted-rule-expected.xht (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/layer-slotted-rule-expected.xht 2021-12-08 08:55:35 UTC (rev 286647)
@@ -0,0 +1,19 @@
+<!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 Reftest Reference</title>
+ <link rel="author" title="Gérard Talbot" href="" />
+ <style type="text/css"><![CDATA[
+ div
+ {
+ background-color: green;
+ height: 100px;
+ width: 100px;
+ }
+ ]]></style>
+ </head>
+ <body>
+ <p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+ <div></div>
+ </body>
+</html>
Added: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/layer-slotted-rule.html (0 => 286647)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/layer-slotted-rule.html (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/layer-slotted-rule.html 2021-12-08 08:55:35 UTC (rev 286647)
@@ -0,0 +1,33 @@
+<!DOCTYPE html>
+<title>::slotted rules should be associated with the correct cascade layers</title>
+<link rel="help" href=""
+<link rel="author" href=""
+<link rel="match" href=""
+<style>
+#target {
+ width: 100px;
+ height: 100px;
+}
+</style>
+
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div id="host">
+ <div id="target"></target>
+</div>
+
+<script>
+const host = document.getElementById('host');
+host.attachShadow({mode: 'open'}).innerHTML = `
+<style>
+@layer {
+ ::slotted(*) {
+ background-color: green !important;
+ }
+}
+::slotted(*) {
+ background-color: red !important;
+}
+</style>
+<slot></slot>
+`;
+</script>
Added: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/layer-statement-before-import-expected.txt (0 => 286647)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/layer-statement-before-import-expected.txt (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/layer-statement-before-import-expected.txt 2021-12-08 08:55:35 UTC (rev 286647)
@@ -0,0 +1,12 @@
+CONSOLE MESSAGE: TypeError: Illegal constructor
+
+Harness Error (FAIL), message = TypeError: Illegal constructor
+
+FAIL length and item assert_equals: expected "rgb(0, 128, 0)" but got "rgb(0, 0, 0)"
+FAIL insertRule before imports assert_equals: expected "rgb(0, 128, 0)" but got "rgb(0, 0, 0)"
+FAIL insertRule after imports assert_equals: expected "rgb(0, 128, 0)" but got "rgb(0, 0, 0)"
+FAIL insert other rules to pre-import layer statements fails assert_equals: expected "rgb(0, 128, 0)" but got "rgb(0, 0, 0)"
+FAIL insert other rules before the first layer statement without imports The operation would yield an incorrect node tree.
+FAIL deleteRule before imports assert_equals: expected "rgb(0, 128, 0)" but got "rgb(0, 0, 0)"
+FAIL deleteRule after imports assert_equals: expected "rgb(0, 128, 0)" but got "rgb(0, 0, 0)"
+
Added: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/layer-statement-before-import.html (0 => 286647)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/layer-statement-before-import.html (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/layer-statement-before-import.html 2021-12-08 08:55:35 UTC (rev 286647)
@@ -0,0 +1,184 @@
+<!DOCTYPE html>
+<title>CSS Cascade Layers: Empty layer statements before import rules</title>
+<link rel="author" href=""
+<link rel="help" href=""
+<script src=""
+<script src=""
+
+<div id="target"></div>
+<div id="reference" style="color: green"></div>
+
+<script>
+// In all test cases, the 'color' property value of #target should be green.
+
+const testCases = [
+ {
+ title: 'length and item',
+ style: `
+ @layer first, second;
+ @import url(data:text/css,);
+ @layer second {
+ #target { color: green; }
+ }
+ @layer first {
+ #target { color: red; }
+ }
+ `,
+ operations: function(sheet) {
+ assert_equals(sheet.cssRules.length, 4);
+ assert_equals(sheet.cssRules.item(0).cssText, '@layer first, second;');
+ assert_equals(sheet.cssRules.item(1).cssText, `@import url("data:text/css,");`);
+ assert_equals(sheet.cssRules.item(2).cssText,
+ '@layer second {\n #target { color: green; }\n}');
+ assert_equals(sheet.cssRules.item(3).cssText,
+ '@layer first {\n #target { color: red; }\n}');
+ }
+ },
+ {
+ title: 'insertRule before imports',
+ style: `
+ @import url(data:text/css,);
+ @layer second {
+ #target { color: green; }
+ }
+ @layer first {
+ #target { color: red; }
+ }
+ `,
+ operations: function(sheet) {
+ sheet.insertRule('@layer first, second', 0);
+ }
+ },
+ {
+ title: 'insertRule after imports',
+ style: `
+ @layer first, second;
+ @import url(data:text/css,);
+ @layer first {
+ #target { color: red; }
+ }
+ `,
+ operations: function(sheet) {
+ sheet.insertRule('@layer second { #target { color: green; } }', 2);
+ }
+ },
+ {
+ title: 'insert other rules to pre-import layer statements fails',
+ style: `
+ @layer first, second;
+ @import url(data:text/css,);
+ @layer second {
+ #target { color: green; }
+ }
+ @layer first {
+ #target { color: red; }
+ }
+ `,
+ operations: function(sheet) {
+ assert_throws_dom('HierarchyRequestError',
+ () => sheet.insertRule('#target { color: red !important; }', 0));
+ assert_throws_dom('HierarchyRequestError',
+ () => sheet.insertRule('#target { color: red !important; }', 1));
+ }
+ },
+ {
+ title: 'insert other rules before the first layer statement without imports',
+ style: `
+ @layer first, second;
+ @layer second {
+ #target { color: red !important; }
+ }
+ `,
+ operations: function(sheet) {
+ sheet.insertRule(`@layer first {
+ #target { color: green !important; }
+ }`, 0);
+ }
+ },
+ {
+ title: 'deleteRule before imports',
+ style: `
+ @layer second, first;
+ @import url(data:text/css,);
+ @layer first {
+ #target { color: red; }
+ }
+ @layer second {
+ #target { color: green; }
+ }
+ `,
+ operations: function(sheet) {
+ sheet.deleteRule(0);
+ }
+ },
+ {
+ title: 'deleteRule after imports',
+ style: `
+ @layer first, second;
+ @import url(data:text/css,);
+ @layer second {
+ #target { color: green; }
+ }
+ @layer first {
+ #target { color: red; }
+ }
+ #target {
+ color: red;
+ }
+ `,
+ operations: function(sheet) {
+ sheet.deleteRule(4);
+ }
+ },
+ {
+ title: 'replaceSync clears stale layer statements',
+ style: `
+ @layer second, first;
+ @layer second {
+ #target { color: green; }
+ }
+ @layer first {
+ #target { color: red; }
+ }
+ `,
+ operations: function(sheet) {
+ sheet.replaceSync(`
+ @layer first {
+ #target { color: red; }
+ }
+ @layer second {
+ #target { color: green; }
+ }
+ `);
+ },
+ constructedStyleSheet: true
+ }
+];
+
+const target = document.getElementById('target');
+const reference = document.getElementById('reference');
+
+for (let testCase of testCases) {
+ let styleElement;
+ let sheet;
+ if (!testCase.constructedStyleSheet) {
+ styleElement = document.createElement('style');
+ styleElement.textContent = testCase.style;
+ document.head.append(styleElement);
+ sheet = styleElement.sheet;
+ } else {
+ sheet = new CSSStyleSheet();
+ sheet.replaceSync(testCase.style);
+ document.adoptedStyleSheets = [sheet];
+ }
+
+ test(() => {
+ testCase.operations(sheet);
+ assert_equals(getComputedStyle(target).color, getComputedStyle(reference).color);
+ },testCase.title);
+
+ if (styleElement)
+ styleElement.remove();
+ document.adoptedStyleSheets = [];
+}
+</script>
Added: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/parsing/layer-import-parsing-expected.txt (0 => 286647)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/parsing/layer-import-parsing-expected.txt (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/parsing/layer-import-parsing-expected.txt 2021-12-08 08:55:35 UTC (rev 286647)
@@ -0,0 +1,15 @@
+
+FAIL @import url("nonexist.css") layer; should be a valid layered import rule assert_equals: serialization should be canonical expected "@import url(\"nonexist.css\") layer;" but got "@import url(\"nonexist.css\");"
+FAIL @import url("nonexist.css") layer(A); should be a valid layered import rule assert_equals: serialization should be canonical expected "@import url(\"nonexist.css\") layer(A);" but got "@import url(\"nonexist.css\");"
+FAIL @import url("nonexist.css") layer(A.B); should be a valid layered import rule assert_equals: serialization should be canonical expected "@import url(\"nonexist.css\") layer(A.B);" but got "@import url(\"nonexist.css\");"
+FAIL @import url(nonexist.css) layer; should be a valid layered import rule assert_equals: serialization should be canonical expected "@import url(\"nonexist.css\") layer;" but got "@import url(\"nonexist.css\");"
+FAIL @import url(nonexist.css) layer(A); should be a valid layered import rule assert_equals: serialization should be canonical expected "@import url(\"nonexist.css\") layer(A);" but got "@import url(\"nonexist.css\");"
+FAIL @import url(nonexist.css) layer(A.B); should be a valid layered import rule assert_equals: serialization should be canonical expected "@import url(\"nonexist.css\") layer(A.B);" but got "@import url(\"nonexist.css\");"
+FAIL @import "nonexist.css" layer; should be a valid layered import rule assert_equals: serialization should be canonical expected "@import url(\"nonexist.css\") layer;" but got "@import url(\"nonexist.css\");"
+FAIL @import "nonexist.css" layer(A); should be a valid layered import rule assert_equals: serialization should be canonical expected "@import url(\"nonexist.css\") layer(A);" but got "@import url(\"nonexist.css\");"
+FAIL @import "nonexist.css" layer(A.B); should be a valid layered import rule assert_equals: serialization should be canonical expected "@import url(\"nonexist.css\") layer(A.B);" but got "@import url(\"nonexist.css\");"
+FAIL @import url("nonexist.css") layer(); should still be a valid import rule with an invalid layer declaration assert_not_equals: invalid layer declaration should be parsed as <general-enclosed> media query got disallowed value 0
+FAIL @import url("nonexist.css") layer(A B); should still be a valid import rule with an invalid layer declaration assert_not_equals: invalid layer declaration should be parsed as <general-enclosed> media query got disallowed value 0
+FAIL @import url("nonexist.css") layer(A . B); should still be a valid import rule with an invalid layer declaration assert_not_equals: invalid layer declaration should be parsed as <general-enclosed> media query got disallowed value 0
+FAIL @import url("nonexist.css") layer(A, B, C); should still be a valid import rule with an invalid layer declaration assert_not_equals: invalid layer declaration should be parsed as <general-enclosed> media query got disallowed value 0
+
Added: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/parsing/layer-import-parsing.html (0 => 286647)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/parsing/layer-import-parsing.html (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/parsing/layer-import-parsing.html 2021-12-08 08:55:35 UTC (rev 286647)
@@ -0,0 +1,80 @@
+<!doctype html>
+<meta charset="utf-8">
+<title>@import rule with layer parsing / serialization</title>
+<link rel="author" href=""
+<link rel="help" href=""
+<script src=""
+<script src=""
+<script>
+ function setupSheet(rule) {
+ const style = document.createElement("style");
+ document.head.append(style);
+ const {sheet} = style;
+ document.head.removeChild(style);
+ const {cssRules} = sheet;
+
+ assert_equals(cssRules.length, 0, "Sheet should have no rules");
+ sheet.insertRule(rule);
+ assert_equals(cssRules.length, 1, "Sheet should have 1 rule");
+
+ return {sheet, cssRules};
+ }
+
+ function test_valid_layer_import(rule, serialized) {
+ if (serialized === undefined)
+ serialized = rule;
+
+ test(function() {
+ const {sheet, cssRules} = setupSheet(rule);
+
+ const serialization = cssRules[0].cssText;
+ assert_equals(serialization, serialized, 'serialization should be canonical');
+
+ const media = cssRules[0].media;
+ assert_equals(media.length, 0, 'layer() should be valid');
+
+ sheet.deleteRule(0);
+ assert_equals(cssRules.length, 0, 'Sheet should have no rule');
+ sheet.insertRule(serialization);
+ assert_equals(cssRules.length, 1, 'Sheet should have 1 rule');
+
+ assert_equals(cssRules[0].cssText, serialization, 'serialization should round-trip');
+ }, rule + ' should be a valid layered import rule');
+ }
+
+ function test_invalid_layer_import(rule) {
+ test(function() {
+ const {sheet, cssRules} = setupSheet(rule);
+
+ const media = cssRules[0].media;
+ assert_not_equals(media.length, 0,
+ 'invalid layer declaration should be parsed as <general-enclosed> media query');
+
+ sheet.deleteRule(0);
+ assert_equals(cssRules.length, 0, 'Sheet should have no rule');
+ }, rule + ' should still be a valid import rule with an invalid layer declaration');
+ }
+
+ test_valid_layer_import('@import url("nonexist.css") layer;');
+ test_valid_layer_import('@import url("nonexist.css") layer(A);');
+ test_valid_layer_import('@import url("nonexist.css") layer(A.B);');
+
+ test_valid_layer_import('@import url(nonexist.css) layer;',
+ '@import url("nonexist.css") layer;');
+ test_valid_layer_import('@import url(nonexist.css) layer(A);',
+ '@import url("nonexist.css") layer(A);');
+ test_valid_layer_import('@import url(nonexist.css) layer(A.B);',
+ '@import url("nonexist.css") layer(A.B);');
+
+ test_valid_layer_import('@import "nonexist.css" layer;',
+ '@import url("nonexist.css") layer;');
+ test_valid_layer_import('@import "nonexist.css" layer(A);',
+ '@import url("nonexist.css") layer(A);');
+ test_valid_layer_import('@import "nonexist.css" layer(A.B);',
+ '@import url("nonexist.css") layer(A.B);');
+
+ test_invalid_layer_import('@import url("nonexist.css") layer();');
+ test_invalid_layer_import('@import url("nonexist.css") layer(A B);');
+ test_invalid_layer_import('@import url("nonexist.css") layer(A . B);');
+ test_invalid_layer_import('@import url("nonexist.css") layer(A, B, C);');
+</script>
Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/parsing/w3c-import.log (286646 => 286647)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/parsing/w3c-import.log 2021-12-08 08:28:46 UTC (rev 286646)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/parsing/w3c-import.log 2021-12-08 08:55:35 UTC (rev 286647)
@@ -16,4 +16,5 @@
List of files:
/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/parsing/all-invalid.html
/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/parsing/all-valid.html
+/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/parsing/layer-import-parsing.html
/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/parsing/layer.html
Added: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/revert-layer-009-expected.xht (0 => 286647)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/revert-layer-009-expected.xht (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/revert-layer-009-expected.xht 2021-12-08 08:55:35 UTC (rev 286647)
@@ -0,0 +1,19 @@
+<!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 Reftest Reference</title>
+ <link rel="author" title="Gérard Talbot" href="" />
+ <style type="text/css"><![CDATA[
+ div
+ {
+ background-color: green;
+ height: 100px;
+ width: 100px;
+ }
+ ]]></style>
+ </head>
+ <body>
+ <p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+ <div></div>
+ </body>
+</html>
Added: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/revert-layer-009.html (0 => 286647)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/revert-layer-009.html (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/revert-layer-009.html 2021-12-08 08:55:35 UTC (rev 286647)
@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<title>CSS Cascade Layers: 'revert-layer' from the style attribute to other style sheets</title>
+<link rel="help" href=""
+<link rel="author" href=""
+<link rel="match" href=""
+
+<style>
+#target {
+ width: 100px;
+ height: 100px;
+ background-color: green;
+}
+</style>
+
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div id="target" style="background-color: red; background-color: revert-layer"></div>
Added: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/revert-layer-010-expected.xht (0 => 286647)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/revert-layer-010-expected.xht (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/revert-layer-010-expected.xht 2021-12-08 08:55:35 UTC (rev 286647)
@@ -0,0 +1,19 @@
+<!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 Reftest Reference</title>
+ <link rel="author" title="Gérard Talbot" href="" />
+ <style type="text/css"><![CDATA[
+ div
+ {
+ background-color: green;
+ height: 100px;
+ width: 100px;
+ }
+ ]]></style>
+ </head>
+ <body>
+ <p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+ <div></div>
+ </body>
+</html>
Added: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/revert-layer-010.html (0 => 286647)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/revert-layer-010.html (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/revert-layer-010.html 2021-12-08 08:55:35 UTC (rev 286647)
@@ -0,0 +1,22 @@
+<!DOCTYPE html>
+<title>CSS Cascade Layers: 'revert-layer' from animation origin to author origin</title>
+<link rel="help" href=""
+<link rel="author" href=""
+<link rel="match" href=""
+
+<style>
+#target {
+ width: 150px;
+ height: 100px;
+ background-color: green;
+ animation: anim linear 2s -1s paused;
+}
+
+@keyframes anim {
+ from { width: 50px; }
+ to { width: revert-layer; }
+}
+</style>
+
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div id="target"></div>
Added: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/revert-layer-011-expected.xht (0 => 286647)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/revert-layer-011-expected.xht (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/revert-layer-011-expected.xht 2021-12-08 08:55:35 UTC (rev 286647)
@@ -0,0 +1,19 @@
+<!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 Reftest Reference</title>
+ <link rel="author" title="Gérard Talbot" href="" />
+ <style type="text/css"><![CDATA[
+ div
+ {
+ background-color: green;
+ height: 100px;
+ width: 100px;
+ }
+ ]]></style>
+ </head>
+ <body>
+ <p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+ <div></div>
+ </body>
+</html>
Added: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/revert-layer-011.html (0 => 286647)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/revert-layer-011.html (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/revert-layer-011.html 2021-12-08 08:55:35 UTC (rev 286647)
@@ -0,0 +1,29 @@
+<!DOCTYPE html>
+<title>CSS Cascade Layers: 'revert-layer' from animation origin to author origin on custom property</title>
+<link rel="help" href=""
+<link rel="author" href=""
+<link rel="match" href=""
+
+<style>
+#target {
+ width: var(--x);
+ --x: 150px;
+ height: 100px;
+ background-color: green;
+ animation: anim linear 2s -1s paused;
+}
+
+@property --x {
+ syntax: '<length>';
+ initial-value: 0px;
+ inherits: false;
+}
+
+@keyframes anim {
+ from { --x: 50px; }
+ to { --x: revert-layer; }
+}
+</style>
+
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div id="target"></div>
Added: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/revert-layer-012-expected.xht (0 => 286647)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/revert-layer-012-expected.xht (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/revert-layer-012-expected.xht 2021-12-08 08:55:35 UTC (rev 286647)
@@ -0,0 +1,19 @@
+<!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 Reftest Reference</title>
+ <link rel="author" title="Gérard Talbot" href="" />
+ <style type="text/css"><![CDATA[
+ div
+ {
+ background-color: green;
+ height: 100px;
+ width: 100px;
+ }
+ ]]></style>
+ </head>
+ <body>
+ <p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+ <div></div>
+ </body>
+</html>
Added: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/revert-layer-012.html (0 => 286647)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/revert-layer-012.html (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/revert-layer-012.html 2021-12-08 08:55:35 UTC (rev 286647)
@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<title>CSS Cascade Layers: important 'revert-layer' from the style attribute to other style sheets</title>
+<link rel="help" href=""
+<link rel="author" href=""
+<link rel="match" href=""
+
+<style>
+#target {
+ width: 100px;
+ height: 100px;
+ background-color: green !important;
+}
+</style>
+
+<p>Test passes if there is a filled green square and <strong>no red</strong>.</p>
+<div id="target" style="background-color: red !important; background-color: revert-layer !important"></div>
Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/w3c-import.log (286646 => 286647)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/w3c-import.log 2021-12-08 08:28:46 UTC (rev 286646)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/w3c-import.log 2021-12-08 08:55:35 UTC (rev 286647)
@@ -34,6 +34,7 @@
/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/all-prop-unset-color.html
/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/all-prop-unset-visited-expected.html
/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/all-prop-unset-visited.html
+/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/idlharness.html
/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/import-conditional-001-expected.xht
/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/import-conditional-001.html
/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/important-prop-expected.html
@@ -45,12 +46,17 @@
/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/initial-color-background-001.html
/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/layer-basic.html
/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/layer-counter-style-override.html
+/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/layer-cssom-order-reverse.html
/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/layer-font-face-override.html
/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/layer-import.html
/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/layer-keyframes-override.html
/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/layer-media-query.html
/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/layer-property-override.html
+/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/layer-rules-cssom.html
/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/layer-scroll-timeline-override.html
+/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/layer-slotted-rule-expected.xht
+/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/layer-slotted-rule.html
+/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/layer-statement-before-import.html
/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/layer-stylesheet-sharing-expected.html
/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/layer-stylesheet-sharing.html
/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/layer-vs-inline-style.html
@@ -70,6 +76,14 @@
/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/revert-layer-007-expected.xht
/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/revert-layer-007.html
/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/revert-layer-008.html
+/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/revert-layer-009-expected.xht
+/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/revert-layer-009.html
+/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/revert-layer-010-expected.xht
+/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/revert-layer-010.html
+/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/revert-layer-011-expected.xht
+/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/revert-layer-011.html
+/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/revert-layer-012-expected.xht
+/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/revert-layer-012.html
/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/revert-val-001-expected.xht
/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/revert-val-001.html
/LayoutTests/imported/w3c/web-platform-tests/css/css-cascade/revert-val-002-expected.xht
Added: trunk/LayoutTests/imported/w3c/web-platform-tests/interfaces/css-cascade-5.idl (0 => 286647)
--- trunk/LayoutTests/imported/w3c/web-platform-tests/interfaces/css-cascade-5.idl (rev 0)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/interfaces/css-cascade-5.idl 2021-12-08 08:55:35 UTC (rev 286647)
@@ -0,0 +1,16 @@
+// Source: CSS Cascading and Inheritance Level 5 (https://drafts.csswg.org/css-cascade-5/)
+
+[Exposed=Window]
+partial interface CSSImportRule {
+ readonly attribute CSSOMString? layerName;
+};
+
+[Exposed=Window]
+interface CSSLayerBlockRule : CSSGroupingRule {
+ readonly attribute CSSOMString name;
+};
+
+[Exposed=Window]
+interface CSSLayerStatementRule : CSSRule {
+ readonly attribute FrozenArray<CSSOMString> nameList;
+};