diff --git a/Userland/Libraries/LibWeb/CSS/CSSConditionRule.cpp b/Userland/Libraries/LibWeb/CSS/CSSConditionRule.cpp index 321c29f619b..319c55fb641 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 f1215b87a23..9a02293dda9 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 2bf6ceeb697..551c901f1ce 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 768f57d1f98..69657f73c4d 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 4ad00645efe..2db642ac56a 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 b5c22d54812..5a00014733d 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 c8f1b1b5635..0d2a7c5295d 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 c38b6e3071e..0f9680f3bdb 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 fb0f666a770..a056b488528 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 74958a9284b..d6acc9fe4e5 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 1ec41ec8faa..96f0ae55161 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 7f66aa7e25b..4d6a8e9f899 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 66265921398..f21b09a7897 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 0d73dca2304..1be089a70ce 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 cb9c1cda12f..b747b163c80 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 82fe359d0d4..aca2f9b1df6 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 9accd187cb6..59416f89115 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 701154ad94e..7470d5a160a 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 abb1ae03e7b..031dba102ca 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 cf41bef7b30..bf9304a5742 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 c3f61280ed3..f57eae9d688 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 de800fe2f0b..134c55e8004 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 28a4a7d64df..025d6a627ed 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 bfe4d2baa2c..d37c86d0efd 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 35f2d5b4bf2..9c7f65b08d4 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 3adb6a5e751..4da219419f4 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 78bdc9155f9..35634bb27a5 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 a60d84b47be..94d143e3c22 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 76a0426ce9c..c75d005e61d 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 4a4a537d1f2..975974dd911 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(); }