diff --git a/shell/browser/electron_browser_client.cc b/shell/browser/electron_browser_client.cc index fdb358018bb2..c47ac92dce62 100644 --- a/shell/browser/electron_browser_client.cc +++ b/shell/browser/electron_browser_client.cc @@ -951,9 +951,9 @@ void ElectronBrowserClient::RenderProcessReady( void ElectronBrowserClient::RenderProcessExited( content::RenderProcessHost* host, const content::ChildProcessTerminationInfo& info) { - if (delegate_) { + if (delegate_) static_cast(delegate_)->RenderProcessExited(host); - } + host->RemoveObserver(this); } void OnOpenExternal(const GURL& escaped_url, bool allowed) { diff --git a/spec-main/api-web-contents-spec.ts b/spec-main/api-web-contents-spec.ts index 55b6790a186f..2efeaeb52f99 100644 --- a/spec-main/api-web-contents-spec.ts +++ b/spec-main/api-web-contents-spec.ts @@ -1330,6 +1330,13 @@ describe('webContents module', () => { w.webContents.reload(); expect(w.webContents.isCrashed()).to.equal(false); }); + + it('does not crash when a new page is loaded after forcefullyCrashRenderer()', async () => { + expect(w.webContents.isCrashed()).to.equal(false); + w.webContents.forcefullyCrashRenderer(); + await w.loadFile(path.join(fixturesPath, 'pages', 'base-page.html')); + expect(w.webContents.isCrashed()).to.equal(false); + }); }); }