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

This commit is contained in:
Milan Burda 2020-10-13 23:11:06 +02:00 committed by GitHub
parent 8dfb1cf78f
commit 2c68bad631
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
26 changed files with 225 additions and 126 deletions

View file

@ -140,6 +140,8 @@ auto_filenames = {
"lib/common/api/module-list.ts", "lib/common/api/module-list.ts",
"lib/common/api/shell.ts", "lib/common/api/shell.ts",
"lib/common/define-properties.ts", "lib/common/define-properties.ts",
"lib/common/ipc-messages.ts",
"lib/common/remote/ipc-messages.ts",
"lib/common/type-utils.ts", "lib/common/type-utils.ts",
"lib/common/web-view-events.ts", "lib/common/web-view-events.ts",
"lib/common/web-view-methods.ts", "lib/common/web-view-methods.ts",
@ -247,7 +249,9 @@ auto_filenames = {
"lib/common/api/shell.ts", "lib/common/api/shell.ts",
"lib/common/define-properties.ts", "lib/common/define-properties.ts",
"lib/common/init.ts", "lib/common/init.ts",
"lib/common/ipc-messages.ts",
"lib/common/parse-features-string.ts", "lib/common/parse-features-string.ts",
"lib/common/remote/ipc-messages.ts",
"lib/common/reset-search-paths.ts", "lib/common/reset-search-paths.ts",
"lib/common/type-utils.ts", "lib/common/type-utils.ts",
"lib/common/web-view-events.ts", "lib/common/web-view-events.ts",
@ -270,6 +274,8 @@ auto_filenames = {
"lib/common/api/shell.ts", "lib/common/api/shell.ts",
"lib/common/define-properties.ts", "lib/common/define-properties.ts",
"lib/common/init.ts", "lib/common/init.ts",
"lib/common/ipc-messages.ts",
"lib/common/remote/ipc-messages.ts",
"lib/common/reset-search-paths.ts", "lib/common/reset-search-paths.ts",
"lib/common/type-utils.ts", "lib/common/type-utils.ts",
"lib/common/web-view-events.ts", "lib/common/web-view-events.ts",
@ -314,6 +320,8 @@ auto_filenames = {
"lib/common/api/shell.ts", "lib/common/api/shell.ts",
"lib/common/define-properties.ts", "lib/common/define-properties.ts",
"lib/common/init.ts", "lib/common/init.ts",
"lib/common/ipc-messages.ts",
"lib/common/remote/ipc-messages.ts",
"lib/common/reset-search-paths.ts", "lib/common/reset-search-paths.ts",
"lib/common/type-utils.ts", "lib/common/type-utils.ts",
"lib/common/webpack-globals-provider.ts", "lib/common/webpack-globals-provider.ts",

View file

@ -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 * as ipcMainUtils from '@electron/internal/browser/ipc-main-internal-utils';
import { parseFeatures } from '@electron/internal/common/parse-features-string'; import { parseFeatures } from '@electron/internal/common/parse-features-string';
import { MessagePortMain } from '@electron/internal/browser/message-port-main'; 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 // session is not used here, the purpose is to make sure session is initalized
// before the webContents module. // before the webContents module.
@ -196,7 +197,7 @@ const webFrameMethods = [
for (const method of webFrameMethods) { for (const method of webFrameMethods) {
WebContents.prototype[method] = function (...args: any[]): Promise<any> { 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 has been loaded.
WebContents.prototype.executeJavaScript = async function (code, hasUserGesture) { WebContents.prototype.executeJavaScript = async function (code, hasUserGesture) {
await waitTillCanExecuteJavaScript(this); 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) { WebContents.prototype.executeJavaScriptInIsolatedWorld = async function (worldId, code, hasUserGesture) {
await waitTillCanExecuteJavaScript(this); 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. // Translate the options of printToPDF.

View file

@ -4,6 +4,7 @@ import * as url from 'url';
import { ipcMainInternal } from '@electron/internal/browser/ipc-main-internal'; import { ipcMainInternal } from '@electron/internal/browser/ipc-main-internal';
import * as ipcMainUtils from '@electron/internal/browser/ipc-main-internal-utils'; 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) { const convertToMenuTemplate = function (items: ContextMenuItem[], handler: (id: number) => void) {
return items.map(function (item) { 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 => { return new Promise(resolve => {
assertChromeDevTools(event.sender, 'window.InspectorFrontendHost.showContextMenuAtPoint()'); 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()'); assertChromeDevTools(event.sender, 'window.UI.createFileSelectorElement()');
const result = await dialog.showOpenDialog({}); const result = await dialog.showOpenDialog({});
@ -84,7 +85,7 @@ ipcMainInternal.handle('ELECTRON_INSPECTOR_SELECT_FILE', async function (event)
return [path, data]; 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()'); assertChromeDevTools(event.sender, 'window.confirm()');
const options = { const options = {

View file

@ -5,6 +5,7 @@ import { parseWebViewWebPreferences } from '@electron/internal/common/parse-feat
import { syncMethods, asyncMethods, properties } from '@electron/internal/common/web-view-methods'; import { syncMethods, asyncMethods, properties } from '@electron/internal/common/web-view-methods';
import { webViewEvents } from '@electron/internal/common/web-view-events'; import { webViewEvents } from '@electron/internal/common/web-view-events';
import { serialize } from '@electron/internal/common/type-utils'; import { serialize } from '@electron/internal/common/type-utils';
import { IPC_MESSAGES } from '@electron/internal/common/ipc-messages';
interface GuestInstance { interface GuestInstance {
elementInstanceId?: number; elementInstanceId?: number;
@ -83,7 +84,7 @@ const createGuest = function (embedder: Electron.WebContents, params: Record<str
// Dispatch events to embedder. // Dispatch events to embedder.
const fn = function (event: string) { const fn = function (event: string) {
guest.on(event as any, function (_, ...args: any[]) { 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) { 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) { 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), frameName, disposition, sanitizeOptionsForGuest(options),
additionalFeatures, referrer); additionalFeatures, referrer);
}); });
// Dispatch guest's IPC messages to embedder. // Dispatch guest's IPC messages to embedder.
guest.on('ipc-message-host' as any, function (_: Electron.Event, channel: string, args: any[]) { 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 // 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 () { guest.on('dom-ready', function () {
const guestInstance = guestInstances[guestInstanceId]; const guestInstance = guestInstances[guestInstanceId];
if (guestInstance != null && guestInstance.visibilityState != null) { 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 // Remove guest from embedder if moving across web views
if (guest.viewInstanceId !== params.instanceId) { if (guest.viewInstanceId !== params.instanceId) {
webViewManager.removeGuest(guestInstance.embedder, guestInstanceId); 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]; const guestInstance = guestInstances[guestInstanceId];
guestInstance.visibilityState = visibilityState; guestInstance.visibilityState = visibilityState;
if (guestInstance.embedder === embedder) { 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)); 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); 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 { try {
attachGuest(event, embedderFrameId, elementInstanceId, guestInstanceId, params); attachGuest(event, embedderFrameId, elementInstanceId, guestInstanceId, params);
} catch (error) { } 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); return detachGuest(event.sender, guestInstanceId);
}); });
// this message is sent by the actual <webview> // 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); const guest = getGuest(guestInstanceId);
if (guest === event.sender) { if (guest === event.sender) {
event.sender.emit('focus-change', {}, focus, guestInstanceId); 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); const guest = getGuestForWebContents(guestInstanceId, event.sender);
if (!asyncMethods.has(method)) { if (!asyncMethods.has(method)) {
throw new Error(`Invalid method: ${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); 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); const guest = getGuestForWebContents(guestInstanceId, event.sender);
if (!syncMethods.has(method)) { if (!syncMethods.has(method)) {
throw new Error(`Invalid method: ${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); 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); const guest = getGuestForWebContents(guestInstanceId, event.sender);
if (!properties.has(property)) { if (!properties.has(property)) {
throw new Error(`Invalid property: ${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]; 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); const guest = getGuestForWebContents(guestInstanceId, event.sender);
if (!properties.has(property)) { if (!properties.has(property)) {
throw new Error(`Invalid property: ${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; (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); const guest = getGuestForWebContents(guestInstanceId, event.sender);
return serialize(await guest.capturePage(...args)); return serialize(await guest.capturePage(...args));

View file

@ -2,6 +2,7 @@ import * as electron from 'electron/main';
import { ipcMainInternal } from '@electron/internal/browser/ipc-main-internal'; import { ipcMainInternal } from '@electron/internal/browser/ipc-main-internal';
import * as ipcMainUtils from '@electron/internal/browser/ipc-main-internal-utils'; import * as ipcMainUtils from '@electron/internal/browser/ipc-main-internal-utils';
import { parseFeatures } from '@electron/internal/common/parse-features-string'; 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'); const { isSameOrigin } = process._linkedBinding('electron_common_v8_util');
@ -132,7 +133,7 @@ const setupGuest = function (embedder: Electron.WebContents, frameName: string,
guest.destroy(); guest.destroy();
}; };
const closedByUser = function () { 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.removeListener('current-render-view-deleted' as any, closedByEmbedder);
}; };
embedder.once('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 // 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 // This should only be allowed for senders that have nativeWindowOpen: false
const lastWebPreferences = event.sender.getLastWebPreferences(); const lastWebPreferences = event.sender.getLastWebPreferences();
if (lastWebPreferences.nativeWindowOpen || lastWebPreferences.sandbox) { if (lastWebPreferences.nativeWindowOpen || lastWebPreferences.sandbox) {
event.returnValue = null; 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 (url == null || url === '') url = 'about:blank';
if (frameName == null) frameName = ''; if (frameName == null) frameName = '';
@ -299,7 +300,7 @@ const windowMethods = new Set([
'blur' '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); securityCheck(event.sender, guestContents, canAccessWindow);
if (!windowMethods.has(method)) { if (!windowMethods.has(method)) {
@ -310,7 +311,7 @@ handleMessage('ELECTRON_GUEST_WINDOW_MANAGER_WINDOW_METHOD', (event, guestConten
return (getGuestWindow(guestContents) as any)[method](...args); 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) { if (targetOrigin == null) {
targetOrigin = '*'; targetOrigin = '*';
} }
@ -322,7 +323,7 @@ handleMessage('ELECTRON_GUEST_WINDOW_MANAGER_WINDOW_POSTMESSAGE', (event, guestC
if (targetOrigin === '*' || isSameOrigin(guestContents.getURL(), targetOrigin)) { if (targetOrigin === '*' || isSameOrigin(guestContents.getURL(), targetOrigin)) {
const sourceId = event.sender.id; 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' '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); securityCheck(event.sender, guestContents, canAccessWindow);
if (!webContentsMethodsAsync.has(method)) { if (!webContentsMethodsAsync.has(method)) {
@ -347,7 +348,7 @@ const webContentsMethodsSync = new Set([
'getURL' '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); securityCheck(event.sender, guestContents, canAccessWindow);
if (!webContentsMethodsSync.has(method)) { if (!webContentsMethodsSync.has(method)) {

View file

@ -1,21 +1,22 @@
import { ipcMainInternal } from '@electron/internal/browser/ipc-main-internal'; import { ipcMainInternal } from '@electron/internal/browser/ipc-main-internal';
import type { WebContents, LoadURLOptions } from 'electron/main'; import type { WebContents, LoadURLOptions } from 'electron/main';
import { EventEmitter } from 'events'; import { EventEmitter } from 'events';
import { IPC_MESSAGES } from '@electron/internal/common/ipc-messages';
// The history operation in renderer is redirected to browser. // 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(); 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(); 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); 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(); event.returnValue = event.sender.length();
}); });

View file

@ -4,6 +4,7 @@ import objectsRegistry from '@electron/internal/browser/remote/objects-registry'
import { ipcMainInternal } from '@electron/internal/browser/ipc-main-internal'; import { ipcMainInternal } from '@electron/internal/browser/ipc-main-internal';
import { isPromise, isSerializableObject, deserialize, serialize } from '@electron/internal/common/type-utils'; import { isPromise, isSerializableObject, deserialize, serialize } from '@electron/internal/common/type-utils';
import type { MetaTypeFromRenderer, ObjectMember, MetaType, ObjProtoDescriptor } from '@electron/internal/common/remote/types'; 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 v8Util = process._linkedBinding('electron_common_v8_util');
const eventBinding = process._linkedBinding('electron_browser_event'); const eventBinding = process._linkedBinding('electron_browser_event');
@ -30,7 +31,7 @@ const finalizationRegistry = new FinalizationRegistry((fi: FinalizerInfo) => {
const ref = rendererFunctionCache.get(mapKey); const ref = rendererFunctionCache.get(mapKey);
if (ref !== undefined && ref.deref() === undefined) { if (ref !== undefined && ref.deref() === undefined) {
rendererFunctionCache.delete(mapKey); 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[]) { const callIntoRenderer = function (this: any, ...args: any[]) {
let succeed = false; let succeed = false;
if (!sender.isDestroyed()) { 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) { if (!succeed) {
removeRemoteListenersAndLogWarning(this, callIntoRenderer); 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 objectId: [string, number] = [passedContextId, id];
const cachedFunction = getCachedRendererFunction(objectId); const cachedFunction = getCachedRendererFunction(objectId);
if (cachedFunction === undefined) { if (cachedFunction === undefined) {
@ -344,7 +345,7 @@ handleRemoteCommand('ELECTRON_BROWSER_WRONG_CONTEXT_ERROR', function (event, con
removeRemoteListenersAndLogWarning(event.sender, cachedFunction); 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); logStack(event.sender, `remote.require('${moduleName}')`, stack);
const customEvent = emitCustomEvent(event.sender, 'remote-require', moduleName); 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); 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); logStack(event.sender, `remote.getBuiltin('${moduleName}')`, stack);
const customEvent = emitCustomEvent(event.sender, 'remote-get-builtin', moduleName); 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); 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); logStack(event.sender, `remote.getGlobal('${globalName}')`, stack);
const customEvent = emitCustomEvent(event.sender, 'remote-get-global', globalName); 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); 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); logStack(event.sender, 'remote.getCurrentWindow()', stack);
const customEvent = emitCustomEvent(event.sender, 'remote-get-current-window'); 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); 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); logStack(event.sender, 'remote.getCurrentWebContents()', stack);
const customEvent = emitCustomEvent(event.sender, 'remote-get-current-web-contents'); 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); 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); args = unwrapArgs(event.sender, event.frameId, contextId, args);
const constructor = objectsRegistry.get(id); const constructor = objectsRegistry.get(id);
@ -430,7 +431,7 @@ handleRemoteCommand('ELECTRON_BROWSER_CONSTRUCTOR', function (event, contextId,
return valueToMeta(event.sender, contextId, new constructor(...args)); 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); args = unwrapArgs(event.sender, event.frameId, contextId, args);
const func = objectsRegistry.get(id); 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); args = unwrapArgs(event.sender, event.frameId, contextId, args);
const object = objectsRegistry.get(id); 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)); 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); args = unwrapArgs(event.sender, event.frameId, contextId, args);
const object = objectsRegistry.get(id); 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); args = unwrapArgs(event.sender, event.frameId, contextId, args);
const obj = objectsRegistry.get(id); const obj = objectsRegistry.get(id);
@ -487,7 +488,7 @@ handleRemoteCommand('ELECTRON_BROWSER_MEMBER_SET', function (event, contextId, i
return null; 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); const obj = objectsRegistry.get(id);
if (obj == null) { if (obj == null) {
@ -497,10 +498,10 @@ handleRemoteCommand('ELECTRON_BROWSER_MEMBER_GET', function (event, contextId, i
return valueToMeta(event.sender, contextId, obj[name]); 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); 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); objectsRegistry.clear(event.sender, contextId);
}); });

View file

@ -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 ipcMainUtils from '@electron/internal/browser/ipc-main-internal-utils';
import * as guestViewManager from '@electron/internal/browser/guest-view-manager'; import * as guestViewManager from '@electron/internal/browser/guest-view-manager';
import * as typeUtils from '@electron/internal/common/type-utils'; 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'); const eventBinding = process._linkedBinding('electron_browser_event');
@ -25,7 +26,7 @@ const logStack = function (contents: WebContents, code: string, stack: string) {
}; };
// Implements window.close() // 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(); const window = event.sender.getOwnerBrowserWindow();
if (window) { if (window) {
window.close(); window.close();
@ -33,7 +34,7 @@ ipcMainInternal.on('ELECTRON_BROWSER_WINDOW_CLOSE', function (event) {
event.returnValue = null; 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(); 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)) { if (!allowedClipboardMethods.has(method)) {
throw new Error(`Invalid method: ${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)) { if (BUILDFLAG(ENABLE_DESKTOP_CAPTURER)) {
const desktopCapturer = require('@electron/internal/browser/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); logStack(event.sender, 'desktopCapturer.getSources()', stack);
const customEvent = emitCustomEvent(event.sender, 'desktop-capturer-get-sources'); const customEvent = emitCustomEvent(event.sender, 'desktop-capturer-get-sources');
@ -88,7 +89,7 @@ const getPreloadScript = async function (preloadPath: string) {
return { preloadPath, preloadSrc, preloadError }; 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 preloadPaths = event.sender._getPreloadPaths();
const webPreferences = event.sender.getLastWebPreferences() || {}; 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); 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(); return crashReporter.getLastCrashReport();
}); });
ipcMainUtils.handleSync('ELECTRON_CRASH_REPORTER_GET_UPLOADED_REPORTS', () => { ipcMainUtils.handleSync(IPC_MESSAGES.CRASH_REPORTER_GET_UPLOADED_REPORTS, () => {
return crashReporter.getUploadedReports(); 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(); 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); return crashReporter.setUploadToServer(uploadToServer);
}); });
ipcMainUtils.handleSync('ELECTRON_CRASH_REPORTER_GET_CRASHES_DIRECTORY', () => { ipcMainUtils.handleSync(IPC_MESSAGES.CRASH_REPORTER_GET_CRASHES_DIRECTORY, () => {
return crashReporter.getCrashesDirectory(); 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)); return typeUtils.serialize(await nativeImage.createThumbnailFromPath(path, size));
}); });

View file

@ -1,3 +1,5 @@
import { IPC_MESSAGES } from '@electron/internal/common/ipc-messages';
const clipboard = process._linkedBinding('electron_common_clipboard'); const clipboard = process._linkedBinding('electron_common_clipboard');
if (process.type === 'renderer') { if (process.type === 'renderer') {
@ -7,7 +9,7 @@ if (process.type === 'renderer') {
const makeRemoteMethod = function (method: keyof Electron.Clipboard) { const makeRemoteMethod = function (method: keyof Electron.Clipboard) {
return (...args: any[]) => { return (...args: any[]) => {
args = typeUtils.serialize(args); 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); return typeUtils.deserialize(result);
}; };
}; };

View file

@ -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',
}

View file

@ -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',
}

View file

@ -1,5 +1,6 @@
import { invokeSync } from '../ipc-renderer-internal-utils'; import { invokeSync } from '../ipc-renderer-internal-utils';
import { deprecate } from 'electron'; import { deprecate } from 'electron';
import { IPC_MESSAGES } from '@electron/internal/common/ipc-messages';
const binding = process._linkedBinding('electron_renderer_crash_reporter'); const binding = process._linkedBinding('electron_renderer_crash_reporter');
@ -13,27 +14,27 @@ export default {
getLastCrashReport (): Electron.CrashReport | null { getLastCrashReport (): Electron.CrashReport | null {
deprecate.log('crashReporter.getLastCrashReport is deprecated in the renderer process. Call it from the main process instead.'); 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 () { getUploadedReports () {
deprecate.log('crashReporter.getUploadedReports is deprecated in the renderer process. Call it from the main process instead.'); 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 () { getUploadToServer () {
deprecate.log('crashReporter.getUploadToServer is deprecated in the renderer process. Call it from the main process instead.'); 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) { setUploadToServer (uploadToServer: boolean) {
deprecate.log('crashReporter.setUploadToServer is deprecated in the renderer process. Call it from the main process instead.'); 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 () { getCrashesDirectory () {
deprecate.log('crashReporter.getCrashesDirectory is deprecated in the renderer process. Call it from the main process instead.'); 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) { addExtraParameter (key: string, value: string) {

View file

@ -1,5 +1,6 @@
import { ipcRendererInternal } from '@electron/internal/renderer/ipc-renderer-internal'; import { ipcRendererInternal } from '@electron/internal/renderer/ipc-renderer-internal';
import { deserialize } from '@electron/internal/common/type-utils'; 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'); const { hasSwitch } = process._linkedBinding('electron_common_command_line');
@ -14,5 +15,5 @@ function getCurrentStack () {
} }
export async function getSources (options: Electron.SourcesOptions) { 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()));
} }

View file

@ -1,10 +1,11 @@
import { ipcRendererInternal } from '@electron/internal/renderer/ipc-renderer-internal'; import { ipcRendererInternal } from '@electron/internal/renderer/ipc-renderer-internal';
import { deserialize } from '@electron/internal/common/type-utils'; 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'); const { nativeImage } = process._linkedBinding('electron_common_native_image');
nativeImage.createThumbnailFromPath = async (path: string, size: Electron.Size) => { 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; export default nativeImage;

View file

@ -6,6 +6,7 @@ import type { BrowserWindow, WebContents } from 'electron/main';
import deprecate from '@electron/internal/common/api/deprecate'; import deprecate from '@electron/internal/common/api/deprecate';
import { browserModuleNames } from '@electron/internal/browser/api/module-names'; import { browserModuleNames } from '@electron/internal/browser/api/module-names';
import { commonModuleList } from '@electron/internal/common/api/module-list'; 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.'); 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); const ref = remoteObjectCache.get(id);
if (ref !== undefined && ref.deref() === undefined) { if (ref !== undefined && ref.deref() === undefined) {
remoteObjectCache.delete(id); 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 // sent, we also listen to the "render-view-deleted" event in the main process
// to guard that situation. // to guard that situation.
process.on('exit', () => { process.on('exit', () => {
const command = 'ELECTRON_BROWSER_CONTEXT_RELEASE'; const command = IPC_MESSAGES.BROWSER_CONTEXT_RELEASE;
ipcRendererInternal.send(command, contextId); 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[]) { const remoteMemberFunction = function (this: any, ...args: any[]) {
let command; let command;
if (this && this.constructor === remoteMemberFunction) { if (this && this.constructor === remoteMemberFunction) {
command = 'ELECTRON_BROWSER_MEMBER_CONSTRUCTOR'; command = IPC_MESSAGES.BROWSER_MEMBER_CONSTRUCTOR;
} else { } else {
command = 'ELECTRON_BROWSER_MEMBER_CALL'; command = IPC_MESSAGES.BROWSER_MEMBER_CALL;
} }
const ret = ipcRendererInternal.sendSync(command, contextId, metaId, member.name, wrapArgs(args)); const ret = ipcRendererInternal.sendSync(command, contextId, metaId, member.name, wrapArgs(args));
return metaToValue(ret); return metaToValue(ret);
@ -168,7 +169,7 @@ function setObjectMembers (ref: any, object: any, metaId: number, members: Objec
descriptor.configurable = true; descriptor.configurable = true;
} else if (member.type === 'get') { } else if (member.type === 'get') {
descriptor.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); const meta = ipcRendererInternal.sendSync(command, contextId, metaId, member.name);
return metaToValue(meta); return metaToValue(meta);
}; };
@ -176,7 +177,7 @@ function setObjectMembers (ref: any, object: any, metaId: number, members: Objec
if (member.writable) { if (member.writable) {
descriptor.set = (value) => { descriptor.set = (value) => {
const args = wrapArgs([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); const meta = ipcRendererInternal.sendSync(command, contextId, metaId, member.name, args);
if (meta != null) metaToValue(meta); if (meta != null) metaToValue(meta);
return value; return value;
@ -206,7 +207,7 @@ function proxyFunctionProperties (remoteMemberFunction: Function, metaId: number
const loadRemoteProperties = () => { const loadRemoteProperties = () => {
if (loaded) return; if (loaded) return;
loaded = true; loaded = true;
const command = 'ELECTRON_BROWSER_MEMBER_GET'; const command = IPC_MESSAGES.BROWSER_MEMBER_GET;
const meta = ipcRendererInternal.sendSync(command, contextId, metaId, name); const meta = ipcRendererInternal.sendSync(command, contextId, metaId, name);
setObjectMembers(remoteMemberFunction, remoteMemberFunction, meta.id, meta.members); setObjectMembers(remoteMemberFunction, remoteMemberFunction, meta.id, meta.members);
}; };
@ -267,9 +268,9 @@ function metaToValue (meta: MetaType): any {
const remoteFunction = function (this: any, ...args: any[]) { const remoteFunction = function (this: any, ...args: any[]) {
let command; let command;
if (this && this.constructor === remoteFunction) { if (this && this.constructor === remoteFunction) {
command = 'ELECTRON_BROWSER_CONSTRUCTOR'; command = IPC_MESSAGES.BROWSER_CONSTRUCTOR;
} else { } else {
command = 'ELECTRON_BROWSER_FUNCTION_CALL'; command = IPC_MESSAGES.BROWSER_FUNCTION_CALL;
} }
const obj = ipcRendererInternal.sendSync(command, contextId, meta.id, wrapArgs(args)); const obj = ipcRendererInternal.sendSync(command, contextId, meta.id, wrapArgs(args));
return metaToValue(obj); return metaToValue(obj);
@ -306,7 +307,7 @@ function handleMessage (channel: string, handler: Function) {
handler(id, ...args); handler(id, ...args);
} else { } else {
// Message sent to an un-exist context, notify the error to main process. // 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. // 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)); callbacksRegistry.apply(id, metaToValue(args));
}); });
// A callback in browser is released. // A callback in browser is released.
handleMessage('ELECTRON_RENDERER_RELEASE_CALLBACK', (id: number) => { handleMessage(IPC_MESSAGES.RENDERER_RELEASE_CALLBACK, (id: number) => {
callbacksRegistry.remove(id); callbacksRegistry.remove(id);
}); });
exports.require = (module: string) => { exports.require = (module: string) => {
const command = 'ELECTRON_BROWSER_REQUIRE'; const command = IPC_MESSAGES.BROWSER_REQUIRE;
const meta = ipcRendererInternal.sendSync(command, contextId, module, getCurrentStack()); const meta = ipcRendererInternal.sendSync(command, contextId, module, getCurrentStack());
return metaToValue(meta); return metaToValue(meta);
}; };
// Alias to remote.require('electron').xxx. // Alias to remote.require('electron').xxx.
export function getBuiltin (module: string) { 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()); const meta = ipcRendererInternal.sendSync(command, contextId, module, getCurrentStack());
return metaToValue(meta); return metaToValue(meta);
} }
export function getCurrentWindow (): BrowserWindow { 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()); const meta = ipcRendererInternal.sendSync(command, contextId, getCurrentStack());
return metaToValue(meta); return metaToValue(meta);
} }
// Get current WebContents object. // Get current WebContents object.
export function getCurrentWebContents (): WebContents { 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()); const meta = ipcRendererInternal.sendSync(command, contextId, getCurrentStack());
return metaToValue(meta); return metaToValue(meta);
} }
// Get a global object in browser. // Get a global object in browser.
export function getGlobal<T = any> (name: string): T { 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()); const meta = ipcRendererInternal.sendSync(command, contextId, name, getCurrentStack());
return metaToValue(meta); return metaToValue(meta);
} }

View file

@ -1,4 +1,5 @@
import * as path from 'path'; import * as path from 'path';
import { IPC_MESSAGES } from '@electron/internal/common/ipc-messages';
const Module = require('module'); const Module = require('module');
@ -184,7 +185,7 @@ for (const preloadScript of preloadScripts) {
console.error(`Unable to load preload script: ${preloadScript}`); console.error(`Unable to load preload script: ${preloadScript}`);
console.error(error); console.error(error);
ipcRendererInternal.send('ELECTRON_BROWSER_PRELOAD_ERROR', preloadScript, error); ipcRendererInternal.send(IPC_MESSAGES.BROWSER_PRELOAD_ERROR, preloadScript, error);
} }
} }

View file

@ -1,5 +1,6 @@
import { ipcRendererInternal } from '@electron/internal/renderer/ipc-renderer-internal'; import { ipcRendererInternal } from '@electron/internal/renderer/ipc-renderer-internal';
import * as ipcRendererUtils from '@electron/internal/renderer/ipc-renderer-internal-utils'; import * as ipcRendererUtils from '@electron/internal/renderer/ipc-renderer-internal-utils';
import { IPC_MESSAGES } from '../common/ipc-messages';
window.onload = function () { window.onload = function () {
// Use menu API to show context menu. // Use menu API to show context menu.
@ -20,7 +21,7 @@ function completeURL (project: string, path: string) {
// The DOM implementation expects (message?: string) => boolean // The DOM implementation expects (message?: string) => boolean
window.confirm = function (message?: string, title?: string) { 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[]) { 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 createMenu = function (x: number, y: number, items: ContextMenuItem[]) {
const isEditMenu = useEditMenuItems(x, y, items); 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') { if (typeof id === 'number') {
window.DevToolsAPI!.contextMenuItemSelected(id); window.DevToolsAPI!.contextMenuItemSelected(id);
} }
@ -42,7 +43,7 @@ const createMenu = function (x: number, y: number, items: ContextMenuItem[]) {
}; };
const showFileChooserDialog = function (callback: (blob: File) => void) { 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) { if (path && data) {
callback(dataToHtml5FileObject(path, data)); callback(dataToHtml5FileObject(path, data));
} }

View file

@ -1,5 +1,6 @@
import { webFrame } from 'electron'; import { webFrame } from 'electron';
import { ipcRendererInternal } from '@electron/internal/renderer/ipc-renderer-internal'; import { ipcRendererInternal } from '@electron/internal/renderer/ipc-renderer-internal';
import { IPC_MESSAGES } from '@electron/internal/common/ipc-messages';
let shouldLog: boolean | null = null; let shouldLog: boolean | null = null;
@ -302,7 +303,7 @@ const logSecurityWarnings = function (
const getWebPreferences = async function () { const getWebPreferences = async function () {
try { 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) { } catch (error) {
console.warn(`getLastWebPreferences() failed: ${error}`); console.warn(`getLastWebPreferences() failed: ${error}`);
} }

View file

@ -1,5 +1,6 @@
import { webFrame, WebFrame } from 'electron'; import { webFrame, WebFrame } from 'electron';
import * as ipcRendererUtils from '@electron/internal/renderer/ipc-renderer-internal-utils'; 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 // All keys of WebFrame that extend Function
type WebFrameMethod = { type WebFrameMethod = {
@ -9,7 +10,7 @@ type WebFrameMethod = {
export const webFrameInit = () => { export const webFrameInit = () => {
// Call webFrame method // 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[] event, method: keyof WebFrameMethod, ...args: any[]
) => { ) => {
// TODO(MarshallOfSound): Remove once the world-safe-execute-javascript deprecation warning is removed // TODO(MarshallOfSound): Remove once the world-safe-execute-javascript deprecation warning is removed

View file

@ -4,6 +4,7 @@ import * as ipcRendererUtils from '@electron/internal/renderer/ipc-renderer-inte
import { webViewEvents } from '@electron/internal/common/web-view-events'; import { webViewEvents } from '@electron/internal/common/web-view-events';
import { WebViewImpl } from '@electron/internal/renderer/web-view/web-view-impl'; 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> = { const DEPRECATED_EVENTS: Record<string, string> = {
'page-title-updated': 'page-title-set' 'page-title-updated': 'page-title-set'
@ -31,18 +32,18 @@ const dispatchEvent = function (
}; };
export function registerEvents (webView: WebViewImpl, viewInstanceId: number) { 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.guestInstanceId = undefined;
webView.reset(); webView.reset();
const domEvent = new Event('destroyed'); const domEvent = new Event('destroyed');
webView.dispatchEvent(domEvent); 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); 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; const domEvent = new Event('ipc-message') as IpcMessageEvent;
domEvent.channel = channel; domEvent.channel = channel;
domEvent.args = args; domEvent.args = args;
@ -52,13 +53,13 @@ export function registerEvents (webView: WebViewImpl, viewInstanceId: number) {
} }
export function deregisterEvents (viewInstanceId: number) { export function deregisterEvents (viewInstanceId: number) {
ipcRendererInternal.removeAllListeners(`ELECTRON_GUEST_VIEW_INTERNAL_DESTROY_GUEST-${viewInstanceId}`); ipcRendererInternal.removeAllListeners(`${IPC_MESSAGES.GUEST_VIEW_INTERNAL_DESTROY_GUEST}-${viewInstanceId}`);
ipcRendererInternal.removeAllListeners(`ELECTRON_GUEST_VIEW_INTERNAL_DISPATCH_EVENT-${viewInstanceId}`); ipcRendererInternal.removeAllListeners(`${IPC_MESSAGES.GUEST_VIEW_INTERNAL_DISPATCH_EVENT}-${viewInstanceId}`);
ipcRendererInternal.removeAllListeners(`ELECTRON_GUEST_VIEW_INTERNAL_IPC_MESSAGE-${viewInstanceId}`); ipcRendererInternal.removeAllListeners(`${IPC_MESSAGES.GUEST_VIEW_INTERNAL_IPC_MESSAGE}-${viewInstanceId}`);
} }
export function createGuest (params: Record<string, any>): Promise<number> { 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 ( export function attachGuest (
@ -68,11 +69,11 @@ export function attachGuest (
if (embedderFrameId < 0) { // this error should not happen. if (embedderFrameId < 0) { // this error should not happen.
throw new Error('Invalid embedder frame'); 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) { 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 = { export const guestViewInternalModule = {

View file

@ -1,6 +1,7 @@
import { ipcRendererInternal } from '@electron/internal/renderer/ipc-renderer-internal'; import { ipcRendererInternal } from '@electron/internal/renderer/ipc-renderer-internal';
import { WebViewImpl } from '@electron/internal/renderer/web-view/web-view-impl'; 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 { 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. // Helper function to resolve url set in attribute.
const a = document.createElement('a'); const a = document.createElement('a');
@ -196,7 +197,7 @@ class SrcAttribute extends WebViewAttribute {
const method = 'loadURL'; const method = 'loadURL';
const args = [this.getValue(), opts]; 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);
} }
} }

View file

@ -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 { WEB_VIEW_CONSTANTS } from '@electron/internal/renderer/web-view/web-view-constants';
import { syncMethods, asyncMethods, properties } from '@electron/internal/common/web-view-methods'; import { syncMethods, asyncMethods, properties } from '@electron/internal/common/web-view-methods';
import { deserialize } from '@electron/internal/common/type-utils'; import { deserialize } from '@electron/internal/common/type-utils';
import { IPC_MESSAGES } from '@electron/internal/common/ipc-messages';
const { webFrame } = electron; const { webFrame } = electron;
const v8Util = process._linkedBinding('electron_common_v8_util'); 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*. // Forward proto.foo* method calls to WebViewImpl.foo*.
const createBlockHandler = function (method: string) { const createBlockHandler = function (method: string) {
return function (this: ElectronInternal.WebViewElement, ...args: Array<any>) { 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) { const createNonBlockHandler = function (method: string) {
return function (this: ElectronInternal.WebViewElement, ...args: Array<any>) { 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) { 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) { const createPropertyGetter = function (property: string) {
return function (this: ElectronInternal.WebViewElement) { 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) { const createPropertySetter = function (property: string) {
return function (this: ElectronInternal.WebViewElement, arg: any) { 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);
}; };
}; };

View file

@ -1,4 +1,5 @@
import { ipcRendererInternal } from '@electron/internal/renderer/ipc-renderer-internal'; 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'); const v8Util = process._linkedBinding('electron_common_v8_util');
@ -7,11 +8,11 @@ function handleFocusBlur (guestInstanceId: number) {
// unfortunately do not work for webview. // unfortunately do not work for webview.
window.addEventListener('focus', () => { 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', () => { window.addEventListener('blur', () => {
ipcRendererInternal.send('ELECTRON_GUEST_VIEW_MANAGER_FOCUS_CHANGE', false, guestInstanceId); ipcRendererInternal.send(IPC_MESSAGES.GUEST_VIEW_MANAGER_FOCUS_CHANGE, false, guestInstanceId);
}); });
} }

View file

@ -1,6 +1,7 @@
import { ipcRendererInternal } from '@electron/internal/renderer/ipc-renderer-internal'; import { ipcRendererInternal } from '@electron/internal/renderer/ipc-renderer-internal';
import * as ipcRendererUtils from '@electron/internal/renderer/ipc-renderer-internal-utils'; import * as ipcRendererUtils from '@electron/internal/renderer/ipc-renderer-internal-utils';
import { internalContextBridge } from '@electron/internal/renderer/api/context-bridge'; import { internalContextBridge } from '@electron/internal/renderer/api/context-bridge';
import { IPC_MESSAGES } from '@electron/internal/common/ipc-messages';
const { contextIsolationEnabled } = internalContextBridge; const { contextIsolationEnabled } = internalContextBridge;
@ -140,11 +141,11 @@ class LocationProxy {
} }
private _invokeWebContentsMethod (method: string, ...args: any[]) { 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[]) { 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.guestId = guestId;
this._location = new LocationProxy(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); removeProxy(guestId);
this.closed = true; this.closed = true;
}); });
@ -225,7 +226,7 @@ class BrowserWindowProxy {
} }
public postMessage = (message: any, targetOrigin: string) => { 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) => { public eval = (code: string) => {
@ -233,11 +234,11 @@ class BrowserWindowProxy {
} }
private _invokeWindowMethod (method: string, ...args: any[]) { 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[]) { 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) { if (!process.sandboxed && guestInstanceId == null) {
// Override default window.close. // Override default window.close.
window.close = function () { window.close = function () {
ipcRendererInternal.send('ELECTRON_BROWSER_WINDOW_CLOSE'); ipcRendererInternal.send(IPC_MESSAGES.BROWSER_WINDOW_CLOSE);
}; };
if (contextIsolationEnabled) internalContextBridge.overrideGlobalValueFromIsolatedWorld(['close'], window.close); if (contextIsolationEnabled) internalContextBridge.overrideGlobalValueFromIsolatedWorld(['close'], window.close);
} }
@ -259,7 +260,7 @@ export const windowSetup = (
if (url != null && url !== '') { if (url != null && url !== '') {
url = resolveURL(url, location.href); 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) { if (guestId != null) {
return getOrCreateProxy(guestId) as any as WindowProxy; return getOrCreateProxy(guestId) as any as WindowProxy;
} else { } else {
@ -281,7 +282,7 @@ export const windowSetup = (
if (contextIsolationEnabled) internalContextBridge.overrideGlobalValueFromIsolatedWorld(['prompt'], window.prompt); if (contextIsolationEnabled) internalContextBridge.overrideGlobalValueFromIsolatedWorld(['prompt'], window.prompt);
if (!usesNativeWindowOpen || openerId != null) { 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 _event, sourceId: number, message: any, sourceOrigin: string
) { ) {
// Manually dispatch event instead of using postMessage because we also need to // Manually dispatch event instead of using postMessage because we also need to
@ -303,21 +304,21 @@ export const windowSetup = (
if (!process.sandboxed && !rendererProcessReuseEnabled) { if (!process.sandboxed && !rendererProcessReuseEnabled) {
window.history.back = function () { 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); if (contextIsolationEnabled) internalContextBridge.overrideGlobalValueFromIsolatedWorld(['history', 'back'], window.history.back);
window.history.forward = function () { 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); if (contextIsolationEnabled) internalContextBridge.overrideGlobalValueFromIsolatedWorld(['history', 'forward'], window.history.forward);
window.history.go = function (offset: number) { 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); 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', { Object.defineProperty(window.history, 'length', {
get: getHistoryLength, get: getHistoryLength,
set () {} set () {}
@ -336,7 +337,7 @@ export const windowSetup = (
let cachedVisibilityState = isHiddenPage ? 'hidden' : 'visible'; let cachedVisibilityState = isHiddenPage ? 'hidden' : 'visible';
// Subscribe to visibilityState changes. // 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) { if (cachedVisibilityState !== visibilityState) {
cachedVisibilityState = visibilityState; cachedVisibilityState = visibilityState;
document.dispatchEvent(new Event('visibilitychange')); document.dispatchEvent(new Event('visibilitychange'));

View file

@ -1,6 +1,7 @@
/* eslint no-eval: "off" */ /* eslint no-eval: "off" */
/* global binding */ /* global binding */
import * as events from 'events'; import * as events from 'events';
import { IPC_MESSAGES } from '@electron/internal/common/ipc-messages';
const { EventEmitter } = events; const { EventEmitter } = events;
@ -29,7 +30,7 @@ const {
guestInstanceId, guestInstanceId,
openerId, openerId,
process: processProps process: processProps
} = ipcRendererUtils.invokeSync('ELECTRON_BROWSER_SANDBOX_LOAD'); } = ipcRendererUtils.invokeSync(IPC_MESSAGES.BROWSER_SANDBOX_LOAD);
process.isRemoteModuleEnabled = isRemoteModuleEnabled; process.isRemoteModuleEnabled = isRemoteModuleEnabled;
@ -180,7 +181,7 @@ for (const { preloadPath, preloadSrc, preloadError } of preloadScripts) {
console.error(`Unable to load preload script: ${preloadPath}`); console.error(`Unable to load preload script: ${preloadPath}`);
console.error(error); console.error(error);
ipcRendererInternal.send('ELECTRON_BROWSER_PRELOAD_ERROR', preloadPath, error); ipcRendererInternal.send(IPC_MESSAGES.BROWSER_PRELOAD_ERROR, preloadPath, error);
} }
} }

View file

@ -790,7 +790,7 @@ describe('chromium features', () => {
}); });
expect(await w.webContents.executeJavaScript(`(${function () { expect(await w.webContents.executeJavaScript(`(${function () {
const { ipc } = process._linkedBinding('electron_renderer_ipc'); 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(); }})()`)).to.be.null();
const exception = await uncaughtException; const exception = await uncaughtException;
expect(exception.message).to.match(/denied: expected native window\.open/); expect(exception.message).to.match(/denied: expected native window\.open/);