From 2c68bad63107d59432f9ed3fdf13c360427041e7 Mon Sep 17 00:00:00 2001 From: Milan Burda Date: Tue, 13 Oct 2020 23:11:06 +0200 Subject: [PATCH] refactor: create IPC_MESSAGES enum for IPC message channels (#25694) --- filenames.auto.gni | 8 ++++ lib/browser/api/web-contents.ts | 7 +-- lib/browser/devtools.ts | 7 +-- lib/browser/guest-view-manager.ts | 31 +++++++------ lib/browser/guest-window-manager.ts | 17 +++---- lib/browser/navigation-controller.ts | 9 ++-- lib/browser/remote/server.ts | 33 ++++++------- lib/browser/rpc-server.ts | 25 +++++----- lib/common/api/clipboard.ts | 4 +- lib/common/ipc-messages.ts | 49 ++++++++++++++++++++ lib/common/remote/ipc-messages.ts | 19 ++++++++ lib/renderer/api/crash-reporter.ts | 11 +++-- lib/renderer/api/desktop-capturer.ts | 3 +- lib/renderer/api/native-image.ts | 3 +- lib/renderer/api/remote.ts | 35 +++++++------- lib/renderer/init.ts | 3 +- lib/renderer/inspector.ts | 7 +-- lib/renderer/security-warnings.ts | 3 +- lib/renderer/web-frame-init.ts | 3 +- lib/renderer/web-view/guest-view-internal.ts | 19 ++++---- lib/renderer/web-view/web-view-attributes.ts | 3 +- lib/renderer/web-view/web-view-impl.ts | 11 +++-- lib/renderer/web-view/web-view-init.ts | 5 +- lib/renderer/window-setup.ts | 29 ++++++------ lib/sandboxed_renderer/init.ts | 5 +- spec-main/chromium-spec.ts | 2 +- 26 files changed, 225 insertions(+), 126 deletions(-) create mode 100644 lib/common/ipc-messages.ts create mode 100644 lib/common/remote/ipc-messages.ts diff --git a/filenames.auto.gni b/filenames.auto.gni index 94d69cea3661..68798967582c 100644 --- a/filenames.auto.gni +++ b/filenames.auto.gni @@ -140,6 +140,8 @@ auto_filenames = { "lib/common/api/module-list.ts", "lib/common/api/shell.ts", "lib/common/define-properties.ts", + "lib/common/ipc-messages.ts", + "lib/common/remote/ipc-messages.ts", "lib/common/type-utils.ts", "lib/common/web-view-events.ts", "lib/common/web-view-methods.ts", @@ -247,7 +249,9 @@ auto_filenames = { "lib/common/api/shell.ts", "lib/common/define-properties.ts", "lib/common/init.ts", + "lib/common/ipc-messages.ts", "lib/common/parse-features-string.ts", + "lib/common/remote/ipc-messages.ts", "lib/common/reset-search-paths.ts", "lib/common/type-utils.ts", "lib/common/web-view-events.ts", @@ -270,6 +274,8 @@ auto_filenames = { "lib/common/api/shell.ts", "lib/common/define-properties.ts", "lib/common/init.ts", + "lib/common/ipc-messages.ts", + "lib/common/remote/ipc-messages.ts", "lib/common/reset-search-paths.ts", "lib/common/type-utils.ts", "lib/common/web-view-events.ts", @@ -314,6 +320,8 @@ auto_filenames = { "lib/common/api/shell.ts", "lib/common/define-properties.ts", "lib/common/init.ts", + "lib/common/ipc-messages.ts", + "lib/common/remote/ipc-messages.ts", "lib/common/reset-search-paths.ts", "lib/common/type-utils.ts", "lib/common/webpack-globals-provider.ts", diff --git a/lib/browser/api/web-contents.ts b/lib/browser/api/web-contents.ts index 3b5865500d1d..3b065f413b62 100644 --- a/lib/browser/api/web-contents.ts +++ b/lib/browser/api/web-contents.ts @@ -9,6 +9,7 @@ import { ipcMainInternal } from '@electron/internal/browser/ipc-main-internal'; import * as ipcMainUtils from '@electron/internal/browser/ipc-main-internal-utils'; import { parseFeatures } from '@electron/internal/common/parse-features-string'; import { MessagePortMain } from '@electron/internal/browser/message-port-main'; +import { IPC_MESSAGES } from '@electron/internal/common/ipc-messages'; // session is not used here, the purpose is to make sure session is initalized // before the webContents module. @@ -196,7 +197,7 @@ const webFrameMethods = [ for (const method of webFrameMethods) { WebContents.prototype[method] = function (...args: any[]): Promise { - return ipcMainUtils.invokeInWebContents(this, false, 'ELECTRON_INTERNAL_RENDERER_WEB_FRAME_METHOD', method, ...args); + return ipcMainUtils.invokeInWebContents(this, false, IPC_MESSAGES.RENDERER_WEB_FRAME_METHOD, method, ...args); }; } @@ -214,11 +215,11 @@ const waitTillCanExecuteJavaScript = async (webContents: Electron.WebContents) = // WebContents has been loaded. WebContents.prototype.executeJavaScript = async function (code, hasUserGesture) { await waitTillCanExecuteJavaScript(this); - return ipcMainUtils.invokeInWebContents(this, false, 'ELECTRON_INTERNAL_RENDERER_WEB_FRAME_METHOD', 'executeJavaScript', String(code), !!hasUserGesture); + return ipcMainUtils.invokeInWebContents(this, false, IPC_MESSAGES.RENDERER_WEB_FRAME_METHOD, 'executeJavaScript', String(code), !!hasUserGesture); }; WebContents.prototype.executeJavaScriptInIsolatedWorld = async function (worldId, code, hasUserGesture) { await waitTillCanExecuteJavaScript(this); - return ipcMainUtils.invokeInWebContents(this, false, 'ELECTRON_INTERNAL_RENDERER_WEB_FRAME_METHOD', 'executeJavaScriptInIsolatedWorld', worldId, code, !!hasUserGesture); + return ipcMainUtils.invokeInWebContents(this, false, IPC_MESSAGES.RENDERER_WEB_FRAME_METHOD, 'executeJavaScriptInIsolatedWorld', worldId, code, !!hasUserGesture); }; // Translate the options of printToPDF. diff --git a/lib/browser/devtools.ts b/lib/browser/devtools.ts index 708ba486b8b1..34ef3cf43693 100644 --- a/lib/browser/devtools.ts +++ b/lib/browser/devtools.ts @@ -4,6 +4,7 @@ import * as url from 'url'; import { ipcMainInternal } from '@electron/internal/browser/ipc-main-internal'; import * as ipcMainUtils from '@electron/internal/browser/ipc-main-internal-utils'; +import { IPC_MESSAGES } from '@electron/internal//common/ipc-messages'; const convertToMenuTemplate = function (items: ContextMenuItem[], handler: (id: number) => void) { return items.map(function (item) { @@ -60,7 +61,7 @@ const assertChromeDevTools = function (contents: Electron.WebContents, api: stri } }; -ipcMainInternal.handle('ELECTRON_INSPECTOR_CONTEXT_MENU', function (event, items: ContextMenuItem[], isEditMenu: boolean) { +ipcMainInternal.handle(IPC_MESSAGES.INSPECTOR_CONTEXT_MENU, function (event, items: ContextMenuItem[], isEditMenu: boolean) { return new Promise(resolve => { assertChromeDevTools(event.sender, 'window.InspectorFrontendHost.showContextMenuAtPoint()'); @@ -72,7 +73,7 @@ ipcMainInternal.handle('ELECTRON_INSPECTOR_CONTEXT_MENU', function (event, items }); }); -ipcMainInternal.handle('ELECTRON_INSPECTOR_SELECT_FILE', async function (event) { +ipcMainInternal.handle(IPC_MESSAGES.INSPECTOR_SELECT_FILE, async function (event) { assertChromeDevTools(event.sender, 'window.UI.createFileSelectorElement()'); const result = await dialog.showOpenDialog({}); @@ -84,7 +85,7 @@ ipcMainInternal.handle('ELECTRON_INSPECTOR_SELECT_FILE', async function (event) return [path, data]; }); -ipcMainUtils.handleSync('ELECTRON_INSPECTOR_CONFIRM', async function (event, message: string = '', title: string = '') { +ipcMainUtils.handleSync(IPC_MESSAGES.INSPECTOR_CONFIRM, async function (event, message: string = '', title: string = '') { assertChromeDevTools(event.sender, 'window.confirm()'); const options = { diff --git a/lib/browser/guest-view-manager.ts b/lib/browser/guest-view-manager.ts index 125608e447ee..9135a4c442ba 100644 --- a/lib/browser/guest-view-manager.ts +++ b/lib/browser/guest-view-manager.ts @@ -5,6 +5,7 @@ import { parseWebViewWebPreferences } from '@electron/internal/common/parse-feat import { syncMethods, asyncMethods, properties } from '@electron/internal/common/web-view-methods'; import { webViewEvents } from '@electron/internal/common/web-view-events'; import { serialize } from '@electron/internal/common/type-utils'; +import { IPC_MESSAGES } from '@electron/internal/common/ipc-messages'; interface GuestInstance { elementInstanceId?: number; @@ -83,7 +84,7 @@ const createGuest = function (embedder: Electron.WebContents, params: Record -ipcMainInternal.on('ELECTRON_GUEST_VIEW_MANAGER_FOCUS_CHANGE', function (event: ElectronInternal.IpcMainInternalEvent, focus: boolean, guestInstanceId: number) { +ipcMainInternal.on(IPC_MESSAGES.GUEST_VIEW_MANAGER_FOCUS_CHANGE, function (event: ElectronInternal.IpcMainInternalEvent, focus: boolean, guestInstanceId: number) { const guest = getGuest(guestInstanceId); if (guest === event.sender) { event.sender.emit('focus-change', {}, focus, guestInstanceId); @@ -331,7 +332,7 @@ ipcMainInternal.on('ELECTRON_GUEST_VIEW_MANAGER_FOCUS_CHANGE', function (event: } }); -handleMessage('ELECTRON_GUEST_VIEW_MANAGER_CALL', function (event, guestInstanceId: number, method: string, args: any[]) { +handleMessage(IPC_MESSAGES.GUEST_VIEW_MANAGER_CALL, function (event, guestInstanceId: number, method: string, args: any[]) { const guest = getGuestForWebContents(guestInstanceId, event.sender); if (!asyncMethods.has(method)) { throw new Error(`Invalid method: ${method}`); @@ -340,7 +341,7 @@ handleMessage('ELECTRON_GUEST_VIEW_MANAGER_CALL', function (event, guestInstance return (guest as any)[method](...args); }); -handleMessageSync('ELECTRON_GUEST_VIEW_MANAGER_CALL', function (event, guestInstanceId: number, method: string, args: any[]) { +handleMessageSync(IPC_MESSAGES.GUEST_VIEW_MANAGER_CALL, function (event, guestInstanceId: number, method: string, args: any[]) { const guest = getGuestForWebContents(guestInstanceId, event.sender); if (!syncMethods.has(method)) { throw new Error(`Invalid method: ${method}`); @@ -349,7 +350,7 @@ handleMessageSync('ELECTRON_GUEST_VIEW_MANAGER_CALL', function (event, guestInst return (guest as any)[method](...args); }); -handleMessageSync('ELECTRON_GUEST_VIEW_MANAGER_PROPERTY_GET', function (event, guestInstanceId: number, property: string) { +handleMessageSync(IPC_MESSAGES.GUEST_VIEW_MANAGER_PROPERTY_GET, function (event, guestInstanceId: number, property: string) { const guest = getGuestForWebContents(guestInstanceId, event.sender); if (!properties.has(property)) { throw new Error(`Invalid property: ${property}`); @@ -358,7 +359,7 @@ handleMessageSync('ELECTRON_GUEST_VIEW_MANAGER_PROPERTY_GET', function (event, g return (guest as any)[property]; }); -handleMessageSync('ELECTRON_GUEST_VIEW_MANAGER_PROPERTY_SET', function (event, guestInstanceId: number, property: string, val: any) { +handleMessageSync(IPC_MESSAGES.GUEST_VIEW_MANAGER_PROPERTY_SET, function (event, guestInstanceId: number, property: string, val: any) { const guest = getGuestForWebContents(guestInstanceId, event.sender); if (!properties.has(property)) { throw new Error(`Invalid property: ${property}`); @@ -367,7 +368,7 @@ handleMessageSync('ELECTRON_GUEST_VIEW_MANAGER_PROPERTY_SET', function (event, g (guest as any)[property] = val; }); -handleMessage('ELECTRON_GUEST_VIEW_MANAGER_CAPTURE_PAGE', async function (event, guestInstanceId: number, args: any[]) { +handleMessage(IPC_MESSAGES.GUEST_VIEW_MANAGER_CAPTURE_PAGE, async function (event, guestInstanceId: number, args: any[]) { const guest = getGuestForWebContents(guestInstanceId, event.sender); return serialize(await guest.capturePage(...args)); diff --git a/lib/browser/guest-window-manager.ts b/lib/browser/guest-window-manager.ts index 38225a3d5757..e8da636eda35 100644 --- a/lib/browser/guest-window-manager.ts +++ b/lib/browser/guest-window-manager.ts @@ -2,6 +2,7 @@ import * as electron from 'electron/main'; import { ipcMainInternal } from '@electron/internal/browser/ipc-main-internal'; import * as ipcMainUtils from '@electron/internal/browser/ipc-main-internal-utils'; import { parseFeatures } from '@electron/internal/common/parse-features-string'; +import { IPC_MESSAGES } from '@electron/internal/common/ipc-messages'; const { isSameOrigin } = process._linkedBinding('electron_common_v8_util'); @@ -132,7 +133,7 @@ const setupGuest = function (embedder: Electron.WebContents, frameName: string, guest.destroy(); }; const closedByUser = function () { - embedder._sendInternal('ELECTRON_GUEST_WINDOW_MANAGER_WINDOW_CLOSED_' + guestId); + embedder._sendInternal(`${IPC_MESSAGES.GUEST_WINDOW_MANAGER_WINDOW_CLOSED}_${guestId}`); embedder.removeListener('current-render-view-deleted' as any, closedByEmbedder); }; embedder.once('current-render-view-deleted' as any, closedByEmbedder); @@ -219,12 +220,12 @@ const canAccessWindow = function (sender: Electron.WebContents, target: Electron }; // Routed window.open messages with raw options -ipcMainInternal.on('ELECTRON_GUEST_WINDOW_MANAGER_WINDOW_OPEN', (event, url: string, frameName: string, features: string) => { +ipcMainInternal.on(IPC_MESSAGES.GUEST_WINDOW_MANAGER_WINDOW_OPEN, (event, url: string, frameName: string, features: string) => { // This should only be allowed for senders that have nativeWindowOpen: false const lastWebPreferences = event.sender.getLastWebPreferences(); if (lastWebPreferences.nativeWindowOpen || lastWebPreferences.sandbox) { event.returnValue = null; - throw new Error('GUEST_WINDOW_MANAGER_WINDOW_OPEN denied: expected native window.open'); + throw new Error(`${IPC_MESSAGES.GUEST_WINDOW_MANAGER_WINDOW_OPEN} denied: expected native window.open`); } if (url == null || url === '') url = 'about:blank'; if (frameName == null) frameName = ''; @@ -299,7 +300,7 @@ const windowMethods = new Set([ 'blur' ]); -handleMessage('ELECTRON_GUEST_WINDOW_MANAGER_WINDOW_METHOD', (event, guestContents, method: string, ...args: any[]) => { +handleMessage(IPC_MESSAGES.GUEST_WINDOW_MANAGER_WINDOW_METHOD, (event, guestContents, method: string, ...args: any[]) => { securityCheck(event.sender, guestContents, canAccessWindow); if (!windowMethods.has(method)) { @@ -310,7 +311,7 @@ handleMessage('ELECTRON_GUEST_WINDOW_MANAGER_WINDOW_METHOD', (event, guestConten return (getGuestWindow(guestContents) as any)[method](...args); }); -handleMessage('ELECTRON_GUEST_WINDOW_MANAGER_WINDOW_POSTMESSAGE', (event, guestContents, message, targetOrigin, sourceOrigin) => { +handleMessage(IPC_MESSAGES.GUEST_WINDOW_MANAGER_WINDOW_POSTMESSAGE, (event, guestContents, message, targetOrigin, sourceOrigin) => { if (targetOrigin == null) { targetOrigin = '*'; } @@ -322,7 +323,7 @@ handleMessage('ELECTRON_GUEST_WINDOW_MANAGER_WINDOW_POSTMESSAGE', (event, guestC if (targetOrigin === '*' || isSameOrigin(guestContents.getURL(), targetOrigin)) { const sourceId = event.sender.id; - guestContents._sendInternal('ELECTRON_GUEST_WINDOW_POSTMESSAGE', sourceId, message, sourceOrigin); + guestContents._sendInternal(IPC_MESSAGES.GUEST_WINDOW_POSTMESSAGE, sourceId, message, sourceOrigin); } }); @@ -332,7 +333,7 @@ const webContentsMethodsAsync = new Set([ 'print' ]); -handleMessage('ELECTRON_GUEST_WINDOW_MANAGER_WEB_CONTENTS_METHOD', (event, guestContents, method: string, ...args: any[]) => { +handleMessage(IPC_MESSAGES.GUEST_WINDOW_MANAGER_WEB_CONTENTS_METHOD, (event, guestContents, method: string, ...args: any[]) => { securityCheck(event.sender, guestContents, canAccessWindow); if (!webContentsMethodsAsync.has(method)) { @@ -347,7 +348,7 @@ const webContentsMethodsSync = new Set([ 'getURL' ]); -handleMessageSync('ELECTRON_GUEST_WINDOW_MANAGER_WEB_CONTENTS_METHOD', (event, guestContents, method: string, ...args: any[]) => { +handleMessageSync(IPC_MESSAGES.GUEST_WINDOW_MANAGER_WEB_CONTENTS_METHOD, (event, guestContents, method: string, ...args: any[]) => { securityCheck(event.sender, guestContents, canAccessWindow); if (!webContentsMethodsSync.has(method)) { diff --git a/lib/browser/navigation-controller.ts b/lib/browser/navigation-controller.ts index ffd6024fd315..79c8b771fe92 100644 --- a/lib/browser/navigation-controller.ts +++ b/lib/browser/navigation-controller.ts @@ -1,21 +1,22 @@ import { ipcMainInternal } from '@electron/internal/browser/ipc-main-internal'; import type { WebContents, LoadURLOptions } from 'electron/main'; import { EventEmitter } from 'events'; +import { IPC_MESSAGES } from '@electron/internal/common/ipc-messages'; // The history operation in renderer is redirected to browser. -ipcMainInternal.on('ELECTRON_NAVIGATION_CONTROLLER_GO_BACK', function (event) { +ipcMainInternal.on(IPC_MESSAGES.NAVIGATION_CONTROLLER_GO_BACK, function (event) { event.sender.goBack(); }); -ipcMainInternal.on('ELECTRON_NAVIGATION_CONTROLLER_GO_FORWARD', function (event) { +ipcMainInternal.on(IPC_MESSAGES.NAVIGATION_CONTROLLER_GO_FORWARD, function (event) { event.sender.goForward(); }); -ipcMainInternal.on('ELECTRON_NAVIGATION_CONTROLLER_GO_TO_OFFSET', function (event, offset) { +ipcMainInternal.on(IPC_MESSAGES.NAVIGATION_CONTROLLER_GO_TO_OFFSET, function (event, offset) { event.sender.goToOffset(offset); }); -ipcMainInternal.on('ELECTRON_NAVIGATION_CONTROLLER_LENGTH', function (event) { +ipcMainInternal.on(IPC_MESSAGES.NAVIGATION_CONTROLLER_LENGTH, function (event) { event.returnValue = event.sender.length(); }); diff --git a/lib/browser/remote/server.ts b/lib/browser/remote/server.ts index aac45adf0e0f..dc505d1e384e 100644 --- a/lib/browser/remote/server.ts +++ b/lib/browser/remote/server.ts @@ -4,6 +4,7 @@ import objectsRegistry from '@electron/internal/browser/remote/objects-registry' import { ipcMainInternal } from '@electron/internal/browser/ipc-main-internal'; import { isPromise, isSerializableObject, deserialize, serialize } from '@electron/internal/common/type-utils'; import type { MetaTypeFromRenderer, ObjectMember, MetaType, ObjProtoDescriptor } from '@electron/internal/common/remote/types'; +import { IPC_MESSAGES } from '@electron/internal/common/remote/ipc-messages'; const v8Util = process._linkedBinding('electron_common_v8_util'); const eventBinding = process._linkedBinding('electron_browser_event'); @@ -30,7 +31,7 @@ const finalizationRegistry = new FinalizationRegistry((fi: FinalizerInfo) => { const ref = rendererFunctionCache.get(mapKey); if (ref !== undefined && ref.deref() === undefined) { rendererFunctionCache.delete(mapKey); - if (!fi.webContents.isDestroyed()) { fi.webContents.sendToFrame(fi.frameId, 'ELECTRON_RENDERER_RELEASE_CALLBACK', fi.id[0], fi.id[1]); } + if (!fi.webContents.isDestroyed()) { fi.webContents.sendToFrame(fi.frameId, IPC_MESSAGES.RENDERER_RELEASE_CALLBACK, fi.id[0], fi.id[1]); } } }); @@ -262,7 +263,7 @@ const unwrapArgs = function (sender: electron.WebContents, frameId: number, cont const callIntoRenderer = function (this: any, ...args: any[]) { let succeed = false; if (!sender.isDestroyed()) { - succeed = sender._sendToFrameInternal(frameId, 'ELECTRON_RENDERER_CALLBACK', contextId, meta.id, valueToMeta(sender, contextId, args)); + succeed = sender._sendToFrameInternal(frameId, IPC_MESSAGES.RENDERER_CALLBACK, contextId, meta.id, valueToMeta(sender, contextId, args)); } if (!succeed) { removeRemoteListenersAndLogWarning(this, callIntoRenderer); @@ -334,7 +335,7 @@ const logStack = function (contents: electron.WebContents, code: string, stack: } }; -handleRemoteCommand('ELECTRON_BROWSER_WRONG_CONTEXT_ERROR', function (event, contextId, passedContextId, id) { +handleRemoteCommand(IPC_MESSAGES.BROWSER_WRONG_CONTEXT_ERROR, function (event, contextId, passedContextId, id) { const objectId: [string, number] = [passedContextId, id]; const cachedFunction = getCachedRendererFunction(objectId); if (cachedFunction === undefined) { @@ -344,7 +345,7 @@ handleRemoteCommand('ELECTRON_BROWSER_WRONG_CONTEXT_ERROR', function (event, con removeRemoteListenersAndLogWarning(event.sender, cachedFunction); }); -handleRemoteCommand('ELECTRON_BROWSER_REQUIRE', function (event, contextId, moduleName, stack) { +handleRemoteCommand(IPC_MESSAGES.BROWSER_REQUIRE, function (event, contextId, moduleName, stack) { logStack(event.sender, `remote.require('${moduleName}')`, stack); const customEvent = emitCustomEvent(event.sender, 'remote-require', moduleName); @@ -359,7 +360,7 @@ handleRemoteCommand('ELECTRON_BROWSER_REQUIRE', function (event, contextId, modu return valueToMeta(event.sender, contextId, customEvent.returnValue); }); -handleRemoteCommand('ELECTRON_BROWSER_GET_BUILTIN', function (event, contextId, moduleName, stack) { +handleRemoteCommand(IPC_MESSAGES.BROWSER_GET_BUILTIN, function (event, contextId, moduleName, stack) { logStack(event.sender, `remote.getBuiltin('${moduleName}')`, stack); const customEvent = emitCustomEvent(event.sender, 'remote-get-builtin', moduleName); @@ -374,7 +375,7 @@ handleRemoteCommand('ELECTRON_BROWSER_GET_BUILTIN', function (event, contextId, return valueToMeta(event.sender, contextId, customEvent.returnValue); }); -handleRemoteCommand('ELECTRON_BROWSER_GLOBAL', function (event, contextId, globalName, stack) { +handleRemoteCommand(IPC_MESSAGES.BROWSER_GET_GLOBAL, function (event, contextId, globalName, stack) { logStack(event.sender, `remote.getGlobal('${globalName}')`, stack); const customEvent = emitCustomEvent(event.sender, 'remote-get-global', globalName); @@ -389,7 +390,7 @@ handleRemoteCommand('ELECTRON_BROWSER_GLOBAL', function (event, contextId, globa return valueToMeta(event.sender, contextId, customEvent.returnValue); }); -handleRemoteCommand('ELECTRON_BROWSER_CURRENT_WINDOW', function (event, contextId, stack) { +handleRemoteCommand(IPC_MESSAGES.BROWSER_GET_CURRENT_WINDOW, function (event, contextId, stack) { logStack(event.sender, 'remote.getCurrentWindow()', stack); const customEvent = emitCustomEvent(event.sender, 'remote-get-current-window'); @@ -404,7 +405,7 @@ handleRemoteCommand('ELECTRON_BROWSER_CURRENT_WINDOW', function (event, contextI return valueToMeta(event.sender, contextId, customEvent.returnValue); }); -handleRemoteCommand('ELECTRON_BROWSER_CURRENT_WEB_CONTENTS', function (event, contextId, stack) { +handleRemoteCommand(IPC_MESSAGES.BROWSER_GET_CURRENT_WEB_CONTENTS, function (event, contextId, stack) { logStack(event.sender, 'remote.getCurrentWebContents()', stack); const customEvent = emitCustomEvent(event.sender, 'remote-get-current-web-contents'); @@ -419,7 +420,7 @@ handleRemoteCommand('ELECTRON_BROWSER_CURRENT_WEB_CONTENTS', function (event, co return valueToMeta(event.sender, contextId, customEvent.returnValue); }); -handleRemoteCommand('ELECTRON_BROWSER_CONSTRUCTOR', function (event, contextId, id, args) { +handleRemoteCommand(IPC_MESSAGES.BROWSER_CONSTRUCTOR, function (event, contextId, id, args) { args = unwrapArgs(event.sender, event.frameId, contextId, args); const constructor = objectsRegistry.get(id); @@ -430,7 +431,7 @@ handleRemoteCommand('ELECTRON_BROWSER_CONSTRUCTOR', function (event, contextId, return valueToMeta(event.sender, contextId, new constructor(...args)); }); -handleRemoteCommand('ELECTRON_BROWSER_FUNCTION_CALL', function (event, contextId, id, args) { +handleRemoteCommand(IPC_MESSAGES.BROWSER_FUNCTION_CALL, function (event, contextId, id, args) { args = unwrapArgs(event.sender, event.frameId, contextId, args); const func = objectsRegistry.get(id); @@ -447,7 +448,7 @@ handleRemoteCommand('ELECTRON_BROWSER_FUNCTION_CALL', function (event, contextId } }); -handleRemoteCommand('ELECTRON_BROWSER_MEMBER_CONSTRUCTOR', function (event, contextId, id, method, args) { +handleRemoteCommand(IPC_MESSAGES.BROWSER_MEMBER_CONSTRUCTOR, function (event, contextId, id, method, args) { args = unwrapArgs(event.sender, event.frameId, contextId, args); const object = objectsRegistry.get(id); @@ -458,7 +459,7 @@ handleRemoteCommand('ELECTRON_BROWSER_MEMBER_CONSTRUCTOR', function (event, cont return valueToMeta(event.sender, contextId, new object[method](...args)); }); -handleRemoteCommand('ELECTRON_BROWSER_MEMBER_CALL', function (event, contextId, id, method, args) { +handleRemoteCommand(IPC_MESSAGES.BROWSER_MEMBER_CALL, function (event, contextId, id, method, args) { args = unwrapArgs(event.sender, event.frameId, contextId, args); const object = objectsRegistry.get(id); @@ -475,7 +476,7 @@ handleRemoteCommand('ELECTRON_BROWSER_MEMBER_CALL', function (event, contextId, } }); -handleRemoteCommand('ELECTRON_BROWSER_MEMBER_SET', function (event, contextId, id, name, args) { +handleRemoteCommand(IPC_MESSAGES.BROWSER_MEMBER_SET, function (event, contextId, id, name, args) { args = unwrapArgs(event.sender, event.frameId, contextId, args); const obj = objectsRegistry.get(id); @@ -487,7 +488,7 @@ handleRemoteCommand('ELECTRON_BROWSER_MEMBER_SET', function (event, contextId, i return null; }); -handleRemoteCommand('ELECTRON_BROWSER_MEMBER_GET', function (event, contextId, id, name) { +handleRemoteCommand(IPC_MESSAGES.BROWSER_MEMBER_GET, function (event, contextId, id, name) { const obj = objectsRegistry.get(id); if (obj == null) { @@ -497,10 +498,10 @@ handleRemoteCommand('ELECTRON_BROWSER_MEMBER_GET', function (event, contextId, i return valueToMeta(event.sender, contextId, obj[name]); }); -handleRemoteCommand('ELECTRON_BROWSER_DEREFERENCE', function (event, contextId, id) { +handleRemoteCommand(IPC_MESSAGES.BROWSER_DEREFERENCE, function (event, contextId, id) { objectsRegistry.remove(event.sender, contextId, id); }); -handleRemoteCommand('ELECTRON_BROWSER_CONTEXT_RELEASE', (event, contextId) => { +handleRemoteCommand(IPC_MESSAGES.BROWSER_CONTEXT_RELEASE, (event, contextId) => { objectsRegistry.clear(event.sender, contextId); }); diff --git a/lib/browser/rpc-server.ts b/lib/browser/rpc-server.ts index 28042520f0db..b639ef7028e1 100644 --- a/lib/browser/rpc-server.ts +++ b/lib/browser/rpc-server.ts @@ -6,6 +6,7 @@ import { ipcMainInternal } from '@electron/internal/browser/ipc-main-internal'; import * as ipcMainUtils from '@electron/internal/browser/ipc-main-internal-utils'; import * as guestViewManager from '@electron/internal/browser/guest-view-manager'; import * as typeUtils from '@electron/internal/common/type-utils'; +import { IPC_MESSAGES } from '@electron/internal/common/ipc-messages'; const eventBinding = process._linkedBinding('electron_browser_event'); @@ -25,7 +26,7 @@ const logStack = function (contents: WebContents, code: string, stack: string) { }; // Implements window.close() -ipcMainInternal.on('ELECTRON_BROWSER_WINDOW_CLOSE', function (event) { +ipcMainInternal.on(IPC_MESSAGES.BROWSER_WINDOW_CLOSE, function (event) { const window = event.sender.getOwnerBrowserWindow(); if (window) { window.close(); @@ -33,7 +34,7 @@ ipcMainInternal.on('ELECTRON_BROWSER_WINDOW_CLOSE', function (event) { event.returnValue = null; }); -ipcMainInternal.handle('ELECTRON_BROWSER_GET_LAST_WEB_PREFERENCES', function (event) { +ipcMainInternal.handle(IPC_MESSAGES.BROWSER_GET_LAST_WEB_PREFERENCES, function (event) { return event.sender.getLastWebPreferences(); }); @@ -49,7 +50,7 @@ const allowedClipboardMethods = (() => { } })(); -ipcMainUtils.handleSync('ELECTRON_BROWSER_CLIPBOARD_SYNC', function (event, method: string, ...args: any[]) { +ipcMainUtils.handleSync(IPC_MESSAGES.BROWSER_CLIPBOARD_SYNC, function (event, method: string, ...args: any[]) { if (!allowedClipboardMethods.has(method)) { throw new Error(`Invalid method: ${method}`); } @@ -60,7 +61,7 @@ ipcMainUtils.handleSync('ELECTRON_BROWSER_CLIPBOARD_SYNC', function (event, meth if (BUILDFLAG(ENABLE_DESKTOP_CAPTURER)) { const desktopCapturer = require('@electron/internal/browser/desktop-capturer'); - ipcMainInternal.handle('ELECTRON_BROWSER_DESKTOP_CAPTURER_GET_SOURCES', async function (event, options: Electron.SourcesOptions, stack: string) { + ipcMainInternal.handle(IPC_MESSAGES.DESKTOP_CAPTURER_GET_SOURCES, async function (event, options: Electron.SourcesOptions, stack: string) { logStack(event.sender, 'desktopCapturer.getSources()', stack); const customEvent = emitCustomEvent(event.sender, 'desktop-capturer-get-sources'); @@ -88,7 +89,7 @@ const getPreloadScript = async function (preloadPath: string) { return { preloadPath, preloadSrc, preloadError }; }; -ipcMainUtils.handleSync('ELECTRON_BROWSER_SANDBOX_LOAD', async function (event) { +ipcMainUtils.handleSync(IPC_MESSAGES.BROWSER_SANDBOX_LOAD, async function (event) { const preloadPaths = event.sender._getPreloadPaths(); const webPreferences = event.sender.getLastWebPreferences() || {}; @@ -109,30 +110,30 @@ ipcMainUtils.handleSync('ELECTRON_BROWSER_SANDBOX_LOAD', async function (event) }; }); -ipcMainInternal.on('ELECTRON_BROWSER_PRELOAD_ERROR', function (event, preloadPath: string, error: Error) { +ipcMainInternal.on(IPC_MESSAGES.BROWSER_PRELOAD_ERROR, function (event, preloadPath: string, error: Error) { event.sender.emit('preload-error', event, preloadPath, error); }); -ipcMainUtils.handleSync('ELECTRON_CRASH_REPORTER_GET_LAST_CRASH_REPORT', () => { +ipcMainUtils.handleSync(IPC_MESSAGES.CRASH_REPORTER_GET_LAST_CRASH_REPORT, () => { return crashReporter.getLastCrashReport(); }); -ipcMainUtils.handleSync('ELECTRON_CRASH_REPORTER_GET_UPLOADED_REPORTS', () => { +ipcMainUtils.handleSync(IPC_MESSAGES.CRASH_REPORTER_GET_UPLOADED_REPORTS, () => { return crashReporter.getUploadedReports(); }); -ipcMainUtils.handleSync('ELECTRON_CRASH_REPORTER_GET_UPLOAD_TO_SERVER', () => { +ipcMainUtils.handleSync(IPC_MESSAGES.CRASH_REPORTER_GET_UPLOAD_TO_SERVER, () => { return crashReporter.getUploadToServer(); }); -ipcMainUtils.handleSync('ELECTRON_CRASH_REPORTER_SET_UPLOAD_TO_SERVER', (event, uploadToServer: boolean) => { +ipcMainUtils.handleSync(IPC_MESSAGES.CRASH_REPORTER_SET_UPLOAD_TO_SERVER, (event, uploadToServer: boolean) => { return crashReporter.setUploadToServer(uploadToServer); }); -ipcMainUtils.handleSync('ELECTRON_CRASH_REPORTER_GET_CRASHES_DIRECTORY', () => { +ipcMainUtils.handleSync(IPC_MESSAGES.CRASH_REPORTER_GET_CRASHES_DIRECTORY, () => { return crashReporter.getCrashesDirectory(); }); -ipcMainInternal.handle('ELECTRON_NATIVE_IMAGE_CREATE_THUMBNAIL_FROM_PATH', async (_, path: string, size: Electron.Size) => { +ipcMainInternal.handle(IPC_MESSAGES.NATIVE_IMAGE_CREATE_THUMBNAIL_FROM_PATH, async (_, path: string, size: Electron.Size) => { return typeUtils.serialize(await nativeImage.createThumbnailFromPath(path, size)); }); diff --git a/lib/common/api/clipboard.ts b/lib/common/api/clipboard.ts index 17dfe297ae6e..8385d56b9fc7 100644 --- a/lib/common/api/clipboard.ts +++ b/lib/common/api/clipboard.ts @@ -1,3 +1,5 @@ +import { IPC_MESSAGES } from '@electron/internal/common/ipc-messages'; + const clipboard = process._linkedBinding('electron_common_clipboard'); if (process.type === 'renderer') { @@ -7,7 +9,7 @@ if (process.type === 'renderer') { const makeRemoteMethod = function (method: keyof Electron.Clipboard) { return (...args: any[]) => { args = typeUtils.serialize(args); - const result = ipcRendererUtils.invokeSync('ELECTRON_BROWSER_CLIPBOARD_SYNC', method, ...args); + const result = ipcRendererUtils.invokeSync(IPC_MESSAGES.BROWSER_CLIPBOARD_SYNC, method, ...args); return typeUtils.deserialize(result); }; }; diff --git a/lib/common/ipc-messages.ts b/lib/common/ipc-messages.ts new file mode 100644 index 000000000000..1ee697f73733 --- /dev/null +++ b/lib/common/ipc-messages.ts @@ -0,0 +1,49 @@ +export const enum IPC_MESSAGES { + BROWSER_CLIPBOARD_SYNC = 'BROWSER_CLIPBOARD_SYNC', + BROWSER_GET_LAST_WEB_PREFERENCES = 'BROWSER_GET_LAST_WEB_PREFERENCES', + BROWSER_PRELOAD_ERROR = 'BROWSER_PRELOAD_ERROR', + BROWSER_SANDBOX_LOAD = 'BROWSER_SANDBOX_LOAD', + BROWSER_WINDOW_CLOSE = 'BROWSER_WINDOW_CLOSE', + + CRASH_REPORTER_GET_LAST_CRASH_REPORT = 'CRASH_REPORTER_GET_LAST_CRASH_REPORT', + CRASH_REPORTER_GET_UPLOADED_REPORTS = 'CRASH_REPORTER_GET_UPLOADED_REPORTS', + CRASH_REPORTER_GET_UPLOAD_TO_SERVER = 'CRASH_REPORTER_GET_UPLOAD_TO_SERVER', + CRASH_REPORTER_SET_UPLOAD_TO_SERVER = 'CRASH_REPORTER_SET_UPLOAD_TO_SERVER', + CRASH_REPORTER_GET_CRASHES_DIRECTORY = 'CRASH_REPORTER_GET_CRASHES_DIRECTORY', + + GUEST_INSTANCE_VISIBILITY_CHANGE = 'GUEST_INSTANCE_VISIBILITY_CHANGE', + + GUEST_VIEW_INTERNAL_DESTROY_GUEST = 'GUEST_VIEW_INTERNAL_DESTROY_GUEST', + GUEST_VIEW_INTERNAL_DISPATCH_EVENT = 'GUEST_VIEW_INTERNAL_DISPATCH_EVENT', + GUEST_VIEW_INTERNAL_IPC_MESSAGE = 'GUEST_VIEW_INTERNAL_IPC_MESSAGE', + + GUEST_VIEW_MANAGER_CREATE_GUEST = 'GUEST_VIEW_MANAGER_CREATE_GUEST', + GUEST_VIEW_MANAGER_ATTACH_GUEST = 'GUEST_VIEW_MANAGER_ATTACH_GUEST', + GUEST_VIEW_MANAGER_DETACH_GUEST = 'GUEST_VIEW_MANAGER_DETACH_GUEST', + GUEST_VIEW_MANAGER_FOCUS_CHANGE = 'GUEST_VIEW_MANAGER_FOCUS_CHANGE', + GUEST_VIEW_MANAGER_CALL = 'GUEST_VIEW_MANAGER_CALL', + GUEST_VIEW_MANAGER_CAPTURE_PAGE = 'GUEST_VIEW_MANAGER_CAPTURE_PAGE', + GUEST_VIEW_MANAGER_PROPERTY_GET = 'GUEST_VIEW_MANAGER_PROPERTY_GET', + GUEST_VIEW_MANAGER_PROPERTY_SET = 'GUEST_VIEW_MANAGER_PROPERTY_SET', + + GUEST_WINDOW_MANAGER_WINDOW_OPEN = 'GUEST_WINDOW_MANAGER_WINDOW_OPEN', + GUEST_WINDOW_MANAGER_WINDOW_CLOSED = 'GUEST_WINDOW_MANAGER_WINDOW_CLOSED', + GUEST_WINDOW_MANAGER_WINDOW_POSTMESSAGE = 'GUEST_WINDOW_MANAGER_WINDOW_POSTMESSAGE', + GUEST_WINDOW_MANAGER_WINDOW_METHOD = 'GUEST_WINDOW_MANAGER_WINDOW_METHOD', + GUEST_WINDOW_MANAGER_WEB_CONTENTS_METHOD = 'GUEST_WINDOW_MANAGER_WEB_CONTENTS_METHOD', + GUEST_WINDOW_POSTMESSAGE = 'GUEST_WINDOW_POSTMESSAGE', + + RENDERER_WEB_FRAME_METHOD = 'RENDERER_WEB_FRAME_METHOD', + + NAVIGATION_CONTROLLER_GO_BACK = 'NAVIGATION_CONTROLLER_GO_BACK', + NAVIGATION_CONTROLLER_GO_FORWARD = 'NAVIGATION_CONTROLLER_GO_FORWARD', + NAVIGATION_CONTROLLER_GO_TO_OFFSET = 'NAVIGATION_CONTROLLER_GO_TO_OFFSET', + NAVIGATION_CONTROLLER_LENGTH = 'NAVIGATION_CONTROLLER_LENGTH', + + INSPECTOR_CONFIRM = 'INSPECTOR_CONFIRM', + INSPECTOR_CONTEXT_MENU = 'INSPECTOR_CONTEXT_MENU', + INSPECTOR_SELECT_FILE = 'INSPECTOR_SELECT_FILE', + + DESKTOP_CAPTURER_GET_SOURCES = 'DESKTOP_CAPTURER_GET_SOURCES', + NATIVE_IMAGE_CREATE_THUMBNAIL_FROM_PATH = 'NATIVE_IMAGE_CREATE_THUMBNAIL_FROM_PATH', +} diff --git a/lib/common/remote/ipc-messages.ts b/lib/common/remote/ipc-messages.ts new file mode 100644 index 000000000000..35f932c7ae0d --- /dev/null +++ b/lib/common/remote/ipc-messages.ts @@ -0,0 +1,19 @@ +export const enum IPC_MESSAGES { + BROWSER_REQUIRE = 'REMOTE_BROWSER_REQUIRE', + BROWSER_GET_BUILTIN = 'REMOTE_BROWSER_GET_BUILTIN', + BROWSER_GET_GLOBAL = 'REMOTE_BROWSER_GET_GLOBAL', + BROWSER_GET_CURRENT_WINDOW = 'REMOTE_BROWSER_GET_CURRENT_WINDOW', + BROWSER_GET_CURRENT_WEB_CONTENTS = 'REMOTE_BROWSER_GET_CURRENT_WEB_CONTENTS', + BROWSER_CONSTRUCTOR = 'REMOTE_BROWSER_CONSTRUCTOR', + BROWSER_FUNCTION_CALL = 'REMOTE_BROWSER_FUNCTION_CALL', + BROWSER_MEMBER_CONSTRUCTOR = 'REMOTE_BROWSER_MEMBER_CONSTRUCTOR', + BROWSER_MEMBER_CALL = 'REMOTE_BROWSER_MEMBER_CALL', + BROWSER_MEMBER_GET = 'REMOTE_BROWSER_MEMBER_GET', + BROWSER_MEMBER_SET = 'REMOTE_BROWSER_MEMBER_SET', + BROWSER_DEREFERENCE = 'REMOTE_BROWSER_DEREFERENCE', + BROWSER_CONTEXT_RELEASE = 'REMOTE_BROWSER_CONTEXT_RELEASE', + BROWSER_WRONG_CONTEXT_ERROR = 'REMOTE_BROWSER_WRONG_CONTEXT_ERROR', + + RENDERER_CALLBACK = 'REMOTE_RENDERER_CALLBACK', + RENDERER_RELEASE_CALLBACK = 'REMOTE_RENDERER_RELEASE_CALLBACK', +} diff --git a/lib/renderer/api/crash-reporter.ts b/lib/renderer/api/crash-reporter.ts index 419d60a9b33f..2f2427b9fcb9 100644 --- a/lib/renderer/api/crash-reporter.ts +++ b/lib/renderer/api/crash-reporter.ts @@ -1,5 +1,6 @@ import { invokeSync } from '../ipc-renderer-internal-utils'; import { deprecate } from 'electron'; +import { IPC_MESSAGES } from '@electron/internal/common/ipc-messages'; const binding = process._linkedBinding('electron_renderer_crash_reporter'); @@ -13,27 +14,27 @@ export default { getLastCrashReport (): Electron.CrashReport | null { deprecate.log('crashReporter.getLastCrashReport is deprecated in the renderer process. Call it from the main process instead.'); - return invokeSync('ELECTRON_CRASH_REPORTER_GET_LAST_CRASH_REPORT'); + return invokeSync(IPC_MESSAGES.CRASH_REPORTER_GET_LAST_CRASH_REPORT); }, getUploadedReports () { deprecate.log('crashReporter.getUploadedReports is deprecated in the renderer process. Call it from the main process instead.'); - return invokeSync('ELECTRON_CRASH_REPORTER_GET_UPLOADED_REPORTS'); + return invokeSync(IPC_MESSAGES.CRASH_REPORTER_GET_UPLOADED_REPORTS); }, getUploadToServer () { deprecate.log('crashReporter.getUploadToServer is deprecated in the renderer process. Call it from the main process instead.'); - return invokeSync('ELECTRON_CRASH_REPORTER_GET_UPLOAD_TO_SERVER'); + return invokeSync(IPC_MESSAGES.CRASH_REPORTER_GET_UPLOAD_TO_SERVER); }, setUploadToServer (uploadToServer: boolean) { deprecate.log('crashReporter.setUploadToServer is deprecated in the renderer process. Call it from the main process instead.'); - return invokeSync('ELECTRON_CRASH_REPORTER_SET_UPLOAD_TO_SERVER', uploadToServer); + return invokeSync(IPC_MESSAGES.CRASH_REPORTER_SET_UPLOAD_TO_SERVER, uploadToServer); }, getCrashesDirectory () { deprecate.log('crashReporter.getCrashesDirectory is deprecated in the renderer process. Call it from the main process instead.'); - return invokeSync('ELECTRON_CRASH_REPORTER_GET_CRASHES_DIRECTORY'); + return invokeSync(IPC_MESSAGES.CRASH_REPORTER_GET_CRASHES_DIRECTORY); }, addExtraParameter (key: string, value: string) { diff --git a/lib/renderer/api/desktop-capturer.ts b/lib/renderer/api/desktop-capturer.ts index 174749151073..e4f912dd76d7 100644 --- a/lib/renderer/api/desktop-capturer.ts +++ b/lib/renderer/api/desktop-capturer.ts @@ -1,5 +1,6 @@ import { ipcRendererInternal } from '@electron/internal/renderer/ipc-renderer-internal'; import { deserialize } from '@electron/internal/common/type-utils'; +import { IPC_MESSAGES } from '@electron/internal/common/ipc-messages'; const { hasSwitch } = process._linkedBinding('electron_common_command_line'); @@ -14,5 +15,5 @@ function getCurrentStack () { } export async function getSources (options: Electron.SourcesOptions) { - return deserialize(await ipcRendererInternal.invoke('ELECTRON_BROWSER_DESKTOP_CAPTURER_GET_SOURCES', options, getCurrentStack())); + return deserialize(await ipcRendererInternal.invoke(IPC_MESSAGES.DESKTOP_CAPTURER_GET_SOURCES, options, getCurrentStack())); } diff --git a/lib/renderer/api/native-image.ts b/lib/renderer/api/native-image.ts index 1264a900edbe..06dcbe8abc7c 100644 --- a/lib/renderer/api/native-image.ts +++ b/lib/renderer/api/native-image.ts @@ -1,10 +1,11 @@ import { ipcRendererInternal } from '@electron/internal/renderer/ipc-renderer-internal'; import { deserialize } from '@electron/internal/common/type-utils'; +import { IPC_MESSAGES } from '@electron/internal/common/ipc-messages'; const { nativeImage } = process._linkedBinding('electron_common_native_image'); nativeImage.createThumbnailFromPath = async (path: string, size: Electron.Size) => { - return deserialize(await ipcRendererInternal.invoke('ELECTRON_NATIVE_IMAGE_CREATE_THUMBNAIL_FROM_PATH', path, size)); + return deserialize(await ipcRendererInternal.invoke(IPC_MESSAGES.NATIVE_IMAGE_CREATE_THUMBNAIL_FROM_PATH, path, size)); }; export default nativeImage; diff --git a/lib/renderer/api/remote.ts b/lib/renderer/api/remote.ts index 8737e2036845..f7675e9e6fac 100644 --- a/lib/renderer/api/remote.ts +++ b/lib/renderer/api/remote.ts @@ -6,6 +6,7 @@ import type { BrowserWindow, WebContents } from 'electron/main'; import deprecate from '@electron/internal/common/api/deprecate'; import { browserModuleNames } from '@electron/internal/browser/api/module-names'; import { commonModuleList } from '@electron/internal/common/api/module-list'; +import { IPC_MESSAGES } from '@electron/internal/common/remote/ipc-messages'; deprecate.log('The remote module is deprecated. Use https://github.com/electron/remote instead.'); @@ -18,7 +19,7 @@ const finalizationRegistry = new (window as any).FinalizationRegistry((id: numbe const ref = remoteObjectCache.get(id); if (ref !== undefined && ref.deref() === undefined) { remoteObjectCache.delete(id); - ipcRendererInternal.send('ELECTRON_BROWSER_DEREFERENCE', contextId, id, 0); + ipcRendererInternal.send(IPC_MESSAGES.BROWSER_DEREFERENCE, contextId, id, 0); } }); @@ -44,7 +45,7 @@ const contextId = v8Util.getHiddenValue(global, 'contextId'); // sent, we also listen to the "render-view-deleted" event in the main process // to guard that situation. process.on('exit', () => { - const command = 'ELECTRON_BROWSER_CONTEXT_RELEASE'; + const command = IPC_MESSAGES.BROWSER_CONTEXT_RELEASE; ipcRendererInternal.send(command, contextId); }); @@ -146,9 +147,9 @@ function setObjectMembers (ref: any, object: any, metaId: number, members: Objec const remoteMemberFunction = function (this: any, ...args: any[]) { let command; if (this && this.constructor === remoteMemberFunction) { - command = 'ELECTRON_BROWSER_MEMBER_CONSTRUCTOR'; + command = IPC_MESSAGES.BROWSER_MEMBER_CONSTRUCTOR; } else { - command = 'ELECTRON_BROWSER_MEMBER_CALL'; + command = IPC_MESSAGES.BROWSER_MEMBER_CALL; } const ret = ipcRendererInternal.sendSync(command, contextId, metaId, member.name, wrapArgs(args)); return metaToValue(ret); @@ -168,7 +169,7 @@ function setObjectMembers (ref: any, object: any, metaId: number, members: Objec descriptor.configurable = true; } else if (member.type === 'get') { descriptor.get = () => { - const command = 'ELECTRON_BROWSER_MEMBER_GET'; + const command = IPC_MESSAGES.BROWSER_MEMBER_GET; const meta = ipcRendererInternal.sendSync(command, contextId, metaId, member.name); return metaToValue(meta); }; @@ -176,7 +177,7 @@ function setObjectMembers (ref: any, object: any, metaId: number, members: Objec if (member.writable) { descriptor.set = (value) => { const args = wrapArgs([value]); - const command = 'ELECTRON_BROWSER_MEMBER_SET'; + const command = IPC_MESSAGES.BROWSER_MEMBER_SET; const meta = ipcRendererInternal.sendSync(command, contextId, metaId, member.name, args); if (meta != null) metaToValue(meta); return value; @@ -206,7 +207,7 @@ function proxyFunctionProperties (remoteMemberFunction: Function, metaId: number const loadRemoteProperties = () => { if (loaded) return; loaded = true; - const command = 'ELECTRON_BROWSER_MEMBER_GET'; + const command = IPC_MESSAGES.BROWSER_MEMBER_GET; const meta = ipcRendererInternal.sendSync(command, contextId, metaId, name); setObjectMembers(remoteMemberFunction, remoteMemberFunction, meta.id, meta.members); }; @@ -267,9 +268,9 @@ function metaToValue (meta: MetaType): any { const remoteFunction = function (this: any, ...args: any[]) { let command; if (this && this.constructor === remoteFunction) { - command = 'ELECTRON_BROWSER_CONSTRUCTOR'; + command = IPC_MESSAGES.BROWSER_CONSTRUCTOR; } else { - command = 'ELECTRON_BROWSER_FUNCTION_CALL'; + command = IPC_MESSAGES.BROWSER_FUNCTION_CALL; } const obj = ipcRendererInternal.sendSync(command, contextId, meta.id, wrapArgs(args)); return metaToValue(obj); @@ -306,7 +307,7 @@ function handleMessage (channel: string, handler: Function) { handler(id, ...args); } else { // Message sent to an un-exist context, notify the error to main process. - ipcRendererInternal.send('ELECTRON_BROWSER_WRONG_CONTEXT_ERROR', contextId, passedContextId, id); + ipcRendererInternal.send(IPC_MESSAGES.BROWSER_WRONG_CONTEXT_ERROR, contextId, passedContextId, id); } }); } @@ -322,44 +323,44 @@ function getCurrentStack (): string | undefined { } // Browser calls a callback in renderer. -handleMessage('ELECTRON_RENDERER_CALLBACK', (id: number, args: any) => { +handleMessage(IPC_MESSAGES.RENDERER_CALLBACK, (id: number, args: any) => { callbacksRegistry.apply(id, metaToValue(args)); }); // A callback in browser is released. -handleMessage('ELECTRON_RENDERER_RELEASE_CALLBACK', (id: number) => { +handleMessage(IPC_MESSAGES.RENDERER_RELEASE_CALLBACK, (id: number) => { callbacksRegistry.remove(id); }); exports.require = (module: string) => { - const command = 'ELECTRON_BROWSER_REQUIRE'; + const command = IPC_MESSAGES.BROWSER_REQUIRE; const meta = ipcRendererInternal.sendSync(command, contextId, module, getCurrentStack()); return metaToValue(meta); }; // Alias to remote.require('electron').xxx. export function getBuiltin (module: string) { - const command = 'ELECTRON_BROWSER_GET_BUILTIN'; + const command = IPC_MESSAGES.BROWSER_GET_BUILTIN; const meta = ipcRendererInternal.sendSync(command, contextId, module, getCurrentStack()); return metaToValue(meta); } export function getCurrentWindow (): BrowserWindow { - const command = 'ELECTRON_BROWSER_CURRENT_WINDOW'; + const command = IPC_MESSAGES.BROWSER_GET_CURRENT_WINDOW; const meta = ipcRendererInternal.sendSync(command, contextId, getCurrentStack()); return metaToValue(meta); } // Get current WebContents object. export function getCurrentWebContents (): WebContents { - const command = 'ELECTRON_BROWSER_CURRENT_WEB_CONTENTS'; + const command = IPC_MESSAGES.BROWSER_GET_CURRENT_WEB_CONTENTS; const meta = ipcRendererInternal.sendSync(command, contextId, getCurrentStack()); return metaToValue(meta); } // Get a global object in browser. export function getGlobal (name: string): T { - const command = 'ELECTRON_BROWSER_GLOBAL'; + const command = IPC_MESSAGES.BROWSER_GET_GLOBAL; const meta = ipcRendererInternal.sendSync(command, contextId, name, getCurrentStack()); return metaToValue(meta); } diff --git a/lib/renderer/init.ts b/lib/renderer/init.ts index c5489ae82cc4..86e52b2b7dc2 100644 --- a/lib/renderer/init.ts +++ b/lib/renderer/init.ts @@ -1,4 +1,5 @@ import * as path from 'path'; +import { IPC_MESSAGES } from '@electron/internal/common/ipc-messages'; const Module = require('module'); @@ -184,7 +185,7 @@ for (const preloadScript of preloadScripts) { console.error(`Unable to load preload script: ${preloadScript}`); console.error(error); - ipcRendererInternal.send('ELECTRON_BROWSER_PRELOAD_ERROR', preloadScript, error); + ipcRendererInternal.send(IPC_MESSAGES.BROWSER_PRELOAD_ERROR, preloadScript, error); } } diff --git a/lib/renderer/inspector.ts b/lib/renderer/inspector.ts index 006eac826a7d..fd0e603ee361 100644 --- a/lib/renderer/inspector.ts +++ b/lib/renderer/inspector.ts @@ -1,5 +1,6 @@ import { ipcRendererInternal } from '@electron/internal/renderer/ipc-renderer-internal'; import * as ipcRendererUtils from '@electron/internal/renderer/ipc-renderer-internal-utils'; +import { IPC_MESSAGES } from '../common/ipc-messages'; window.onload = function () { // Use menu API to show context menu. @@ -20,7 +21,7 @@ function completeURL (project: string, path: string) { // The DOM implementation expects (message?: string) => boolean window.confirm = function (message?: string, title?: string) { - return ipcRendererUtils.invokeSync('ELECTRON_INSPECTOR_CONFIRM', message, title) as boolean; + return ipcRendererUtils.invokeSync(IPC_MESSAGES.INSPECTOR_CONFIRM, message, title) as boolean; }; const useEditMenuItems = function (x: number, y: number, items: ContextMenuItem[]) { @@ -33,7 +34,7 @@ const useEditMenuItems = function (x: number, y: number, items: ContextMenuItem[ const createMenu = function (x: number, y: number, items: ContextMenuItem[]) { const isEditMenu = useEditMenuItems(x, y, items); - ipcRendererInternal.invoke('ELECTRON_INSPECTOR_CONTEXT_MENU', items, isEditMenu).then(id => { + ipcRendererInternal.invoke(IPC_MESSAGES.INSPECTOR_CONTEXT_MENU, items, isEditMenu).then(id => { if (typeof id === 'number') { window.DevToolsAPI!.contextMenuItemSelected(id); } @@ -42,7 +43,7 @@ const createMenu = function (x: number, y: number, items: ContextMenuItem[]) { }; const showFileChooserDialog = function (callback: (blob: File) => void) { - ipcRendererInternal.invoke<[ string, any ]>('ELECTRON_INSPECTOR_SELECT_FILE').then(([path, data]) => { + ipcRendererInternal.invoke<[ string, any ]>(IPC_MESSAGES.INSPECTOR_SELECT_FILE).then(([path, data]) => { if (path && data) { callback(dataToHtml5FileObject(path, data)); } diff --git a/lib/renderer/security-warnings.ts b/lib/renderer/security-warnings.ts index 4c5b829eeb1b..24e3dbf9a610 100644 --- a/lib/renderer/security-warnings.ts +++ b/lib/renderer/security-warnings.ts @@ -1,5 +1,6 @@ import { webFrame } from 'electron'; import { ipcRendererInternal } from '@electron/internal/renderer/ipc-renderer-internal'; +import { IPC_MESSAGES } from '@electron/internal/common/ipc-messages'; let shouldLog: boolean | null = null; @@ -302,7 +303,7 @@ const logSecurityWarnings = function ( const getWebPreferences = async function () { try { - return ipcRendererInternal.invoke('ELECTRON_BROWSER_GET_LAST_WEB_PREFERENCES'); + return ipcRendererInternal.invoke(IPC_MESSAGES.BROWSER_GET_LAST_WEB_PREFERENCES); } catch (error) { console.warn(`getLastWebPreferences() failed: ${error}`); } diff --git a/lib/renderer/web-frame-init.ts b/lib/renderer/web-frame-init.ts index 86edc0d93c13..3119689990de 100644 --- a/lib/renderer/web-frame-init.ts +++ b/lib/renderer/web-frame-init.ts @@ -1,5 +1,6 @@ import { webFrame, WebFrame } from 'electron'; import * as ipcRendererUtils from '@electron/internal/renderer/ipc-renderer-internal-utils'; +import { IPC_MESSAGES } from '@electron/internal/common/ipc-messages'; // All keys of WebFrame that extend Function type WebFrameMethod = { @@ -9,7 +10,7 @@ type WebFrameMethod = { export const webFrameInit = () => { // Call webFrame method - ipcRendererUtils.handle('ELECTRON_INTERNAL_RENDERER_WEB_FRAME_METHOD', ( + ipcRendererUtils.handle(IPC_MESSAGES.RENDERER_WEB_FRAME_METHOD, ( event, method: keyof WebFrameMethod, ...args: any[] ) => { // TODO(MarshallOfSound): Remove once the world-safe-execute-javascript deprecation warning is removed diff --git a/lib/renderer/web-view/guest-view-internal.ts b/lib/renderer/web-view/guest-view-internal.ts index 768b8659b8b5..d6d921e01c4a 100644 --- a/lib/renderer/web-view/guest-view-internal.ts +++ b/lib/renderer/web-view/guest-view-internal.ts @@ -4,6 +4,7 @@ import * as ipcRendererUtils from '@electron/internal/renderer/ipc-renderer-inte import { webViewEvents } from '@electron/internal/common/web-view-events'; import { WebViewImpl } from '@electron/internal/renderer/web-view/web-view-impl'; +import { IPC_MESSAGES } from '@electron/internal/common/ipc-messages'; const DEPRECATED_EVENTS: Record = { 'page-title-updated': 'page-title-set' @@ -31,18 +32,18 @@ const dispatchEvent = function ( }; export function registerEvents (webView: WebViewImpl, viewInstanceId: number) { - ipcRendererInternal.on(`ELECTRON_GUEST_VIEW_INTERNAL_DESTROY_GUEST-${viewInstanceId}`, function () { + ipcRendererInternal.on(`${IPC_MESSAGES.GUEST_VIEW_INTERNAL_DESTROY_GUEST}-${viewInstanceId}`, function () { webView.guestInstanceId = undefined; webView.reset(); const domEvent = new Event('destroyed'); webView.dispatchEvent(domEvent); }); - ipcRendererInternal.on(`ELECTRON_GUEST_VIEW_INTERNAL_DISPATCH_EVENT-${viewInstanceId}`, function (event, eventName, ...args) { + ipcRendererInternal.on(`${IPC_MESSAGES.GUEST_VIEW_INTERNAL_DISPATCH_EVENT}-${viewInstanceId}`, function (event, eventName, ...args) { dispatchEvent(webView, eventName, eventName, ...args); }); - ipcRendererInternal.on(`ELECTRON_GUEST_VIEW_INTERNAL_IPC_MESSAGE-${viewInstanceId}`, function (event, channel, ...args) { + ipcRendererInternal.on(`${IPC_MESSAGES.GUEST_VIEW_INTERNAL_IPC_MESSAGE}-${viewInstanceId}`, function (event, channel, ...args) { const domEvent = new Event('ipc-message') as IpcMessageEvent; domEvent.channel = channel; domEvent.args = args; @@ -52,13 +53,13 @@ export function registerEvents (webView: WebViewImpl, viewInstanceId: number) { } export function deregisterEvents (viewInstanceId: number) { - ipcRendererInternal.removeAllListeners(`ELECTRON_GUEST_VIEW_INTERNAL_DESTROY_GUEST-${viewInstanceId}`); - ipcRendererInternal.removeAllListeners(`ELECTRON_GUEST_VIEW_INTERNAL_DISPATCH_EVENT-${viewInstanceId}`); - ipcRendererInternal.removeAllListeners(`ELECTRON_GUEST_VIEW_INTERNAL_IPC_MESSAGE-${viewInstanceId}`); + ipcRendererInternal.removeAllListeners(`${IPC_MESSAGES.GUEST_VIEW_INTERNAL_DESTROY_GUEST}-${viewInstanceId}`); + ipcRendererInternal.removeAllListeners(`${IPC_MESSAGES.GUEST_VIEW_INTERNAL_DISPATCH_EVENT}-${viewInstanceId}`); + ipcRendererInternal.removeAllListeners(`${IPC_MESSAGES.GUEST_VIEW_INTERNAL_IPC_MESSAGE}-${viewInstanceId}`); } export function createGuest (params: Record): Promise { - return ipcRendererInternal.invoke('ELECTRON_GUEST_VIEW_MANAGER_CREATE_GUEST', params); + return ipcRendererInternal.invoke(IPC_MESSAGES.GUEST_VIEW_MANAGER_CREATE_GUEST, params); } export function attachGuest ( @@ -68,11 +69,11 @@ export function attachGuest ( if (embedderFrameId < 0) { // this error should not happen. throw new Error('Invalid embedder frame'); } - ipcRendererInternal.invoke('ELECTRON_GUEST_VIEW_MANAGER_ATTACH_GUEST', embedderFrameId, elementInstanceId, guestInstanceId, params); + ipcRendererInternal.invoke(IPC_MESSAGES.GUEST_VIEW_MANAGER_ATTACH_GUEST, embedderFrameId, elementInstanceId, guestInstanceId, params); } export function detachGuest (guestInstanceId: number) { - return ipcRendererUtils.invokeSync('ELECTRON_GUEST_VIEW_MANAGER_DETACH_GUEST', guestInstanceId); + return ipcRendererUtils.invokeSync(IPC_MESSAGES.GUEST_VIEW_MANAGER_DETACH_GUEST, guestInstanceId); } export const guestViewInternalModule = { diff --git a/lib/renderer/web-view/web-view-attributes.ts b/lib/renderer/web-view/web-view-attributes.ts index e768004710a4..51ed30b6069e 100644 --- a/lib/renderer/web-view/web-view-attributes.ts +++ b/lib/renderer/web-view/web-view-attributes.ts @@ -1,6 +1,7 @@ import { ipcRendererInternal } from '@electron/internal/renderer/ipc-renderer-internal'; import { WebViewImpl } from '@electron/internal/renderer/web-view/web-view-impl'; import { WEB_VIEW_CONSTANTS } from '@electron/internal/renderer/web-view/web-view-constants'; +import { IPC_MESSAGES } from '@electron/internal/common/ipc-messages'; // Helper function to resolve url set in attribute. const a = document.createElement('a'); @@ -196,7 +197,7 @@ class SrcAttribute extends WebViewAttribute { const method = 'loadURL'; const args = [this.getValue(), opts]; - ipcRendererInternal.invoke('ELECTRON_GUEST_VIEW_MANAGER_CALL', guestInstanceId, method, args); + ipcRendererInternal.invoke(IPC_MESSAGES.GUEST_VIEW_MANAGER_CALL, guestInstanceId, method, args); } } diff --git a/lib/renderer/web-view/web-view-impl.ts b/lib/renderer/web-view/web-view-impl.ts index 98023d2ca8e0..437563e0b670 100644 --- a/lib/renderer/web-view/web-view-impl.ts +++ b/lib/renderer/web-view/web-view-impl.ts @@ -6,6 +6,7 @@ import * as guestViewInternal from '@electron/internal/renderer/web-view/guest-v import { WEB_VIEW_CONSTANTS } from '@electron/internal/renderer/web-view/web-view-constants'; import { syncMethods, asyncMethods, properties } from '@electron/internal/common/web-view-methods'; import { deserialize } from '@electron/internal/common/type-utils'; +import { IPC_MESSAGES } from '@electron/internal/common/ipc-messages'; const { webFrame } = electron; const v8Util = process._linkedBinding('electron_common_v8_util'); @@ -226,7 +227,7 @@ export const setupMethods = (WebViewElement: typeof ElectronInternal.WebViewElem // Forward proto.foo* method calls to WebViewImpl.foo*. const createBlockHandler = function (method: string) { return function (this: ElectronInternal.WebViewElement, ...args: Array) { - return ipcRendererUtils.invokeSync('ELECTRON_GUEST_VIEW_MANAGER_CALL', this.getWebContentsId(), method, args); + return ipcRendererUtils.invokeSync(IPC_MESSAGES.GUEST_VIEW_MANAGER_CALL, this.getWebContentsId(), method, args); }; }; @@ -236,7 +237,7 @@ export const setupMethods = (WebViewElement: typeof ElectronInternal.WebViewElem const createNonBlockHandler = function (method: string) { return function (this: ElectronInternal.WebViewElement, ...args: Array) { - return ipcRendererInternal.invoke('ELECTRON_GUEST_VIEW_MANAGER_CALL', this.getWebContentsId(), method, args); + return ipcRendererInternal.invoke(IPC_MESSAGES.GUEST_VIEW_MANAGER_CALL, this.getWebContentsId(), method, args); }; }; @@ -245,18 +246,18 @@ export const setupMethods = (WebViewElement: typeof ElectronInternal.WebViewElem } WebViewElement.prototype.capturePage = async function (...args) { - return deserialize(await ipcRendererInternal.invoke('ELECTRON_GUEST_VIEW_MANAGER_CAPTURE_PAGE', this.getWebContentsId(), args)); + return deserialize(await ipcRendererInternal.invoke(IPC_MESSAGES.GUEST_VIEW_MANAGER_CAPTURE_PAGE, this.getWebContentsId(), args)); }; const createPropertyGetter = function (property: string) { return function (this: ElectronInternal.WebViewElement) { - return ipcRendererUtils.invokeSync('ELECTRON_GUEST_VIEW_MANAGER_PROPERTY_GET', this.getWebContentsId(), property); + return ipcRendererUtils.invokeSync(IPC_MESSAGES.GUEST_VIEW_MANAGER_PROPERTY_GET, this.getWebContentsId(), property); }; }; const createPropertySetter = function (property: string) { return function (this: ElectronInternal.WebViewElement, arg: any) { - return ipcRendererUtils.invokeSync('ELECTRON_GUEST_VIEW_MANAGER_PROPERTY_SET', this.getWebContentsId(), property, arg); + return ipcRendererUtils.invokeSync(IPC_MESSAGES.GUEST_VIEW_MANAGER_PROPERTY_SET, this.getWebContentsId(), property, arg); }; }; diff --git a/lib/renderer/web-view/web-view-init.ts b/lib/renderer/web-view/web-view-init.ts index c0227bbdf894..799d808e1a61 100644 --- a/lib/renderer/web-view/web-view-init.ts +++ b/lib/renderer/web-view/web-view-init.ts @@ -1,4 +1,5 @@ import { ipcRendererInternal } from '@electron/internal/renderer/ipc-renderer-internal'; +import { IPC_MESSAGES } from '@electron/internal/common/ipc-messages'; const v8Util = process._linkedBinding('electron_common_v8_util'); @@ -7,11 +8,11 @@ function handleFocusBlur (guestInstanceId: number) { // unfortunately do not work for webview. window.addEventListener('focus', () => { - ipcRendererInternal.send('ELECTRON_GUEST_VIEW_MANAGER_FOCUS_CHANGE', true, guestInstanceId); + ipcRendererInternal.send(IPC_MESSAGES.GUEST_VIEW_MANAGER_FOCUS_CHANGE, true, guestInstanceId); }); window.addEventListener('blur', () => { - ipcRendererInternal.send('ELECTRON_GUEST_VIEW_MANAGER_FOCUS_CHANGE', false, guestInstanceId); + ipcRendererInternal.send(IPC_MESSAGES.GUEST_VIEW_MANAGER_FOCUS_CHANGE, false, guestInstanceId); }); } diff --git a/lib/renderer/window-setup.ts b/lib/renderer/window-setup.ts index eae050e201af..6b33899991db 100644 --- a/lib/renderer/window-setup.ts +++ b/lib/renderer/window-setup.ts @@ -1,6 +1,7 @@ import { ipcRendererInternal } from '@electron/internal/renderer/ipc-renderer-internal'; import * as ipcRendererUtils from '@electron/internal/renderer/ipc-renderer-internal-utils'; import { internalContextBridge } from '@electron/internal/renderer/api/context-bridge'; +import { IPC_MESSAGES } from '@electron/internal/common/ipc-messages'; const { contextIsolationEnabled } = internalContextBridge; @@ -140,11 +141,11 @@ class LocationProxy { } private _invokeWebContentsMethod (method: string, ...args: any[]) { - return ipcRendererInternal.invoke('ELECTRON_GUEST_WINDOW_MANAGER_WEB_CONTENTS_METHOD', this.guestId, method, ...args); + return ipcRendererInternal.invoke(IPC_MESSAGES.GUEST_WINDOW_MANAGER_WEB_CONTENTS_METHOD, this.guestId, method, ...args); } private _invokeWebContentsMethodSync (method: string, ...args: any[]) { - return ipcRendererUtils.invokeSync('ELECTRON_GUEST_WINDOW_MANAGER_WEB_CONTENTS_METHOD', this.guestId, method, ...args); + return ipcRendererUtils.invokeSync(IPC_MESSAGES.GUEST_WINDOW_MANAGER_WEB_CONTENTS_METHOD, this.guestId, method, ...args); } } @@ -181,7 +182,7 @@ class BrowserWindowProxy { this.guestId = guestId; this._location = new LocationProxy(guestId); - ipcRendererInternal.once(`ELECTRON_GUEST_WINDOW_MANAGER_WINDOW_CLOSED_${guestId}`, () => { + ipcRendererInternal.once(`${IPC_MESSAGES.GUEST_WINDOW_MANAGER_WINDOW_CLOSED}_${guestId}`, () => { removeProxy(guestId); this.closed = true; }); @@ -225,7 +226,7 @@ class BrowserWindowProxy { } public postMessage = (message: any, targetOrigin: string) => { - ipcRendererInternal.invoke('ELECTRON_GUEST_WINDOW_MANAGER_WINDOW_POSTMESSAGE', this.guestId, message, toString(targetOrigin), window.location.origin); + ipcRendererInternal.invoke(IPC_MESSAGES.GUEST_WINDOW_MANAGER_WINDOW_POSTMESSAGE, this.guestId, message, toString(targetOrigin), window.location.origin); } public eval = (code: string) => { @@ -233,11 +234,11 @@ class BrowserWindowProxy { } private _invokeWindowMethod (method: string, ...args: any[]) { - return ipcRendererInternal.invoke('ELECTRON_GUEST_WINDOW_MANAGER_WINDOW_METHOD', this.guestId, method, ...args); + return ipcRendererInternal.invoke(IPC_MESSAGES.GUEST_WINDOW_MANAGER_WINDOW_METHOD, this.guestId, method, ...args); } private _invokeWebContentsMethod (method: string, ...args: any[]) { - return ipcRendererInternal.invoke('ELECTRON_GUEST_WINDOW_MANAGER_WEB_CONTENTS_METHOD', this.guestId, method, ...args); + return ipcRendererInternal.invoke(IPC_MESSAGES.GUEST_WINDOW_MANAGER_WEB_CONTENTS_METHOD, this.guestId, method, ...args); } } @@ -247,7 +248,7 @@ export const windowSetup = ( if (!process.sandboxed && guestInstanceId == null) { // Override default window.close. window.close = function () { - ipcRendererInternal.send('ELECTRON_BROWSER_WINDOW_CLOSE'); + ipcRendererInternal.send(IPC_MESSAGES.BROWSER_WINDOW_CLOSE); }; if (contextIsolationEnabled) internalContextBridge.overrideGlobalValueFromIsolatedWorld(['close'], window.close); } @@ -259,7 +260,7 @@ export const windowSetup = ( if (url != null && url !== '') { url = resolveURL(url, location.href); } - const guestId = ipcRendererInternal.sendSync('ELECTRON_GUEST_WINDOW_MANAGER_WINDOW_OPEN', url, toString(frameName), toString(features)); + const guestId = ipcRendererInternal.sendSync(IPC_MESSAGES.GUEST_WINDOW_MANAGER_WINDOW_OPEN, url, toString(frameName), toString(features)); if (guestId != null) { return getOrCreateProxy(guestId) as any as WindowProxy; } else { @@ -281,7 +282,7 @@ export const windowSetup = ( if (contextIsolationEnabled) internalContextBridge.overrideGlobalValueFromIsolatedWorld(['prompt'], window.prompt); if (!usesNativeWindowOpen || openerId != null) { - ipcRendererInternal.on('ELECTRON_GUEST_WINDOW_POSTMESSAGE', function ( + ipcRendererInternal.on(IPC_MESSAGES.GUEST_WINDOW_POSTMESSAGE, function ( _event, sourceId: number, message: any, sourceOrigin: string ) { // Manually dispatch event instead of using postMessage because we also need to @@ -303,21 +304,21 @@ export const windowSetup = ( if (!process.sandboxed && !rendererProcessReuseEnabled) { window.history.back = function () { - ipcRendererInternal.send('ELECTRON_NAVIGATION_CONTROLLER_GO_BACK'); + ipcRendererInternal.send(IPC_MESSAGES.NAVIGATION_CONTROLLER_GO_BACK); }; if (contextIsolationEnabled) internalContextBridge.overrideGlobalValueFromIsolatedWorld(['history', 'back'], window.history.back); window.history.forward = function () { - ipcRendererInternal.send('ELECTRON_NAVIGATION_CONTROLLER_GO_FORWARD'); + ipcRendererInternal.send(IPC_MESSAGES.NAVIGATION_CONTROLLER_GO_FORWARD); }; if (contextIsolationEnabled) internalContextBridge.overrideGlobalValueFromIsolatedWorld(['history', 'forward'], window.history.forward); window.history.go = function (offset: number) { - ipcRendererInternal.send('ELECTRON_NAVIGATION_CONTROLLER_GO_TO_OFFSET', +offset); + ipcRendererInternal.send(IPC_MESSAGES.NAVIGATION_CONTROLLER_GO_TO_OFFSET, +offset); }; if (contextIsolationEnabled) internalContextBridge.overrideGlobalValueFromIsolatedWorld(['history', 'go'], window.history.go); - const getHistoryLength = () => ipcRendererInternal.sendSync('ELECTRON_NAVIGATION_CONTROLLER_LENGTH'); + const getHistoryLength = () => ipcRendererInternal.sendSync(IPC_MESSAGES.NAVIGATION_CONTROLLER_LENGTH); Object.defineProperty(window.history, 'length', { get: getHistoryLength, set () {} @@ -336,7 +337,7 @@ export const windowSetup = ( let cachedVisibilityState = isHiddenPage ? 'hidden' : 'visible'; // Subscribe to visibilityState changes. - ipcRendererInternal.on('ELECTRON_GUEST_INSTANCE_VISIBILITY_CHANGE', function (_event, visibilityState: VisibilityState) { + ipcRendererInternal.on(IPC_MESSAGES.GUEST_INSTANCE_VISIBILITY_CHANGE, function (_event, visibilityState: VisibilityState) { if (cachedVisibilityState !== visibilityState) { cachedVisibilityState = visibilityState; document.dispatchEvent(new Event('visibilitychange')); diff --git a/lib/sandboxed_renderer/init.ts b/lib/sandboxed_renderer/init.ts index b785bfb72773..8bbcc4a45699 100644 --- a/lib/sandboxed_renderer/init.ts +++ b/lib/sandboxed_renderer/init.ts @@ -1,6 +1,7 @@ /* eslint no-eval: "off" */ /* global binding */ import * as events from 'events'; +import { IPC_MESSAGES } from '@electron/internal/common/ipc-messages'; const { EventEmitter } = events; @@ -29,7 +30,7 @@ const { guestInstanceId, openerId, process: processProps -} = ipcRendererUtils.invokeSync('ELECTRON_BROWSER_SANDBOX_LOAD'); +} = ipcRendererUtils.invokeSync(IPC_MESSAGES.BROWSER_SANDBOX_LOAD); process.isRemoteModuleEnabled = isRemoteModuleEnabled; @@ -180,7 +181,7 @@ for (const { preloadPath, preloadSrc, preloadError } of preloadScripts) { console.error(`Unable to load preload script: ${preloadPath}`); console.error(error); - ipcRendererInternal.send('ELECTRON_BROWSER_PRELOAD_ERROR', preloadPath, error); + ipcRendererInternal.send(IPC_MESSAGES.BROWSER_PRELOAD_ERROR, preloadPath, error); } } diff --git a/spec-main/chromium-spec.ts b/spec-main/chromium-spec.ts index be1808180da6..4e7c0aa769ab 100644 --- a/spec-main/chromium-spec.ts +++ b/spec-main/chromium-spec.ts @@ -790,7 +790,7 @@ describe('chromium features', () => { }); expect(await w.webContents.executeJavaScript(`(${function () { const { ipc } = process._linkedBinding('electron_renderer_ipc'); - return ipc.sendSync(true, 'ELECTRON_GUEST_WINDOW_MANAGER_WINDOW_OPEN', ['', '', ''])[0]; + return ipc.sendSync(true, 'GUEST_WINDOW_MANAGER_WINDOW_OPEN', ['', '', ''])[0]; }})()`)).to.be.null(); const exception = await uncaughtException; expect(exception.message).to.match(/denied: expected native window\.open/);