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
|
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:
|
||||||
|
|
|
@ -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:
|
||||||
|
|
|
@ -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:
|
||||||
|
|
|
@ -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`
|
||||||
|
|
|
@ -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'];
|
|
||||||
});
|
|
||||||
|
|
|
@ -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);
|
||||||
|
|
||||||
|
|
|
@ -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: [],
|
||||||
|
|
|
@ -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({
|
||||||
|
|
|
@ -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 () => {
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue