mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-07-29 04:09:13 +00:00
LibWeb: Optimize pseudo elements presence check in hover style update
Instead of using `has_pseudo_elements()` that iterates over all pseudo elements, only check if `::before` or `::after` are present. Before this change, `has_pseudo_elements()` was 10% of profiles on Discord while now it's 1-2%.
This commit is contained in:
parent
8ed7dee0f0
commit
e1119023e9
Notes:
github-actions[bot]
2025-02-19 18:57:53 +00:00
Author: https://github.com/kalenikaliaksandr
Commit: e1119023e9
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/3633
Reviewed-by: https://github.com/awesomekling ✅
2 changed files with 13 additions and 1 deletions
|
@ -273,6 +273,7 @@ public:
|
|||
|
||||
void set_pseudo_element_node(Badge<Layout::TreeBuilder>, CSS::Selector::PseudoElement::Type, GC::Ptr<Layout::NodeWithStyle>);
|
||||
GC::Ptr<Layout::NodeWithStyle> get_pseudo_element_node(CSS::Selector::PseudoElement::Type) const;
|
||||
bool has_pseudo_element(CSS::Selector::PseudoElement::Type) const;
|
||||
bool has_pseudo_elements() const;
|
||||
void clear_pseudo_element_nodes(Badge<Layout::TreeBuilder>);
|
||||
void serialize_pseudo_elements_as_json(JsonArraySerializer<StringBuilder>& children_array) const;
|
||||
|
@ -589,6 +590,15 @@ inline bool Element::has_class(FlyString const& class_name, CaseSensitivity case
|
|||
});
|
||||
}
|
||||
|
||||
inline bool Element::has_pseudo_element(CSS::Selector::PseudoElement::Type type) const
|
||||
{
|
||||
if (!m_pseudo_element_data)
|
||||
return false;
|
||||
if (!CSS::Selector::PseudoElement::is_known_pseudo_element_type(type))
|
||||
return false;
|
||||
return m_pseudo_element_data->at(to_underlying(type)).layout_node;
|
||||
}
|
||||
|
||||
WebIDL::ExceptionOr<QualifiedName> validate_and_extract(JS::Realm&, Optional<FlyString> namespace_, FlyString const& qualified_name);
|
||||
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue