refactor: use separate ipc-renderer-internal / ipc-main-internal APIs for Electron internals (#13940)
This commit is contained in:
parent
f7122610cc
commit
b50f86ef43
49 changed files with 322 additions and 133 deletions
12
lib/renderer/api/crash-reporter.js
Normal file
12
lib/renderer/api/crash-reporter.js
Normal file
|
@ -0,0 +1,12 @@
|
|||
'use strict'
|
||||
|
||||
const CrashReporter = require('@electron/internal/common/crash-reporter')
|
||||
const ipcRenderer = require('@electron/internal/renderer/ipc-renderer-internal')
|
||||
|
||||
class CrashReporterRenderer extends CrashReporter {
|
||||
sendSync (channel, ...args) {
|
||||
return ipcRenderer.sendSync(channel, ...args)
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = new CrashReporterRenderer()
|
|
@ -1,6 +1,7 @@
|
|||
'use strict'
|
||||
|
||||
const { ipcRenderer, nativeImage } = require('electron')
|
||||
const { nativeImage } = require('electron')
|
||||
const ipcRenderer = require('@electron/internal/renderer/ipc-renderer-internal')
|
||||
|
||||
const includes = [].includes
|
||||
let currentId = 0
|
||||
|
|
|
@ -5,6 +5,7 @@ const v8Util = process.atomBinding('v8_util')
|
|||
|
||||
// Created by init.js.
|
||||
const ipcRenderer = v8Util.getHiddenValue(global, 'ipc')
|
||||
const internal = false
|
||||
|
||||
ipcRenderer.send = function (...args) {
|
||||
return binding.send('ipc-message', args)
|
||||
|
@ -19,19 +20,11 @@ ipcRenderer.sendToHost = function (...args) {
|
|||
}
|
||||
|
||||
ipcRenderer.sendTo = function (webContentsId, channel, ...args) {
|
||||
return binding.sendTo(false, webContentsId, channel, args)
|
||||
return binding.sendTo(internal, false, webContentsId, channel, args)
|
||||
}
|
||||
|
||||
ipcRenderer.sendToAll = function (webContentsId, channel, ...args) {
|
||||
return binding.sendTo(true, webContentsId, channel, args)
|
||||
}
|
||||
|
||||
const removeAllListeners = ipcRenderer.removeAllListeners.bind(ipcRenderer)
|
||||
ipcRenderer.removeAllListeners = function (...args) {
|
||||
if (args.length === 0) {
|
||||
throw new Error('Removing all listeners from ipcRenderer will make Electron internals stop working. Please specify a event name')
|
||||
}
|
||||
removeAllListeners(...args)
|
||||
return binding.sendTo(internal, true, webContentsId, channel, args)
|
||||
}
|
||||
|
||||
module.exports = ipcRenderer
|
||||
|
|
|
@ -5,6 +5,7 @@ const features = process.atomBinding('features')
|
|||
// Renderer side modules, please sort alphabetically.
|
||||
// A module is `enabled` if there is no explicit condition defined.
|
||||
module.exports = [
|
||||
{ name: 'crashReporter', file: 'crash-reporter', enabled: true },
|
||||
{
|
||||
name: 'desktopCapturer',
|
||||
file: 'desktop-capturer',
|
||||
|
|
|
@ -1,12 +1,13 @@
|
|||
'use strict'
|
||||
|
||||
const v8Util = process.atomBinding('v8_util')
|
||||
const { ipcRenderer, isPromise } = require('electron')
|
||||
const { isPromise } = require('electron')
|
||||
const resolvePromise = Promise.resolve.bind(Promise)
|
||||
|
||||
const CallbacksRegistry = require('@electron/internal/renderer/callbacks-registry')
|
||||
const bufferUtils = require('@electron/internal/common/buffer-utils')
|
||||
const errorUtils = require('@electron/internal/common/error-utils')
|
||||
const ipcRenderer = require('@electron/internal/renderer/ipc-renderer-internal')
|
||||
|
||||
const callbacksRegistry = new CallbacksRegistry()
|
||||
const remoteObjectCache = v8Util.createIDWeakMap()
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
'use strict'
|
||||
|
||||
const { ipcRenderer } = require('electron')
|
||||
const ipcRenderer = require('@electron/internal/renderer/ipc-renderer-internal')
|
||||
const Event = require('@electron/internal/renderer/extensions/event')
|
||||
const url = require('url')
|
||||
|
||||
|
@ -43,12 +43,12 @@ class Port {
|
|||
disconnect () {
|
||||
if (this.disconnected) return
|
||||
|
||||
ipcRenderer.sendToAll(this.tabId, `CHROME_PORT_DISCONNECT_${this.portId}`)
|
||||
ipcRenderer._sendInternalToAll(this.tabId, `CHROME_PORT_DISCONNECT_${this.portId}`)
|
||||
this._onDisconnect()
|
||||
}
|
||||
|
||||
postMessage (message) {
|
||||
ipcRenderer.sendToAll(this.tabId, `CHROME_PORT_POSTMESSAGE_${this.portId}`, message)
|
||||
ipcRenderer._sendInternalToAll(this.tabId, `CHROME_PORT_POSTMESSAGE_${this.portId}`, message)
|
||||
}
|
||||
|
||||
_onDisconnect () {
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
'use strict'
|
||||
|
||||
const { ipcRenderer } = require('electron')
|
||||
const ipcRenderer = require('@electron/internal/renderer/ipc-renderer-internal')
|
||||
const { runInThisContext } = require('vm')
|
||||
|
||||
// Check whether pattern matches.
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
// Does not implement predefined messages:
|
||||
// https://developer.chrome.com/extensions/i18n#overview-predefined
|
||||
|
||||
const { ipcRenderer } = require('electron')
|
||||
const ipcRenderer = require('@electron/internal/renderer/ipc-renderer-internal')
|
||||
const fs = require('fs')
|
||||
const path = require('path')
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
'use strict'
|
||||
|
||||
const Event = require('@electron/internal/renderer/extensions/event')
|
||||
const { ipcRenderer } = require('electron')
|
||||
const ipcRenderer = require('@electron/internal/renderer/ipc-renderer-internal')
|
||||
|
||||
class WebNavigation {
|
||||
constructor () {
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
'use strict'
|
||||
|
||||
const events = require('events')
|
||||
const { EventEmitter } = require('events')
|
||||
const path = require('path')
|
||||
const Module = require('module')
|
||||
|
||||
|
@ -22,10 +22,11 @@ globalPaths.push(path.join(__dirname, 'api', 'exports'))
|
|||
// The global variable will be used by ipc for event dispatching
|
||||
const v8Util = process.atomBinding('v8_util')
|
||||
|
||||
v8Util.setHiddenValue(global, 'ipc', new events.EventEmitter())
|
||||
v8Util.setHiddenValue(global, 'ipc', new EventEmitter())
|
||||
v8Util.setHiddenValue(global, 'ipc-internal', new EventEmitter())
|
||||
|
||||
// Use electron module after everything is ready.
|
||||
const { ipcRenderer } = require('electron')
|
||||
const ipcRenderer = require('@electron/internal/renderer/ipc-renderer-internal')
|
||||
|
||||
require('@electron/internal/renderer/web-frame-init')()
|
||||
|
||||
|
|
26
lib/renderer/ipc-renderer-internal.js
Normal file
26
lib/renderer/ipc-renderer-internal.js
Normal file
|
@ -0,0 +1,26 @@
|
|||
'use strict'
|
||||
|
||||
const binding = process.atomBinding('ipc')
|
||||
const v8Util = process.atomBinding('v8_util')
|
||||
|
||||
// Created by init.js.
|
||||
const ipcRenderer = v8Util.getHiddenValue(global, 'ipc-internal')
|
||||
const internal = true
|
||||
|
||||
ipcRenderer.send = function (...args) {
|
||||
return binding.send('ipc-internal-message', args)
|
||||
}
|
||||
|
||||
ipcRenderer.sendSync = function (...args) {
|
||||
return binding.sendSync('ipc-internal-message-sync', args)[0]
|
||||
}
|
||||
|
||||
ipcRenderer.sendTo = function (webContentsId, channel, ...args) {
|
||||
return binding.sendTo(internal, false, webContentsId, channel, args)
|
||||
}
|
||||
|
||||
ipcRenderer.sendToAll = function (webContentsId, channel, ...args) {
|
||||
return binding.sendTo(internal, true, webContentsId, channel, args)
|
||||
}
|
||||
|
||||
module.exports = ipcRenderer
|
|
@ -1,6 +1,6 @@
|
|||
'use strict'
|
||||
|
||||
const { ipcRenderer } = require('electron')
|
||||
const ipcRenderer = require('@electron/internal/renderer/ipc-renderer-internal')
|
||||
|
||||
const { guestInstanceId, openerId } = process
|
||||
const hiddenPage = process.argv.includes('--hidden-page')
|
||||
|
|
|
@ -264,7 +264,7 @@ const logSecurityWarnings = function (webPreferences, nodeIntegration) {
|
|||
}
|
||||
|
||||
const getWebPreferences = function () {
|
||||
const { ipcRenderer } = require('electron')
|
||||
const ipcRenderer = require('@electron/internal/renderer/ipc-renderer-internal')
|
||||
const errorUtils = require('@electron/internal/common/error-utils')
|
||||
|
||||
const [ error, result ] = ipcRenderer.sendSync('ELECTRON_BROWSER_GET_LAST_WEB_PREFERENCES')
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
'use strict'
|
||||
|
||||
const { ipcRenderer, webFrame } = require('electron')
|
||||
const { webFrame } = require('electron')
|
||||
const ipcRenderer = require('@electron/internal/renderer/ipc-renderer-internal')
|
||||
const errorUtils = require('@electron/internal/common/error-utils')
|
||||
|
||||
module.exports = () => {
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
'use strict'
|
||||
|
||||
const { ipcRenderer, webFrame } = require('electron')
|
||||
const { webFrame } = require('electron')
|
||||
const ipcRenderer = require('@electron/internal/renderer/ipc-renderer-internal')
|
||||
|
||||
let requestId = 0
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
'use strict'
|
||||
|
||||
const { ipcRenderer } = require('electron')
|
||||
const ipcRenderer = require('@electron/internal/renderer/ipc-renderer-internal')
|
||||
const WebViewImpl = require('@electron/internal/renderer/web-view/web-view')
|
||||
const webViewConstants = require('@electron/internal/renderer/web-view/web-view-constants')
|
||||
const errorUtils = require('@electron/internal/common/error-utils')
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
'use strict'
|
||||
|
||||
const { ipcRenderer, remote, webFrame } = require('electron')
|
||||
const { remote, webFrame } = require('electron')
|
||||
|
||||
const v8Util = process.atomBinding('v8_util')
|
||||
const ipcRenderer = require('@electron/internal/renderer/ipc-renderer-internal')
|
||||
const guestViewInternal = require('@electron/internal/renderer/web-view/guest-view-internal')
|
||||
const webViewConstants = require('@electron/internal/renderer/web-view/web-view-constants')
|
||||
const errorUtils = require('@electron/internal/common/error-utils')
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue