From 5bef67a4689f6ef58412bf6e18e4862ed1be1fa9 Mon Sep 17 00:00:00 2001 From: "trop[bot]" <37223003+trop[bot]@users.noreply.github.com> Date: Mon, 28 Jun 2021 15:24:38 +0900 Subject: [PATCH] fix: stop window.open from hanging when prevented (#29881) * fix: stop window.open from hanging when prevented * add test Co-authored-by: Jeremy Rose --- lib/browser/guest-window-proxy.ts | 1 + spec-main/guest-window-manager-spec.ts | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/lib/browser/guest-window-proxy.ts b/lib/browser/guest-window-proxy.ts index c8f91bfc43e6f..9a6aa1f576676 100644 --- a/lib/browser/guest-window-proxy.ts +++ b/lib/browser/guest-window-proxy.ts @@ -75,6 +75,7 @@ ipcMainInternal.on( const browserWindowOptions = (event.sender as any)._callWindowOpenHandler(event, url, frameName, features); if (event.defaultPrevented) { + event.returnValue = null; return; } const guest = openGuestWindow({ diff --git a/spec-main/guest-window-manager-spec.ts b/spec-main/guest-window-manager-spec.ts index 01f7914d86b26..5cba5eb8a3aa0 100644 --- a/spec-main/guest-window-manager-spec.ts +++ b/spec-main/guest-window-manager-spec.ts @@ -224,6 +224,12 @@ describe('webContents.setWindowOpenHandler', () => { browserWindow.webContents.executeJavaScript("window.open('about:blank') && true"); }); + + it('does not hang parent window when denying window.open', async () => { + browserWindow.webContents.setWindowOpenHandler(() => ({ action: 'deny' })); + browserWindow.webContents.executeJavaScript("window.open('https://127.0.0.1')"); + expect(await browserWindow.webContents.executeJavaScript('42')).to.equal(42); + }); }); } });