|
@@ -67,7 +67,7 @@ ipcNative.onExit = function () {
|
|
|
}
|
|
|
|
|
|
const {
|
|
|
- preloadSrc, preloadError, isRemoteModuleEnabled, process: processProps
|
|
|
+ preloadScripts, isRemoteModuleEnabled, process: processProps
|
|
|
} = ipcRenderer.sendSync('ELECTRON_BROWSER_SANDBOX_LOAD')
|
|
|
|
|
|
const makePropertyNonConfigurable = function (object, name) {
|
|
@@ -131,6 +131,8 @@ if (!process.guestInstanceId && preloadProcess.argv.includes('--webview-tag=true
|
|
|
require('@electron/internal/renderer/web-view/web-view').setupWebView(window)
|
|
|
}
|
|
|
|
|
|
+const errorUtils = require('@electron/internal/common/error-utils')
|
|
|
+
|
|
|
// Wrap the script into a function executed in global scope. It won't have
|
|
|
// access to the current scope, so we'll expose a few objects as arguments:
|
|
|
//
|
|
@@ -150,7 +152,7 @@ if (!process.guestInstanceId && preloadProcess.argv.includes('--webview-tag=true
|
|
|
// and any `require('electron')` calls in `preload.js` will work as expected
|
|
|
// since browserify won't try to include `electron` in the bundle, falling back
|
|
|
// to the `preloadRequire` function above.
|
|
|
-if (preloadSrc) {
|
|
|
+function runPreloadScript (preloadSrc) {
|
|
|
const preloadWrapperSrc = `(function(require, process, Buffer, global, setImmediate, clearImmediate) {
|
|
|
${preloadSrc}
|
|
|
})`
|
|
@@ -158,9 +160,21 @@ if (preloadSrc) {
|
|
|
// eval in window scope
|
|
|
const preloadFn = binding.createPreloadScript(preloadWrapperSrc)
|
|
|
const { setImmediate, clearImmediate } = require('timers')
|
|
|
+
|
|
|
preloadFn(preloadRequire, preloadProcess, Buffer, global, setImmediate, clearImmediate)
|
|
|
-} else if (preloadError) {
|
|
|
- console.error(preloadError.stack)
|
|
|
+}
|
|
|
+
|
|
|
+for (const { preloadPath, preloadSrc, preloadError } of preloadScripts) {
|
|
|
+ try {
|
|
|
+ if (preloadSrc) {
|
|
|
+ runPreloadScript(preloadSrc)
|
|
|
+ } else if (preloadError) {
|
|
|
+ throw errorUtils.deserialize(preloadError)
|
|
|
+ }
|
|
|
+ } catch (error) {
|
|
|
+ console.error(`Unable to load preload script: ${preloadPath}`)
|
|
|
+ console.error(`${error}`)
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
// Warn about security issues
|