LibWeb: Throw error on insertRule with disallowed @namespace rule

Resolves a FIXME in `CSSRuleList::insert_a_css_rule`. Gets us a bit
closer to passing https://wpt.live/css/cssom/at-namespace.html but that
requires more work around parsing of selectors with namespaces (namely
disallowing use of undeclared selectors), which I have added a FIXME
for.
This commit is contained in:
Callum Law 2025-06-09 22:33:36 +12:00 committed by Sam Atkins
commit f53bec3a67
Notes: github-actions[bot] 2025-06-09 10:57:43 +00:00
4 changed files with 36 additions and 1 deletions

View file

@ -0,0 +1,28 @@
<!DOCTYPE html>
<style id="a">
@namespace my_namespace_1 url("http://www.w3.org/1999/xhtml");
@import url("nonexist.css");
</style>
<style id="b">
div {
color: green;
}
</style>
<script src="../include.js"></script>
<script>
test(() => {
try {
a.sheet.insertRule('@namespace my_namespace_3 url("http://www.w3.org/1999/xhtml")', 0);
println("Can insert namespace rule into sheet with only @namespace and @import rules: PASS");
} catch {
println("Can insert namespace rule into sheet with only @namespace and @import rules: FAIL");
}
try {
s.sheet.insertRule('@namespace my_namespace_3 url("http://www.w3.org/1999/xhtml")', 0);
println("Cannot insert namespace rule into sheet with existing rules: FAIL");
} catch {
println("Cannot insert namespace rule into sheet with existing rules: PASS");
}
});
</script>