diff --git a/src/main/windows/callsWidgetWindow.test.js b/src/main/windows/callsWidgetWindow.test.js index dc6a615b..862d1c9a 100644 --- a/src/main/windows/callsWidgetWindow.test.js +++ b/src/main/windows/callsWidgetWindow.test.js @@ -74,6 +74,17 @@ jest.mock('../utils', () => ({ composeUserAgent: jest.fn(), })); +const mockContextMenuReload = jest.fn(); +const mockContextMenuDispose = jest.fn(); +jest.mock('../contextMenu', () => { + return jest.fn().mockImplementation(() => { + return { + reload: mockContextMenuReload, + dispose: mockContextMenuDispose, + }; + }); +}); + describe('main/windows/callsWidgetWindow', () => { describe('onShow', () => { const callsWidgetWindow = new CallsWidgetWindow(); @@ -385,8 +396,11 @@ describe('main/windows/callsWidgetWindow', () => { }, id: 'webContentsId', getURL: () => ('http://myurl.com'), + removeListener: jest.fn(), }, + off: jest.fn(), loadURL: jest.fn(), + isDestroyed: jest.fn(() => false), }; const callsWidgetWindow = new CallsWidgetWindow(); @@ -395,6 +409,7 @@ describe('main/windows/callsWidgetWindow', () => { expect(WebContentsEventManager.addWebContentsEventListeners).toHaveBeenCalledWith(popOut.webContents); expect(redirectListener).toBeDefined(); expect(frameFinishedLoadListener).toBeDefined(); + expect(mockContextMenuReload).toHaveBeenCalledTimes(1); const event = {preventDefault: jest.fn()}; redirectListener(event); @@ -405,6 +420,7 @@ describe('main/windows/callsWidgetWindow', () => { closedListener(); expect(callsWidgetWindow.popOut).not.toBeDefined(); + expect(mockContextMenuDispose).toHaveBeenCalled(); }); it('getViewURL', () => { diff --git a/src/main/windows/callsWidgetWindow.ts b/src/main/windows/callsWidgetWindow.ts index 823ed4f2..60a8a2b4 100644 --- a/src/main/windows/callsWidgetWindow.ts +++ b/src/main/windows/callsWidgetWindow.ts @@ -43,6 +43,8 @@ import type { CallsWidgetWindowConfig, } from 'types/calls'; +import ContextMenu from '../contextMenu'; + const log = new Logger('CallsWidgetWindow'); export class CallsWidgetWindow { @@ -294,8 +296,12 @@ export class CallsWidgetWindow { event.preventDefault(); }); + const contextMenu = new ContextMenu({}, this.popOut); + contextMenu.reload(); + this.popOut.on('closed', () => { delete this.popOut; + contextMenu.dispose(); }); // Set the userAgent so that the widget's popout is considered a desktop window in the webapp code.