[@layer] Ensure layer establishment behavior on failed/unmatched imports

As per https://github.com/w3c/csswg-drafts/issues/6776:
1. @import with unmatched media query shouldn't establish layer
2. @import that fails to load should still establish layer

This patch adds test cases for it and also fixes our behavior on 1.

Bug: 1095765
Change-Id: Ia7d2c9921b4b93173546cbd78ab243dac3f92420
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3272669
Reviewed-by: Anders Hartvoll Ruud <andruud@chromium.org>
Commit-Queue: Xiaocheng Hu <xiaochengh@chromium.org>
Cr-Commit-Position: refs/heads/main@{#940505}
diff --git a/css/css-cascade/layer-import.html b/css/css-cascade/layer-import.html
index 0406f02..821bc7d 100644
--- a/css/css-cascade/layer-import.html
+++ b/css/css-cascade/layer-import.html
@@ -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);
         });
 
diff --git a/css/css-cascade/layer-media-query.html b/css/css-cascade/layer-media-query.html
index da20733..92a0f55 100644
--- a/css/css-cascade/layer-media-query.html
+++ b/css/css-cascade/layer-media-query.html
@@ -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="mailto:antti@apple.com">
 <link rel="help" href="https://www.w3.org/TR/css-cascade-5/#layering">
 <script src="/resources/testharness.js"></script>
@@ -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");