|
@@ -29,7 +29,7 @@ Object.setPrototypeOf(process, EventEmitter.prototype)
|
|
|
const ipcRenderer = require('@electron/internal/renderer/ipc-renderer-internal')
|
|
|
|
|
|
const {
|
|
|
- preloadSrc, preloadError, isRemoteModuleEnabled, isWebViewTagEnabled, process: processProps
|
|
|
+ preloadPath, preloadSrc, preloadError, isRemoteModuleEnabled, isWebViewTagEnabled, process: processProps
|
|
|
} = ipcRenderer.sendSync('ELECTRON_BROWSER_SANDBOX_LOAD')
|
|
|
|
|
|
process.isRemoteModuleEnabled = isRemoteModuleEnabled
|
|
@@ -132,6 +132,8 @@ if (!process.guestInstanceId && isWebViewTagEnabled) {
|
|
|
setupWebView(v8Util, webViewImpl)
|
|
|
}
|
|
|
|
|
|
+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:
|
|
|
//
|
|
@@ -151,7 +153,7 @@ if (!process.guestInstanceId && isWebViewTagEnabled) {
|
|
|
// 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}
|
|
|
})`
|
|
@@ -159,9 +161,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)
|
|
|
+}
|
|
|
+
|
|
|
+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}`)
|
|
|
+
|
|
|
+ ipcRenderer.send('ELECTRON_BROWSER_PRELOAD_ERROR', preloadPath, errorUtils.serialize(error))
|
|
|
}
|
|
|
|
|
|
// Warn about security issues
|