LibWeb: Treat CSS selectors containing undeclared namespaces as invalid

Selectors containing undeclared namespaces should be considered invalid,
not just not matching any elements.

Gains us 3 new WPT passes.
This commit is contained in:
Callum Law
2025-06-23 22:40:37 +12:00
committed by Sam Atkins
parent 5fcf3d0b05
commit 6584ae0080
Notes: github-actions[bot] 2025-06-24 11:52:28 +00:00
17 changed files with 157 additions and 11 deletions

View File

@@ -0,0 +1,29 @@
<!doctype html>
<title>CSS Test: @namespace in CSSOM is not severely broken</title>
<link rel="author" title="Emilio Cobos Álvarez" href="mailto:emilio@crisal.io">
<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1464865">
<link rel="help" href="https://drafts.csswg.org/cssom/#insert-a-css-rule">
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<style id="s">
div { color: green }
</style>
<div>Should be green</div>
<script>
test(function() {
assert_throws_dom("InvalidStateError", function() {
s.sheet.insertRule('@namespace myhtml url("http://www.w3.org/1999/xhtml")', 0);
});
assert_equals(s.sheet.cssRules.length, 1, "Shouldn't have been inserted");
assert_throws_dom("SyntaxError", function() {
s.sheet.insertRule("myhtml|div { color: red !important }", 0);
});
assert_equals(s.sheet.cssRules.length, 1);
assert_equals(
getComputedStyle(document.querySelector("div")).color,
"rgb(0, 128, 0)",
"Namespace shouldn't be registered"
);
});
</script>