/src/serenity/Userland/Libraries/LibWeb/DOM/AbortController.h
Line | Count | Source |
1 | | /* |
2 | | * Copyright (c) 2021, Luke Wilde <lukew@serenityos.org> |
3 | | * |
4 | | * SPDX-License-Identifier: BSD-2-Clause |
5 | | */ |
6 | | |
7 | | #pragma once |
8 | | |
9 | | #include <LibWeb/Bindings/PlatformObject.h> |
10 | | #include <LibWeb/DOM/AbortSignal.h> |
11 | | |
12 | | namespace Web::DOM { |
13 | | |
14 | | // https://dom.spec.whatwg.org/#abortcontroller |
15 | | class AbortController final : public Bindings::PlatformObject { |
16 | | WEB_PLATFORM_OBJECT(AbortController, Bindings::PlatformObject); |
17 | | JS_DECLARE_ALLOCATOR(AbortController); |
18 | | |
19 | | public: |
20 | | static WebIDL::ExceptionOr<JS::NonnullGCPtr<AbortController>> construct_impl(JS::Realm&); |
21 | | |
22 | | virtual ~AbortController() override; |
23 | | |
24 | | // https://dom.spec.whatwg.org/#dom-abortcontroller-signal |
25 | 0 | JS::NonnullGCPtr<AbortSignal> signal() const { return *m_signal; } |
26 | | |
27 | | void abort(JS::Value reason); |
28 | | |
29 | | private: |
30 | | AbortController(JS::Realm&, JS::NonnullGCPtr<AbortSignal>); |
31 | | |
32 | | virtual void initialize(JS::Realm&) override; |
33 | | virtual void visit_edges(Cell::Visitor&) override; |
34 | | |
35 | | // https://dom.spec.whatwg.org/#abortcontroller-signal |
36 | | JS::NonnullGCPtr<AbortSignal> m_signal; |
37 | | }; |
38 | | |
39 | | } |