Coverage Report

Created: 2025-03-04 07:22

/src/serenity/Userland/Libraries/LibWeb/CSS/CSSStyleRule.h
Line
Count
Source (jump to first uncovered line)
1
/*
2
 * Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org>
3
 * Copyright (c) 2021, the SerenityOS developers.
4
 *
5
 * SPDX-License-Identifier: BSD-2-Clause
6
 */
7
8
#pragma once
9
10
#include <AK/NonnullRefPtr.h>
11
#include <LibWeb/CSS/CSSGroupingRule.h>
12
#include <LibWeb/CSS/CSSStyleDeclaration.h>
13
#include <LibWeb/CSS/Selector.h>
14
15
namespace Web::CSS {
16
17
class CSSStyleRule final : public CSSGroupingRule {
18
    WEB_PLATFORM_OBJECT(CSSStyleRule, CSSGroupingRule);
19
    JS_DECLARE_ALLOCATOR(CSSStyleRule);
20
21
public:
22
    [[nodiscard]] static JS::NonnullGCPtr<CSSStyleRule> create(JS::Realm&, SelectorList&&, PropertyOwningCSSStyleDeclaration&, CSSRuleList&);
23
24
0
    virtual ~CSSStyleRule() override = default;
25
26
0
    SelectorList const& selectors() const { return m_selectors; }
27
    SelectorList const& absolutized_selectors() const;
28
0
    PropertyOwningCSSStyleDeclaration const& declaration() const { return m_declaration; }
29
30
0
    virtual Type type() const override { return Type::Style; }
31
32
    String selector_text() const;
33
    void set_selector_text(StringView);
34
35
    CSSStyleDeclaration* style();
36
37
0
    [[nodiscard]] FlyString const& qualified_layer_name() const { return parent_layer_internal_qualified_name(); }
38
39
private:
40
    CSSStyleRule(JS::Realm&, SelectorList&&, PropertyOwningCSSStyleDeclaration&, CSSRuleList&);
41
42
    virtual void initialize(JS::Realm&) override;
43
    virtual void visit_edges(Cell::Visitor&) override;
44
    virtual void clear_caches() override;
45
    virtual String serialized() const override;
46
47
    SelectorList m_selectors;
48
    mutable Optional<SelectorList> m_cached_absolutized_selectors;
49
    JS::NonnullGCPtr<PropertyOwningCSSStyleDeclaration> m_declaration;
50
};
51
52
template<>
53
0
inline bool CSSRule::fast_is<CSSStyleRule>() const { return type() == CSSRule::Type::Style; }
54
55
}