LibWeb: Throw on deleting CSS @namespace rule in disallowed conditions

Fixes one(!) WPT test :^)
This commit is contained in:
Andreas Kling 2025-04-24 11:07:54 +02:00 committed by Andreas Kling
parent 223c9c91e6
commit 2f76b24b89
Notes: github-actions[bot] 2025-04-24 16:28:42 +00:00
3 changed files with 29 additions and 1 deletions

View file

@ -116,7 +116,13 @@ WebIDL::ExceptionOr<void> CSSRuleList::remove_a_css_rule(u32 index)
// 3. Set old rule to the indexth item in list.
CSSRule& old_rule = m_rules[index];
// FIXME: 4. If old rule is an @namespace at-rule, and list contains anything other than @import at-rules, and @namespace at-rules, throw an InvalidStateError exception.
// 4. If old rule is an @namespace at-rule, and list contains anything other than @import at-rules, and @namespace at-rules, throw an InvalidStateError exception.
if (old_rule.type() == CSSRule::Type::Namespace) {
for (auto& rule : m_rules) {
if (rule->type() != CSSRule::Type::Import && rule->type() != CSSRule::Type::Namespace)
return WebIDL::InvalidStateError::create(realm(), "Cannot remove @namespace rule from a stylesheet with non-namespace/import rules."_string);
}
}
// 5. Remove rule old rule from list at the zero-indexed position index.
m_rules.remove(index);