Serenity Operating System
1/*
2 * Copyright (c) 2020, the SerenityOS developers.
3 *
4 * SPDX-License-Identifier: BSD-2-Clause
5 */
6
7#pragma once
8
9#include <LibWeb/DOM/DocumentFragment.h>
10#include <LibWeb/HTML/HTMLElement.h>
11
12namespace Web::HTML {
13
14class HTMLTemplateElement final : public HTMLElement {
15 WEB_PLATFORM_OBJECT(HTMLTemplateElement, HTMLElement);
16
17public:
18 virtual ~HTMLTemplateElement() override;
19
20 JS::NonnullGCPtr<DOM::DocumentFragment> content() { return *m_content; }
21 JS::NonnullGCPtr<DOM::DocumentFragment> const content() const { return *m_content; }
22
23 virtual void adopted_from(DOM::Document&) override;
24 virtual void cloned(Node& copy, bool clone_children) override;
25
26private:
27 HTMLTemplateElement(DOM::Document&, DOM::QualifiedName);
28
29 virtual bool is_html_template_element() const final { return true; }
30
31 virtual JS::ThrowCompletionOr<void> initialize(JS::Realm&) override;
32 virtual void visit_edges(Cell::Visitor&) override;
33
34 JS::GCPtr<DOM::DocumentFragment> m_content;
35};
36
37}
38
39namespace Web::DOM {
40template<>
41inline bool Node::fast_is<HTML::HTMLTemplateElement>() const { return is_html_template_element(); }
42}