blob: ee63b84e61ad938e4d218c3b619a5eaa72fa6163 [file] [edit]
<!doctype html>
<title>@import with layer and media query should preserve both</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<link rel="help" href="https://drafts.csswg.org/css-cascade-5/#at-import">
<script>
"use strict";
async function insertRule(t, cssText) {
const style = document.createElement("style");
style.textContent = cssText;
const loaded = new Promise(resolve => {
style.onload = resolve;
style.onerror = resolve;
});
document.head.append(style);
t.add_cleanup(() => {
style.remove();
});
await loaded;
return style.sheet.cssRules[0];
}
const cases = [
{
title: "@import with bare layer keyword and media query",
cssText: '@import "data:text/css," layer screen;',
expectedLayerName: "",
expectedMediaText: "screen"
},
{
title: "@import with layer() function and media query",
cssText: '@import "data:text/css," layer(foo) screen;',
expectedLayerName: "foo",
expectedMediaText: "screen"
},
{
title: "@import with layer and compound media query",
cssText: '@import "data:text/css," layer screen, print;',
expectedLayerName: "",
expectedMediaText: "screen, print"
},
{
title: "@import with layer() and compound media query",
cssText: '@import "data:text/css," layer(bar) screen and (color);',
expectedLayerName: "bar",
expectedMediaText: "screen and (color)"
},
{
title: "@import with layer alone (no media query)",
cssText: '@import "data:text/css," layer;',
expectedLayerName: "",
expectedMediaText: ""
},
{
title: "@import with layer() alone (no media query)",
cssText: '@import "data:text/css," layer(baz);',
expectedLayerName: "baz",
expectedMediaText: ""
}
];
for (const { title, cssText, expectedLayerName, expectedMediaText } of cases) {
promise_test(async t => {
const rule = await insertRule(t, cssText);
assert_equals(rule.layerName, expectedLayerName, "layerName");
assert_equals(rule.media.mediaText, expectedMediaText, "media.mediaText");
}, title);
}
</script>