From a6a0268f38d36c198ca6b4ceb2e75cc8afec74eb Mon Sep 17 00:00:00 2001 From: Xudong Zheng <7pkvm5aw@slicealias.com> Date: Wed, 1 Aug 2018 21:26:27 +0000 Subject: [PATCH] syscall/js: move callback helper code to misc/wasm to avoid using eval() --- misc/wasm/wasm_exec.js | 22 ++++++++++++++++++++++ src/syscall/js/callback.go | 32 +++++--------------------------- 2 files changed, 27 insertions(+), 27 deletions(-) diff --git a/misc/wasm/wasm_exec.js b/misc/wasm/wasm_exec.js index f3772652da3f75..94b9552c59606c 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 346669ad34464d..9d573074cbd399 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