mirror of
https://github.com/golang/go
synced 2024-11-26 18:26:48 -07:00
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: a6a0268f38
GitHub-Pull-Request: golang/go#26750
Reviewed-on: https://go-review.googlesource.com/127296
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
This commit is contained in:
parent
c29370c98e
commit
859a944ee2
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user