From 83758d4cdd393e1e1394481af3f5f022a47ff645 Mon Sep 17 00:00:00 2001 From: Shannon Booth Date: Sun, 10 Dec 2023 21:00:03 +1300 Subject: [PATCH] LibWeb: Wrap PseudoElements stored in SimpleSelector in a class No functional impact intended. This is just a more complicated way of writing what we have now. The goal of this commit is so that we are able to store the 'name' of a pseudo element for use in serializing 'unknown -webkit- pseudo-elements', see: https://www.w3.org/TR/selectors-4/#compat This is quite awkward, as in pretty much all cases just the selector type enum is enough, but we will need to cache the name for serializing these unknown selectors. I can't figure out any reason why we would need this name anywhere else in the engine, so pretty much everywhere is still just passing around this raw enum. But this change will allow us to easily store the name inside of this new struct for when it is needed for serialization, once those webkit unknown elements are supported by our engine. --- .../Libraries/LibWeb/CSS/Parser/Parser.cpp | 8 +- Userland/Libraries/LibWeb/CSS/Parser/Parser.h | 6 +- .../LibWeb/CSS/Parser/SelectorParsing.cpp | 14 +-- Userland/Libraries/LibWeb/CSS/Selector.cpp | 65 ++++++++++--- Userland/Libraries/LibWeb/CSS/Selector.h | 93 ++++++++----------- .../Libraries/LibWeb/CSS/SelectorEngine.cpp | 4 +- .../Libraries/LibWeb/CSS/SelectorEngine.h | 2 +- .../Libraries/LibWeb/CSS/StyleComputer.cpp | 42 ++++----- Userland/Libraries/LibWeb/CSS/StyleComputer.h | 30 +++--- Userland/Libraries/LibWeb/DOM/Document.cpp | 2 +- Userland/Libraries/LibWeb/DOM/Document.h | 4 +- Userland/Libraries/LibWeb/DOM/Element.cpp | 10 +- Userland/Libraries/LibWeb/DOM/Element.h | 18 ++-- Userland/Libraries/LibWeb/DOM/Node.cpp | 4 +- Userland/Libraries/LibWeb/Dump.cpp | 2 +- .../LibWeb/HTML/HTMLInputElement.cpp | 2 +- .../LibWeb/HTML/HTMLMeterElement.cpp | 14 +-- .../LibWeb/HTML/HTMLProgressElement.cpp | 4 +- .../Libraries/LibWeb/Internals/Inspector.cpp | 4 +- .../Libraries/LibWeb/Layout/TreeBuilder.cpp | 14 +-- .../Libraries/LibWeb/Layout/TreeBuilder.h | 2 +- Userland/Libraries/LibWeb/Page/Page.h | 2 +- .../LibWebView/ViewImplementation.cpp | 2 +- .../Libraries/LibWebView/ViewImplementation.h | 4 +- .../Libraries/LibWebView/WebContentClient.cpp | 2 +- .../Libraries/LibWebView/WebContentClient.h | 2 +- .../WebContent/ConnectionFromClient.cpp | 4 +- .../WebContent/ConnectionFromClient.h | 2 +- Userland/Services/WebContent/PageClient.cpp | 2 +- Userland/Services/WebContent/PageClient.h | 2 +- .../Services/WebContent/WebContentClient.ipc | 2 +- .../Services/WebContent/WebContentServer.ipc | 2 +- 32 files changed, 196 insertions(+), 174 deletions(-) diff --git a/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp b/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp index 97ac03cd0e..337c662bca 100644 --- a/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp +++ b/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp @@ -6596,7 +6596,7 @@ bool Parser::has_ignored_vendor_prefix(StringView string) return true; } -NonnullRefPtr Parser::resolve_unresolved_style_value(Badge, ParsingContext const& context, DOM::Element& element, Optional pseudo_element, PropertyID property_id, UnresolvedStyleValue const& unresolved) +NonnullRefPtr Parser::resolve_unresolved_style_value(Badge, ParsingContext const& context, DOM::Element& element, Optional pseudo_element, PropertyID property_id, UnresolvedStyleValue const& unresolved) { // Unresolved always contains a var() or attr(), unless it is a custom property's value, in which case we shouldn't be trying // to produce a different StyleValue from it. @@ -6651,7 +6651,7 @@ private: bool m_marked { false }; }; -NonnullRefPtr Parser::resolve_unresolved_style_value(DOM::Element& element, Optional pseudo_element, PropertyID property_id, UnresolvedStyleValue const& unresolved) +NonnullRefPtr Parser::resolve_unresolved_style_value(DOM::Element& element, Optional pseudo_element, PropertyID property_id, UnresolvedStyleValue const& unresolved) { TokenStream unresolved_values_without_variables_expanded { unresolved.values() }; Vector values_with_variables_expanded; @@ -6672,7 +6672,7 @@ NonnullRefPtr Parser::resolve_unresolved_style_value(DOM::Element& e return UnsetStyleValue::the(); } -static RefPtr get_custom_property(DOM::Element const& element, Optional pseudo_element, FlyString const& custom_property_name) +static RefPtr get_custom_property(DOM::Element const& element, Optional pseudo_element, FlyString const& custom_property_name) { if (pseudo_element.has_value()) { if (auto it = element.custom_properties(pseudo_element).find(custom_property_name.to_string()); it != element.custom_properties(pseudo_element).end()) @@ -6686,7 +6686,7 @@ static RefPtr get_custom_property(DOM::Element const& element, return nullptr; } -bool Parser::expand_variables(DOM::Element& element, Optional pseudo_element, StringView property_name, HashMap>& dependencies, TokenStream& source, Vector& dest) +bool Parser::expand_variables(DOM::Element& element, Optional pseudo_element, StringView property_name, HashMap>& dependencies, TokenStream& source, Vector& dest) { // Arbitrary large value chosen to avoid the billion-laughs attack. // https://www.w3.org/TR/css-variables-1/#long-variables diff --git a/Userland/Libraries/LibWeb/CSS/Parser/Parser.h b/Userland/Libraries/LibWeb/CSS/Parser/Parser.h index 935be05045..77c7cb68f1 100644 --- a/Userland/Libraries/LibWeb/CSS/Parser/Parser.h +++ b/Userland/Libraries/LibWeb/CSS/Parser/Parser.h @@ -69,7 +69,7 @@ public: Optional parse_as_component_value(); - static NonnullRefPtr resolve_unresolved_style_value(Badge, ParsingContext const&, DOM::Element&, Optional, PropertyID, UnresolvedStyleValue const&); + static NonnullRefPtr resolve_unresolved_style_value(Badge, ParsingContext const&, DOM::Element&, Optional, PropertyID, UnresolvedStyleValue const&); [[nodiscard]] LengthOrCalculated parse_as_sizes_attribute(); @@ -293,8 +293,8 @@ private: Optional parse_supports_in_parens(TokenStream&); Optional parse_supports_feature(TokenStream&); - NonnullRefPtr resolve_unresolved_style_value(DOM::Element&, Optional, PropertyID, UnresolvedStyleValue const&); - bool expand_variables(DOM::Element&, Optional, StringView property_name, HashMap>& dependencies, TokenStream& source, Vector& dest); + NonnullRefPtr resolve_unresolved_style_value(DOM::Element&, Optional, PropertyID, UnresolvedStyleValue const&); + bool expand_variables(DOM::Element&, Optional, StringView property_name, HashMap>& dependencies, TokenStream& source, Vector& dest); bool expand_unresolved_values(DOM::Element&, StringView property_name, TokenStream& source, Vector& dest); bool substitute_attr_function(DOM::Element& element, StringView property_name, Function const& attr_function, Vector& dest); diff --git a/Userland/Libraries/LibWeb/CSS/Parser/SelectorParsing.cpp b/Userland/Libraries/LibWeb/CSS/Parser/SelectorParsing.cpp index a4058cf38b..27cbf75b5f 100644 --- a/Userland/Libraries/LibWeb/CSS/Parser/SelectorParsing.cpp +++ b/Userland/Libraries/LibWeb/CSS/Parser/SelectorParsing.cpp @@ -354,7 +354,7 @@ Parser::ParseErrorOr Parser::parse_pseudo_simple_selec auto pseudo_name = name_token.token().ident(); // Note: We allow the "ignored" -webkit prefix here for -webkit-progress-bar/-webkit-progress-bar - if (auto pseudo_element = pseudo_element_from_string(pseudo_name); pseudo_element.has_value()) { + if (auto pseudo_element = Selector::PseudoElement::from_string(pseudo_name); pseudo_element.has_value()) { return Selector::SimpleSelector { .type = Selector::SimpleSelector::Type::PseudoElement, .value = pseudo_element.release_value() @@ -395,12 +395,12 @@ Parser::ParseErrorOr Parser::parse_pseudo_simple_selec // Single-colon syntax allowed for ::after, ::before, ::first-letter and ::first-line for compatibility. // https://www.w3.org/TR/selectors/#pseudo-element-syntax - if (auto pseudo_element = pseudo_element_from_string(pseudo_name); pseudo_element.has_value()) { - switch (pseudo_element.value()) { - case Selector::PseudoElement::After: - case Selector::PseudoElement::Before: - case Selector::PseudoElement::FirstLetter: - case Selector::PseudoElement::FirstLine: + if (auto pseudo_element = Selector::PseudoElement::from_string(pseudo_name); pseudo_element.has_value()) { + switch (pseudo_element.value().type()) { + case Selector::PseudoElement::Type::After: + case Selector::PseudoElement::Type::Before: + case Selector::PseudoElement::Type::FirstLetter: + case Selector::PseudoElement::Type::FirstLine: return Selector::SimpleSelector { .type = Selector::SimpleSelector::Type::PseudoElement, .value = pseudo_element.value() diff --git a/Userland/Libraries/LibWeb/CSS/Selector.cpp b/Userland/Libraries/LibWeb/CSS/Selector.cpp index 42b7b4c33b..48214b2e5a 100644 --- a/Userland/Libraries/LibWeb/CSS/Selector.cpp +++ b/Userland/Libraries/LibWeb/CSS/Selector.cpp @@ -346,7 +346,7 @@ String Selector::serialize() const // append "::" followed by the name of the pseudo-element, to s. if (compound_selector.simple_selectors.last().type == Selector::SimpleSelector::Type::PseudoElement) { s.append("::"sv); - s.append(pseudo_element_name(compound_selector.simple_selectors.last().pseudo_element())); + s.append(compound_selector.simple_selectors.last().pseudo_element().name()); } } } @@ -361,34 +361,69 @@ String serialize_a_group_of_selectors(Vector> const& sel return MUST(String::join(", "sv, selectors)); } -Optional pseudo_element_from_string(StringView name) +StringView Selector::PseudoElement::name(Selector::PseudoElement::Type pseudo_element) +{ + switch (pseudo_element) { + case Selector::PseudoElement::Type::Before: + return "before"sv; + case Selector::PseudoElement::Type::After: + return "after"sv; + case Selector::PseudoElement::Type::FirstLine: + return "first-line"sv; + case Selector::PseudoElement::Type::FirstLetter: + return "first-letter"sv; + case Selector::PseudoElement::Type::Marker: + return "marker"sv; + case Selector::PseudoElement::Type::MeterBar: + return "-webkit-meter-bar"sv; + case Selector::PseudoElement::Type::MeterEvenLessGoodValue: + return "-webkit-meter-even-less-good-value"sv; + case Selector::PseudoElement::Type::MeterOptimumValue: + return "-webkit-meter-optimum-value"sv; + case Selector::PseudoElement::Type::MeterSuboptimumValue: + return "-webkit-meter-suboptimum-value"sv; + case Selector::PseudoElement::Type::ProgressBar: + return "-webkit-progress-bar"sv; + case Selector::PseudoElement::Type::ProgressValue: + return "-webkit-progress-value"sv; + case Selector::PseudoElement::Type::Placeholder: + return "placeholder"sv; + case Selector::PseudoElement::Type::Selection: + return "selection"sv; + case Selector::PseudoElement::Type::PseudoElementCount: + break; + } + VERIFY_NOT_REACHED(); +} + +Optional Selector::PseudoElement::from_string(FlyString const& name) { if (name.equals_ignoring_ascii_case("after"sv)) { - return Selector::PseudoElement::After; + return Selector::PseudoElement { Selector::PseudoElement::Type::After }; } else if (name.equals_ignoring_ascii_case("before"sv)) { - return Selector::PseudoElement::Before; + return Selector::PseudoElement { Selector::PseudoElement::Type::Before }; } else if (name.equals_ignoring_ascii_case("first-letter"sv)) { - return Selector::PseudoElement::FirstLetter; + return Selector::PseudoElement { Selector::PseudoElement::Type::FirstLetter }; } else if (name.equals_ignoring_ascii_case("first-line"sv)) { - return Selector::PseudoElement::FirstLine; + return Selector::PseudoElement { Selector::PseudoElement::Type::FirstLine }; } else if (name.equals_ignoring_ascii_case("marker"sv)) { - return Selector::PseudoElement::Marker; + return Selector::PseudoElement { Selector::PseudoElement::Type::Marker }; } else if (name.equals_ignoring_ascii_case("-webkit-meter-bar"sv)) { - return Selector::PseudoElement::MeterBar; + return Selector::PseudoElement { Selector::PseudoElement::Type::MeterBar }; } else if (name.equals_ignoring_ascii_case("-webkit-meter-even-less-good-value"sv)) { - return Selector::PseudoElement::MeterEvenLessGoodValue; + return Selector::PseudoElement { Selector::PseudoElement::Type::MeterEvenLessGoodValue }; } else if (name.equals_ignoring_ascii_case("-webkit-meter-optimum-value"sv)) { - return Selector::PseudoElement::MeterOptimumValue; + return Selector::PseudoElement { Selector::PseudoElement::Type::MeterOptimumValue }; } else if (name.equals_ignoring_ascii_case("-webkit-meter-suboptimum-value"sv)) { - return Selector::PseudoElement::MeterSuboptimumValue; + return Selector::PseudoElement { Selector::PseudoElement::Type::MeterSuboptimumValue }; } else if (name.equals_ignoring_ascii_case("-webkit-progress-bar"sv)) { - return Selector::PseudoElement::ProgressBar; + return Selector::PseudoElement { Selector::PseudoElement::Type::ProgressBar }; } else if (name.equals_ignoring_ascii_case("-webkit-progress-value"sv)) { - return Selector::PseudoElement::ProgressValue; + return Selector::PseudoElement { Selector::PseudoElement::Type::ProgressValue }; } else if (name.equals_ignoring_ascii_case("placeholder"sv)) { - return Selector::PseudoElement::Placeholder; + return Selector::PseudoElement { Selector::PseudoElement::Type::Placeholder }; } else if (name.equals_ignoring_ascii_case("selection"sv)) { - return Selector::PseudoElement::Selection; + return Selector::PseudoElement { Selector::PseudoElement::Type::Selection }; } return {}; } diff --git a/Userland/Libraries/LibWeb/CSS/Selector.h b/Userland/Libraries/LibWeb/CSS/Selector.h index 4129d1a35f..15e71989e4 100644 --- a/Userland/Libraries/LibWeb/CSS/Selector.h +++ b/Userland/Libraries/LibWeb/CSS/Selector.h @@ -21,23 +21,47 @@ using SelectorList = Vector>; // This is a in the spec. https://www.w3.org/TR/selectors-4/#complex class Selector : public RefCounted { public: - enum class PseudoElement { - Before, - After, - FirstLine, - FirstLetter, - Marker, - MeterBar, - MeterEvenLessGoodValue, - MeterOptimumValue, - MeterSuboptimumValue, - ProgressValue, - ProgressBar, - Placeholder, - Selection, + class PseudoElement { + public: + enum class Type { + Before, + After, + FirstLine, + FirstLetter, + Marker, + MeterBar, + MeterEvenLessGoodValue, + MeterOptimumValue, + MeterSuboptimumValue, + ProgressValue, + ProgressBar, + Placeholder, + Selection, - // Keep this last. - PseudoElementCount, + // Keep this last. + PseudoElementCount, + }; + + explicit PseudoElement(Type type) + : m_type(type) + { + } + + constexpr bool operator==(PseudoElement const&) const = default; + + static Optional from_string(FlyString const&); + + static StringView name(Selector::PseudoElement::Type pseudo_element); + + StringView name() const + { + return name(m_type); + } + + Type type() const { return m_type; } + + private: + Type m_type; }; struct SimpleSelector { @@ -208,43 +232,6 @@ private: Optional m_pseudo_element; }; -constexpr StringView pseudo_element_name(Selector::PseudoElement pseudo_element) -{ - switch (pseudo_element) { - case Selector::PseudoElement::Before: - return "before"sv; - case Selector::PseudoElement::After: - return "after"sv; - case Selector::PseudoElement::FirstLine: - return "first-line"sv; - case Selector::PseudoElement::FirstLetter: - return "first-letter"sv; - case Selector::PseudoElement::Marker: - return "marker"sv; - case Selector::PseudoElement::MeterBar: - return "-webkit-meter-bar"sv; - case Selector::PseudoElement::MeterEvenLessGoodValue: - return "-webkit-meter-even-less-good-value"sv; - case Selector::PseudoElement::MeterOptimumValue: - return "-webkit-meter-optimum-value"sv; - case Selector::PseudoElement::MeterSuboptimumValue: - return "-webkit-meter-suboptimum-value"sv; - case Selector::PseudoElement::ProgressBar: - return "-webkit-progress-bar"sv; - case Selector::PseudoElement::ProgressValue: - return "-webkit-progress-value"sv; - case Selector::PseudoElement::Placeholder: - return "placeholder"sv; - case Selector::PseudoElement::Selection: - return "selection"sv; - case Selector::PseudoElement::PseudoElementCount: - break; - } - VERIFY_NOT_REACHED(); -} - -Optional pseudo_element_from_string(StringView); - String serialize_a_group_of_selectors(Vector> const& selectors); } diff --git a/Userland/Libraries/LibWeb/CSS/SelectorEngine.cpp b/Userland/Libraries/LibWeb/CSS/SelectorEngine.cpp index e2cb5456f8..a0df1af042 100644 --- a/Userland/Libraries/LibWeb/CSS/SelectorEngine.cpp +++ b/Userland/Libraries/LibWeb/CSS/SelectorEngine.cpp @@ -640,10 +640,10 @@ static inline bool matches(CSS::Selector const& selector, Optional style_sheet_for_rule, DOM::Element const& element, Optional pseudo_element, JS::GCPtr scope) +bool matches(CSS::Selector const& selector, Optional style_sheet_for_rule, DOM::Element const& element, Optional pseudo_element, JS::GCPtr scope) { VERIFY(!selector.compound_selectors().is_empty()); - if (pseudo_element.has_value() && selector.pseudo_element() != pseudo_element) + if (pseudo_element.has_value() && selector.pseudo_element().has_value() && selector.pseudo_element().value().type() != pseudo_element) return false; if (!pseudo_element.has_value() && selector.pseudo_element().has_value()) return false; diff --git a/Userland/Libraries/LibWeb/CSS/SelectorEngine.h b/Userland/Libraries/LibWeb/CSS/SelectorEngine.h index 7d94bb6e3f..72989760aa 100644 --- a/Userland/Libraries/LibWeb/CSS/SelectorEngine.h +++ b/Userland/Libraries/LibWeb/CSS/SelectorEngine.h @@ -11,6 +11,6 @@ namespace Web::SelectorEngine { -bool matches(CSS::Selector const&, Optional style_sheet_for_rule, DOM::Element const&, Optional = {}, JS::GCPtr scope = {}); +bool matches(CSS::Selector const&, Optional style_sheet_for_rule, DOM::Element const&, Optional = {}, JS::GCPtr scope = {}); } diff --git a/Userland/Libraries/LibWeb/CSS/StyleComputer.cpp b/Userland/Libraries/LibWeb/CSS/StyleComputer.cpp index 234a49eae1..44533d8d61 100644 --- a/Userland/Libraries/LibWeb/CSS/StyleComputer.cpp +++ b/Userland/Libraries/LibWeb/CSS/StyleComputer.cpp @@ -77,8 +77,8 @@ struct Traits : public DefaultTraits); -static NonnullRefPtr get_inherit_value(JS::Realm& initial_value_context_realm, CSS::PropertyID, DOM::Element const*, Optional); +static DOM::Element const* element_to_inherit_style_from(DOM::Element const*, Optional); +static NonnullRefPtr get_inherit_value(JS::Realm& initial_value_context_realm, CSS::PropertyID, DOM::Element const*, Optional); StyleComputer::StyleComputer(DOM::Document& document) : m_document(document) @@ -297,7 +297,7 @@ StyleComputer::RuleCache const& StyleComputer::rule_cache_for_cascade_origin(Cas return true; } -Vector StyleComputer::collect_matching_rules(DOM::Element const& element, CascadeOrigin cascade_origin, Optional pseudo_element) const +Vector StyleComputer::collect_matching_rules(DOM::Element const& element, CascadeOrigin cascade_origin, Optional pseudo_element) const { auto const& rule_cache = rule_cache_for_cascade_origin(cascade_origin); @@ -653,7 +653,7 @@ static void set_property_expanding_shorthands(StyleProperties& style, CSS::Prope set_longhand_property(property_id, value); } -void StyleComputer::set_all_properties(DOM::Element& element, Optional pseudo_element, StyleProperties& style, StyleValue const& value, DOM::Document& document, CSS::CSSStyleDeclaration const* declaration, StyleProperties::PropertyValues const& properties_for_revert) const +void StyleComputer::set_all_properties(DOM::Element& element, Optional pseudo_element, StyleProperties& style, StyleValue const& value, DOM::Document& document, CSS::CSSStyleDeclaration const* declaration, StyleProperties::PropertyValues const& properties_for_revert) const { for (auto i = to_underlying(CSS::first_longhand_property_id); i <= to_underlying(CSS::last_longhand_property_id); ++i) { auto property_id = (CSS::PropertyID)i; @@ -681,7 +681,7 @@ void StyleComputer::set_all_properties(DOM::Element& element, Optional pseudo_element, Vector const& matching_rules, CascadeOrigin cascade_origin, Important important) const +void StyleComputer::cascade_declarations(StyleProperties& style, DOM::Element& element, Optional pseudo_element, Vector const& matching_rules, CascadeOrigin cascade_origin, Important important) const { auto properties_for_revert = style.properties(); @@ -724,7 +724,7 @@ void StyleComputer::cascade_declarations(StyleProperties& style, DOM::Element& e } } -static ErrorOr cascade_custom_properties(DOM::Element& element, Optional pseudo_element, Vector const& matching_rules) +static ErrorOr cascade_custom_properties(DOM::Element& element, Optional pseudo_element, Vector const& matching_rules) { size_t needed_capacity = 0; for (auto const& matching_rule : matching_rules) @@ -1222,7 +1222,7 @@ void StyleComputer::ensure_animation_timer() const } // https://www.w3.org/TR/css-cascade/#cascading -ErrorOr StyleComputer::compute_cascaded_values(StyleProperties& style, DOM::Element& element, Optional pseudo_element, bool& did_match_any_pseudo_element_rules, ComputeStyleMode mode) const +ErrorOr StyleComputer::compute_cascaded_values(StyleProperties& style, DOM::Element& element, Optional pseudo_element, bool& did_match_any_pseudo_element_rules, ComputeStyleMode mode) const { // First, we collect all the CSS rules whose selectors match `element`: MatchingRuleSet matching_rule_set; @@ -1459,7 +1459,7 @@ ErrorOr StyleComputer::compute_cascaded_values(StyleProperties& style, DOM return {}; } -DOM::Element const* element_to_inherit_style_from(DOM::Element const* element, Optional pseudo_element) +DOM::Element const* element_to_inherit_style_from(DOM::Element const* element, Optional pseudo_element) { // Pseudo-elements treat their originating element as their parent. DOM::Element const* parent_element = nullptr; @@ -1471,7 +1471,7 @@ DOM::Element const* element_to_inherit_style_from(DOM::Element const* element, O return parent_element; } -NonnullRefPtr get_inherit_value(JS::Realm& initial_value_context_realm, CSS::PropertyID property_id, DOM::Element const* element, Optional pseudo_element) +NonnullRefPtr get_inherit_value(JS::Realm& initial_value_context_realm, CSS::PropertyID property_id, DOM::Element const* element, Optional pseudo_element) { auto* parent_element = element_to_inherit_style_from(element, pseudo_element); @@ -1480,7 +1480,7 @@ NonnullRefPtr get_inherit_value(JS::Realm& initial_value_conte return parent_element->computed_css_values()->property(property_id); } -void StyleComputer::compute_defaulted_property_value(StyleProperties& style, DOM::Element const* element, CSS::PropertyID property_id, Optional pseudo_element) const +void StyleComputer::compute_defaulted_property_value(StyleProperties& style, DOM::Element const* element, CSS::PropertyID property_id, Optional pseudo_element) const { // FIXME: If we don't know the correct initial value for a property, we fall back to InitialStyleValue. @@ -1517,7 +1517,7 @@ void StyleComputer::compute_defaulted_property_value(StyleProperties& style, DOM } // https://www.w3.org/TR/css-cascade/#defaulting -void StyleComputer::compute_defaulted_values(StyleProperties& style, DOM::Element const* element, Optional pseudo_element) const +void StyleComputer::compute_defaulted_values(StyleProperties& style, DOM::Element const* element, Optional pseudo_element) const { // Walk the list of all known CSS properties and: // - Add them to `style` if they are missing. @@ -1645,7 +1645,7 @@ RefPtr StyleComputer::font_matching_algorithm(FontFa return {}; } -RefPtr StyleComputer::compute_font_for_style_values(DOM::Element const* element, Optional pseudo_element, StyleValue const& font_family, StyleValue const& font_size, StyleValue const& font_style, StyleValue const& font_weight, StyleValue const& font_stretch, int math_depth) const +RefPtr StyleComputer::compute_font_for_style_values(DOM::Element const* element, Optional pseudo_element, StyleValue const& font_family, StyleValue const& font_size, StyleValue const& font_style, StyleValue const& font_weight, StyleValue const& font_stretch, int math_depth) const { auto* parent_element = element_to_inherit_style_from(element, pseudo_element); @@ -1898,7 +1898,7 @@ RefPtr StyleComputer::compute_font_for_style_values( return font_list; } -void StyleComputer::compute_font(StyleProperties& style, DOM::Element const* element, Optional pseudo_element) const +void StyleComputer::compute_font(StyleProperties& style, DOM::Element const* element, Optional pseudo_element) const { // To compute the font, first ensure that we've defaulted the relevant CSS font properties. // FIXME: This should be more sophisticated. @@ -1937,7 +1937,7 @@ Gfx::Font const& StyleComputer::initial_font() const return StyleProperties::font_fallback(false, false); } -CSSPixels StyleComputer::parent_or_root_element_line_height(DOM::Element const* element, Optional pseudo_element) const +CSSPixels StyleComputer::parent_or_root_element_line_height(DOM::Element const* element, Optional pseudo_element) const { auto* parent_element = element_to_inherit_style_from(element, pseudo_element); if (!parent_element) @@ -1954,7 +1954,7 @@ CSSPixels StyleComputer::parent_or_root_element_line_height(DOM::Element const* return computed_values->line_height(viewport_rect(), parent_font_metrics, m_root_element_font_metrics); } -void StyleComputer::absolutize_values(StyleProperties& style, DOM::Element const* element, Optional pseudo_element) const +void StyleComputer::absolutize_values(StyleProperties& style, DOM::Element const* element, Optional pseudo_element) const { auto parent_or_root_line_height = parent_or_root_element_line_height(element, pseudo_element); @@ -1996,7 +1996,7 @@ enum class BoxTypeTransformation { Inlinify, }; -static BoxTypeTransformation required_box_type_transformation(StyleProperties const& style, DOM::Element const& element, Optional const& pseudo_element) +static BoxTypeTransformation required_box_type_transformation(StyleProperties const& style, DOM::Element const& element, Optional const& pseudo_element) { // NOTE: We never blockify
elements. They are always inline. // There is currently no way to express in CSS how a
element really behaves. @@ -2024,7 +2024,7 @@ static BoxTypeTransformation required_box_type_transformation(StyleProperties co } // https://drafts.csswg.org/css-display/#transformations -void StyleComputer::transform_box_type_if_needed(StyleProperties& style, DOM::Element const& element, Optional pseudo_element) const +void StyleComputer::transform_box_type_if_needed(StyleProperties& style, DOM::Element const& element, Optional pseudo_element) const { // 2.7. Automatic Box Type Transformations @@ -2118,18 +2118,18 @@ NonnullRefPtr StyleComputer::create_document_style() const return style; } -ErrorOr> StyleComputer::compute_style(DOM::Element& element, Optional pseudo_element) const +ErrorOr> StyleComputer::compute_style(DOM::Element& element, Optional pseudo_element) const { auto style = TRY(compute_style_impl(element, move(pseudo_element), ComputeStyleMode::Normal)); return style.release_nonnull(); } -ErrorOr> StyleComputer::compute_pseudo_element_style_if_needed(DOM::Element& element, Optional pseudo_element) const +ErrorOr> StyleComputer::compute_pseudo_element_style_if_needed(DOM::Element& element, Optional pseudo_element) const { return compute_style_impl(element, move(pseudo_element), ComputeStyleMode::CreatePseudoElementStyleIfNeeded); } -ErrorOr> StyleComputer::compute_style_impl(DOM::Element& element, Optional pseudo_element, ComputeStyleMode mode) const +ErrorOr> StyleComputer::compute_style_impl(DOM::Element& element, Optional pseudo_element, ComputeStyleMode mode) const { build_rule_cache_if_needed(); @@ -2408,7 +2408,7 @@ void StyleComputer::load_fonts_from_sheet(CSSStyleSheet const& sheet) } } -void StyleComputer::compute_math_depth(StyleProperties& style, DOM::Element const* element, Optional pseudo_element) const +void StyleComputer::compute_math_depth(StyleProperties& style, DOM::Element const* element, Optional pseudo_element) const { // https://w3c.github.io/mathml-core/#propdef-math-depth diff --git a/Userland/Libraries/LibWeb/CSS/StyleComputer.h b/Userland/Libraries/LibWeb/CSS/StyleComputer.h index 7e658c224c..be878be6df 100644 --- a/Userland/Libraries/LibWeb/CSS/StyleComputer.h +++ b/Userland/Libraries/LibWeb/CSS/StyleComputer.h @@ -52,8 +52,8 @@ public: NonnullRefPtr create_document_style() const; - ErrorOr> compute_style(DOM::Element&, Optional = {}) const; - ErrorOr> compute_pseudo_element_style_if_needed(DOM::Element&, Optional) const; + ErrorOr> compute_style(DOM::Element&, Optional = {}) const; + ErrorOr> compute_pseudo_element_style_if_needed(DOM::Element&, Optional) const; // https://www.w3.org/TR/css-cascade/#origin enum class CascadeOrigin { @@ -64,7 +64,7 @@ public: Transition, }; - Vector collect_matching_rules(DOM::Element const&, CascadeOrigin, Optional) const; + Vector collect_matching_rules(DOM::Element const&, CascadeOrigin, Optional) const; void invalidate_rule_cache(); @@ -74,7 +74,7 @@ public: void load_fonts_from_sheet(CSSStyleSheet const&); - RefPtr compute_font_for_style_values(DOM::Element const* element, Optional pseudo_element, StyleValue const& font_family, StyleValue const& font_size, StyleValue const& font_style, StyleValue const& font_weight, StyleValue const& font_stretch, int math_depth = 0) const; + RefPtr compute_font_for_style_values(DOM::Element const* element, Optional pseudo_element, StyleValue const& font_family, StyleValue const& font_size, StyleValue const& font_style, StyleValue const& font_weight, StyleValue const& font_stretch, int math_depth = 0) const; struct AnimationKey { CSS::CSSStyleDeclaration const* source_declaration; @@ -121,27 +121,27 @@ private: class FontLoader; struct MatchingFontCandidate; - ErrorOr> compute_style_impl(DOM::Element&, Optional, ComputeStyleMode) const; - ErrorOr compute_cascaded_values(StyleProperties&, DOM::Element&, Optional, bool& did_match_any_pseudo_element_rules, ComputeStyleMode) const; + ErrorOr> compute_style_impl(DOM::Element&, Optional, ComputeStyleMode) const; + ErrorOr compute_cascaded_values(StyleProperties&, DOM::Element&, Optional, bool& did_match_any_pseudo_element_rules, ComputeStyleMode) const; static RefPtr find_matching_font_weight_ascending(Vector const& candidates, int target_weight, float font_size_in_pt, bool inclusive); static RefPtr find_matching_font_weight_descending(Vector const& candidates, int target_weight, float font_size_in_pt, bool inclusive); RefPtr font_matching_algorithm(FontFaceKey const& key, float font_size_in_pt) const; - void compute_font(StyleProperties&, DOM::Element const*, Optional) const; - void compute_math_depth(StyleProperties&, DOM::Element const*, Optional) const; - void compute_defaulted_values(StyleProperties&, DOM::Element const*, Optional) const; - void absolutize_values(StyleProperties&, DOM::Element const*, Optional) const; - void transform_box_type_if_needed(StyleProperties&, DOM::Element const&, Optional) const; + void compute_font(StyleProperties&, DOM::Element const*, Optional) const; + void compute_math_depth(StyleProperties&, DOM::Element const*, Optional) const; + void compute_defaulted_values(StyleProperties&, DOM::Element const*, Optional) const; + void absolutize_values(StyleProperties&, DOM::Element const*, Optional) const; + void transform_box_type_if_needed(StyleProperties&, DOM::Element const&, Optional) const; - void compute_defaulted_property_value(StyleProperties&, DOM::Element const*, CSS::PropertyID, Optional) const; + void compute_defaulted_property_value(StyleProperties&, DOM::Element const*, CSS::PropertyID, Optional) const; - void set_all_properties(DOM::Element&, Optional, StyleProperties&, StyleValue const&, DOM::Document&, CSS::CSSStyleDeclaration const*, StyleProperties::PropertyValues const& properties_for_revert) const; + void set_all_properties(DOM::Element&, Optional, StyleProperties&, StyleValue const&, DOM::Document&, CSS::CSSStyleDeclaration const*, StyleProperties::PropertyValues const& properties_for_revert) const; template void for_each_stylesheet(CascadeOrigin, Callback) const; CSSPixelRect viewport_rect() const; [[nodiscard]] Length::FontMetrics calculate_root_element_font_metrics(StyleProperties const&) const; - CSSPixels parent_or_root_element_line_height(DOM::Element const*, Optional) const; + CSSPixels parent_or_root_element_line_height(DOM::Element const*, Optional) const; struct MatchingRuleSet { Vector user_agent_rules; @@ -149,7 +149,7 @@ private: Vector author_rules; }; - void cascade_declarations(StyleProperties&, DOM::Element&, Optional, Vector const&, CascadeOrigin, Important) const; + void cascade_declarations(StyleProperties&, DOM::Element&, Optional, Vector const&, CascadeOrigin, Important) const; void build_rule_cache(); void build_rule_cache_if_needed() const; diff --git a/Userland/Libraries/LibWeb/DOM/Document.cpp b/Userland/Libraries/LibWeb/DOM/Document.cpp index dc4096eb87..33206edd8a 100644 --- a/Userland/Libraries/LibWeb/DOM/Document.cpp +++ b/Userland/Libraries/LibWeb/DOM/Document.cpp @@ -1124,7 +1124,7 @@ Layout::Viewport* Document::layout_node() return static_cast(Node::layout_node()); } -void Document::set_inspected_node(Node* node, Optional pseudo_element) +void Document::set_inspected_node(Node* node, Optional pseudo_element) { if (m_inspected_node.ptr() == node && m_inspected_pseudo_element == pseudo_element) return; diff --git a/Userland/Libraries/LibWeb/DOM/Document.h b/Userland/Libraries/LibWeb/DOM/Document.h index 33cc6c7069..045a6627ab 100644 --- a/Userland/Libraries/LibWeb/DOM/Document.h +++ b/Userland/Libraries/LibWeb/DOM/Document.h @@ -137,7 +137,7 @@ public: Node* hovered_node() { return m_hovered_node.ptr(); } Node const* hovered_node() const { return m_hovered_node.ptr(); } - void set_inspected_node(Node*, Optional); + void set_inspected_node(Node*, Optional); Node* inspected_node() { return m_inspected_node.ptr(); } Node const* inspected_node() const { return m_inspected_node.ptr(); } Layout::Node* inspected_layout_node(); @@ -576,7 +576,7 @@ private: JS::GCPtr m_style_sheets; JS::GCPtr m_hovered_node; JS::GCPtr m_inspected_node; - Optional m_inspected_pseudo_element; + Optional m_inspected_pseudo_element; JS::GCPtr m_active_favicon; WeakPtr m_browsing_context; AK::URL m_url; diff --git a/Userland/Libraries/LibWeb/DOM/Element.cpp b/Userland/Libraries/LibWeb/DOM/Element.cpp index 7bb9dc9ae6..8f00731784 100644 --- a/Userland/Libraries/LibWeb/DOM/Element.cpp +++ b/Userland/Libraries/LibWeb/DOM/Element.cpp @@ -960,7 +960,7 @@ void Element::children_changed() set_needs_style_update(true); } -void Element::set_pseudo_element_node(Badge, CSS::Selector::PseudoElement pseudo_element, JS::GCPtr pseudo_element_node) +void Element::set_pseudo_element_node(Badge, CSS::Selector::PseudoElement::Type pseudo_element, JS::GCPtr pseudo_element_node) { if (!m_pseudo_element_nodes) { if (!pseudo_element_node) @@ -971,7 +971,7 @@ void Element::set_pseudo_element_node(Badge, CSS::Selector: (*m_pseudo_element_nodes)[to_underlying(pseudo_element)] = pseudo_element_node; } -JS::GCPtr Element::get_pseudo_element_node(CSS::Selector::PseudoElement pseudo_element) const +JS::GCPtr Element::get_pseudo_element_node(CSS::Selector::PseudoElement::Type pseudo_element) const { if (!m_pseudo_element_nodes) return nullptr; @@ -992,7 +992,7 @@ void Element::serialize_pseudo_elements_as_json(JsonArraySerializer(i))))); + MUST(object.add("name"sv, MUST(String::formatted("::{}", CSS::Selector::PseudoElement::name(static_cast(i)))))); MUST(object.add("type"sv, "pseudo-element")); MUST(object.add("parent-id"sv, unique_id())); MUST(object.add("pseudo-element"sv, i)); @@ -2057,7 +2057,7 @@ auto Element::pseudo_element_custom_properties() const -> PseudoElementCustomPro return *m_pseudo_element_custom_properties; } -void Element::set_custom_properties(Optional pseudo_element, HashMap custom_properties) +void Element::set_custom_properties(Optional pseudo_element, HashMap custom_properties) { if (!pseudo_element.has_value()) { m_custom_properties = move(custom_properties); @@ -2066,7 +2066,7 @@ void Element::set_custom_properties(Optional pseud pseudo_element_custom_properties()[to_underlying(pseudo_element.value())] = move(custom_properties); } -HashMap const& Element::custom_properties(Optional pseudo_element) const +HashMap const& Element::custom_properties(Optional pseudo_element) const { if (!pseudo_element.has_value()) return m_custom_properties; diff --git a/Userland/Libraries/LibWeb/DOM/Element.h b/Userland/Libraries/LibWeb/DOM/Element.h index 9a53db04c9..92e103913b 100644 --- a/Userland/Libraries/LibWeb/DOM/Element.h +++ b/Userland/Libraries/LibWeb/DOM/Element.h @@ -173,8 +173,8 @@ public: RequiredInvalidationAfterStyleChange recompute_style(); - Optional use_pseudo_element() const { return m_use_pseudo_element; } - void set_use_pseudo_element(Optional use_pseudo_element) { m_use_pseudo_element = use_pseudo_element; } + Optional use_pseudo_element() const { return m_use_pseudo_element; } + void set_use_pseudo_element(Optional use_pseudo_element) { m_use_pseudo_element = move(use_pseudo_element); } Layout::NodeWithStyle* layout_node(); Layout::NodeWithStyle const* layout_node() const; @@ -207,8 +207,8 @@ public: ShadowRoot const* shadow_root_internal() const { return m_shadow_root.ptr(); } void set_shadow_root(JS::GCPtr); - void set_custom_properties(Optional, HashMap custom_properties); - [[nodiscard]] HashMap const& custom_properties(Optional) const; + void set_custom_properties(Optional, HashMap custom_properties); + [[nodiscard]] HashMap const& custom_properties(Optional) const; int queue_an_element_task(HTML::Task::Source, JS::SafeFunction); @@ -225,8 +225,8 @@ public: static JS::GCPtr create_layout_node_for_display_type(DOM::Document&, CSS::Display const&, NonnullRefPtr, Element*); - void set_pseudo_element_node(Badge, CSS::Selector::PseudoElement, JS::GCPtr); - JS::GCPtr get_pseudo_element_node(CSS::Selector::PseudoElement) const; + void set_pseudo_element_node(Badge, CSS::Selector::PseudoElement::Type, JS::GCPtr); + JS::GCPtr get_pseudo_element_node(CSS::Selector::PseudoElement::Type) const; void clear_pseudo_element_nodes(Badge); void serialize_pseudo_elements_as_json(JsonArraySerializer& children_array) const; @@ -410,18 +410,18 @@ private: RefPtr m_computed_css_values; HashMap m_custom_properties; - using PseudoElementCustomProperties = Array, to_underlying(CSS::Selector::PseudoElement::PseudoElementCount)>; + using PseudoElementCustomProperties = Array, to_underlying(CSS::Selector::PseudoElement::Type::PseudoElementCount)>; mutable OwnPtr m_pseudo_element_custom_properties; PseudoElementCustomProperties& pseudo_element_custom_properties() const; - Optional m_use_pseudo_element {}; + Optional m_use_pseudo_element; Vector m_classes; Optional m_dir; Optional m_id; - using PseudoElementLayoutNodes = Array, to_underlying(CSS::Selector::PseudoElement::PseudoElementCount)>; + using PseudoElementLayoutNodes = Array, to_underlying(CSS::Selector::PseudoElement::Type::PseudoElementCount)>; OwnPtr m_pseudo_element_nodes; // https://html.spec.whatwg.org/multipage/custom-elements.html#custom-element-reaction-queue diff --git a/Userland/Libraries/LibWeb/DOM/Node.cpp b/Userland/Libraries/LibWeb/DOM/Node.cpp index 9e2b891f30..fc041b8a89 100644 --- a/Userland/Libraries/LibWeb/DOM/Node.cpp +++ b/Userland/Libraries/LibWeb/DOM/Node.cpp @@ -1838,8 +1838,8 @@ ErrorOr Node::name_or_description(NameOrDescription target, Document con // i. Set the accumulated text to the empty string. total_accumulated_text.clear(); // ii. Check for CSS generated textual content associated with the current node and include it in the accumulated text. The CSS :before and :after pseudo elements [CSS2] can provide textual content for elements that have a content model. - auto before = element->get_pseudo_element_node(CSS::Selector::PseudoElement::Before); - auto after = element->get_pseudo_element_node(CSS::Selector::PseudoElement::After); + auto before = element->get_pseudo_element_node(CSS::Selector::PseudoElement::Type::Before); + auto after = element->get_pseudo_element_node(CSS::Selector::PseudoElement::Type::After); // - For :before pseudo elements, User agents MUST prepend CSS textual content, without a space, to the textual content of the current node. if (before) TRY(Node::prepend_without_space(total_accumulated_text, before->computed_values().content().data)); diff --git a/Userland/Libraries/LibWeb/Dump.cpp b/Userland/Libraries/LibWeb/Dump.cpp index f710e8ffc0..ecc0b3883b 100644 --- a/Userland/Libraries/LibWeb/Dump.cpp +++ b/Userland/Libraries/LibWeb/Dump.cpp @@ -542,7 +542,7 @@ void dump_selector(StringBuilder& builder, CSS::Selector const& selector) } if (simple_selector.type == CSS::Selector::SimpleSelector::Type::PseudoElement) { - builder.appendff(" pseudo_element={}", CSS::pseudo_element_name(simple_selector.pseudo_element())); + builder.appendff(" pseudo_element={}", simple_selector.pseudo_element().name()); } if (simple_selector.type == CSS::Selector::SimpleSelector::Type::Attribute) { diff --git a/Userland/Libraries/LibWeb/HTML/HTMLInputElement.cpp b/Userland/Libraries/LibWeb/HTML/HTMLInputElement.cpp index e7eaa5be22..7af22d1d8c 100644 --- a/Userland/Libraries/LibWeb/HTML/HTMLInputElement.cpp +++ b/Userland/Libraries/LibWeb/HTML/HTMLInputElement.cpp @@ -571,7 +571,7 @@ void HTMLInputElement::create_text_input_shadow_tree() MUST(shadow_root->append_child(element)); m_placeholder_element = MUST(DOM::create_element(document(), HTML::TagNames::div, Namespace::HTML)); - m_placeholder_element->set_use_pseudo_element(CSS::Selector::PseudoElement::Placeholder); + m_placeholder_element->set_use_pseudo_element(CSS::Selector::PseudoElement::Type::Placeholder); MUST(m_placeholder_element->set_attribute(HTML::AttributeNames::style, R"~~~( flex: 1; height: 1lh; diff --git a/Userland/Libraries/LibWeb/HTML/HTMLMeterElement.cpp b/Userland/Libraries/LibWeb/HTML/HTMLMeterElement.cpp index 5aa8c39bac..d42c1daf8d 100644 --- a/Userland/Libraries/LibWeb/HTML/HTMLMeterElement.cpp +++ b/Userland/Libraries/LibWeb/HTML/HTMLMeterElement.cpp @@ -191,7 +191,7 @@ void HTMLMeterElement::create_shadow_tree_if_needed() set_shadow_root(shadow_root); auto meter_bar_element = MUST(DOM::create_element(document(), HTML::TagNames::div, Namespace::HTML)); - meter_bar_element->set_use_pseudo_element(CSS::Selector::PseudoElement::MeterBar); + meter_bar_element->set_use_pseudo_element(CSS::Selector::PseudoElement::Type::MeterBar); MUST(shadow_root->append_child(*meter_bar_element)); m_meter_value_element = MUST(DOM::create_element(document(), HTML::TagNames::div, Namespace::HTML)); @@ -215,23 +215,23 @@ void HTMLMeterElement::update_meter_value_element() // If the optimum point is equal to the low boundary or the high boundary, or anywhere in between them, then the region between the low and high boundaries of the gauge must be treated as the optimum region, and the low and high parts, if any, must be treated as suboptimal. if (optimum >= low && optimum <= high) { if (value >= low && value <= high) - m_meter_value_element->set_use_pseudo_element(CSS::Selector::PseudoElement::MeterOptimumValue); + m_meter_value_element->set_use_pseudo_element(CSS::Selector::PseudoElement::Type::MeterOptimumValue); else - m_meter_value_element->set_use_pseudo_element(CSS::Selector::PseudoElement::MeterSuboptimumValue); + m_meter_value_element->set_use_pseudo_element(CSS::Selector::PseudoElement::Type::MeterSuboptimumValue); } // Otherwise, if the optimum point is less than the low boundary, then the region between the minimum value and the low boundary must be treated as the optimum region, the region from the low boundary up to the high boundary must be treated as a suboptimal region, and the remaining region must be treated as an even less good region. else if (optimum < low) { if (value >= low && value <= high) - m_meter_value_element->set_use_pseudo_element(CSS::Selector::PseudoElement::MeterSuboptimumValue); + m_meter_value_element->set_use_pseudo_element(CSS::Selector::PseudoElement::Type::MeterSuboptimumValue); else - m_meter_value_element->set_use_pseudo_element(CSS::Selector::PseudoElement::MeterEvenLessGoodValue); + m_meter_value_element->set_use_pseudo_element(CSS::Selector::PseudoElement::Type::MeterEvenLessGoodValue); } // Finally, if the optimum point is higher than the high boundary, then the situation is reversed; the region between the high boundary and the maximum value must be treated as the optimum region, the region from the high boundary down to the low boundary must be treated as a suboptimal region, and the remaining region must be treated as an even less good region. else { if (value >= low && value <= high) - m_meter_value_element->set_use_pseudo_element(CSS::Selector::PseudoElement::MeterSuboptimumValue); + m_meter_value_element->set_use_pseudo_element(CSS::Selector::PseudoElement::Type::MeterSuboptimumValue); else - m_meter_value_element->set_use_pseudo_element(CSS::Selector::PseudoElement::MeterEvenLessGoodValue); + m_meter_value_element->set_use_pseudo_element(CSS::Selector::PseudoElement::Type::MeterEvenLessGoodValue); } double position = (value - min) / (max - min) * 100; diff --git a/Userland/Libraries/LibWeb/HTML/HTMLProgressElement.cpp b/Userland/Libraries/LibWeb/HTML/HTMLProgressElement.cpp index e7d9da40a7..c5ac8a5a54 100644 --- a/Userland/Libraries/LibWeb/HTML/HTMLProgressElement.cpp +++ b/Userland/Libraries/LibWeb/HTML/HTMLProgressElement.cpp @@ -105,11 +105,11 @@ void HTMLProgressElement::create_shadow_tree_if_needed() set_shadow_root(shadow_root); auto progress_bar_element = MUST(DOM::create_element(document(), HTML::TagNames::div, Namespace::HTML)); - progress_bar_element->set_use_pseudo_element(CSS::Selector::PseudoElement::ProgressBar); + progress_bar_element->set_use_pseudo_element(CSS::Selector::PseudoElement::Type::ProgressBar); MUST(shadow_root->append_child(*progress_bar_element)); m_progress_value_element = MUST(DOM::create_element(document(), HTML::TagNames::div, Namespace::HTML)); - m_progress_value_element->set_use_pseudo_element(CSS::Selector::PseudoElement::ProgressValue); + m_progress_value_element->set_use_pseudo_element(CSS::Selector::PseudoElement::Type::ProgressValue); MUST(progress_bar_element->append_child(*m_progress_value_element)); update_progress_value_element(); } diff --git a/Userland/Libraries/LibWeb/Internals/Inspector.cpp b/Userland/Libraries/LibWeb/Internals/Inspector.cpp index e62c3d277f..3237234c2e 100644 --- a/Userland/Libraries/LibWeb/Internals/Inspector.cpp +++ b/Userland/Libraries/LibWeb/Internals/Inspector.cpp @@ -41,8 +41,8 @@ void Inspector::inspect_dom_node(i32 node_id, Optional const& pseudo_elemen { auto& page = global_object().browsing_context()->page(); page.client().inspector_did_select_dom_node(node_id, pseudo_element.map([](auto value) { - VERIFY(value < to_underlying(Web::CSS::Selector::PseudoElement::PseudoElementCount)); - return static_cast(value); + VERIFY(value < to_underlying(Web::CSS::Selector::PseudoElement::Type::PseudoElementCount)); + return static_cast(value); })); } diff --git a/Userland/Libraries/LibWeb/Layout/TreeBuilder.cpp b/Userland/Libraries/LibWeb/Layout/TreeBuilder.cpp index 97215d4f06..47ef98f662 100644 --- a/Userland/Libraries/LibWeb/Layout/TreeBuilder.cpp +++ b/Userland/Libraries/LibWeb/Layout/TreeBuilder.cpp @@ -182,7 +182,7 @@ void TreeBuilder::insert_node_into_inline_or_block_ancestor(Layout::Node& node, } } -ErrorOr TreeBuilder::create_pseudo_element_if_needed(DOM::Element& element, CSS::Selector::PseudoElement pseudo_element, AppendOrPrepend mode) +ErrorOr TreeBuilder::create_pseudo_element_if_needed(DOM::Element& element, CSS::Selector::PseudoElement::Type pseudo_element, AppendOrPrepend mode) { auto& document = element.document(); auto& style_computer = document.style_computer(); @@ -207,9 +207,9 @@ ErrorOr TreeBuilder::create_pseudo_element_if_needed(DOM::Element& element return {}; auto generated_for = Node::GeneratedFor::NotGenerated; - if (pseudo_element == CSS::Selector::PseudoElement::Before) { + if (pseudo_element == CSS::Selector::PseudoElement::Type::Before) { generated_for = Node::GeneratedFor::PseudoBefore; - } else if (pseudo_element == CSS::Selector::PseudoElement::After) { + } else if (pseudo_element == CSS::Selector::PseudoElement::Type::After) { generated_for = Node::GeneratedFor::PseudoAfter; } else { VERIFY_NOT_REACHED(); @@ -368,7 +368,7 @@ ErrorOr TreeBuilder::create_layout_tree(DOM::Node& dom_node, TreeBuilder:: if (is(dom_node) && layout_node->can_have_children()) { auto& element = static_cast(dom_node); push_parent(verify_cast(*layout_node)); - TRY(create_pseudo_element_if_needed(element, CSS::Selector::PseudoElement::Before, AppendOrPrepend::Prepend)); + TRY(create_pseudo_element_if_needed(element, CSS::Selector::PseudoElement::Type::Before, AppendOrPrepend::Prepend)); pop_parent(); } @@ -388,10 +388,10 @@ ErrorOr TreeBuilder::create_layout_tree(DOM::Node& dom_node, TreeBuilder:: if (is(*layout_node)) { auto& element = static_cast(dom_node); - auto marker_style = TRY(style_computer.compute_style(element, CSS::Selector::PseudoElement::Marker)); + auto marker_style = TRY(style_computer.compute_style(element, CSS::Selector::PseudoElement::Type::Marker)); auto list_item_marker = document.heap().allocate_without_realm(document, layout_node->computed_values().list_style_type(), layout_node->computed_values().list_style_position(), calculate_list_item_index(dom_node), *marker_style); static_cast(*layout_node).set_marker(list_item_marker); - element.set_pseudo_element_node({}, CSS::Selector::PseudoElement::Marker, list_item_marker); + element.set_pseudo_element_node({}, CSS::Selector::PseudoElement::Type::Marker, list_item_marker); layout_node->append_child(*list_item_marker); } @@ -460,7 +460,7 @@ ErrorOr TreeBuilder::create_layout_tree(DOM::Node& dom_node, TreeBuilder:: if (is(dom_node) && layout_node->can_have_children()) { auto& element = static_cast(dom_node); push_parent(verify_cast(*layout_node)); - TRY(create_pseudo_element_if_needed(element, CSS::Selector::PseudoElement::After, AppendOrPrepend::Append)); + TRY(create_pseudo_element_if_needed(element, CSS::Selector::PseudoElement::Type::After, AppendOrPrepend::Append)); pop_parent(); } diff --git a/Userland/Libraries/LibWeb/Layout/TreeBuilder.h b/Userland/Libraries/LibWeb/Layout/TreeBuilder.h index 291aec79e5..320ed7aff2 100644 --- a/Userland/Libraries/LibWeb/Layout/TreeBuilder.h +++ b/Userland/Libraries/LibWeb/Layout/TreeBuilder.h @@ -49,7 +49,7 @@ private: Prepend, }; void insert_node_into_inline_or_block_ancestor(Layout::Node&, CSS::Display, AppendOrPrepend); - ErrorOr create_pseudo_element_if_needed(DOM::Element&, CSS::Selector::PseudoElement, AppendOrPrepend); + ErrorOr create_pseudo_element_if_needed(DOM::Element&, CSS::Selector::PseudoElement::Type, AppendOrPrepend); JS::GCPtr m_layout_root; Vector> m_ancestor_stack; diff --git a/Userland/Libraries/LibWeb/Page/Page.h b/Userland/Libraries/LibWeb/Page/Page.h index 767024107e..d56cacb948 100644 --- a/Userland/Libraries/LibWeb/Page/Page.h +++ b/Userland/Libraries/LibWeb/Page/Page.h @@ -286,7 +286,7 @@ public: virtual void page_did_insert_clipboard_entry([[maybe_unused]] String data, [[maybe_unused]] String presentation_style, [[maybe_unused]] String mime_type) { } virtual void inspector_did_load() { } - virtual void inspector_did_select_dom_node([[maybe_unused]] i32 node_id, [[maybe_unused]] Optional const& pseudo_element) { } + virtual void inspector_did_select_dom_node([[maybe_unused]] i32 node_id, [[maybe_unused]] Optional const& pseudo_element) { } virtual void inspector_did_set_dom_node_text([[maybe_unused]] i32 node_id, [[maybe_unused]] String const& text) { } virtual void inspector_did_set_dom_node_tag([[maybe_unused]] i32 node_id, [[maybe_unused]] String const& tag) { } virtual void inspector_did_add_dom_node_attributes([[maybe_unused]] i32 node_id, [[maybe_unused]] JS::NonnullGCPtr attributes) { } diff --git a/Userland/Libraries/LibWebView/ViewImplementation.cpp b/Userland/Libraries/LibWebView/ViewImplementation.cpp index 48fc0c21ff..4a97beaa9e 100644 --- a/Userland/Libraries/LibWebView/ViewImplementation.cpp +++ b/Userland/Libraries/LibWebView/ViewImplementation.cpp @@ -156,7 +156,7 @@ void ViewImplementation::inspect_accessibility_tree() client().async_inspect_accessibility_tree(); } -ErrorOr ViewImplementation::inspect_dom_node(i32 node_id, Optional pseudo_element) +ErrorOr ViewImplementation::inspect_dom_node(i32 node_id, Optional pseudo_element) { auto response = client().inspect_dom_node(node_id, pseudo_element); if (!response.has_style()) diff --git a/Userland/Libraries/LibWebView/ViewImplementation.h b/Userland/Libraries/LibWebView/ViewImplementation.h index cb07b5e937..811ac773fa 100644 --- a/Userland/Libraries/LibWebView/ViewImplementation.h +++ b/Userland/Libraries/LibWebView/ViewImplementation.h @@ -61,7 +61,7 @@ public: void inspect_dom_tree(); void inspect_accessibility_tree(); - ErrorOr inspect_dom_node(i32 node_id, Optional pseudo_element); + ErrorOr inspect_dom_node(i32 node_id, Optional pseudo_element); void clear_inspected_dom_node(); i32 get_hovered_node_id(); @@ -163,7 +163,7 @@ public: Function on_theme_color_change; Function on_insert_clipboard_entry; Function on_inspector_loaded; - Function const&)> on_inspector_selected_dom_node; + Function const&)> on_inspector_selected_dom_node; Function on_inspector_set_dom_node_text; Function on_inspector_set_dom_node_tag; Function const&)> on_inspector_added_dom_node_attributes; diff --git a/Userland/Libraries/LibWebView/WebContentClient.cpp b/Userland/Libraries/LibWebView/WebContentClient.cpp index 277593d2cd..8c7b9d34a9 100644 --- a/Userland/Libraries/LibWebView/WebContentClient.cpp +++ b/Userland/Libraries/LibWebView/WebContentClient.cpp @@ -414,7 +414,7 @@ void WebContentClient::inspector_did_load() m_view.on_inspector_loaded(); } -void WebContentClient::inspector_did_select_dom_node(i32 node_id, Optional const& pseudo_element) +void WebContentClient::inspector_did_select_dom_node(i32 node_id, Optional const& pseudo_element) { if (m_view.on_inspector_selected_dom_node) m_view.on_inspector_selected_dom_node(node_id, pseudo_element); diff --git a/Userland/Libraries/LibWebView/WebContentClient.h b/Userland/Libraries/LibWebView/WebContentClient.h index 96fae8ced1..8e611de087 100644 --- a/Userland/Libraries/LibWebView/WebContentClient.h +++ b/Userland/Libraries/LibWebView/WebContentClient.h @@ -89,7 +89,7 @@ private: virtual void did_change_theme_color(Gfx::Color color) override; virtual void did_insert_clipboard_entry(String const& data, String const& presentation_style, String const& mime_type) override; virtual void inspector_did_load() override; - virtual void inspector_did_select_dom_node(i32 node_id, Optional const& pseudo_element) override; + virtual void inspector_did_select_dom_node(i32 node_id, Optional const& pseudo_element) override; virtual void inspector_did_set_dom_node_text(i32 node_id, String const& text) override; virtual void inspector_did_set_dom_node_tag(i32 node_id, String const& tag) override; virtual void inspector_did_add_dom_node_attributes(i32 node_id, Vector const& attributes) override; diff --git a/Userland/Services/WebContent/ConnectionFromClient.cpp b/Userland/Services/WebContent/ConnectionFromClient.cpp index aba3c8432e..ae07fa896f 100644 --- a/Userland/Services/WebContent/ConnectionFromClient.cpp +++ b/Userland/Services/WebContent/ConnectionFromClient.cpp @@ -516,7 +516,7 @@ void ConnectionFromClient::inspect_dom_tree() } } -Messages::WebContentServer::InspectDomNodeResponse ConnectionFromClient::inspect_dom_node(i32 node_id, Optional const& pseudo_element) +Messages::WebContentServer::InspectDomNodeResponse ConnectionFromClient::inspect_dom_node(i32 node_id, Optional const& pseudo_element) { auto& top_context = page().page().top_level_browsing_context(); @@ -552,7 +552,7 @@ Messages::WebContentServer::InspectDomNodeResponse ConnectionFromClient::inspect return builder.to_deprecated_string(); }; - auto serialize_custom_properties_json = [](Web::DOM::Element const& element, Optional pseudo_element) -> DeprecatedString { + auto serialize_custom_properties_json = [](Web::DOM::Element const& element, Optional pseudo_element) -> DeprecatedString { StringBuilder builder; auto serializer = MUST(JsonObjectSerializer<>::try_create(builder)); HashTable seen_properties; diff --git a/Userland/Services/WebContent/ConnectionFromClient.h b/Userland/Services/WebContent/ConnectionFromClient.h index 7e85e79114..d0a05ef60e 100644 --- a/Userland/Services/WebContent/ConnectionFromClient.h +++ b/Userland/Services/WebContent/ConnectionFromClient.h @@ -72,7 +72,7 @@ private: virtual void debug_request(DeprecatedString const&, DeprecatedString const&) override; virtual void get_source() override; virtual void inspect_dom_tree() override; - virtual Messages::WebContentServer::InspectDomNodeResponse inspect_dom_node(i32 node_id, Optional const& pseudo_element) override; + virtual Messages::WebContentServer::InspectDomNodeResponse inspect_dom_node(i32 node_id, Optional const& pseudo_element) override; virtual void inspect_accessibility_tree() override; virtual Messages::WebContentServer::GetHoveredNodeIdResponse get_hovered_node_id() override; diff --git a/Userland/Services/WebContent/PageClient.cpp b/Userland/Services/WebContent/PageClient.cpp index 7c7ba7c099..642d307cfd 100644 --- a/Userland/Services/WebContent/PageClient.cpp +++ b/Userland/Services/WebContent/PageClient.cpp @@ -529,7 +529,7 @@ void PageClient::inspector_did_load() client().async_inspector_did_load(); } -void PageClient::inspector_did_select_dom_node(i32 node_id, Optional const& pseudo_element) +void PageClient::inspector_did_select_dom_node(i32 node_id, Optional const& pseudo_element) { client().async_inspector_did_select_dom_node(node_id, pseudo_element); } diff --git a/Userland/Services/WebContent/PageClient.h b/Userland/Services/WebContent/PageClient.h index 61f320986d..384dca189c 100644 --- a/Userland/Services/WebContent/PageClient.h +++ b/Userland/Services/WebContent/PageClient.h @@ -124,7 +124,7 @@ private: virtual void page_did_change_theme_color(Gfx::Color color) override; virtual void page_did_insert_clipboard_entry(String data, String presentation_style, String mime_type) override; virtual void inspector_did_load() override; - virtual void inspector_did_select_dom_node(i32 node_id, Optional const& pseudo_element) override; + virtual void inspector_did_select_dom_node(i32 node_id, Optional const& pseudo_element) override; virtual void inspector_did_set_dom_node_text(i32 node_id, String const& text) override; virtual void inspector_did_set_dom_node_tag(i32 node_id, String const& tag) override; virtual void inspector_did_add_dom_node_attributes(i32 node_id, JS::NonnullGCPtr attributes) override; diff --git a/Userland/Services/WebContent/WebContentClient.ipc b/Userland/Services/WebContent/WebContentClient.ipc index 7fb17ee9b9..c96476e638 100644 --- a/Userland/Services/WebContent/WebContentClient.ipc +++ b/Userland/Services/WebContent/WebContentClient.ipc @@ -74,7 +74,7 @@ endpoint WebContentClient did_finish_text_test() =| inspector_did_load() =| - inspector_did_select_dom_node(i32 node_id, Optional pseudo_element) =| + inspector_did_select_dom_node(i32 node_id, Optional pseudo_element) =| inspector_did_set_dom_node_text(i32 node_id, String text) =| inspector_did_set_dom_node_tag(i32 node_id, String tag) =| inspector_did_add_dom_node_attributes(i32 node_id, Vector attributes) =| diff --git a/Userland/Services/WebContent/WebContentServer.ipc b/Userland/Services/WebContent/WebContentServer.ipc index d46222fa11..45b76691aa 100644 --- a/Userland/Services/WebContent/WebContentServer.ipc +++ b/Userland/Services/WebContent/WebContentServer.ipc @@ -40,7 +40,7 @@ endpoint WebContentServer debug_request(DeprecatedString request, DeprecatedString argument) =| get_source() =| inspect_dom_tree() =| - inspect_dom_node(i32 node_id, Optional pseudo_element) => (bool has_style, DeprecatedString computed_style, DeprecatedString resolved_style, DeprecatedString custom_properties, DeprecatedString node_box_sizing, DeprecatedString aria_properties_state) + inspect_dom_node(i32 node_id, Optional pseudo_element) => (bool has_style, DeprecatedString computed_style, DeprecatedString resolved_style, DeprecatedString custom_properties, DeprecatedString node_box_sizing, DeprecatedString aria_properties_state) inspect_accessibility_tree() =| get_hovered_node_id() => (i32 node_id) js_console_input(DeprecatedString js_source) =|