diff --git a/Userland/Libraries/LibWeb/CSS/CSSConditionRule.cpp b/Userland/Libraries/LibWeb/CSS/CSSConditionRule.cpp index 321c29f619..319c55fb64 100644 --- a/Userland/Libraries/LibWeb/CSS/CSSConditionRule.cpp +++ b/Userland/Libraries/LibWeb/CSS/CSSConditionRule.cpp @@ -11,8 +11,8 @@ namespace Web::CSS { -CSSConditionRule::CSSConditionRule(JS::Realm& realm, CSSRuleList& rules) - : CSSGroupingRule(realm, rules) +CSSConditionRule::CSSConditionRule(JS::Realm& realm, CSSRuleList& rules, Type type) + : CSSGroupingRule(realm, rules, type) { } diff --git a/Userland/Libraries/LibWeb/CSS/CSSConditionRule.h b/Userland/Libraries/LibWeb/CSS/CSSConditionRule.h index f1215b87a2..9a02293dda 100644 --- a/Userland/Libraries/LibWeb/CSS/CSSConditionRule.h +++ b/Userland/Libraries/LibWeb/CSS/CSSConditionRule.h @@ -24,7 +24,7 @@ public: virtual void for_each_effective_rule(TraversalOrder, Function const& callback) const override; protected: - CSSConditionRule(JS::Realm&, CSSRuleList&); + CSSConditionRule(JS::Realm&, CSSRuleList&, Type); virtual void initialize(JS::Realm&) override; }; diff --git a/Userland/Libraries/LibWeb/CSS/CSSFontFaceRule.cpp b/Userland/Libraries/LibWeb/CSS/CSSFontFaceRule.cpp index 2bf6ceeb69..551c901f1c 100644 --- a/Userland/Libraries/LibWeb/CSS/CSSFontFaceRule.cpp +++ b/Userland/Libraries/LibWeb/CSS/CSSFontFaceRule.cpp @@ -23,7 +23,7 @@ JS::NonnullGCPtr CSSFontFaceRule::create(JS::Realm& realm, Pars } CSSFontFaceRule::CSSFontFaceRule(JS::Realm& realm, ParsedFontFace&& font_face) - : CSSRule(realm) + : CSSRule(realm, Type::FontFace) , m_font_face(move(font_face)) { } diff --git a/Userland/Libraries/LibWeb/CSS/CSSFontFaceRule.h b/Userland/Libraries/LibWeb/CSS/CSSFontFaceRule.h index 768f57d1f9..69657f73c4 100644 --- a/Userland/Libraries/LibWeb/CSS/CSSFontFaceRule.h +++ b/Userland/Libraries/LibWeb/CSS/CSSFontFaceRule.h @@ -21,8 +21,6 @@ public: virtual ~CSSFontFaceRule() override = default; - virtual Type type() const override { return Type::FontFace; } - ParsedFontFace const& font_face() const { return m_font_face; } CSSStyleDeclaration* style(); diff --git a/Userland/Libraries/LibWeb/CSS/CSSGroupingRule.cpp b/Userland/Libraries/LibWeb/CSS/CSSGroupingRule.cpp index 4ad00645ef..2db642ac56 100644 --- a/Userland/Libraries/LibWeb/CSS/CSSGroupingRule.cpp +++ b/Userland/Libraries/LibWeb/CSS/CSSGroupingRule.cpp @@ -14,8 +14,8 @@ namespace Web::CSS { -CSSGroupingRule::CSSGroupingRule(JS::Realm& realm, CSSRuleList& rules) - : CSSRule(realm) +CSSGroupingRule::CSSGroupingRule(JS::Realm& realm, CSSRuleList& rules, Type type) + : CSSRule(realm, type) , m_rules(rules) { for (auto& rule : *m_rules) diff --git a/Userland/Libraries/LibWeb/CSS/CSSGroupingRule.h b/Userland/Libraries/LibWeb/CSS/CSSGroupingRule.h index b5c22d5481..5a00014733 100644 --- a/Userland/Libraries/LibWeb/CSS/CSSGroupingRule.h +++ b/Userland/Libraries/LibWeb/CSS/CSSGroupingRule.h @@ -31,7 +31,7 @@ public: virtual void set_parent_style_sheet(CSSStyleSheet*) override; protected: - CSSGroupingRule(JS::Realm&, CSSRuleList&); + CSSGroupingRule(JS::Realm&, CSSRuleList&, Type); virtual void initialize(JS::Realm&) override; virtual void visit_edges(Cell::Visitor&) override; diff --git a/Userland/Libraries/LibWeb/CSS/CSSImportRule.cpp b/Userland/Libraries/LibWeb/CSS/CSSImportRule.cpp index c8f1b1b563..0d2a7c5295 100644 --- a/Userland/Libraries/LibWeb/CSS/CSSImportRule.cpp +++ b/Userland/Libraries/LibWeb/CSS/CSSImportRule.cpp @@ -29,7 +29,7 @@ JS::NonnullGCPtr CSSImportRule::create(URL::URL url, DOM::Documen } CSSImportRule::CSSImportRule(URL::URL url, DOM::Document& document) - : CSSRule(document.realm()) + : CSSRule(document.realm(), Type::Import) , m_url(move(url)) , m_document(document) { diff --git a/Userland/Libraries/LibWeb/CSS/CSSImportRule.h b/Userland/Libraries/LibWeb/CSS/CSSImportRule.h index c38b6e3071..0f9680f3bd 100644 --- a/Userland/Libraries/LibWeb/CSS/CSSImportRule.h +++ b/Userland/Libraries/LibWeb/CSS/CSSImportRule.h @@ -36,8 +36,6 @@ public: CSSStyleSheet* style_sheet_for_bindings() { return m_style_sheet; } void set_style_sheet(CSSStyleSheet* style_sheet) { m_style_sheet = style_sheet; } - virtual Type type() const override { return Type::Import; } - private: CSSImportRule(URL::URL, DOM::Document&); diff --git a/Userland/Libraries/LibWeb/CSS/CSSKeyframeRule.cpp b/Userland/Libraries/LibWeb/CSS/CSSKeyframeRule.cpp index fb0f666a77..a056b48852 100644 --- a/Userland/Libraries/LibWeb/CSS/CSSKeyframeRule.cpp +++ b/Userland/Libraries/LibWeb/CSS/CSSKeyframeRule.cpp @@ -19,7 +19,7 @@ JS::NonnullGCPtr CSSKeyframeRule::create(JS::Realm& realm, CSS: } CSSKeyframeRule::CSSKeyframeRule(JS::Realm& realm, CSS::Percentage key, PropertyOwningCSSStyleDeclaration& declarations) - : CSSRule(realm) + : CSSRule(realm, Type::Keyframe) , m_key(key) , m_declarations(declarations) { diff --git a/Userland/Libraries/LibWeb/CSS/CSSKeyframeRule.h b/Userland/Libraries/LibWeb/CSS/CSSKeyframeRule.h index 74958a9284..d6acc9fe4e 100644 --- a/Userland/Libraries/LibWeb/CSS/CSSKeyframeRule.h +++ b/Userland/Libraries/LibWeb/CSS/CSSKeyframeRule.h @@ -25,8 +25,6 @@ public: virtual ~CSSKeyframeRule() = default; - virtual Type type() const override { return Type::Keyframe; } - CSS::Percentage key() const { return m_key; } JS::NonnullGCPtr style() const { return m_declarations; } JS::NonnullGCPtr style_as_property_owning_style_declaration() const { return m_declarations; } diff --git a/Userland/Libraries/LibWeb/CSS/CSSKeyframesRule.cpp b/Userland/Libraries/LibWeb/CSS/CSSKeyframesRule.cpp index 1ec41ec8fa..96f0ae5516 100644 --- a/Userland/Libraries/LibWeb/CSS/CSSKeyframesRule.cpp +++ b/Userland/Libraries/LibWeb/CSS/CSSKeyframesRule.cpp @@ -20,7 +20,7 @@ JS::NonnullGCPtr CSSKeyframesRule::create(JS::Realm& realm, Fl } CSSKeyframesRule::CSSKeyframesRule(JS::Realm& realm, FlyString name, JS::NonnullGCPtr keyframes) - : CSSRule(realm) + : CSSRule(realm, Type::Keyframes) , m_name(move(name)) , m_rules(move(keyframes)) { diff --git a/Userland/Libraries/LibWeb/CSS/CSSKeyframesRule.h b/Userland/Libraries/LibWeb/CSS/CSSKeyframesRule.h index 7f66aa7e25..4d6a8e9f89 100644 --- a/Userland/Libraries/LibWeb/CSS/CSSKeyframesRule.h +++ b/Userland/Libraries/LibWeb/CSS/CSSKeyframesRule.h @@ -28,8 +28,6 @@ public: virtual ~CSSKeyframesRule() = default; - virtual Type type() const override { return Type::Keyframes; } - auto const& css_rules() const { return m_rules; } FlyString const& name() const { return m_name; } [[nodiscard]] WebIDL::UnsignedLong length() const; diff --git a/Userland/Libraries/LibWeb/CSS/CSSLayerBlockRule.cpp b/Userland/Libraries/LibWeb/CSS/CSSLayerBlockRule.cpp index 6626592139..f21b09a789 100644 --- a/Userland/Libraries/LibWeb/CSS/CSSLayerBlockRule.cpp +++ b/Userland/Libraries/LibWeb/CSS/CSSLayerBlockRule.cpp @@ -25,7 +25,7 @@ FlyString CSSLayerBlockRule::next_unique_anonymous_layer_name() } CSSLayerBlockRule::CSSLayerBlockRule(JS::Realm& realm, FlyString name, CSSRuleList& rules) - : CSSGroupingRule(realm, rules) + : CSSGroupingRule(realm, rules, Type::LayerBlock) , m_name(move(name)) { if (m_name.is_empty()) { diff --git a/Userland/Libraries/LibWeb/CSS/CSSLayerBlockRule.h b/Userland/Libraries/LibWeb/CSS/CSSLayerBlockRule.h index 0d73dca230..1be089a70c 100644 --- a/Userland/Libraries/LibWeb/CSS/CSSLayerBlockRule.h +++ b/Userland/Libraries/LibWeb/CSS/CSSLayerBlockRule.h @@ -22,8 +22,6 @@ public: virtual ~CSSLayerBlockRule() = default; - virtual Type type() const override { return Type::LayerBlock; } - FlyString const& name() const { return m_name; } FlyString const& internal_name() const { return m_name_internal; } FlyString internal_qualified_name(Badge) const; diff --git a/Userland/Libraries/LibWeb/CSS/CSSLayerStatementRule.cpp b/Userland/Libraries/LibWeb/CSS/CSSLayerStatementRule.cpp index cb9c1cda12..b747b163c8 100644 --- a/Userland/Libraries/LibWeb/CSS/CSSLayerStatementRule.cpp +++ b/Userland/Libraries/LibWeb/CSS/CSSLayerStatementRule.cpp @@ -19,7 +19,7 @@ JS::NonnullGCPtr CSSLayerStatementRule::create(JS::Realm& } CSSLayerStatementRule::CSSLayerStatementRule(JS::Realm& realm, Vector name_list) - : CSSRule(realm) + : CSSRule(realm, Type::LayerStatement) , m_name_list(move(name_list)) { } diff --git a/Userland/Libraries/LibWeb/CSS/CSSLayerStatementRule.h b/Userland/Libraries/LibWeb/CSS/CSSLayerStatementRule.h index 82fe359d0d..aca2f9b1df 100644 --- a/Userland/Libraries/LibWeb/CSS/CSSLayerStatementRule.h +++ b/Userland/Libraries/LibWeb/CSS/CSSLayerStatementRule.h @@ -20,8 +20,6 @@ public: virtual ~CSSLayerStatementRule() = default; - virtual Type type() const override { return Type::LayerStatement; } - // FIXME: Should be FrozenArray ReadonlySpan name_list() const { return m_name_list; } Vector internal_qualified_name_list(Badge) const; diff --git a/Userland/Libraries/LibWeb/CSS/CSSMediaRule.cpp b/Userland/Libraries/LibWeb/CSS/CSSMediaRule.cpp index 9accd187cb..59416f8911 100644 --- a/Userland/Libraries/LibWeb/CSS/CSSMediaRule.cpp +++ b/Userland/Libraries/LibWeb/CSS/CSSMediaRule.cpp @@ -20,7 +20,7 @@ JS::NonnullGCPtr CSSMediaRule::create(JS::Realm& realm, MediaList& } CSSMediaRule::CSSMediaRule(JS::Realm& realm, MediaList& media, CSSRuleList& rules) - : CSSConditionRule(realm, rules) + : CSSConditionRule(realm, rules, Type::Media) , m_media(media) { } diff --git a/Userland/Libraries/LibWeb/CSS/CSSMediaRule.h b/Userland/Libraries/LibWeb/CSS/CSSMediaRule.h index 701154ad94..7470d5a160 100644 --- a/Userland/Libraries/LibWeb/CSS/CSSMediaRule.h +++ b/Userland/Libraries/LibWeb/CSS/CSSMediaRule.h @@ -23,8 +23,6 @@ public: virtual ~CSSMediaRule() = default; - virtual Type type() const override { return Type::Media; } - virtual String condition_text() const override; virtual bool condition_matches() const override { return m_media->matches(); } diff --git a/Userland/Libraries/LibWeb/CSS/CSSNamespaceRule.cpp b/Userland/Libraries/LibWeb/CSS/CSSNamespaceRule.cpp index abb1ae03e7..031dba102c 100644 --- a/Userland/Libraries/LibWeb/CSS/CSSNamespaceRule.cpp +++ b/Userland/Libraries/LibWeb/CSS/CSSNamespaceRule.cpp @@ -17,7 +17,7 @@ namespace Web::CSS { JS_DEFINE_ALLOCATOR(CSSNamespaceRule); CSSNamespaceRule::CSSNamespaceRule(JS::Realm& realm, Optional prefix, FlyString namespace_uri) - : CSSRule(realm) + : CSSRule(realm, Type::Namespace) , m_namespace_uri(move(namespace_uri)) , m_prefix(prefix.value_or(""_fly_string)) { diff --git a/Userland/Libraries/LibWeb/CSS/CSSNamespaceRule.h b/Userland/Libraries/LibWeb/CSS/CSSNamespaceRule.h index cf41bef7b3..bf9304a574 100644 --- a/Userland/Libraries/LibWeb/CSS/CSSNamespaceRule.h +++ b/Userland/Libraries/LibWeb/CSS/CSSNamespaceRule.h @@ -23,7 +23,6 @@ public: FlyString const& namespace_uri() const { return m_namespace_uri; } void set_prefix(FlyString value) { m_prefix = move(value); } FlyString const& prefix() const { return m_prefix; } - virtual Type type() const override { return Type::Namespace; } private: CSSNamespaceRule(JS::Realm&, Optional prefix, FlyString namespace_uri); diff --git a/Userland/Libraries/LibWeb/CSS/CSSNestedDeclarations.cpp b/Userland/Libraries/LibWeb/CSS/CSSNestedDeclarations.cpp index c3f61280ed..f57eae9d68 100644 --- a/Userland/Libraries/LibWeb/CSS/CSSNestedDeclarations.cpp +++ b/Userland/Libraries/LibWeb/CSS/CSSNestedDeclarations.cpp @@ -18,7 +18,7 @@ JS::NonnullGCPtr CSSNestedDeclarations::create(JS::Realm& } CSSNestedDeclarations::CSSNestedDeclarations(JS::Realm& realm, PropertyOwningCSSStyleDeclaration& declaration) - : CSSRule(realm) + : CSSRule(realm, Type::NestedDeclarations) , m_declaration(declaration) { m_declaration->set_parent_rule(*this); diff --git a/Userland/Libraries/LibWeb/CSS/CSSNestedDeclarations.h b/Userland/Libraries/LibWeb/CSS/CSSNestedDeclarations.h index de800fe2f0..134c55e800 100644 --- a/Userland/Libraries/LibWeb/CSS/CSSNestedDeclarations.h +++ b/Userland/Libraries/LibWeb/CSS/CSSNestedDeclarations.h @@ -19,7 +19,6 @@ public: virtual ~CSSNestedDeclarations() override = default; - virtual Type type() const override { return Type::NestedDeclarations; } PropertyOwningCSSStyleDeclaration const& declaration() const { return m_declaration; } CSSStyleDeclaration* style(); diff --git a/Userland/Libraries/LibWeb/CSS/CSSPropertyRule.cpp b/Userland/Libraries/LibWeb/CSS/CSSPropertyRule.cpp index 28a4a7d64d..025d6a627e 100644 --- a/Userland/Libraries/LibWeb/CSS/CSSPropertyRule.cpp +++ b/Userland/Libraries/LibWeb/CSS/CSSPropertyRule.cpp @@ -19,7 +19,7 @@ JS::NonnullGCPtr CSSPropertyRule::create(JS::Realm& realm, FlyS } CSSPropertyRule::CSSPropertyRule(JS::Realm& realm, FlyString name, FlyString syntax, bool inherits, Optional initial_value) - : CSSRule(realm) + : CSSRule(realm, Type::Property) , m_name(move(name)) , m_syntax(move(syntax)) , m_inherits(inherits) diff --git a/Userland/Libraries/LibWeb/CSS/CSSPropertyRule.h b/Userland/Libraries/LibWeb/CSS/CSSPropertyRule.h index bfe4d2baa2..d37c86d0ef 100644 --- a/Userland/Libraries/LibWeb/CSS/CSSPropertyRule.h +++ b/Userland/Libraries/LibWeb/CSS/CSSPropertyRule.h @@ -25,7 +25,6 @@ public: virtual ~CSSPropertyRule() = default; - virtual Type type() const override { return Type::Property; } FlyString const& name() const { return m_name; } FlyString const& syntax() const { return m_syntax; } bool inherits() const { return m_inherits; } diff --git a/Userland/Libraries/LibWeb/CSS/CSSRule.cpp b/Userland/Libraries/LibWeb/CSS/CSSRule.cpp index 35f2d5b4bf..9c7f65b08d 100644 --- a/Userland/Libraries/LibWeb/CSS/CSSRule.cpp +++ b/Userland/Libraries/LibWeb/CSS/CSSRule.cpp @@ -13,8 +13,9 @@ namespace Web::CSS { -CSSRule::CSSRule(JS::Realm& realm) +CSSRule::CSSRule(JS::Realm& realm, Type type) : PlatformObject(realm) + , m_type(type) { } diff --git a/Userland/Libraries/LibWeb/CSS/CSSRule.h b/Userland/Libraries/LibWeb/CSS/CSSRule.h index 3adb6a5e75..4da219419f 100644 --- a/Userland/Libraries/LibWeb/CSS/CSSRule.h +++ b/Userland/Libraries/LibWeb/CSS/CSSRule.h @@ -38,7 +38,7 @@ public: Property = 103, // FIXME: This should return `0` as a type, but type is used for a lot of dispatching }; - virtual Type type() const = 0; + Type type() const { return m_type; } String css_text() const; void set_css_text(StringView); @@ -57,7 +57,7 @@ public: virtual String serialized() const = 0; protected: - explicit CSSRule(JS::Realm&); + explicit CSSRule(JS::Realm&, Type); virtual void visit_edges(Cell::Visitor&) override; @@ -72,6 +72,7 @@ protected: [[nodiscard]] FlyString const& parent_layer_internal_qualified_name_slow_case() const; + Type m_type; JS::GCPtr m_parent_rule; JS::GCPtr m_parent_style_sheet; diff --git a/Userland/Libraries/LibWeb/CSS/CSSStyleRule.cpp b/Userland/Libraries/LibWeb/CSS/CSSStyleRule.cpp index 78bdc9155f..35634bb27a 100644 --- a/Userland/Libraries/LibWeb/CSS/CSSStyleRule.cpp +++ b/Userland/Libraries/LibWeb/CSS/CSSStyleRule.cpp @@ -22,7 +22,7 @@ JS::NonnullGCPtr CSSStyleRule::create(JS::Realm& realm, SelectorLi } CSSStyleRule::CSSStyleRule(JS::Realm& realm, SelectorList&& selectors, PropertyOwningCSSStyleDeclaration& declaration, CSSRuleList& nested_rules) - : CSSGroupingRule(realm, nested_rules) + : CSSGroupingRule(realm, nested_rules, Type::Style) , m_selectors(move(selectors)) , m_declaration(declaration) { diff --git a/Userland/Libraries/LibWeb/CSS/CSSStyleRule.h b/Userland/Libraries/LibWeb/CSS/CSSStyleRule.h index a60d84b47b..94d143e3c2 100644 --- a/Userland/Libraries/LibWeb/CSS/CSSStyleRule.h +++ b/Userland/Libraries/LibWeb/CSS/CSSStyleRule.h @@ -27,8 +27,6 @@ public: SelectorList const& absolutized_selectors() const; PropertyOwningCSSStyleDeclaration const& declaration() const { return m_declaration; } - virtual Type type() const override { return Type::Style; } - String selector_text() const; void set_selector_text(StringView); diff --git a/Userland/Libraries/LibWeb/CSS/CSSSupportsRule.cpp b/Userland/Libraries/LibWeb/CSS/CSSSupportsRule.cpp index 76a0426ce9..c75d005e61 100644 --- a/Userland/Libraries/LibWeb/CSS/CSSSupportsRule.cpp +++ b/Userland/Libraries/LibWeb/CSS/CSSSupportsRule.cpp @@ -19,7 +19,7 @@ JS::NonnullGCPtr CSSSupportsRule::create(JS::Realm& realm, Nonn } CSSSupportsRule::CSSSupportsRule(JS::Realm& realm, NonnullRefPtr&& supports, CSSRuleList& rules) - : CSSConditionRule(realm, rules) + : CSSConditionRule(realm, rules, Type::Supports) , m_supports(move(supports)) { } diff --git a/Userland/Libraries/LibWeb/CSS/CSSSupportsRule.h b/Userland/Libraries/LibWeb/CSS/CSSSupportsRule.h index 4a4a537d1f..975974dd91 100644 --- a/Userland/Libraries/LibWeb/CSS/CSSSupportsRule.h +++ b/Userland/Libraries/LibWeb/CSS/CSSSupportsRule.h @@ -24,8 +24,6 @@ public: virtual ~CSSSupportsRule() = default; - virtual Type type() const override { return Type::Supports; } - String condition_text() const override; virtual bool condition_matches() const override { return m_supports->matches(); }