Title: [286647] trunk/LayoutTests
Revision
286647
Author
[email protected]
Date
2021-12-08 00:55:35 -0800 (Wed, 08 Dec 2021)

Log Message

[CSS Cascade Layers] import some new WPTs
https://bugs.webkit.org/show_bug.cgi?id=233947

Reviewed by Kimmo Kinnunen.

LayoutTests/imported/w3c:

* 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.

LayoutTests:

* TestExpectations:

Modified Paths

Added Paths

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;
+};
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to