chore: remove deprecated crashed and renderer-process-crashed events (#40115)

This commit is contained in:
Milan Burda 2023-10-18 12:05:41 +02:00 committed by GitHub
parent 09bab60a9e
commit 657e88b173
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
10 changed files with 36 additions and 93 deletions

View file

@ -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 isn't always because it crashed. The `killed` boolean can be replaced by
checking `reason === 'killed'` when you switch to that event. 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' ### Event: 'render-process-gone'
Returns: Returns:

View file

@ -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). **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' #### Event: 'render-process-gone'
Returns: Returns:

View file

@ -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' ### Event: 'render-process-gone'
Returns: Returns:

View file

@ -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. * **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. * **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) ## Planned Breaking API Changes (28.0)
### Behavior Changed: `WebContents.backgroundThrottling` set to false affects all `WebContents` in the host `BrowserWindow` ### Behavior Changed: `WebContents.backgroundThrottling` set to false affects all `WebContents` in the host `BrowserWindow`

View file

@ -118,7 +118,3 @@ deprecate.event(app, 'gpu-process-crashed', 'child-process-gone', () => {
// the old event is still emitted by App::OnGpuProcessCrashed() // the old event is still emitted by App::OnGpuProcessCrashed()
return undefined; 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'];
});

View file

@ -665,10 +665,6 @@ WebContents.prototype._init = function () {
ipcMain.emit(channel, event, message); 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) => { this.on('render-process-gone', (event, details) => {
app.emit('render-process-gone', event, this, details); app.emit('render-process-gone', event, this, details);

View file

@ -21,7 +21,6 @@ export const webViewEvents: Record<string, readonly string[]> = {
'did-navigate-in-page': ['url', 'isMainFrame', 'frameProcessId', 'frameRoutingId'], 'did-navigate-in-page': ['url', 'isMainFrame', 'frameProcessId', 'frameRoutingId'],
'-focus-change': ['focus'], '-focus-change': ['focus'],
close: [], close: [],
crashed: [],
'render-process-gone': ['details'], 'render-process-gone': ['details'],
'plugin-crashed': ['name', 'version'], 'plugin-crashed': ['name', 'version'],
destroyed: [], destroyed: [],

View file

@ -9,7 +9,6 @@ import { promisify } from 'node:util';
import { app, BrowserWindow, Menu, session, net as electronNet, WebContents } from 'electron/main'; import { app, BrowserWindow, Menu, session, net as electronNet, WebContents } from 'electron/main';
import { closeWindow, closeAllWindows } from './lib/window-helpers'; import { closeWindow, closeAllWindows } from './lib/window-helpers';
import { ifdescribe, ifit, listen, waitUntil } from './lib/spec-helpers'; import { ifdescribe, ifit, listen, waitUntil } from './lib/spec-helpers';
import { expectDeprecationMessages } from './lib/deprecate-helpers';
import { once } from 'node:events'; import { once } from 'node:events';
import split = require('split') import split = require('split')
import * as semver from 'semver'; import * as semver from 'semver';
@ -528,27 +527,6 @@ describe('app module', () => {
expect(webContents.id).to.equal(w.webContents.id); 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. // FIXME: re-enable this test on win32.
ifit(process.platform !== 'win32')('should emit render-process-gone event when renderer crashes', async () => { ifit(process.platform !== 'win32')('should emit render-process-gone event when renderer crashes', async () => {
w = new BrowserWindow({ w = new BrowserWindow({

View file

@ -6,7 +6,6 @@ import * as http from 'node:http';
import { BrowserWindow, ipcMain, webContents, session, app, BrowserView, WebContents } from 'electron/main'; import { BrowserWindow, ipcMain, webContents, session, app, BrowserView, WebContents } from 'electron/main';
import { closeAllWindows } from './lib/window-helpers'; import { closeAllWindows } from './lib/window-helpers';
import { ifdescribe, defer, waitUntil, listen, ifit } from './lib/spec-helpers'; import { ifdescribe, defer, waitUntil, listen, ifit } from './lib/spec-helpers';
import { expectDeprecationMessages } from './lib/deprecate-helpers';
import { once } from 'node:events'; import { once } from 'node:events';
import { setTimeout } from 'node:timers/promises'; 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', () => { describe('context-menu event', () => {
afterEach(closeAllWindows); afterEach(closeAllWindows);
it('emits when right-clicked in page', async () => { it('emits when right-clicked in page', async () => {

View file

@ -437,6 +437,9 @@ app.configureHostResolver({ secureDnsMode: 'foo' });
// @ts-expect-error Removed API // @ts-expect-error Removed API
console.log(app.runningUnderRosettaTranslation); console.log(app.runningUnderRosettaTranslation);
// @ts-expect-error Removed API
app.on('renderer-process-crashed', () => {});
// auto-updater // auto-updater
// https://github.com/electron/electron/blob/main/docs/api/auto-updater.md // 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 // @ts-expect-error Removed API
win4.webContents.on('scroll-touch-end', () => {}); win4.webContents.on('scroll-touch-end', () => {});
// @ts-expect-error Removed API
win4.webContents.on('crashed', () => {});
// TouchBar // TouchBar
// https://github.com/electron/electron/blob/main/docs/api/touch-bar.md // https://github.com/electron/electron/blob/main/docs/api/touch-bar.md