|
@@ -31,41 +31,24 @@ const ipcRenderer = require('@electron/internal/renderer/ipc-renderer-internal')
|
|
|
require('@electron/internal/renderer/web-frame-init')()
|
|
|
|
|
|
// Process command line arguments.
|
|
|
-let nodeIntegration = false
|
|
|
-let webviewTag = false
|
|
|
-let contextIsolation = false
|
|
|
-let preloadScript = null
|
|
|
-let preloadScripts = []
|
|
|
-let isBackgroundPage = false
|
|
|
-let appPath = null
|
|
|
-let guestInstanceId = null
|
|
|
-let openerId = null
|
|
|
-for (const arg of process.argv) {
|
|
|
- if (arg.indexOf('--guest-instance-id=') === 0) {
|
|
|
- // This is a guest web view.
|
|
|
- guestInstanceId = parseInt(arg.substr(arg.indexOf('=') + 1))
|
|
|
- } else if (arg.indexOf('--opener-id=') === 0) {
|
|
|
- // This is a guest BrowserWindow.
|
|
|
- openerId = parseInt(arg.substr(arg.indexOf('=') + 1))
|
|
|
- } else if (arg.indexOf('--node-integration=') === 0) {
|
|
|
- nodeIntegration = arg.substr(arg.indexOf('=') + 1) === 'true'
|
|
|
- } else if (arg.indexOf('--preload=') === 0) {
|
|
|
- preloadScript = arg.substr(arg.indexOf('=') + 1)
|
|
|
- } else if (arg === '--background-page') {
|
|
|
- isBackgroundPage = true
|
|
|
- } else if (arg.indexOf('--app-path=') === 0) {
|
|
|
- appPath = arg.substr(arg.indexOf('=') + 1)
|
|
|
- } else if (arg.indexOf('--webview-tag=') === 0) {
|
|
|
- webviewTag = arg.substr(arg.indexOf('=') + 1) === 'true'
|
|
|
- } else if (arg === '--context-isolation') {
|
|
|
- contextIsolation = true
|
|
|
- } else if (arg.indexOf('--preload-scripts') === 0) {
|
|
|
- preloadScripts = arg.substr(arg.indexOf('=') + 1).split(path.delimiter)
|
|
|
- }
|
|
|
+const { hasSwitch, getSwitchValue } = process.atomBinding('command_line')
|
|
|
+
|
|
|
+const parseOption = function (name, defaultValue, converter = value => value) {
|
|
|
+ return hasSwitch(name) ? converter(getSwitchValue(name)) : defaultValue
|
|
|
}
|
|
|
|
|
|
-const hiddenPage = process.argv.includes('--hidden-page')
|
|
|
-const usesNativeWindowOpen = process.argv.includes('--native-window-open')
|
|
|
+const contextIsolation = hasSwitch('context-isolation')
|
|
|
+let nodeIntegration = hasSwitch('node-integration')
|
|
|
+const webviewTag = hasSwitch('webview-tag')
|
|
|
+const isHiddenPage = hasSwitch('hidden-page')
|
|
|
+const isBackgroundPage = hasSwitch('background-page')
|
|
|
+const usesNativeWindowOpen = hasSwitch('native-window-open')
|
|
|
+
|
|
|
+const preloadScript = parseOption('preload', null)
|
|
|
+const preloadScripts = parseOption('preload-scripts', [], value => value.split(path.delimiter))
|
|
|
+const appPath = parseOption('app-path', null)
|
|
|
+const guestInstanceId = parseOption('guest-instance-id', null, value => parseInt(value))
|
|
|
+const openerId = parseOption('opener-id', null, value => parseInt(value))
|
|
|
|
|
|
// The webContents preload script is loaded after the session preload scripts.
|
|
|
if (preloadScript) {
|
|
@@ -74,7 +57,7 @@ if (preloadScript) {
|
|
|
|
|
|
// Pass the arguments to isolatedWorld.
|
|
|
if (contextIsolation) {
|
|
|
- const isolatedWorldArgs = { ipcRenderer, guestInstanceId, hiddenPage, openerId, usesNativeWindowOpen }
|
|
|
+ const isolatedWorldArgs = { ipcRenderer, guestInstanceId, isHiddenPage, openerId, usesNativeWindowOpen }
|
|
|
v8Util.setHiddenValue(global, 'isolated-world-args', isolatedWorldArgs)
|
|
|
}
|
|
|
|
|
@@ -91,7 +74,7 @@ if (window.location.protocol === 'chrome-devtools:') {
|
|
|
nodeIntegration = false
|
|
|
} else {
|
|
|
// Override default web functions.
|
|
|
- require('@electron/internal/renderer/window-setup')(ipcRenderer, guestInstanceId, openerId, hiddenPage, usesNativeWindowOpen)
|
|
|
+ require('@electron/internal/renderer/window-setup')(ipcRenderer, guestInstanceId, openerId, isHiddenPage, usesNativeWindowOpen)
|
|
|
|
|
|
// Inject content scripts.
|
|
|
require('@electron/internal/renderer/content-scripts-injector')
|