diff options
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, |