Skip to content

Commit

Permalink
chore: remove deprecated crashed and renderer-process-crashed events
Browse files Browse the repository at this point in the history
  • Loading branch information
miniak committed Oct 10, 2023
1 parent 2c88626 commit 1c55e40
Show file tree
Hide file tree
Showing 10 changed files with 36 additions and 91 deletions.
15 changes: 0 additions & 15 deletions docs/api/app.md
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down
14 changes: 0 additions & 14 deletions docs/api/web-contents.md
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down
8 changes: 0 additions & 8 deletions docs/api/webview-tag.md
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down
30 changes: 30 additions & 0 deletions docs/breaking-changes.md
Original file line number Diff line number Diff line change
Expand Up @@ -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`
Expand Down
4 changes: 0 additions & 4 deletions lib/browser/api/app.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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'];
});
4 changes: 0 additions & 4 deletions lib/browser/api/web-contents.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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);

Expand Down
1 change: 0 additions & 1 deletion lib/browser/web-view-events.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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: [],
Expand Down
21 changes: 0 additions & 21 deletions spec/api-app-spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -527,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({
Expand Down
24 changes: 0 additions & 24 deletions spec/api-web-contents-spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2344,30 +2344,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 () => {
Expand Down
6 changes: 6 additions & 0 deletions spec/ts-smoke/electron/main.ts
Original file line number Diff line number Diff line change
Expand Up @@ -432,6 +432,9 @@ app.exit(0);
// @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

Expand Down Expand Up @@ -1296,6 +1299,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

Expand Down

0 comments on commit 1c55e40

Please sign in to comment.