Serenity Operating System
1/*
2 * Copyright (c) 2022, Andreas Kling <kling@serenityos.org>
3 *
4 * SPDX-License-Identifier: BSD-2-Clause
5 */
6
7#include <LibWeb/Bindings/Intrinsics.h>
8#include <LibWeb/DOM/AbstractRange.h>
9#include <LibWeb/DOM/Document.h>
10
11namespace Web::DOM {
12
13AbstractRange::AbstractRange(Node& start_container, u32 start_offset, Node& end_container, u32 end_offset)
14 : Bindings::PlatformObject(start_container.realm())
15 , m_start_container(start_container)
16 , m_start_offset(start_offset)
17 , m_end_container(end_container)
18 , m_end_offset(end_offset)
19{
20}
21
22AbstractRange::~AbstractRange() = default;
23
24JS::ThrowCompletionOr<void> AbstractRange::initialize(JS::Realm& realm)
25{
26 MUST_OR_THROW_OOM(Base::initialize(realm));
27 set_prototype(&Bindings::ensure_web_prototype<Bindings::AbstractRangePrototype>(realm, "AbstractRange"));
28
29 return {};
30}
31
32void AbstractRange::visit_edges(Cell::Visitor& visitor)
33{
34 Base::visit_edges(visitor);
35 visitor.visit(m_start_container.ptr());
36 visitor.visit(m_end_container.ptr());
37}
38
39}