Assert remote event names
This commit is contained in:
		
					parent
					
						
							
								b04db2e546
							
						
					
				
			
			
				commit
				
					
						45986405b8
					
				
			
		
					 4 changed files with 28 additions and 9 deletions
				
			
		| 
						 | 
				
			
			@ -161,7 +161,7 @@ const rendererMissingErrorMessage = (meta, args, callIntoRenderer) => {
 | 
			
		|||
  })
 | 
			
		||||
 | 
			
		||||
  if (remoteEvents.length > 0) {
 | 
			
		||||
    message += `\nRemote event names: ${remoteEvents.join(' ')}`
 | 
			
		||||
    message += `\nRemote event names: ${remoteEvents.join(', ')}`
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  return message
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -499,12 +499,20 @@ describe('ipc module', function () {
 | 
			
		|||
      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'))
 | 
			
		||||
    })
 | 
			
		||||
  })
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -7,8 +7,9 @@
 | 
			
		|||
      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>
 | 
			
		||||
| 
						 | 
				
			
			@ -249,3 +249,13 @@ ipcMain.on('create-window-with-options-cycle', (event) => {
 | 
			
		|||
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
 | 
			
		||||
  }
 | 
			
		||||
})
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue