Browse Source

refactor: create IPC_MESSAGES enum for IPC message channels (#25694)

Milan Burda 4 years ago
parent
commit
2c68bad631

+ 8 - 0
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",

+ 4 - 3
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<any> {
-    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.

+ 4 - 3
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 = {

+ 16 - 15
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<str
   // Dispatch events to embedder.
   const fn = function (event: string) {
     guest.on(event as any, function (_, ...args: any[]) {
-      sendToEmbedder('ELECTRON_GUEST_VIEW_INTERNAL_DISPATCH_EVENT', event, ...args);
+      sendToEmbedder(IPC_MESSAGES.GUEST_VIEW_INTERNAL_DISPATCH_EVENT, event, ...args);
     });
   };
   for (const event of supportedWebViewEvents) {
@@ -93,14 +94,14 @@ const createGuest = function (embedder: Electron.WebContents, params: Record<str
   }
 
   guest.on('new-window', function (event, url, frameName, disposition, options, additionalFeatures, referrer) {
-    sendToEmbedder('ELECTRON_GUEST_VIEW_INTERNAL_DISPATCH_EVENT', 'new-window', url,
+    sendToEmbedder(IPC_MESSAGES.GUEST_VIEW_INTERNAL_DISPATCH_EVENT, 'new-window', url,
       frameName, disposition, sanitizeOptionsForGuest(options),
       additionalFeatures, referrer);
   });
 
   // Dispatch guest's IPC messages to embedder.
   guest.on('ipc-message-host' as any, function (_: Electron.Event, channel: string, args: any[]) {
-    sendToEmbedder('ELECTRON_GUEST_VIEW_INTERNAL_IPC_MESSAGE', channel, ...args);
+    sendToEmbedder(IPC_MESSAGES.GUEST_VIEW_INTERNAL_IPC_MESSAGE, channel, ...args);
   });
 
   // Notify guest of embedder window visibility when it is ready
@@ -108,7 +109,7 @@ const createGuest = function (embedder: Electron.WebContents, params: Record<str
   guest.on('dom-ready', function () {
     const guestInstance = guestInstances[guestInstanceId];
     if (guestInstance != null && guestInstance.visibilityState != null) {
-      guest._sendInternal('ELECTRON_GUEST_INSTANCE_VISIBILITY_CHANGE', guestInstance.visibilityState);
+      guest._sendInternal(IPC_MESSAGES.GUEST_INSTANCE_VISIBILITY_CHANGE, guestInstance.visibilityState);
     }
   });
 
@@ -152,7 +153,7 @@ const attachGuest = function (event: Electron.IpcMainInvokeEvent,
     // Remove guest from embedder if moving across web views
     if (guest.viewInstanceId !== params.instanceId) {
       webViewManager.removeGuest(guestInstance.embedder, guestInstanceId);
-      guestInstance.embedder._sendInternal(`ELECTRON_GUEST_VIEW_INTERNAL_DESTROY_GUEST-${guest.viewInstanceId}`);
+      guestInstance.embedder._sendInternal(`${IPC_MESSAGES.GUEST_VIEW_INTERNAL_DESTROY_GUEST}-${guest.viewInstanceId}`);
     }
   }
 
@@ -253,7 +254,7 @@ const watchEmbedder = function (embedder: Electron.WebContents) {
       const guestInstance = guestInstances[guestInstanceId];
       guestInstance.visibilityState = visibilityState;
       if (guestInstance.embedder === embedder) {
-        guestInstance.guest._sendInternal('ELECTRON_GUEST_INSTANCE_VISIBILITY_CHANGE', visibilityState);
+        guestInstance.guest._sendInternal(IPC_MESSAGES.GUEST_INSTANCE_VISIBILITY_CHANGE, visibilityState);
       }
     }
   };
@@ -305,11 +306,11 @@ const handleMessageSync = function (channel: string, handler: (event: ElectronIn
   ipcMainUtils.handleSync(channel, makeSafeHandler(channel, handler));
 };
 
-handleMessage('ELECTRON_GUEST_VIEW_MANAGER_CREATE_GUEST', function (event, params) {
+handleMessage(IPC_MESSAGES.GUEST_VIEW_MANAGER_CREATE_GUEST, function (event, params) {
   return createGuest(event.sender, params);
 });
 
-handleMessage('ELECTRON_GUEST_VIEW_MANAGER_ATTACH_GUEST', function (event, embedderFrameId: number, elementInstanceId: number, guestInstanceId: number, params) {
+handleMessage(IPC_MESSAGES.GUEST_VIEW_MANAGER_ATTACH_GUEST, function (event, embedderFrameId: number, elementInstanceId: number, guestInstanceId: number, params) {
   try {
     attachGuest(event, embedderFrameId, elementInstanceId, guestInstanceId, params);
   } catch (error) {
@@ -317,12 +318,12 @@ handleMessage('ELECTRON_GUEST_VIEW_MANAGER_ATTACH_GUEST', function (event, embed
   }
 });
 
-handleMessageSync('ELECTRON_GUEST_VIEW_MANAGER_DETACH_GUEST', function (event, guestInstanceId: number) {
+handleMessageSync(IPC_MESSAGES.GUEST_VIEW_MANAGER_DETACH_GUEST, function (event, guestInstanceId: number) {
   return detachGuest(event.sender, guestInstanceId);
 });
 
 // this message is sent by the actual <webview>
-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));

+ 9 - 8
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)) {

+ 5 - 4
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();
 });
 

+ 17 - 16
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);
 });

+ 13 - 12
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));
 });

+ 3 - 1
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);
     };
   };

+ 49 - 0
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',
+}

+ 19 - 0
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',
+}

+ 6 - 5
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) {

+ 2 - 1
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()));
 }

+ 2 - 1
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;

+ 18 - 17
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<string>(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<T = any> (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);
 }

+ 2 - 1
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);
   }
 }
 

+ 4 - 3
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<number>('ELECTRON_INSPECTOR_CONTEXT_MENU', items, isEditMenu).then(id => {
+  ipcRendererInternal.invoke<number>(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));
     }

+ 2 - 1
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.WebPreferences>('ELECTRON_BROWSER_GET_LAST_WEB_PREFERENCES');
+    return ipcRendererInternal.invoke<Electron.WebPreferences>(IPC_MESSAGES.BROWSER_GET_LAST_WEB_PREFERENCES);
   } catch (error) {
     console.warn(`getLastWebPreferences() failed: ${error}`);
   }

+ 2 - 1
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

+ 10 - 9
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<string, string> = {
   '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<string, any>): Promise<number> {
-  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 = {

+ 2 - 1
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);
   }
 }
 

+ 6 - 5
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<any>) {
-      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<any>) {
-      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);
     };
   };
 

+ 3 - 2
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);
   });
 }
 

+ 15 - 14
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'));

+ 3 - 2
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);
   }
 }
 

+ 1 - 1
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/);