|
@@ -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);
|
|
|
});
|