From e728604b23edb185361b49c6f190fbba6851ddf2 Mon Sep 17 00:00:00 2001 From: Khafra Date: Thu, 29 Aug 2024 13:56:54 -0400 Subject: [PATCH 1/2] events: allow null/undefined eventInitDict --- lib/internal/event_target.js | 12 ++++++------ test/parallel/test-eventtarget.js | 6 ++++++ 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/lib/internal/event_target.js b/lib/internal/event_target.js index ecdc1bbba054a3..f77bb191030530 100644 --- a/lib/internal/event_target.js +++ b/lib/internal/event_target.js @@ -111,14 +111,14 @@ class Event { * composed?: boolean, * }} [options] */ - constructor(type, options = kEmptyObject) { + constructor(type, options = undefined) { if (arguments.length === 0) throw new ERR_MISSING_ARGS('type'); - validateObject(options, 'options'); - const { bubbles, cancelable, composed } = options; - this.#cancelable = !!cancelable; - this.#bubbles = !!bubbles; - this.#composed = !!composed; + if (options != null) + validateObject(options, 'options'); + this.#cancelable = !!options?.cancelable; + this.#bubbles = !!options?.bubbles; + this.#composed = !!options?.composed; this[kType] = `${type}`; if (options?.[kTrustEvent]) { diff --git a/test/parallel/test-eventtarget.js b/test/parallel/test-eventtarget.js index 72389a589056e4..cbe7eb3b0e8687 100644 --- a/test/parallel/test-eventtarget.js +++ b/test/parallel/test-eventtarget.js @@ -747,3 +747,9 @@ let asyncTest = Promise.resolve(); event.cancelBubble = true; strictEqual(event.cancelBubble, true); } + +{ + // A null eventInitDict should not throw an error. + new Event('', null); + new Event('', undefined); +} From 3d83fe5a8fb3897cd1c5dbad4cc4bf9f3986b0fa Mon Sep 17 00:00:00 2001 From: Khafra Date: Thu, 29 Aug 2024 16:12:18 -0400 Subject: [PATCH 2/2] fixup --- lib/internal/event_target.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/internal/event_target.js b/lib/internal/event_target.js index f77bb191030530..706818923b7d28 100644 --- a/lib/internal/event_target.js +++ b/lib/internal/event_target.js @@ -116,8 +116,8 @@ class Event { throw new ERR_MISSING_ARGS('type'); if (options != null) validateObject(options, 'options'); - this.#cancelable = !!options?.cancelable; this.#bubbles = !!options?.bubbles; + this.#cancelable = !!options?.cancelable; this.#composed = !!options?.composed; this[kType] = `${type}`;