summaryrefslogtreecommitdiff
path: root/js
diff options
context:
space:
mode:
author迷渡 <justjavac@gmail.com>2019-03-26 19:42:26 +0800
committerRyan Dahl <ry@tinyclouds.org>2019-03-26 07:42:26 -0400
commited2977d3c0e9ab3295a3bb47b844b2953d608197 (patch)
treee5cf368acf41d9883d29efbdf837843695fe880e /js
parentd8714281b40f457420608c7e766fe787609c7afb (diff)
Check `Event` constructor params (#1997)
Diffstat (limited to 'js')
-rw-r--r--js/event.ts4
-rw-r--r--js/event_test.ts12
2 files changed, 15 insertions, 1 deletions
diff --git a/js/event.ts b/js/event.ts
index f39739190..61f21f2e7 100644
--- a/js/event.ts
+++ b/js/event.ts
@@ -1,6 +1,6 @@
// Copyright 2018-2019 the Deno authors. All rights reserved. MIT license.
import * as domTypes from "./dom_types";
-import { getPrivateValue } from "./util";
+import { getPrivateValue, requiredArguments } from "./util";
// WeakMaps are recommended for private attributes (see MDN link below)
// https://developer.mozilla.org/en-US/docs/Archive/Add-ons/Add-on_SDK/Guides/Contributor_s_Guide/Private_Properties#Using_WeakMaps
@@ -31,6 +31,8 @@ export class Event implements domTypes.Event {
private _path: domTypes.EventPath[] = [];
constructor(type: string, eventInitDict: domTypes.EventInit = {}) {
+ requiredArguments("Event", arguments.length, 1);
+ type = String(type);
this._initializedFlag = true;
eventAttributes.set(this, {
type,
diff --git a/js/event_test.ts b/js/event_test.ts
index d0af40ea9..eb5521406 100644
--- a/js/event_test.ts
+++ b/js/event_test.ts
@@ -68,3 +68,15 @@ test(function eventPreventDefaultSuccess() {
cancelableEvent.preventDefault();
assertEquals(cancelableEvent.defaultPrevented, true);
});
+
+test(function eventInitializedWithNonStringType() {
+ const type = undefined;
+ const event = new Event(type);
+
+ assertEquals(event.isTrusted, false);
+ assertEquals(event.target, null);
+ assertEquals(event.currentTarget, null);
+ assertEquals(event.type, "undefined");
+ assertEquals(event.bubbles, false);
+ assertEquals(event.cancelable, false);
+});