From 68d5c2e4796026b7bdc4218f0e1bfe4193a0d85e 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 To improve Web compatibility, passing null as the signal should throw an error. WPT says "Passing null as the signal should throw". 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})); +}