diff --git a/apps/browser/src/auth/popup/utils/auth-popout-window.ts b/apps/browser/src/auth/popup/utils/auth-popout-window.ts index 8d6e7fa92cd..d1a0e37e61d 100644 --- a/apps/browser/src/auth/popup/utils/auth-popout-window.ts +++ b/apps/browser/src/auth/popup/utils/auth-popout-window.ts @@ -23,6 +23,8 @@ async function openUnlockPopout(senderTab: chrome.tabs.Tab, skipNotification = f const existingPopoutWindowTabs = await BrowserApi.tabsQuery({ windowType: "popup" }); existingPopoutWindowTabs.forEach((tab) => { if (extensionUnlockUrls.has(tab.url)) { + // eslint-disable-next-line no-console + console.log(`Removing window in openUnlockPopout`, senderTab.url, tab.url, tab.windowId); // FIXME: Verify that this floating promise is intentional. If it is, add an explanatory comment and ensure there is proper error handling. // eslint-disable-next-line @typescript-eslint/no-floating-promises BrowserApi.removeWindow(tab.windowId); diff --git a/apps/browser/src/background/runtime.background.ts b/apps/browser/src/background/runtime.background.ts index a5fea0651fc..6760b1eca07 100644 --- a/apps/browser/src/background/runtime.background.ts +++ b/apps/browser/src/background/runtime.background.ts @@ -237,6 +237,8 @@ export default class RuntimeBackground { if (this.lockedVaultPendingNotifications?.length > 0) { item = this.lockedVaultPendingNotifications.pop(); + // eslint-disable-next-line no-console + console.log("closing unlock popout after logging in."); await closeUnlockPopout(); } diff --git a/apps/browser/src/platform/browser/browser-api.ts b/apps/browser/src/platform/browser/browser-api.ts index 293fca4d029..cf86469ea52 100644 --- a/apps/browser/src/platform/browser/browser-api.ts +++ b/apps/browser/src/platform/browser/browser-api.ts @@ -430,6 +430,8 @@ export class BrowserApi { } static closePopup(win: Window) { + // eslint-disable-next-line no-console + console.log("closePopup", win.location.href); if (BrowserApi.isWebExtensionsApi && BrowserApi.isFirefoxOnAndroid) { // Reactivating the active tab dismisses the popup tab. The promise final // condition is only called if the popup wasn't already dismissed (future proofing). diff --git a/apps/browser/src/platform/popup/browser-popup-utils.ts b/apps/browser/src/platform/popup/browser-popup-utils.ts index 33a1ff4016d..1eaefe77f09 100644 --- a/apps/browser/src/platform/popup/browser-popup-utils.ts +++ b/apps/browser/src/platform/popup/browser-popup-utils.ts @@ -173,6 +173,9 @@ class BrowserPopupUtils { continue; } + // eslint-disable-next-line no-console + console.log(`closeSingleActionPopout`, popoutKey, tab.url, tab.windowId); + setTimeout(() => BrowserApi.removeWindow(tab.windowId), delayClose); } } @@ -196,6 +199,8 @@ class BrowserPopupUtils { await BrowserPopupUtils.openPopout(`${parsedUrl.pathname}${hashRoute}`); if (BrowserPopupUtils.inPopup(win)) { + // eslint-disable-next-line no-console + console.log(`Closing popup since we are in a popup '${win.location.href}' '${href}'`); BrowserApi.closePopup(win); } } @@ -238,7 +243,15 @@ class BrowserPopupUtils { }); } - popoutTabs.forEach((tab) => BrowserApi.removeWindow(tab.windowId)); + popoutTabs.forEach((tab) => { + // eslint-disable-next-line no-console + console.log( + "Closing popout tab while checking if isSingleActionPopoutOpen", + tab.url, + tab.windowId, + ); + return BrowserApi.removeWindow(tab.windowId); + }); return true; } diff --git a/apps/browser/src/vault/popup/components/vault-v2/vault-list-items-container/vault-list-items-container.component.ts b/apps/browser/src/vault/popup/components/vault-v2/vault-list-items-container/vault-list-items-container.component.ts index cb758e7a48d..156cb8a31b1 100644 --- a/apps/browser/src/vault/popup/components/vault-v2/vault-list-items-container/vault-list-items-container.component.ts +++ b/apps/browser/src/vault/popup/components/vault-v2/vault-list-items-container/vault-list-items-container.component.ts @@ -320,6 +320,8 @@ export class VaultListItemsContainerComponent implements OnInit, AfterViewInit { await BrowserApi.createNewTab(cipher.login.launchUri); if (BrowserPopupUtils.inPopup(window)) { + // eslint-disable-next-line no-console + console.log("launchCipher", window.location.href); BrowserApi.closePopup(window); } } diff --git a/apps/browser/src/vault/popup/services/vault-popup-autofill.service.ts b/apps/browser/src/vault/popup/services/vault-popup-autofill.service.ts index 41d76078fdb..b16efb1b9e0 100644 --- a/apps/browser/src/vault/popup/services/vault-popup-autofill.service.ts +++ b/apps/browser/src/vault/popup/services/vault-popup-autofill.service.ts @@ -279,6 +279,8 @@ export class VaultPopupAutofillService { }); setTimeout(async () => { await BrowserApi.focusTab(tab.id); + // eslint-disable-next-line no-console + console.log("Closing popout after delay."); await closeViewVaultItemPopout(`${VaultPopoutType.viewVaultItem}_${cipher.id}`); }, 1000); @@ -290,11 +292,15 @@ export class VaultPopupAutofillService { } if (this.platformUtilService.isFirefox() || this.platformUtilService.isSafari()) { + // eslint-disable-next-line no-console + console.log(`Closing popup because firefox/safari ${window.location.href}.`); BrowserApi.closePopup(window); return; } // Slight delay to fix bug in Chromium browsers where popup closes without copying totp to clipboard + // eslint-disable-next-line no-console + console.log(`Closing poup after slight delay for Chromium ${window.location.href}.`); setTimeout(() => BrowserApi.closePopup(window), 50); } diff --git a/apps/browser/src/vault/popup/utils/vault-popout-window.ts b/apps/browser/src/vault/popup/utils/vault-popout-window.ts index 9e347920eb2..e6a9ea8748c 100644 --- a/apps/browser/src/vault/popup/utils/vault-popout-window.ts +++ b/apps/browser/src/vault/popup/utils/vault-popout-window.ts @@ -168,6 +168,8 @@ async function openFido2Popout( * @param sessionId - The session ID of the popout to close. */ async function closeFido2Popout(sessionId: string): Promise { + // eslint-disable-next-line no-console + console.log(`Closing Fido2 popout '${sessionId}'`); await BrowserPopupUtils.closeSingleActionPopout(`${VaultPopoutType.fido2Popout}_${sessionId}`); }