diff options
author | Andreu Botella <abb@randomunok.com> | 2021-07-10 23:32:10 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-07-10 23:32:10 +0200 |
commit | eea6000ef6e30e6684995619e630d3beb7d7484b (patch) | |
tree | 8f61e5bcaca9afacf4b3471cbe3c2ef979cb5b39 /runtime/js/99_main.js | |
parent | 67c9937e6658c2be9b54cd95132a1055756e433b (diff) |
fix: align DedicatedWorkerGlobalScope event handlers to spec (#11353)
Diffstat (limited to 'runtime/js/99_main.js')
-rw-r--r-- | runtime/js/99_main.js | 36 |
1 files changed, 7 insertions, 29 deletions
diff --git a/runtime/js/99_main.js b/runtime/js/99_main.js index b473acdef..71480e5a0 100644 --- a/runtime/js/99_main.js +++ b/runtime/js/99_main.js @@ -88,11 +88,6 @@ delete Object.prototype.__proto__; core.opSync("op_worker_close"); } - // TODO(bartlomieju): remove these functions - // Stuff for workers - const onmessage = () => {}; - const onerror = () => {}; - function postMessage(message, transferOrOptions = {}) { const prefix = "Failed to execute 'postMessage' on 'DedicatedWorkerGlobalScope'"; @@ -144,39 +139,19 @@ delete Object.prototype.__proto__; }); try { - if (globalThis.onmessage) { - await globalThis.onmessage(msgEvent); - } globalDispatchEvent(msgEvent); } catch (e) { - let handled = false; - const errorEvent = new ErrorEvent("error", { cancelable: true, message: e.message, lineno: e.lineNumber ? e.lineNumber + 1 : undefined, colno: e.columnNumber ? e.columnNumber + 1 : undefined, filename: e.fileName, - error: null, + error: e, }); - if (globalThis["onerror"]) { - const ret = globalThis.onerror( - e.message, - e.fileName, - e.lineNumber, - e.columnNumber, - e, - ); - handled = ret === true; - } - globalDispatchEvent(errorEvent); - if (errorEvent.defaultPrevented) { - handled = true; - } - - if (!handled) { + if (!errorEvent.defaultPrevented) { core.opSync( "op_worker_unhandled_error", e.message, @@ -465,8 +440,8 @@ delete Object.prototype.__proto__; get: () => workerNavigator, }, self: util.readOnly(globalThis), - onmessage: util.writable(onmessage), - onerror: util.writable(onerror), + onmessage: util.writable(null), + onerror: util.writable(null), // TODO(bartlomieju): should be readonly? close: util.nonEnumerable(workerClose), postMessage: util.writable(postMessage), @@ -585,6 +560,9 @@ delete Object.prototype.__proto__; eventTarget.setEventTargetData(globalThis); + defineEventHandler(self, "message", null); + defineEventHandler(self, "error", null, true); + runtimeStart( runtimeOptions, internalName ?? name, |