From 8dbdb0a75e6268c30ee5ecab30d909139592858d Mon Sep 17 00:00:00 2001 From: Devin Binnie <52460000+devinbinnie@users.noreply.github.com> Date: Thu, 9 Feb 2023 09:04:02 -0500 Subject: [PATCH] [MM-50409] Stop the main window from creating its own uncontrolled child windows (#2549) --- src/main/windows/windowManager.test.js | 7 +++++++ src/main/windows/windowManager.ts | 3 +++ 2 files changed, 10 insertions(+) diff --git a/src/main/windows/windowManager.test.js b/src/main/windows/windowManager.test.js index f9ae84d9..77751b2f 100644 --- a/src/main/windows/windowManager.test.js +++ b/src/main/windows/windowManager.test.js @@ -165,17 +165,24 @@ describe('main/windows/windowManager', () => { const window = { on: jest.fn(), once: jest.fn(), + webContents: { + setWindowOpenHandler: jest.fn(), + }, }; createMainWindow.mockReturnValue(window); windowManager.showMainWindow(); expect(windowManager.mainWindow).toBe(window); expect(window.on).toHaveBeenCalled(); + expect(window.webContents.setWindowOpenHandler).toHaveBeenCalled(); }); it('should open deep link when provided', () => { const window = { on: jest.fn(), once: jest.fn(), + webContents: { + setWindowOpenHandler: jest.fn(), + }, }; createMainWindow.mockReturnValue(window); windowManager.showMainWindow('mattermost://server-1.com/subpath'); diff --git a/src/main/windows/windowManager.ts b/src/main/windows/windowManager.ts index 2f79935d..317b560a 100644 --- a/src/main/windows/windowManager.ts +++ b/src/main/windows/windowManager.ts @@ -215,6 +215,9 @@ export class WindowManager { this.mainWindow.on('enter-full-screen', () => this.sendToRenderer('enter-full-screen')); this.mainWindow.on('leave-full-screen', () => this.sendToRenderer('leave-full-screen')); + // Should not allow the main window to generate a window of its own + this.mainWindow.webContents.setWindowOpenHandler(() => ({action: 'deny'})); + if (process.env.MM_DEBUG_SETTINGS) { this.mainWindow.webContents.openDevTools({mode: 'detach'}); }