Serenity Operating System
at master 43 lines 1.2 kB view raw
1/* 2 * Copyright (c) 2021-2022, Sam Atkins <atkinssj@serenityos.org> 3 * 4 * SPDX-License-Identifier: BSD-2-Clause 5 */ 6 7#pragma once 8 9#include <AK/Function.h> 10#include <AK/NonnullRefPtr.h> 11#include <LibWeb/CSS/CSSRule.h> 12#include <LibWeb/CSS/CSSRuleList.h> 13#include <LibWeb/Forward.h> 14 15namespace Web::CSS { 16 17class CSSGroupingRule : public CSSRule { 18 WEB_PLATFORM_OBJECT(CSSGroupingRule, CSSRule); 19 20public: 21 virtual ~CSSGroupingRule() = default; 22 23 CSSRuleList const& css_rules() const { return m_rules; } 24 CSSRuleList& css_rules() { return m_rules; } 25 CSSRuleList* css_rules_for_bindings() { return &m_rules; } 26 WebIDL::ExceptionOr<u32> insert_rule(StringView rule, u32 index = 0); 27 WebIDL::ExceptionOr<void> delete_rule(u32 index); 28 29 virtual void for_each_effective_style_rule(Function<void(CSSStyleRule const&)> const& callback) const; 30 31 virtual void set_parent_style_sheet(CSSStyleSheet*) override; 32 33protected: 34 CSSGroupingRule(JS::Realm&, CSSRuleList&); 35 36 virtual JS::ThrowCompletionOr<void> initialize(JS::Realm&) override; 37 virtual void visit_edges(Cell::Visitor&) override; 38 39private: 40 CSSRuleList& m_rules; 41}; 42 43}