summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Gruenbaum <benjamingr@gmail.com>2020-11-14 14:10:23 +0200
committerGitHub <noreply@github.com>2020-11-14 13:10:23 +0100
commit3d65e57d7c48f5dd1307f83771fe5574d914cea3 (patch)
tree80396bd252f01c9794a226785582c0408c78549f
parent3a0ebff641c5b5d8d3c87b67c3e6f5b4f004478f (diff)
fix: fix various global objects constructor length (#8373)
This commit changes various Web APIs constructors to match their signature in the browser.
-rw-r--r--cli/rt/40_performance.js12
-rw-r--r--cli/rt/40_permissions.js2
-rw-r--r--cli/tests/unit/globals_test.ts4
-rw-r--r--cli/tests/unit/performance_test.ts2
-rw-r--r--cli/tests/unit/permissions_test.ts8
-rw-r--r--op_crates/web/02_abort_signal.js2
-rw-r--r--op_crates/web/03_global_interfaces.js6
-rw-r--r--op_crates/web/abort_controller_test.js6
8 files changed, 30 insertions, 12 deletions
diff --git a/cli/rt/40_performance.js b/cli/rt/40_performance.js
index 573fc8051..3d8be6031 100644
--- a/cli/rt/40_performance.js
+++ b/cli/rt/40_performance.js
@@ -70,11 +70,11 @@
}
constructor(
- name,
- entryType,
- startTime,
- duration,
- key,
+ name = null,
+ entryType = null,
+ startTime = null,
+ duration = null,
+ key = null,
) {
if (key != illegalConstructorKey) {
throw new TypeError("Illegal constructor.");
@@ -185,7 +185,7 @@
}
class Performance {
- constructor(key) {
+ constructor(key = null) {
if (key != illegalConstructorKey) {
throw new TypeError("Illegal constructor.");
}
diff --git a/cli/rt/40_permissions.js b/cli/rt/40_permissions.js
index 982e4c842..50d471b6a 100644
--- a/cli/rt/40_permissions.js
+++ b/cli/rt/40_permissions.js
@@ -17,7 +17,7 @@
}
class PermissionStatus {
- constructor(state, key) {
+ constructor(state = null, key = null) {
if (key != illegalConstructorKey) {
throw new TypeError("Illegal constructor.");
}
diff --git a/cli/tests/unit/globals_test.ts b/cli/tests/unit/globals_test.ts
index 422bd2aec..4fd531b25 100644
--- a/cli/tests/unit/globals_test.ts
+++ b/cli/tests/unit/globals_test.ts
@@ -40,6 +40,10 @@ unitTest(function globalThisInstanceofWindow(): void {
assert(globalThis instanceof Window);
});
+unitTest(function globalThisConstructorLength(): void {
+ assert(globalThis.constructor.length === 0);
+});
+
unitTest(function globalThisInstanceofEventTarget(): void {
assert(globalThis instanceof EventTarget);
});
diff --git a/cli/tests/unit/performance_test.ts b/cli/tests/unit/performance_test.ts
index 1df46b1b2..122938b36 100644
--- a/cli/tests/unit/performance_test.ts
+++ b/cli/tests/unit/performance_test.ts
@@ -83,10 +83,12 @@ unitTest(function performanceMeasure() {
unitTest(function performanceIllegalConstructor() {
assertThrows(() => new Performance(), TypeError, "Illegal constructor.");
+ assertEquals(Performance.length, 0);
});
unitTest(function performanceEntryIllegalConstructor() {
assertThrows(() => new PerformanceEntry(), TypeError, "Illegal constructor.");
+ assertEquals(PerformanceEntry.length, 0);
});
unitTest(function performanceMeasureIllegalConstructor() {
diff --git a/cli/tests/unit/permissions_test.ts b/cli/tests/unit/permissions_test.ts
index eada8fe9a..dee8aa195 100644
--- a/cli/tests/unit/permissions_test.ts
+++ b/cli/tests/unit/permissions_test.ts
@@ -1,5 +1,10 @@
// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license.
-import { assertThrows, assertThrowsAsync, unitTest } from "./test_util.ts";
+import {
+ assertEquals,
+ assertThrows,
+ assertThrowsAsync,
+ unitTest,
+} from "./test_util.ts";
unitTest(async function permissionInvalidName(): Promise<void> {
await assertThrowsAsync(async () => {
@@ -24,4 +29,5 @@ unitTest(function permissionStatusIllegalConstructor() {
TypeError,
"Illegal constructor.",
);
+ assertEquals(Deno.PermissionStatus.length, 0);
});
diff --git a/op_crates/web/02_abort_signal.js b/op_crates/web/02_abort_signal.js
index 354cd1fbf..5ee047c36 100644
--- a/op_crates/web/02_abort_signal.js
+++ b/op_crates/web/02_abort_signal.js
@@ -31,7 +31,7 @@
this.#abortAlgorithms.delete(algorithm);
}
- constructor(key) {
+ constructor(key = null) {
if (key != illegalConstructorKey) {
throw new TypeError("Illegal constructor.");
}
diff --git a/op_crates/web/03_global_interfaces.js b/op_crates/web/03_global_interfaces.js
index 3c6b5695b..7ade64cc1 100644
--- a/op_crates/web/03_global_interfaces.js
+++ b/op_crates/web/03_global_interfaces.js
@@ -4,7 +4,7 @@
const illegalConstructorKey = Symbol("illegalConstuctorKey");
class Window extends EventTarget {
- constructor(key) {
+ constructor(key = null) {
if (key !== illegalConstructorKey) {
throw new TypeError("Illegal constructor.");
}
@@ -17,7 +17,7 @@
}
class WorkerGlobalScope extends EventTarget {
- constructor(key) {
+ constructor(key = null) {
if (key != illegalConstructorKey) {
throw new TypeError("Illegal constructor.");
}
@@ -30,7 +30,7 @@
}
class DedicatedWorkerGlobalScope extends WorkerGlobalScope {
- constructor(key) {
+ constructor(key = null) {
if (key != illegalConstructorKey) {
throw new TypeError("Illegal constructor.");
}
diff --git a/op_crates/web/abort_controller_test.js b/op_crates/web/abort_controller_test.js
index a65bc69ff..2f26ade28 100644
--- a/op_crates/web/abort_controller_test.js
+++ b/op_crates/web/abort_controller_test.js
@@ -118,6 +118,11 @@ function abortSignalHandlerLocation() {
const abortHandler = Object.getOwnPropertyDescriptor(signal, "onabort");
assertEquals(abortHandler, undefined);
}
+function abortSignalLength() {
+ const controller = new AbortController();
+ const { signal } = controller;
+ assertEquals(signal.constructor.length, 0);
+}
function main() {
basicAbortController();
signalCallsOnabort();
@@ -128,6 +133,7 @@ function main() {
abortSignalEventOrder();
abortSignalEventOrderComplex();
abortSignalHandlerLocation();
+ abortSignalLength();
}
main();