Commit 859a944e authored by Xudong Zheng's avatar Xudong Zheng Committed by Brad Fitzpatrick

syscall/js: move callback helper code to misc/wasm to avoid using eval()

When using the compiled .wasm with misc/wasm/wasm_exec.js, we get an error message if the site prohibits eval() via the Content-Security-Policy header. This can be resolved by moving the callback helper code from src/syscall/js/callback.go to misc/wasm/wasm_exec.js.

Fixes #26748

Change-Id: I28f271b8a00631f4c66a1ac31305e85f20f9d420
GitHub-Last-Rev: a6a0268f38d36c198ca6b4ceb2e75cc8afec74eb
GitHub-Pull-Request: golang/go#26750
Reviewed-on: https://go-review.googlesource.com/127296Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
parent c29370c9
......@@ -387,6 +387,28 @@
await callbackPromise;
}
}
static _makeCallbackHelper(id, pendingCallbacks, go) {
return function() {
pendingCallbacks.push({ id: id, args: arguments });
go._resolveCallbackPromise();
};
}
static _makeEventCallbackHelper(preventDefault, stopPropagation, stopImmediatePropagation, fn) {
return function(event) {
if (preventDefault) {
event.preventDefault();
}
if (stopPropagation) {
event.stopPropagation();
}
if (stopImmediatePropagation) {
event.stopImmediatePropagation();
}
fn(event);
};
}
}
if (isNodeJS) {
......
......@@ -8,33 +8,11 @@ package js
import "sync"
var pendingCallbacks = Global().Get("Array").New()
var makeCallbackHelper = Global().Call("eval", `
(function(id, pendingCallbacks, go) {
return function() {
pendingCallbacks.push({ id: id, args: arguments });
go._resolveCallbackPromise();
};
})
`)
var makeEventCallbackHelper = Global().Call("eval", `
(function(preventDefault, stopPropagation, stopImmediatePropagation, fn) {
return function(event) {
if (preventDefault) {
event.preventDefault();
}
if (stopPropagation) {
event.stopPropagation();
}
if (stopImmediatePropagation) {
event.stopImmediatePropagation();
}
fn(event);
};
})
`)
var (
pendingCallbacks = Global().Get("Array").New()
makeCallbackHelper = Global().Get("Go").Get("_makeCallbackHelper")
makeEventCallbackHelper = Global().Get("Go").Get("_makeEventCallbackHelper")
)
var (
callbacksMu sync.Mutex
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment