})
if (remoteEvents.length > 0) {
- message += `\nRemote event names: ${remoteEvents.join(' ')}`
+ message += `\nRemote event names: ${remoteEvents.join(', ')}`
}
return message
w = new BrowserWindow({
show: false
})
- w.loadURL('file://' + path.join(fixtures, 'api', 'reload-page.html'))
- setTimeout(() => {
- assert.throws(() => w.webContents.emit('remote-handler'),
- /Attempting to call a function in a renderer window that has been closed or released./)
- done()
- }, 400)
+ w.webContents.once('did-finish-load', () => {
+ w.webContents.once('did-finish-load', () => {
+ const expectedMessage = [
+ 'Attempting to call a function in a renderer window that has been closed or released.',
+ 'Function provided here: remote-event-handler.html:11:33',
+ 'Remote event names: remote-handler, other-remote-handler'
+ ].join('\n')
+ const errorMessage = ipcRenderer.sendSync('try-emit-web-contents-event', w.webContents.id, 'remote-handler')
+ assert.equal(errorMessage, expectedMessage)
+ done()
+ })
+ w.webContents.reload()
+ })
+ w.loadURL('file://' + path.join(fixtures, 'api', 'remote-event-handler.html'))
})
})
const {remote} = require('electron')
const browserWindow = remote.getCurrentWindow()
- browserWindow.webContents.on('remote-handler', () => { })
- browserWindow.reload()
+ const handler = () => {}
+ browserWindow.webContents.on('remote-handler', handler)
+ browserWindow.webContents.on('other-remote-handler', handler)
</script>
</head>
<body>
ipcMain.on('prevent-next-new-window', (event, id) => {
webContents.fromId(id).once('new-window', event => event.preventDefault())
})
+
+ipcMain.on('try-emit-web-contents-event', (event, id, eventName) => {
+ const contents = webContents.fromId(id)
+ try {
+ contents.emit(eventName, {sender: contents})
+ event.returnValue = null
+ } catch (error) {
+ event.returnValue = error.message
+ }
+})