From 33427a4620b48aa8e6f313534ef4b84216c82aae Mon Sep 17 00:00:00 2001 From: shisama Date: Fri, 20 May 2022 02:09:59 +0900 Subject: [PATCH] events: add null check for the signal of EventTarget.addEventListener To improve Web compatibility, passing null as the signal should throw an error. Please see https://github.com/web-platform-tests/wpt/blob/master/dom/events/AddEventListenerOptions-signal.any.js --- lib/internal/event_target.js | 4 ++++ test/parallel/test-eventtarget-whatwg-signal.js | 5 +++++ 2 files changed, 9 insertions(+) diff --git a/lib/internal/event_target.js b/lib/internal/event_target.js index 0f9a896396f79c..f0bcf032d0f07f 100644 --- a/lib/internal/event_target.js +++ b/lib/internal/event_target.js @@ -482,6 +482,10 @@ class EventTarget { } type = String(type); + if (signal === null) { + throw new ERR_INVALID_ARG_TYPE('options.signal', 'AbortSignal', signal); + } + if (signal) { if (signal.aborted) { return; diff --git a/test/parallel/test-eventtarget-whatwg-signal.js b/test/parallel/test-eventtarget-whatwg-signal.js index dfe5810180d90e..125d62f52d30de 100644 --- a/test/parallel/test-eventtarget-whatwg-signal.js +++ b/test/parallel/test-eventtarget-whatwg-signal.js @@ -4,6 +4,7 @@ require('../common'); const { strictEqual, + throws } = require('assert'); // Manually ported from: wpt@dom/events/AddEventListenerOptions-signal.any.js @@ -157,3 +158,7 @@ const { }, { once: true }); et.dispatchEvent(new Event('foo')); } +{ + const et = new EventTarget(); + throws(() => et.addEventListener('foo', () => {}, {signal: null})); +}