Skip to content

Commit b2f8e8d

Browse files
watildetargos
authored andcommitted
lib: let abort_controller target be EventTarget
The AbortController abort event should have EventTarget as a target property of the argument event. PR-URL: #35869 Backport-PR-URL: #38386 Refs: https://github.com/web-platform-tests/wpt/blob/master/dom/abort/event.any.js Reviewed-By: Rich Trott <rtrott@gmail.com> Reviewed-By: Michaël Zasso <targos@protonmail.com> Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
1 parent bf728b5 commit b2f8e8d

2 files changed

Lines changed: 11 additions & 10 deletions

File tree

‎lib/internal/abort_controller.js‎

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ const {
99
}=primordials;
1010

1111
const{
12+
defineEventHandler,
1213
EventTarget,
1314
Event,
1415
kTrustEvent
@@ -52,21 +53,22 @@ function abortSignal(signal) {
5253
constevent=newEvent('abort',{
5354
[kTrustEvent]: true
5455
});
55-
if(typeofsignal.onabort==='function'){
56-
signal.onabort(event);
57-
}
5856
signal.dispatchEvent(event);
5957
}
6058

59+
// TODO(joyeecheung): V8 snapshot does not support instance member
60+
// initializers for now:
61+
// https://bugs.chromium.org/p/v8/issues/detail?id=10704
62+
constkSignal=Symbol('signal');
6163
classAbortController{
62-
#signal =newAbortSignal();
63-
6464
constructor(){
65+
this[kSignal]=newAbortSignal();
6566
emitExperimentalWarning('AbortController');
67+
defineEventHandler(this[kSignal],'abort');
6668
}
6769

68-
getsignal(){returnthis.#signal;}
69-
abort(){abortSignal(this.#signal);}
70+
getsignal(){returnthis[kSignal];}
71+
abort(){abortSignal(this[kSignal]);}
7072

7173
[customInspectSymbol](depth,options){
7274
returncustomInspect(this,{

‎lib/internal/event_target.js‎

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -333,14 +333,13 @@ class EventTarget {
333333
}
334334
returnevent;
335335
};
336+
if(event!==undefined)
337+
event[kTarget]=this;
336338

337339
constroot=this[kEvents].get(type);
338340
if(root===undefined||root.next===undefined)
339341
returntrue;
340342

341-
if(event!==undefined)
342-
event[kTarget]=this;
343-
344343
lethandler=root.next;
345344
letnext;
346345

0 commit comments

Comments
 (0)