diff --git a/Libraries/LibWeb/DOM/PseudoElement.cpp b/Libraries/LibWeb/DOM/PseudoElement.cpp index b2da434ea21..32aa4ab0beb 100644 --- a/Libraries/LibWeb/DOM/PseudoElement.cpp +++ b/Libraries/LibWeb/DOM/PseudoElement.cpp @@ -23,4 +23,23 @@ void PseudoElement::visit_edges(JS::Cell::Visitor& visitor) visitor.visit(m_layout_node); } +Optional PseudoElement::counters_set() const +{ + if (!m_counters_set) + return {}; + return *m_counters_set; +} + +CSS::CountersSet& PseudoElement::ensure_counters_set() +{ + if (!m_counters_set) + m_counters_set = make(); + return *m_counters_set; +} + +void PseudoElement::set_counters_set(OwnPtr&& counters_set) +{ + m_counters_set = move(counters_set); +} + } diff --git a/Libraries/LibWeb/DOM/PseudoElement.h b/Libraries/LibWeb/DOM/PseudoElement.h index 5c51523fec5..c21a063f797 100644 --- a/Libraries/LibWeb/DOM/PseudoElement.h +++ b/Libraries/LibWeb/DOM/PseudoElement.h @@ -30,6 +30,11 @@ class PseudoElement : public JS::Cell { HashMap const& custom_properties() const { return m_custom_properties; } void set_custom_properties(HashMap value) { m_custom_properties = move(value); } + bool has_non_empty_counters_set() const { return m_counters_set; } + Optional counters_set() const; + CSS::CountersSet& ensure_counters_set(); + void set_counters_set(OwnPtr&&); + virtual void visit_edges(JS::Cell::Visitor&) override; private: @@ -37,6 +42,7 @@ private: GC::Ptr m_cascaded_properties; GC::Ptr m_computed_properties; HashMap m_custom_properties; + OwnPtr m_counters_set; }; // https://drafts.csswg.org/css-view-transitions/#pseudo-element-tree