summaryrefslogtreecommitdiff
path: root/Userland/Libraries/LibWeb/CSS/CSSImportRule.h
blob: 839555a5da7a2d9c3ef78570cfc0f33b5fd77558 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
/*
 * Copyright (c) 2021, the SerenityOS developers.
 *
 * SPDX-License-Identifier: BSD-2-Clause
 */

#pragma once

#include <AK/URL.h>
#include <LibWeb/CSS/CSSRule.h>

namespace Web::CSS {

class CSSImportRule : public CSSRule {
    AK_MAKE_NONCOPYABLE(CSSImportRule);
    AK_MAKE_NONMOVABLE(CSSImportRule);

public:
    static NonnullRefPtr<CSSImportRule> create(AK::URL url)
    {
        return adopt_ref(*new CSSImportRule(move(url)));
    }

    ~CSSImportRule();

    const AK::URL& url() const { return m_url; }

    bool has_import_result() const { return !m_style_sheet.is_null(); }
    RefPtr<CSSStyleSheet> loaded_style_sheet() { return m_style_sheet; }
    const RefPtr<CSSStyleSheet> loaded_style_sheet() const { return m_style_sheet; }
    void set_style_sheet(const RefPtr<CSSStyleSheet>& style_sheet) { m_style_sheet = style_sheet; }

    virtual StringView class_name() const { return "CSSImportRule"; };
    virtual Type type() const { return Type::Import; };

private:
    explicit CSSImportRule(AK::URL);

    AK::URL m_url;
    RefPtr<CSSStyleSheet> m_style_sheet;
};

template<>
inline bool CSSRule::fast_is<CSSImportRule>() const { return type() == CSSRule::Type::Import; }

}