From 1eaaae1f39995021d962429280e45c6b3493fa84 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 This will improve the 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})); +}