summaryrefslogtreecommitdiff
path: root/runtime/js/01_web_util.js
diff options
context:
space:
mode:
authorBartek IwaƄczuk <biwanczuk@gmail.com>2021-07-03 16:58:08 +0200
committerGitHub <noreply@github.com>2021-07-03 16:58:08 +0200
commit6137c8046d2d1bf4145a72aa634270c7aaf23341 (patch)
tree85428d5bb447b7e17323b4d6187e7b4124d17d68 /runtime/js/01_web_util.js
parentd4de477ef903e2e47c6427e14f0fe543106b1297 (diff)
refactor: use primordials in runtime/, part1 (#11241)
Diffstat (limited to 'runtime/js/01_web_util.js')
-rw-r--r--runtime/js/01_web_util.js24
1 files changed, 19 insertions, 5 deletions
diff --git a/runtime/js/01_web_util.js b/runtime/js/01_web_util.js
index 11294a9bb..4a9825fa1 100644
--- a/runtime/js/01_web_util.js
+++ b/runtime/js/01_web_util.js
@@ -2,6 +2,15 @@
"use strict";
((window) => {
+ const {
+ FunctionPrototypeCall,
+ Map,
+ MapPrototypeGet,
+ MapPrototypeSet,
+ ObjectDefineProperty,
+ TypeError,
+ Symbol,
+ } = window.__bootstrap.primordials;
const illegalConstructorKey = Symbol("illegalConstructorKey");
function requiredArguments(
@@ -23,29 +32,34 @@
if (typeof wrappedHandler.handler !== "function") {
return;
}
- return wrappedHandler.handler.call(this, ...args);
+ return FunctionPrototypeCall(wrappedHandler.handler, this, ...args);
}
wrappedHandler.handler = handler;
return wrappedHandler;
}
function defineEventHandler(emitter, name, defaultValue = undefined) {
// HTML specification section 8.1.5.1
- Object.defineProperty(emitter, `on${name}`, {
+ ObjectDefineProperty(emitter, `on${name}`, {
get() {
- return this[handlerSymbol]?.get(name)?.handler ?? defaultValue;
+ if (!this[handlerSymbol]) {
+ return defaultValue;
+ }
+
+ return MapPrototypeGet(this[handlerSymbol], name)?.handler ??
+ defaultValue;
},
set(value) {
if (!this[handlerSymbol]) {
this[handlerSymbol] = new Map();
}
- let handlerWrapper = this[handlerSymbol]?.get(name);
+ let handlerWrapper = MapPrototypeGet(this[handlerSymbol], name);
if (handlerWrapper) {
handlerWrapper.handler = value;
} else {
handlerWrapper = makeWrappedHandler(value);
this.addEventListener(name, handlerWrapper);
}
- this[handlerSymbol].set(name, handlerWrapper);
+ MapPrototypeSet(this[handlerSymbol], name, handlerWrapper);
},
configurable: true,
enumerable: true,