chore: remove deprecated crashed and renderer-process-crashed events (#40115)
		
	This commit is contained in:
		
					parent
					
						
							
								09bab60a9e
							
						
					
				
			
			
				commit
				
					
						657e88b173
					
				
			
		
					 10 changed files with 36 additions and 93 deletions
				
			
		| 
						 | 
				
			
			@ -391,21 +391,6 @@ which contains more information about why the child process disappeared. It
 | 
			
		|||
isn't always because it crashed. The `killed` boolean can be replaced by
 | 
			
		||||
checking `reason === 'killed'` when you switch to that event.
 | 
			
		||||
 | 
			
		||||
### Event: 'renderer-process-crashed' _Deprecated_
 | 
			
		||||
 | 
			
		||||
Returns:
 | 
			
		||||
 | 
			
		||||
* `event` Event
 | 
			
		||||
* `webContents` [WebContents](web-contents.md)
 | 
			
		||||
* `killed` boolean
 | 
			
		||||
 | 
			
		||||
Emitted when the renderer process of `webContents` crashes or is killed.
 | 
			
		||||
 | 
			
		||||
**Deprecated:** This event is superceded by the `render-process-gone` event
 | 
			
		||||
which contains more information about why the render process disappeared. It
 | 
			
		||||
isn't always because it crashed.  The `killed` boolean can be replaced by
 | 
			
		||||
checking `reason === 'killed'` when you switch to that event.
 | 
			
		||||
 | 
			
		||||
### Event: 'render-process-gone'
 | 
			
		||||
 | 
			
		||||
Returns:
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -460,20 +460,6 @@ win.webContents.on('will-prevent-unload', (event) => {
 | 
			
		|||
 | 
			
		||||
**Note:** This will be emitted for `BrowserViews` but will _not_ be respected - this is because we have chosen not to tie the `BrowserView` lifecycle to its owning BrowserWindow should one exist per the [specification](https://developer.mozilla.org/en-US/docs/Web/API/Window/beforeunload_event).
 | 
			
		||||
 | 
			
		||||
#### Event: 'crashed' _Deprecated_
 | 
			
		||||
 | 
			
		||||
Returns:
 | 
			
		||||
 | 
			
		||||
* `event` Event
 | 
			
		||||
* `killed` boolean
 | 
			
		||||
 | 
			
		||||
Emitted when the renderer process crashes or is killed.
 | 
			
		||||
 | 
			
		||||
**Deprecated:** This event is superceded by the `render-process-gone` event
 | 
			
		||||
which contains more information about why the render process disappeared. It
 | 
			
		||||
isn't always because it crashed.  The `killed` boolean can be replaced by
 | 
			
		||||
checking `reason === 'killed'` when you switch to that event.
 | 
			
		||||
 | 
			
		||||
#### Event: 'render-process-gone'
 | 
			
		||||
 | 
			
		||||
Returns:
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -986,14 +986,6 @@ ipcRenderer.on('ping', () => {
 | 
			
		|||
})
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
### Event: 'crashed' _Deprecated_
 | 
			
		||||
 | 
			
		||||
Fired when the renderer process crashes or is killed.
 | 
			
		||||
 | 
			
		||||
**Deprecated:** This event is superceded by the `render-process-gone` event
 | 
			
		||||
which contains more information about why the render process disappeared. It
 | 
			
		||||
isn't always because it crashed.
 | 
			
		||||
 | 
			
		||||
### Event: 'render-process-gone'
 | 
			
		||||
 | 
			
		||||
Returns:
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -12,6 +12,36 @@ This document uses the following convention to categorize breaking changes:
 | 
			
		|||
* **Deprecated:** An API was marked as deprecated. The API will continue to function, but will emit a deprecation warning, and will be removed in a future release.
 | 
			
		||||
* **Removed:** An API or feature was removed, and is no longer supported by Electron.
 | 
			
		||||
 | 
			
		||||
## Planned Breaking API Changes (29.0)
 | 
			
		||||
 | 
			
		||||
### Removed: `renderer-process-crashed` event on `app`
 | 
			
		||||
 | 
			
		||||
The `renderer-process-crashed` event on `app` has been removed.
 | 
			
		||||
Use the new `render-process-gone` event instead.
 | 
			
		||||
 | 
			
		||||
```js
 | 
			
		||||
// Removed
 | 
			
		||||
app.on('renderer-process-crashed', (event, webContents, killed) => { /* ... */ })
 | 
			
		||||
 | 
			
		||||
// Replace with
 | 
			
		||||
app.on('render-process-gone', (event, webContents, details) => { /* ... */ })
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
### Removed: `crashed` event on `WebContents` and `<webview>`
 | 
			
		||||
 | 
			
		||||
The `crashed` events on `WebContents` and `<webview>` have been removed.
 | 
			
		||||
Use the new `render-process-gone` event instead.
 | 
			
		||||
 | 
			
		||||
```js
 | 
			
		||||
// Removed
 | 
			
		||||
win.webContents.on('crashed', (event, killed) => { /* ... */ })
 | 
			
		||||
webview.addEventListener('crashed', (event) => { /* ... */ })
 | 
			
		||||
 | 
			
		||||
// Replace with
 | 
			
		||||
win.webContents.on('render-process-gone', (event, details) => { /* ... */ })
 | 
			
		||||
webview.addEventListener('render-process-gone', (event) => { /* ... */ })
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
## Planned Breaking API Changes (28.0)
 | 
			
		||||
 | 
			
		||||
### Behavior Changed: `WebContents.backgroundThrottling` set to false affects all `WebContents` in the host `BrowserWindow`
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -118,7 +118,3 @@ deprecate.event(app, 'gpu-process-crashed', 'child-process-gone', () => {
 | 
			
		|||
  // the old event is still emitted by App::OnGpuProcessCrashed()
 | 
			
		||||
  return undefined;
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
deprecate.event(app, 'renderer-process-crashed', 'render-process-gone', (event: Electron.Event, webContents: Electron.WebContents, details: Electron.RenderProcessGoneDetails) => {
 | 
			
		||||
  return [event, webContents, details.reason === 'killed'];
 | 
			
		||||
});
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -665,10 +665,6 @@ WebContents.prototype._init = function () {
 | 
			
		|||
    ipcMain.emit(channel, event, message);
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  deprecate.event(this, 'crashed', 'render-process-gone', (event: Electron.Event, details: Electron.RenderProcessGoneDetails) => {
 | 
			
		||||
    return [event, details.reason === 'killed'];
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  this.on('render-process-gone', (event, details) => {
 | 
			
		||||
    app.emit('render-process-gone', event, this, details);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -21,7 +21,6 @@ export const webViewEvents: Record<string, readonly string[]> = {
 | 
			
		|||
  'did-navigate-in-page': ['url', 'isMainFrame', 'frameProcessId', 'frameRoutingId'],
 | 
			
		||||
  '-focus-change': ['focus'],
 | 
			
		||||
  close: [],
 | 
			
		||||
  crashed: [],
 | 
			
		||||
  'render-process-gone': ['details'],
 | 
			
		||||
  'plugin-crashed': ['name', 'version'],
 | 
			
		||||
  destroyed: [],
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -9,7 +9,6 @@ import { promisify } from 'node:util';
 | 
			
		|||
import { app, BrowserWindow, Menu, session, net as electronNet, WebContents } from 'electron/main';
 | 
			
		||||
import { closeWindow, closeAllWindows } from './lib/window-helpers';
 | 
			
		||||
import { ifdescribe, ifit, listen, waitUntil } from './lib/spec-helpers';
 | 
			
		||||
import { expectDeprecationMessages } from './lib/deprecate-helpers';
 | 
			
		||||
import { once } from 'node:events';
 | 
			
		||||
import split = require('split')
 | 
			
		||||
import * as semver from 'semver';
 | 
			
		||||
| 
						 | 
				
			
			@ -528,27 +527,6 @@ describe('app module', () => {
 | 
			
		|||
      expect(webContents.id).to.equal(w.webContents.id);
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    // FIXME: re-enable this test on win32.
 | 
			
		||||
    ifit(process.platform !== 'win32')('should emit renderer-process-crashed event when renderer crashes', async () => {
 | 
			
		||||
      w = new BrowserWindow({
 | 
			
		||||
        show: false,
 | 
			
		||||
        webPreferences: {
 | 
			
		||||
          nodeIntegration: true,
 | 
			
		||||
          contextIsolation: false
 | 
			
		||||
        }
 | 
			
		||||
      });
 | 
			
		||||
      await w.loadURL('about:blank');
 | 
			
		||||
 | 
			
		||||
      expectDeprecationMessages(async () => {
 | 
			
		||||
        const emitted = once(app, 'renderer-process-crashed') as Promise<[any, WebContents, boolean]>;
 | 
			
		||||
        w.webContents.executeJavaScript('process.crash()');
 | 
			
		||||
 | 
			
		||||
        const [, webContents, killed] = await emitted;
 | 
			
		||||
        expect(webContents).to.equal(w.webContents);
 | 
			
		||||
        expect(killed).to.be.false();
 | 
			
		||||
      }, '\'renderer-process-crashed event\' is deprecated and will be removed. Please use \'render-process-gone event\' instead.');
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    // FIXME: re-enable this test on win32.
 | 
			
		||||
    ifit(process.platform !== 'win32')('should emit render-process-gone event when renderer crashes', async () => {
 | 
			
		||||
      w = new BrowserWindow({
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -6,7 +6,6 @@ import * as http from 'node:http';
 | 
			
		|||
import { BrowserWindow, ipcMain, webContents, session, app, BrowserView, WebContents } from 'electron/main';
 | 
			
		||||
import { closeAllWindows } from './lib/window-helpers';
 | 
			
		||||
import { ifdescribe, defer, waitUntil, listen, ifit } from './lib/spec-helpers';
 | 
			
		||||
import { expectDeprecationMessages } from './lib/deprecate-helpers';
 | 
			
		||||
import { once } from 'node:events';
 | 
			
		||||
import { setTimeout } from 'node:timers/promises';
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -2344,30 +2343,6 @@ describe('webContents module', () => {
 | 
			
		|||
    });
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  describe('crashed event', () => {
 | 
			
		||||
    it('does not crash main process when destroying WebContents in it', (done) => {
 | 
			
		||||
      const contents = (webContents as typeof ElectronInternal.WebContents).create({ nodeIntegration: true });
 | 
			
		||||
      contents.once('crashed', () => {
 | 
			
		||||
        contents.destroy();
 | 
			
		||||
        done();
 | 
			
		||||
      });
 | 
			
		||||
      contents.loadURL('about:blank').then(() => contents.forcefullyCrashRenderer());
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    it('logs a warning', async () => {
 | 
			
		||||
      const contents = (webContents as typeof ElectronInternal.WebContents).create({ nodeIntegration: true });
 | 
			
		||||
      await contents.loadURL('about:blank');
 | 
			
		||||
 | 
			
		||||
      expectDeprecationMessages(async () => {
 | 
			
		||||
        const crashEvent = once(contents, 'crashed');
 | 
			
		||||
        contents.forcefullyCrashRenderer();
 | 
			
		||||
        const [, killed] = await crashEvent;
 | 
			
		||||
 | 
			
		||||
        expect(killed).to.be.a('boolean');
 | 
			
		||||
      }, '\'crashed event\' is deprecated and will be removed. Please use \'render-process-gone event\' instead.');
 | 
			
		||||
    });
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  describe('context-menu event', () => {
 | 
			
		||||
    afterEach(closeAllWindows);
 | 
			
		||||
    it('emits when right-clicked in page', async () => {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -437,6 +437,9 @@ app.configureHostResolver({ secureDnsMode: 'foo' });
 | 
			
		|||
// @ts-expect-error Removed API
 | 
			
		||||
console.log(app.runningUnderRosettaTranslation);
 | 
			
		||||
 | 
			
		||||
// @ts-expect-error Removed API
 | 
			
		||||
app.on('renderer-process-crashed', () => {});
 | 
			
		||||
 | 
			
		||||
// auto-updater
 | 
			
		||||
// https://github.com/electron/electron/blob/main/docs/api/auto-updater.md
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1306,6 +1309,9 @@ win4.webContents.on('scroll-touch-edge', () => {});
 | 
			
		|||
// @ts-expect-error Removed API
 | 
			
		||||
win4.webContents.on('scroll-touch-end', () => {});
 | 
			
		||||
 | 
			
		||||
// @ts-expect-error Removed API
 | 
			
		||||
win4.webContents.on('crashed', () => {});
 | 
			
		||||
 | 
			
		||||
// TouchBar
 | 
			
		||||
// https://github.com/electron/electron/blob/main/docs/api/touch-bar.md
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue