mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-07-31 21:29:06 +00:00
LibWeb: Collect interesting document-wide insights about CSS selectors
Starting out with these two things: - Whether any :has() selectors are present - The set of all names referenced by attribute selectors
This commit is contained in:
parent
dc8343cc23
commit
6983c65c54
Notes:
github-actions[bot]
2024-12-23 16:06:10 +00:00
Author: https://github.com/awesomekling
Commit: 6983c65c54
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/3023
2 changed files with 42 additions and 22 deletions
|
@ -169,7 +169,8 @@ public:
|
|||
};
|
||||
void collect_animation_into(DOM::Element&, Optional<CSS::Selector::PseudoElement::Type>, GC::Ref<Animations::KeyframeEffect> animation, ComputedProperties&, AnimationRefresh = AnimationRefresh::No) const;
|
||||
|
||||
[[nodiscard]] bool has_has_selectors() const { return m_has_has_selectors; }
|
||||
[[nodiscard]] bool has_has_selectors() const;
|
||||
[[nodiscard]] bool has_attribute_selector(FlyString const& attribute_name) const;
|
||||
|
||||
size_t number_of_css_font_faces_with_loading_in_progress() const;
|
||||
|
||||
|
@ -247,6 +248,11 @@ private:
|
|||
|
||||
GC::Ref<DOM::Document> m_document;
|
||||
|
||||
struct SelectorInsights {
|
||||
bool has_has_selectors { false };
|
||||
HashTable<FlyString> all_names_used_in_attribute_selectors;
|
||||
};
|
||||
|
||||
struct RuleCache {
|
||||
HashMap<FlyString, Vector<MatchingRule>> rules_by_id;
|
||||
HashMap<FlyString, Vector<MatchingRule>> rules_by_class;
|
||||
|
@ -257,15 +263,15 @@ private:
|
|||
Vector<MatchingRule> other_rules;
|
||||
|
||||
HashMap<FlyString, NonnullRefPtr<Animations::KeyframeEffect::KeyFrameSet>> rules_by_animation_keyframes;
|
||||
|
||||
bool has_has_selectors { false };
|
||||
};
|
||||
|
||||
NonnullOwnPtr<RuleCache> make_rule_cache_for_cascade_origin(CascadeOrigin);
|
||||
NonnullOwnPtr<RuleCache> make_rule_cache_for_cascade_origin(CascadeOrigin, SelectorInsights&);
|
||||
|
||||
RuleCache const& rule_cache_for_cascade_origin(CascadeOrigin) const;
|
||||
|
||||
bool m_has_has_selectors { false };
|
||||
static void collect_selector_insights(Selector const&, SelectorInsights&);
|
||||
|
||||
OwnPtr<SelectorInsights> m_selector_insights;
|
||||
OwnPtr<RuleCache> m_author_rule_cache;
|
||||
OwnPtr<RuleCache> m_user_rule_cache;
|
||||
OwnPtr<RuleCache> m_user_agent_rule_cache;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue