diff --git a/lib/renderer/api/remote.js b/lib/renderer/api/remote.js index ecbc7f7f4b8a..f115215f311b 100644 --- a/lib/renderer/api/remote.js +++ b/lib/renderer/api/remote.js @@ -11,25 +11,6 @@ const resolvePromise = Promise.resolve.bind(Promise) const callbacksRegistry = new CallbacksRegistry() const remoteObjectCache = v8Util.createIDWeakMap() -// lookup for ipc renderer send calls -const ipcs = { - 'b_mem_con': 'ELECTRON_BROWSER_MEMBER_CONSTRUCTOR', - 'b_mem_call': 'ELECTRON_BROWSER_MEMBER_CALL', - 'b_mem_get': 'ELECTRON_BROWSER_MEMBER_GET', - 'b_mem_set': 'ELECTRON_BROWSER_MEMBER_SET', - 'b_con': 'ELECTRON_BROWSER_CONSTRUCTOR', - 'b_func_call': 'ELECTRON_BROWSER_FUNCTION_CALL', - 'rend_call': 'ELECTRON_RENDERER_CALLBACK', - 'rend_rel_call': 'ELECTRON_RENDERER_RELEASE_CALLBACK', - 'b_con_rel': 'ELECTRON_BROWSER_CONTEXT_RELEASE', - 'b_req': 'ELECTRON_BROWSER_REQUIRE', - 'b_get_built': 'ELECTRON_BROWSER_GET_BUILTIN', - 'b_curr_win': 'ELECTRON_BROWSER_CURRENT_WINDOW', - 'b_curr_web_con': 'ELECTRON_BROWSER_CURRENT_WEB_CONTENTS', - 'b_glob': 'ELECTRON_BROWSER_GLOBAL', - 'b_guest_web_con': 'ELECTRON_BROWSER_GUEST_WEB_CONTENTS' -} - // Convert the arguments object into an array of meta data. function wrapArgs (args, visited) { if (visited) visited = new Set() @@ -126,11 +107,11 @@ function setObjectMembers (ref, object, metaId, members) { const remoteMemberFunction = function (...args) { if (this && this.constructor === remoteMemberFunction) { // Constructor call. - const ret = ipcRenderer.sendSync(ipcs['b_mem_con'], metaId, member.name, wrapArgs(args)) + const ret = ipcRenderer.sendSync('ELECTRON_BROWSER_MEMBER_CONSTRUCTOR', metaId, member.name, wrapArgs(args)) return metaToValue(ret) } else { // Call member function. - const ret = ipcRenderer.sendSync(ipcs['b_mem_call'], metaId, member.name, wrapArgs(args)) + const ret = ipcRenderer.sendSync('ELECTRON_BROWSER_MEMBER_CALL', metaId, member.name, wrapArgs(args)) return metaToValue(ret) } } @@ -149,14 +130,14 @@ function setObjectMembers (ref, object, metaId, members) { descriptor.configurable = true } else if (member.type === 'get') { descriptor.get = function () { - return metaToValue(ipcRenderer.sendSync(ipcs['b_mem_get'], metaId, member.name)) + return metaToValue(ipcRenderer.sendSync('ELECTRON_BROWSER_MEMBER_GET', metaId, member.name)) } // Only set setter when it is writable. if (member.writable) { descriptor.set = function (value) { const args = wrapArgs([value]) - const meta = ipcRenderer.sendSync(ipcs['b_mem_set'], metaId, member.name, args) + const meta = ipcRenderer.sendSync('ELECTRON_BROWSER_MEMBER_SET', metaId, member.name, args) // Meta will be non-null when a setter error occurred so parse it // to a value so it gets re-thrown. if (meta) metaToValue(meta) @@ -187,7 +168,7 @@ function proxyFunctionProperties (remoteMemberFunction, metaId, name) { const loadRemoteProperties = () => { if (loaded) return loaded = true - const meta = ipcRenderer.sendSync(ipcs['b_mem_get'], metaId, name) + const meta = ipcRenderer.sendSync('ELECTRON_BROWSER_MEMBER_GET', metaId, name) setObjectMembers(remoteMemberFunction, remoteMemberFunction, meta.id, meta.members) } @@ -247,9 +228,9 @@ function metaToValue (meta) { if (meta.type === 'function') { let remoteFunction = function (...args) { if (this && this.constructor === remoteFunction) { - return metaToValue(ipcRenderer.sendSync(ipcs['b_con'], meta.id, wrapArgs(args))) + return metaToValue(ipcRenderer.sendSync('ELECTRON_BROWSER_CONSTRUCTOR', meta.id, wrapArgs(args))) } else { - return metaToValue(ipcRenderer.sendSync(ipcs['b_func_call'], meta.id, wrapArgs(args))) + return metaToValue(ipcRenderer.sendSync('ELECTRON_BROWSER_FUNCTION_CALL', meta.id, wrapArgs(args))) } } ret = remoteFunction @@ -283,42 +264,42 @@ function metaToPlainObject (meta) { } // Browser calls a callback in renderer. -ipcRenderer.on(ipcs['rend_call'], (event, id, args) => { +ipcRenderer.on('ELECTRON_RENDERER_CALLBACK', (event, id, args) => { callbacksRegistry.apply(id, metaToValue(args)) }) // A callback in browser is released. -ipcRenderer.on(ipcs['rend_rel_call'], (event, id) => { +ipcRenderer.on('ELECTRON_RENDERER_RELEASE_CALLBACK', (event, id) => { callbacksRegistry.remove(id) }) process.on('exit', () => { - ipcRenderer.sendSync(ipcs['b_con_rel']) + ipcRenderer.sendSync('ELECTRON_BROWSER_CONTEXT_RELEASE') }) // Get remote module. exports.require = function (module) { - return metaToValue(ipcRenderer.sendSync(ipcs['b_req'], module)) + return metaToValue(ipcRenderer.sendSync('ELECTRON_BROWSER_REQUIRE', module)) } // Alias to remote.require('electron').xxx. exports.getBuiltin = function (module) { - return metaToValue(ipcRenderer.sendSync(ipcs['b_get_built'], module)) + return metaToValue(ipcRenderer.sendSync('ELECTRON_BROWSER_GET_BUILTIN', module)) } // Get current BrowserWindow. exports.getCurrentWindow = function () { - return metaToValue(ipcRenderer.sendSync(ipcs['b_curr_win'])) + return metaToValue(ipcRenderer.sendSync('ELECTRON_BROWSER_CURRENT_WINDOW')) } // Get current WebContents object. exports.getCurrentWebContents = function () { - return metaToValue(ipcRenderer.sendSync(ipcs['b_curr_web_cont'])) + return metaToValue(ipcRenderer.sendSync('ELECTRON_BROWSER_CURRENT_WEB_CONTENTS')) } // Get a global object in browser. exports.getGlobal = function (name) { - return metaToValue(ipcRenderer.sendSync(ipcs['b_glob'], name)) + return metaToValue(ipcRenderer.sendSync('ELECTRON_BROWSER_GLOBAL', name)) } // Get the process object in browser. @@ -335,7 +316,7 @@ exports.createFunctionWithReturnValue = function (returnValue) { // Get the guest WebContents from guestInstanceId. exports.getGuestWebContents = function (guestInstanceId) { - const meta = ipcRenderer.sendSync(ipcs['b_guest_web_con'], guestInstanceId) + const meta = ipcRenderer.sendSync('ELECTRON_BROWSER_GUEST_WEB_CONTENTS', guestInstanceId) return metaToValue(meta) }