From d121ff9f017e478a35b5c9616d8dd04f9f7f3315 Mon Sep 17 00:00:00 2001 From: Jeremy Rose Date: Mon, 23 Nov 2020 10:33:38 -0800 Subject: [PATCH] fix: use _linkedBinding when electronBinding not available --- src/common/get-electron-binding.ts | 3 +++ src/main/objects-registry.ts | 3 ++- src/main/server.ts | 5 +++-- src/renderer/callbacks-registry.ts | 3 ++- src/renderer/remote.ts | 1 + 5 files changed, 11 insertions(+), 4 deletions(-) create mode 100644 src/common/get-electron-binding.ts diff --git a/src/common/get-electron-binding.ts b/src/common/get-electron-binding.ts new file mode 100644 index 0000000..ab18696 --- /dev/null +++ b/src/common/get-electron-binding.ts @@ -0,0 +1,3 @@ +export const getElectronBinding: typeof process.electronBinding = process.electronBinding + ? (name: string) => process.electronBinding(name as any) + : (name: string) => (process as any)._linkedBinding('electron_common_' + name) diff --git a/src/main/objects-registry.ts b/src/main/objects-registry.ts index 7486021..ec4eb2e 100644 --- a/src/main/objects-registry.ts +++ b/src/main/objects-registry.ts @@ -1,6 +1,7 @@ import { WebContents } from 'electron' +import { getElectronBinding } from '../common/get-electron-binding' -const v8Util = process.electronBinding('v8_util') +const v8Util = getElectronBinding('v8_util') const getOwnerKey = (webContents: WebContents, contextId: string) => { return `${webContents.id}-${contextId}` diff --git a/src/main/server.ts b/src/main/server.ts index 15a8ff3..cbc7b24 100644 --- a/src/main/server.ts +++ b/src/main/server.ts @@ -4,9 +4,10 @@ import { isPromise, isSerializableObject, deserialize, serialize } from '../comm import type { MetaTypeFromRenderer, ObjectMember, MetaType, ObjProtoDescriptor } from '../common/types' import { ipcMain, WebContents, IpcMainEvent, app } from 'electron' import { IPC_MESSAGES } from '../common/ipc-messages'; +import { getElectronBinding } from '../common/get-electron-binding' -const v8Util = process.electronBinding('v8_util') -const { NativeImage } = process.electronBinding('native_image') +const v8Util = getElectronBinding('v8_util') +const { NativeImage } = getElectronBinding('native_image') // The internal properties of Function. const FUNCTION_PROPERTIES = [ diff --git a/src/renderer/callbacks-registry.ts b/src/renderer/callbacks-registry.ts index 3a05ec7..dce8b92 100644 --- a/src/renderer/callbacks-registry.ts +++ b/src/renderer/callbacks-registry.ts @@ -1,4 +1,5 @@ -const v8Util = process.electronBinding('v8_util') +import { getElectronBinding } from '../common/get-electron-binding' +const v8Util = getElectronBinding('v8_util') export class CallbacksRegistry { private nextId: number = 0 diff --git a/src/renderer/remote.ts b/src/renderer/remote.ts index e718f9c..1855aa9 100644 --- a/src/renderer/remote.ts +++ b/src/renderer/remote.ts @@ -3,6 +3,7 @@ import { isPromise, isSerializableObject, serialize, deserialize } from '../comm import { MetaTypeFromRenderer, ObjectMember, ObjProtoDescriptor, MetaType } from '../common/types' import { BrowserWindow, WebContents, ipcRenderer } from 'electron' import { browserModules } from '../common/module-names' +import { getElectronBinding } from '../common/get-electron-binding' import { IPC_MESSAGES } from '../common/ipc-messages'; const v8Util = process.electronBinding('v8_util')