/src/serenity/Userland/Libraries/LibWeb/DOM/DocumentObserver.cpp
Line | Count | Source |
1 | | /* |
2 | | * Copyright (c) 2023-2024, Tim Flynn <trflynn89@ladybird.org> |
3 | | * |
4 | | * SPDX-License-Identifier: BSD-2-Clause |
5 | | */ |
6 | | |
7 | | #include <LibJS/Runtime/Realm.h> |
8 | | #include <LibWeb/DOM/Document.h> |
9 | | #include <LibWeb/DOM/DocumentObserver.h> |
10 | | |
11 | | namespace Web::DOM { |
12 | | |
13 | | JS_DEFINE_ALLOCATOR(DocumentObserver); |
14 | | |
15 | | DocumentObserver::DocumentObserver(JS::Realm& realm, DOM::Document& document) |
16 | 0 | : Bindings::PlatformObject(realm) |
17 | 0 | , m_document(document) |
18 | 0 | { |
19 | 0 | m_document->register_document_observer({}, *this); |
20 | 0 | } |
21 | | |
22 | | void DocumentObserver::visit_edges(Cell::Visitor& visitor) |
23 | 0 | { |
24 | 0 | Base::visit_edges(visitor); |
25 | 0 | visitor.visit(m_document); |
26 | 0 | visitor.visit(m_document_became_inactive); |
27 | 0 | visitor.visit(m_document_completely_loaded); |
28 | 0 | visitor.visit(m_document_readiness_observer); |
29 | 0 | } |
30 | | |
31 | | void DocumentObserver::finalize() |
32 | 0 | { |
33 | 0 | Base::finalize(); |
34 | 0 | m_document->unregister_document_observer({}, *this); |
35 | 0 | } |
36 | | |
37 | | void DocumentObserver::set_document_became_inactive(Function<void()> callback) |
38 | 0 | { |
39 | 0 | if (callback) |
40 | 0 | m_document_became_inactive = JS::create_heap_function(vm().heap(), move(callback)); |
41 | 0 | else |
42 | 0 | m_document_became_inactive = nullptr; |
43 | 0 | } |
44 | | |
45 | | void DocumentObserver::set_document_completely_loaded(Function<void()> callback) |
46 | 0 | { |
47 | 0 | if (callback) |
48 | 0 | m_document_completely_loaded = JS::create_heap_function(vm().heap(), move(callback)); |
49 | 0 | else |
50 | 0 | m_document_completely_loaded = nullptr; |
51 | 0 | } |
52 | | |
53 | | void DocumentObserver::set_document_readiness_observer(Function<void(HTML::DocumentReadyState)> callback) |
54 | 0 | { |
55 | 0 | if (callback) |
56 | 0 | m_document_readiness_observer = JS::create_heap_function(vm().heap(), move(callback)); |
57 | 0 | else |
58 | 0 | m_document_readiness_observer = nullptr; |
59 | 0 | } |
60 | | |
61 | | } |