Serenity Operating System
1/*
2 * Copyright (c) 2018-2021, 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 <LibWeb/HTML/HTMLElement.h>
11
12namespace Web::HTML {
13
14class HTMLStyleElement final : public HTMLElement {
15 WEB_PLATFORM_OBJECT(HTMLStyleElement, HTMLElement);
16
17public:
18 virtual ~HTMLStyleElement() override;
19
20 virtual void children_changed() override;
21 virtual void inserted() override;
22 virtual void removed_from(Node*) override;
23
24 void update_a_style_block();
25
26 CSS::CSSStyleSheet* sheet();
27 CSS::CSSStyleSheet const* sheet() const;
28
29private:
30 HTMLStyleElement(DOM::Document&, DOM::QualifiedName);
31
32 virtual JS::ThrowCompletionOr<void> initialize(JS::Realm&) override;
33 virtual void visit_edges(Cell::Visitor&) override;
34
35 // https://www.w3.org/TR/cssom/#associated-css-style-sheet
36 JS::GCPtr<CSS::CSSStyleSheet> m_associated_css_style_sheet;
37};
38
39}