LibWeb/CSS: Parse custom-idents more consistently

These have a few rules that we didn't follow in most cases:
- CSS-wide keywords are not allowed. (inherit, initial, etc)
- `default` is not allowed.
- The above and any other disallowed identifiers must be tested
  case-insensitively.

This introduces a `parse_custom_ident_value()` method, which takes a
list of disallowed identifier names, and handles the above rules.
This commit is contained in:
Sam Atkins 2024-07-26 16:03:01 +01:00 committed by Andreas Kling
commit 6ae2b8c3d9
Notes: github-actions[bot] 2024-07-27 12:46:26 +00:00
4 changed files with 80 additions and 20 deletions

View file

@ -0,0 +1,14 @@
<script src="../include.js"></script>
<div id="foo"></div>
<script>
test(() => {
const foo = document.getElementById("foo");
println(`Before testing: ${getComputedStyle(foo).getPropertyValue("animation-name")}`);
const cases = [ 'badger', 'none', 'BANANA', 'NONE', 'InHeRiT', 'revert', 'initial', 'unset', 'george', 'REVERT', 'NaCl', 'default', 'string', '32', 'done' ];
for (const name of cases) {
foo.style.setProperty('animation-name', 'INVALID');
foo.style.setProperty('animation-name', name);
println(`${name}: ${getComputedStyle(foo).getPropertyValue("animation-name")}`);
}
});
</script>