diff options
author | Luca Casonato <hello@lcas.dev> | 2021-06-21 19:53:52 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-06-21 19:53:52 +0200 |
commit | f9ff981daf6931a01e1516db0b5714e7a94f145b (patch) | |
tree | 677a6e3f12c86210cc635e68b9afc06c4cb1d2f9 /extensions/web/03_abort_signal.js | |
parent | a2f939b99c43c6344f109144d7b01c95294a6f8b (diff) |
feat: `MessageChannel` and `MessagePort` (#11051)
This commit introduces support for MessageChannel and MessagePort.
MessagePorts can be transfered across other MessagePorts.
Diffstat (limited to 'extensions/web/03_abort_signal.js')
-rw-r--r-- | extensions/web/03_abort_signal.js | 39 |
1 files changed, 1 insertions, 38 deletions
diff --git a/extensions/web/03_abort_signal.js b/extensions/web/03_abort_signal.js index 6551380da..54a485dab 100644 --- a/extensions/web/03_abort_signal.js +++ b/extensions/web/03_abort_signal.js @@ -3,7 +3,7 @@ ((window) => { const webidl = window.__bootstrap.webidl; - const { setIsTrusted } = window.__bootstrap.event; + const { setIsTrusted, defineEventHandler } = window.__bootstrap.event; const add = Symbol("add"); const signalAbort = Symbol("signalAbort"); @@ -81,43 +81,6 @@ webidl.configurePrototype(AbortController); - const handlerSymbol = Symbol("eventHandlers"); - - function makeWrappedHandler(handler) { - function wrappedHandler(...args) { - if (typeof wrappedHandler.handler !== "function") { - return; - } - return wrappedHandler.handler.call(this, ...args); - } - wrappedHandler.handler = handler; - return wrappedHandler; - } - // TODO(benjamingr) reuse this here and websocket where possible - function defineEventHandler(emitter, name) { - // HTML specification section 8.1.5.1 - Object.defineProperty(emitter, `on${name}`, { - get() { - return this[handlerSymbol]?.get(name)?.handler; - }, - set(value) { - if (!this[handlerSymbol]) { - this[handlerSymbol] = new Map(); - } - let handlerWrapper = this[handlerSymbol]?.get(name); - if (handlerWrapper) { - handlerWrapper.handler = value; - } else { - handlerWrapper = makeWrappedHandler(value); - this.addEventListener(name, handlerWrapper); - } - this[handlerSymbol].set(name, handlerWrapper); - }, - configurable: true, - enumerable: true, - }); - } - webidl.converters["AbortSignal"] = webidl.createInterfaceConverter( "AbortSignal", AbortSignal, |