|
@@ -21,23 +21,23 @@ for (let prop of Object.keys(events.EventEmitter.prototype)) {
|
|
|
Object.setPrototypeOf(process, events.EventEmitter.prototype)
|
|
|
|
|
|
const electron = require('electron')
|
|
|
+const fs = require('fs')
|
|
|
const preloadModules = new Map([
|
|
|
- ['electron', electron]
|
|
|
+ ['child_process', require('child_process')],
|
|
|
+ ['electron', electron],
|
|
|
+ ['fs', fs],
|
|
|
+ ['os', require('os')],
|
|
|
+ ['url', require('url')],
|
|
|
+ ['timers', require('timers')]
|
|
|
])
|
|
|
|
|
|
-const extraModules = [
|
|
|
- 'fs'
|
|
|
-]
|
|
|
-for (let extraModule of extraModules) {
|
|
|
- preloadModules.set(extraModule, electron.remote.require(extraModule))
|
|
|
-}
|
|
|
-
|
|
|
-// Fetch the preload script using the "fs" module proxy.
|
|
|
-let preloadSrc = preloadModules.get('fs').readFileSync(preloadPath).toString()
|
|
|
+const preloadSrc = fs.readFileSync(preloadPath).toString()
|
|
|
|
|
|
// Pass different process object to the preload script(which should not have
|
|
|
// access to things like `process.atomBinding`).
|
|
|
const preloadProcess = new events.EventEmitter()
|
|
|
+preloadProcess.platform = electron.remote.process.platform
|
|
|
+preloadProcess.crash = () => binding.crash()
|
|
|
process.on('exit', () => preloadProcess.emit('exit'))
|
|
|
|
|
|
// This is the `require` function that will be visible to the preload script
|
|
@@ -67,12 +67,13 @@ function preloadRequire (module) {
|
|
|
// 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.
|
|
|
-let preloadWrapperSrc = `(function(require, process, Buffer, global) {
|
|
|
+const preloadWrapperSrc = `(function(require, process, Buffer, global, setImmediate) {
|
|
|
${preloadSrc}
|
|
|
})`
|
|
|
|
|
|
// eval in window scope:
|
|
|
// http://www.ecma-international.org/ecma-262/5.1/#sec-10.4.2
|
|
|
const geval = eval
|
|
|
-let preloadFn = geval(preloadWrapperSrc)
|
|
|
-preloadFn(preloadRequire, preloadProcess, Buffer, global)
|
|
|
+const preloadFn = geval(preloadWrapperSrc)
|
|
|
+const {setImmediate} = require('timers')
|
|
|
+preloadFn(preloadRequire, preloadProcess, Buffer, global, setImmediate)
|