Add spec for configuring web preferences from sandboxed new-window event

This commit is contained in:
Kevin Sawicki 2017-07-10 16:16:00 -07:00
parent 06e60e5d4d
commit c71b0a5441
4 changed files with 46 additions and 0 deletions

View file

@ -1066,6 +1066,26 @@ describe('BrowserWindow module', function () {
})
})
it('should open windows with the options configured via new-window event listeners', function (done) {
w.destroy()
w = new BrowserWindow({
show: false,
webPreferences: {
sandbox: true
}
})
const preloadPath = path.join(fixtures, 'api', 'new-window-preload.js')
ipcRenderer.send('set-web-preferences-on-next-new-window', w.webContents.id, 'preload', preloadPath)
ipcRenderer.send('set-web-preferences-on-next-new-window', w.webContents.id, 'sandbox', true)
ipcMain.once('answer', (event, args) => {
assert.ok(args.includes('--enable-sandbox'))
assert.ok(args.includes(`--preload=${path.join(fixtures, 'api', 'new-window-preload.js')}`))
done()
})
w.loadURL(`file://${path.join(fixtures, 'api', 'new-window.html')}`)
})
it('should set ipc event sender correctly', function (done) {
w.destroy()
w = new BrowserWindow({

View file

@ -0,0 +1,4 @@
const {ipcRenderer} = require('electron')
ipcRenderer.send('answer', process.argv)
window.close()

14
spec/fixtures/api/new-window.html vendored Normal file
View file

@ -0,0 +1,14 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<script type="text/javascript">
setTimeout(function () {
window.open('http://localhost')
})
</script>
</body>
</html>

View file

@ -264,6 +264,14 @@ ipcMain.on('prevent-next-new-window', (event, id) => {
webContents.fromId(id).once('new-window', event => event.preventDefault())
})
ipcMain.on('set-web-preferences-on-next-new-window', (event, id, key, value) => {
webContents.fromId(id).once('new-window', (event, url, frameName, disposition, options) => {
options.webPreferences[key] = value
console.log('her?', options.webPreferences)
})
})
ipcMain.on('prevent-next-will-attach-webview', (event) => {
event.sender.once('will-attach-webview', event => event.preventDefault())
})