Serenity Operating System
at master 49 lines 1.4 kB view raw
1/* 2 * Copyright (c) 2021, Luke Wilde <lukew@serenityos.org> 3 * 4 * SPDX-License-Identifier: BSD-2-Clause 5 */ 6 7#include <LibWeb/Bindings/Intrinsics.h> 8#include <LibWeb/DOM/AbortController.h> 9#include <LibWeb/DOM/AbortSignal.h> 10 11namespace Web::DOM { 12 13WebIDL::ExceptionOr<JS::NonnullGCPtr<AbortController>> AbortController::construct_impl(JS::Realm& realm) 14{ 15 auto signal = TRY(AbortSignal::construct_impl(realm)); 16 return MUST_OR_THROW_OOM(realm.heap().allocate<AbortController>(realm, realm, move(signal))); 17} 18 19// https://dom.spec.whatwg.org/#dom-abortcontroller-abortcontroller 20AbortController::AbortController(JS::Realm& realm, JS::NonnullGCPtr<AbortSignal> signal) 21 : PlatformObject(realm) 22 , m_signal(move(signal)) 23{ 24} 25 26AbortController::~AbortController() = default; 27 28JS::ThrowCompletionOr<void> AbortController::initialize(JS::Realm& realm) 29{ 30 MUST_OR_THROW_OOM(Base::initialize(realm)); 31 set_prototype(&Bindings::ensure_web_prototype<Bindings::AbortControllerPrototype>(realm, "AbortController")); 32 33 return {}; 34} 35 36void AbortController::visit_edges(Cell::Visitor& visitor) 37{ 38 Base::visit_edges(visitor); 39 visitor.visit(m_signal.ptr()); 40} 41 42// https://dom.spec.whatwg.org/#dom-abortcontroller-abort 43void AbortController::abort(JS::Value reason) 44{ 45 // The abort(reason) method steps are to signal abort on this’s signal with reason if it is given. 46 m_signal->signal_abort(reason); 47} 48 49}