aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXudong Zheng <7pkvm5aw@slicealias.com>2018-08-01 21:33:09 +0000
committerBrad Fitzpatrick <bradfitz@golang.org>2018-08-01 21:45:11 +0000
commit859a944ee2edf19bbc6d72ca52ccd9c3f6d687e2 (patch)
treea6d8a30565e86e74749cbaad75a0b71f68850292
parentc29370c98ecfc7aa59f32c7a7897e50a0f6eb86b (diff)
downloadgo-859a944ee2edf19bbc6d72ca52ccd9c3f6d687e2.tar.gz
go-859a944ee2edf19bbc6d72ca52ccd9c3f6d687e2.zip
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/127296 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
-rw-r--r--misc/wasm/wasm_exec.js22
-rw-r--r--src/syscall/js/callback.go32
2 files changed, 27 insertions, 27 deletions
diff --git a/misc/wasm/wasm_exec.js b/misc/wasm/wasm_exec.js
index f3772652da..94b9552c59 100644
--- a/misc/wasm/wasm_exec.js
+++ b/misc/wasm/wasm_exec.js
@@ -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) {
diff --git a/src/syscall/js/callback.go b/src/syscall/js/callback.go
index 346669ad34..9d573074cb 100644
--- a/src/syscall/js/callback.go
+++ b/src/syscall/js/callback.go
@@ -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