mirror of
https://github.com/zebrajr/node.git
synced 2026-01-15 12:15:26 +00:00
events: improve Event compatibility
This fixes `Event` constructor to improve `Event Web API` compatibility. The test added was written by referring to `wpt@dom/events/Event-constructors.any.js`. Signed-off-by: Daeyeon Jeong daeyeon.dev@gmail.com PR-URL: https://github.com/nodejs/node/pull/43461 Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com> Reviewed-By: LiviaMedeiros <livia@cirno.name> Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com>
This commit is contained in:
@@ -95,13 +95,11 @@ class Event {
|
||||
* composed?: boolean,
|
||||
* }} [options]
|
||||
*/
|
||||
constructor(type, options = null) {
|
||||
constructor(type, options = kEmptyObject) {
|
||||
if (arguments.length === 0)
|
||||
throw new ERR_MISSING_ARGS('type');
|
||||
validateObject(options, 'options', {
|
||||
allowArray: true, allowFunction: true, nullable: true,
|
||||
});
|
||||
const { cancelable, bubbles, composed } = { ...options };
|
||||
validateObject(options, 'options');
|
||||
const { bubbles, cancelable, composed } = options;
|
||||
this.#cancelable = !!cancelable;
|
||||
this.#bubbles = !!bubbles;
|
||||
this.#composed = !!composed;
|
||||
|
||||
29
test/parallel/test-whatwg-events-event-constructors.js
Normal file
29
test/parallel/test-whatwg-events-event-constructors.js
Normal file
@@ -0,0 +1,29 @@
|
||||
'use strict';
|
||||
|
||||
require('../common');
|
||||
const { test, assert_equals, assert_array_equals } =
|
||||
require('../common/wpt').harness;
|
||||
|
||||
// Source: https://github.com/web-platform-tests/wpt/blob/6cef1d2087d6a07d7cc6cee8cf207eec92e27c5f/dom/events/Event-constructors.any.js#L91-L112
|
||||
test(function() {
|
||||
const called = [];
|
||||
const ev = new Event('Xx', {
|
||||
get cancelable() {
|
||||
called.push('cancelable');
|
||||
return false;
|
||||
},
|
||||
get bubbles() {
|
||||
called.push('bubbles');
|
||||
return true;
|
||||
},
|
||||
get sweet() {
|
||||
called.push('sweet');
|
||||
return 'x';
|
||||
},
|
||||
});
|
||||
assert_array_equals(called, ['bubbles', 'cancelable']);
|
||||
assert_equals(ev.type, 'Xx');
|
||||
assert_equals(ev.bubbles, true);
|
||||
assert_equals(ev.cancelable, false);
|
||||
assert_equals(ev.sweet, undefined);
|
||||
});
|
||||
Reference in New Issue
Block a user