diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-19 00:47:55 +0000 |
commit | 26a029d407be480d791972afb5975cf62c9360a6 (patch) | |
tree | f435a8308119effd964b339f76abb83a57c29483 /testing/web-platform/tests/css/css-cascade/layer-counter-style-override.html | |
parent | Initial commit. (diff) | |
download | firefox-26a029d407be480d791972afb5975cf62c9360a6.tar.xz firefox-26a029d407be480d791972afb5975cf62c9360a6.zip |
Adding upstream version 124.0.1.upstream/124.0.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'testing/web-platform/tests/css/css-cascade/layer-counter-style-override.html')
-rw-r--r-- | testing/web-platform/tests/css/css-cascade/layer-counter-style-override.html | 150 |
1 files changed, 150 insertions, 0 deletions
diff --git a/testing/web-platform/tests/css/css-cascade/layer-counter-style-override.html b/testing/web-platform/tests/css/css-cascade/layer-counter-style-override.html new file mode 100644 index 0000000000..1720898457 --- /dev/null +++ b/testing/web-platform/tests/css/css-cascade/layer-counter-style-override.html @@ -0,0 +1,150 @@ +<!DOCTYPE html> +<title>Resolving @counter-style name conflicts with cascade layers</title> +<link rel="help" href="https://drafts.csswg.org/css-cascade-5/#layering"> +<link rel="author" href="mailto:xiaochengh@chromium.org"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<style> +#target, #reference { + font-family: monospace; + width: min-content; +} + +#reference::before { + content: '0000'; +} + +@counter-style three { + system: cyclic; + symbols: '000'; +} + +@counter-style four { + system: cyclic; + symbols: '0000'; +} +</style> + +<ul> + <li id="target"></li> + <li id="reference"></li> +</ul> + +<script> +// In all tests, #target::before should have 4 characters, same as #reference. + +const testCases = [ + { + title: '@counter-style unlayered overrides layered', + style: ` + #target::before { + content: counter(dont-care, custom-counter-style); + } + + @counter-style custom-counter-style { + system: extends four; + } + + @layer { + @counter-style custom-counter-style { + system: extends three; + } + } + ` + }, + + { + title: '@counter-style override between layers', + style: ` + @layer base, override; + + #target::before { + content: counter(dont-care, custom-counter-style); + } + + @layer override { + @counter-style custom-counter-style { + system: extends four; + } + } + + @layer base { + @counter-style custom-counter-style { + system: extends three; + } + } + ` + }, + + { + title: '@counter-style override update with appended sheet 1', + style: ` + @layer base, override; + + #target::before { + content: counter(dont-care, custom-counter-style); + } + + @layer override { + @counter-style custom-counter-style { + system: extends four; + } + } + `, + append: ` + @layer base { + @counter-style custom-counter-style { + system: extends three; + } + } + ` + }, + + { + title: '@counter-style override update with appended sheet 2', + style: ` + @layer base, override; + + #target::before { + content: counter(dont-care, custom-counter-style); + } + + @layer base { + @counter-style custom-counter-style { + system: extends three; + } + } + `, + append: ` + @layer override { + @counter-style custom-counter-style { + system: extends four; + } + } + ` + }, +]; + +for (let testCase of testCases) { + var documentStyle = document.createElement('style'); + documentStyle.appendChild(document.createTextNode(testCase['style'])); + document.head.appendChild(documentStyle); + + var appendedStyle; + if (testCase['append']) { + document.body.offsetLeft; // Force style update + appendedStyle = document.createElement('style'); + appendedStyle.appendChild(document.createTextNode(testCase['append'])); + document.head.appendChild(appendedStyle); + } + + test(function () { + assert_equals(getComputedStyle(target).width, + getComputedStyle(reference).width); + }, testCase['title']); + + if (appendedStyle) + appendedStyle.remove(); + documentStyle.remove(); +} +</script> |