Skip to content

Commit 3102a25

Browse files
authored
feat: expose dummy module.exports to the sandboxed preload scripts (electron#39484)
1 parent 90865fa commit 3102a25

File tree

3 files changed

+5
-3
lines changed

3 files changed

+5
-3
lines changed

lib/sandboxed_renderer/init.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -120,15 +120,16 @@ require('@electron/internal/renderer/common-init');
120120
// - `Buffer`: Shim of `Buffer` implementation
121121
// - `global`: The window object, which is aliased to `global` by webpack.
122122
function runPreloadScript (preloadSrc: string) {
123-
const preloadWrapperSrc = `(function(require, process, Buffer, global, setImmediate, clearImmediate, exports) {
123+
const preloadWrapperSrc = `(function(require, process, Buffer, global, setImmediate, clearImmediate, exports, module) {
124124
${preloadSrc}
125125
})`;
126126

127127
// eval in window scope
128128
const preloadFn = binding.createPreloadScript(preloadWrapperSrc);
129129
const { setImmediate, clearImmediate } = require('timers');
130+
const exports = {};
130131

131-
preloadFn(preloadRequire, preloadProcess, Buffer, global, setImmediate, clearImmediate, {});
132+
preloadFn(preloadRequire, preloadProcess, Buffer, global, setImmediate, clearImmediate, exports, { exports });
132133
}
133134

134135
for (const { preloadPath, preloadSrc, preloadError } of preloadScripts) {

spec/chromium-spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1186,7 +1186,7 @@ describe('chromium features', () => {
11861186
w.webContents.executeJavaScript('window.child = window.open(); child.opener = null');
11871187
const [, { webContents }] = await once(app, 'browser-window-created');
11881188
const [,, message] = await once(webContents, 'console-message');
1189-
expect(message).to.equal('{"require":"function","module":"undefined","process":"object","Buffer":"function"}');
1189+
expect(message).to.equal('{"require":"function","module":"object","exports":"object","process":"object","Buffer":"function"}');
11901190
});
11911191

11921192
it('disables the <webview> tag when it is disabled on the parent window', async () => {

spec/fixtures/module/preload.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
const types = {
22
require: typeof require,
33
module: typeof module,
4+
exports: typeof exports,
45
process: typeof process,
56
Buffer: typeof Buffer
67
};

0 commit comments

Comments
 (0)