diff --git a/spec/fixtures/module/preload-set-global.js b/spec/fixtures/module/preload-set-global.js new file mode 100644 index 000000000000..6737b06982dc --- /dev/null +++ b/spec/fixtures/module/preload-set-global.js @@ -0,0 +1 @@ +window.foo = 'bar' diff --git a/spec/fixtures/pages/webview-stripped-preload.html b/spec/fixtures/pages/webview-stripped-preload.html new file mode 100644 index 000000000000..ef7e7be2e7ba --- /dev/null +++ b/spec/fixtures/pages/webview-stripped-preload.html @@ -0,0 +1,7 @@ + + + + + diff --git a/spec/static/main.js b/spec/static/main.js index fcfd08b1aea3..bff7d4ceeca3 100644 --- a/spec/static/main.js +++ b/spec/static/main.js @@ -277,6 +277,14 @@ ipcMain.on('disable-node-on-next-will-attach-webview', (event, id) => { }) }) +ipcMain.on('disable-preload-on-next-will-attach-webview', (event, id) => { + event.sender.once('will-attach-webview', (event, webPreferences, params) => { + params.src = `file://${path.join(__dirname, '..', 'fixtures', 'pages', 'webview-stripped-preload.html')}` + delete webPreferences.preload + delete webPreferences.preloadURL + }) +}) + ipcMain.on('try-emit-web-contents-event', (event, id, eventName) => { const consoleWarn = console.warn let warningMessage = null diff --git a/spec/webview-spec.js b/spec/webview-spec.js index d7f6f6528df8..fe0ac0e05589 100644 --- a/spec/webview-spec.js +++ b/spec/webview-spec.js @@ -1140,6 +1140,18 @@ describe(' tag', function () { webview.src = 'file://' + fixtures + '/pages/c.html' document.body.appendChild(webview) }) + + it('supports removing the preload script', (done) => { + ipcRenderer.send('disable-preload-on-next-will-attach-webview') + webview.addEventListener('console-message', (event) => { + assert.equal(event.message, 'undefined') + done() + }) + webview.setAttribute('nodeintegration', 'yes') + webview.setAttribute('preload', path.join(fixtures, 'module', 'preload-set-global.js')) + webview.src = 'file://' + fixtures + '/pages/a.html' + document.body.appendChild(webview) + }) }) it('loads devtools extensions registered on the parent window', function (done) {