refactor: simplify isRemoteModuleEnabled handling in sandboxed renderers (#15961)

This commit is contained in:
Milan Burda 2018-12-05 19:07:56 +01:00 коммит произвёл Shelley Vohr
Родитель ab2a061b59
Коммит 764a10f7c7
3 изменённых файлов: 13 добавлений и 25 удалений

Просмотреть файл

@ -6,7 +6,6 @@ for (const {
name,
load,
enabled = true,
configurable = false,
private: isPrivate = false
} of moduleList) {
if (!enabled) {
@ -14,7 +13,6 @@ for (const {
}
Object.defineProperty(exports, name, {
configurable,
enumerable: !isPrivate,
get: load
})

Просмотреть файл

@ -22,8 +22,8 @@ module.exports = [
},
{
name: 'remote',
configurable: true, // will be configured in init.js
load: () => require('@electron/internal/renderer/api/remote')
load: () => require('@electron/internal/renderer/api/remote'),
enabled: process.isRemoteModuleEnabled
},
{
name: 'webFrame',

Просмотреть файл

@ -7,9 +7,6 @@ const { EventEmitter } = events
process.atomBinding = require('@electron/internal/common/atom-binding-setup')(binding.get, 'renderer')
// The electron module depends on process.atomBinding
const electron = require('electron')
const v8Util = process.atomBinding('v8_util')
// Expose browserify Buffer as a hidden value. This is used by C++ code to
// deserialize Buffer instances sent from browser process.
@ -29,6 +26,17 @@ for (const prop of Object.keys(EventEmitter.prototype)) {
}
Object.setPrototypeOf(process, EventEmitter.prototype)
const ipcRenderer = require('@electron/internal/renderer/ipc-renderer-internal')
const {
preloadSrc, preloadError, isRemoteModuleEnabled, process: processProps
} = ipcRenderer.sendSync('ELECTRON_BROWSER_SANDBOX_LOAD')
process.isRemoteModuleEnabled = isRemoteModuleEnabled
// The electron module depends on process.atomBinding
const electron = require('electron')
const remoteModules = new Set([
'child_process',
'fs',
@ -48,8 +56,6 @@ const loadedModules = new Map([
const ipcNative = process.atomBinding('ipc')
v8Util.setHiddenValue(global, 'ipcNative', ipcNative)
const ipcRenderer = require('@electron/internal/renderer/ipc-renderer-internal')
ipcNative.onInternalMessage = function (channel, args, senderId) {
ipcRenderer.emit(channel, { sender: ipcRenderer, senderId }, ...args)
}
@ -62,22 +68,6 @@ ipcNative.onExit = function () {
process.emit('exit')
}
const {
preloadSrc, preloadError, isRemoteModuleEnabled, process: processProps
} = ipcRenderer.sendSync('ELECTRON_BROWSER_SANDBOX_LOAD')
const makePropertyNonConfigurable = function (object, name) {
const descriptor = Object.getOwnPropertyDescriptor(electron, name)
descriptor.configurable = false
Object.defineProperty(electron, name, descriptor)
}
if (isRemoteModuleEnabled) {
makePropertyNonConfigurable(electron, 'remote')
} else {
delete electron.remote
}
require('@electron/internal/renderer/web-frame-init')()
// Pass different process object to the preload script(which should not have