From 9fa4b6fd5d350c5d669088eea7b3949a2c05fdbe Mon Sep 17 00:00:00 2001 From: Moonchild Date: Thu, 16 Jan 2025 18:34:03 +0100 Subject: [PATCH] Issue #2676 - Implement AbortSignal.abort() --- dom/abort/AbortSignal.cpp | 6 ++++++ dom/abort/AbortSignal.h | 4 ++-- dom/webidl/AbortSignal.webidl | 1 + 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/dom/abort/AbortSignal.cpp b/dom/abort/AbortSignal.cpp index 89b1668e11..c1255a4e3b 100644 --- a/dom/abort/AbortSignal.cpp +++ b/dom/abort/AbortSignal.cpp @@ -43,6 +43,12 @@ AbortSignal::WrapObject(JSContext* aCx, JS::Handle aGivenProto) return AbortSignalBinding::Wrap(aCx, this, aGivenProto); } +already_AddRefed AbortSignal::Abort(GlobalObject& aGlobal) { + nsCOMPtr global = do_QueryInterface(aGlobal.GetAsSupports()); + RefPtr abortSignal = new AbortSignal(global, true); + return abortSignal.forget(); +} + bool AbortSignal::Aborted() const { diff --git a/dom/abort/AbortSignal.h b/dom/abort/AbortSignal.h index c0b940c6e9..3cd8402cc4 100644 --- a/dom/abort/AbortSignal.h +++ b/dom/abort/AbortSignal.h @@ -46,10 +46,10 @@ public: bool Aborted() const; - void - Abort(); + void Abort(); IMPL_EVENT_HANDLER(abort); + static already_AddRefed Abort(GlobalObject& aGlobal); void AddFollower(Follower* aFollower); diff --git a/dom/webidl/AbortSignal.webidl b/dom/webidl/AbortSignal.webidl index b4b03bb7e1..1d3525505a 100644 --- a/dom/webidl/AbortSignal.webidl +++ b/dom/webidl/AbortSignal.webidl @@ -7,6 +7,7 @@ [Exposed=(Window,Worker), Func="AbortController::IsEnabled"] interface AbortSignal : EventTarget { + [NewObject] static AbortSignal abort(); readonly attribute boolean aborted; attribute EventHandler onabort;