#pragma once #include #include #include class Document; class Element; class ParentNode; class StyleRule; class StyleSheet; class StyleResolver { public: explicit StyleResolver(Document&); ~StyleResolver(); Document& document() { return m_document; } const Document& document() const { return m_document; } NonnullRefPtr resolve_style(const Element&, const StyleProperties* parent_style) const; NonnullRefPtrVector collect_matching_rules(const Element&) const; static bool is_inherited_property(CSS::PropertyID); private: template void for_each_stylesheet(Callback) const; Document& m_document; };