Browse Source

fix: stop window.open from hanging when prevented (#29881)

* fix: stop window.open from hanging when prevented

* add test

Co-authored-by: Jeremy Rose <[email protected]>
trop[bot] 3 years ago
parent
commit
5bef67a468
2 changed files with 7 additions and 0 deletions
  1. 1 0
      lib/browser/guest-window-proxy.ts
  2. 6 0
      spec-main/guest-window-manager-spec.ts

+ 1 - 0
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({

+ 6 - 0
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);
+      });
     });
   }
 });