LibWeb: Support CSSRule.type

We already had the CSSRule::Type enum, but the values were not aligned
with the CSSOM spec. This patch takes care of that, and then exposes
the type of a CSSRule to JavaScript via the "type" attribute.
This commit is contained in:
Andreas Kling 2022-04-11 21:04:47 +02:00
parent a0ba49a50a
commit f4f850aaf2
4 changed files with 19 additions and 13 deletions

View file

@ -24,13 +24,13 @@ public:
virtual ~CSSRule() = default;
enum class Type : u32 {
Style,
Import,
Media,
Supports,
FontFace,
__Count,
// https://drafts.csswg.org/cssom/#dom-cssrule-type
enum class Type : u16 {
Style = 1,
Import = 3,
Media = 4,
FontFace = 5,
Supports = 12,
};
virtual StringView class_name() const = 0;

View file

@ -2,4 +2,16 @@ interface CSSRule {
attribute CSSOMString cssText;
readonly attribute unsigned short type;
const unsigned short STYLE_RULE = 1;
const unsigned short CHARSET_RULE = 2;
const unsigned short IMPORT_RULE = 3;
const unsigned short MEDIA_RULE = 4;
const unsigned short FONT_FACE_RULE = 5;
const unsigned short PAGE_RULE = 6;
const unsigned short MARGIN_RULE = 9;
const unsigned short NAMESPACE_RULE = 10;
const unsigned short SUPPORTS_RULE = 12;
};

View file

@ -95,8 +95,6 @@ void CSSRuleList::for_each_effective_style_rule(Function<void(CSSStyleRule const
case CSSRule::Type::Supports:
static_cast<CSSSupportsRule const&>(rule).for_each_effective_style_rule(callback);
break;
case CSSRule::Type::__Count:
VERIFY_NOT_REACHED();
}
}
}
@ -133,8 +131,6 @@ bool CSSRuleList::evaluate_media_queries(HTML::Window const& window)
any_media_queries_changed_match_state = true;
break;
}
case CSSRule::Type::__Count:
VERIFY_NOT_REACHED();
}
}

View file

@ -563,8 +563,6 @@ void dump_rule(StringBuilder& builder, CSS::CSSRule const& rule, int indent_leve
case CSS::CSSRule::Type::Supports:
dump_supports_rule(builder, verify_cast<CSS::CSSSupportsRule const>(rule), indent_levels);
break;
case CSS::CSSRule::Type::__Count:
VERIFY_NOT_REACHED();
}
}