summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreu Botella <abb@randomunok.com>2021-12-10 15:12:38 +0100
committerGitHub <noreply@github.com>2021-12-10 15:12:38 +0100
commit0f0dd5b7ec2a7ac95e1b36c866f73b85e4fb4879 (patch)
treef06c37de813d82a82c556b977f7e5119e827362f
parent292682772691402bb3c1e4fee554d85746147621 (diff)
feat(ext/web): implement `AbortSignal.prototype.throwIfAborted()` (#13044)
See whatwg/dom#1034.
-rw-r--r--ext/web/03_abort_signal.js7
-rw-r--r--ext/web/lib.deno_web.d.ts4
-rw-r--r--tools/wpt/expectation.json12
3 files changed, 13 insertions, 10 deletions
diff --git a/ext/web/03_abort_signal.js b/ext/web/03_abort_signal.js
index 6b278ba07..d46291b14 100644
--- a/ext/web/03_abort_signal.js
+++ b/ext/web/03_abort_signal.js
@@ -85,6 +85,13 @@
webidl.assertBranded(this, AbortSignal);
return this[abortReason];
}
+
+ throwIfAborted() {
+ webidl.assertBranded(this, AbortSignal);
+ if (this[abortReason] !== undefined) {
+ throw this[abortReason];
+ }
+ }
}
defineEventHandler(AbortSignal.prototype, "abort");
diff --git a/ext/web/lib.deno_web.d.ts b/ext/web/lib.deno_web.d.ts
index 3cdc2bea6..0f10af7f2 100644
--- a/ext/web/lib.deno_web.d.ts
+++ b/ext/web/lib.deno_web.d.ts
@@ -293,6 +293,10 @@ interface AbortSignal extends EventTarget {
listener: EventListenerOrEventListenerObject,
options?: boolean | EventListenerOptions,
): void;
+
+ /** Throws this AbortSignal's abort reason, if its AbortController has
+ * signaled to abort; otherwise, does nothing. */
+ throwIfAborted(): void;
}
declare var AbortSignal: {
diff --git a/tools/wpt/expectation.json b/tools/wpt/expectation.json
index d44b673e2..6367800d8 100644
--- a/tools/wpt/expectation.json
+++ b/tools/wpt/expectation.json
@@ -4799,16 +4799,8 @@
"abort": {
"AbortSignal.any.html": true,
"AbortSignal.any.worker.html": true,
- "event.any.html": [
- "throwIfAborted() should throw abort.reason if signal aborted",
- "throwIfAborted() should throw primitive abort.reason if signal aborted",
- "throwIfAborted() should not throw if signal not aborted"
- ],
- "event.any.worker.html": [
- "throwIfAborted() should throw abort.reason if signal aborted",
- "throwIfAborted() should throw primitive abort.reason if signal aborted",
- "throwIfAborted() should not throw if signal not aborted"
- ]
+ "event.any.html": true,
+ "event.any.worker.html": true
},
"events": {
"AddEventListenerOptions-once.any.html": [