diff --git a/webextension/js/background/backgroundLogic.js b/webextension/js/background/backgroundLogic.js index 276aa0a..f535fbb 100644 --- a/webextension/js/background/backgroundLogic.js +++ b/webextension/js/background/backgroundLogic.js @@ -25,13 +25,12 @@ const backgroundLogic = { return false; }, - async deleteContainer(userContextId) { + async deleteContainer(userContextId, removed = false) { await this._closeTabs(userContextId); - await browser.contextualIdentities.remove(this.cookieStoreId(userContextId)); + if (!removed) { + await browser.contextualIdentities.remove(this.cookieStoreId(userContextId)); + } assignManager.deleteContainer(userContextId); - await browser.runtime.sendMessage({ - method: "forgetIdentityAndRefresh" - }); return {done: true, userContextId}; }, @@ -157,13 +156,13 @@ const backgroundLogic = { const cookieStoreId = this.cookieStoreId(userContextId); let tabs; /* if we have no windowId we are going to close all this container (used for deleting) */ - if (windowId) { + if (windowId !== false) { tabs = await browser.tabs.query({ cookieStoreId, windowId }); } else { - await browser.tabs.query({ + tabs = await browser.tabs.query({ cookieStoreId }); } diff --git a/webextension/js/background/messageHandler.js b/webextension/js/background/messageHandler.js index 1c63aa5..1dd1be6 100644 --- a/webextension/js/background/messageHandler.js +++ b/webextension/js/background/messageHandler.js @@ -76,6 +76,13 @@ const messageHandler = { return response; }); + if (browser.contextualIdentities.onRemoved) { + browser.contextualIdentities.onRemoved.addListener(({contextualIdentity}) => { + const userContextId = backgroundLogic.getUserContextIdFromCookieStoreId(contextualIdentity.cookieStoreId); + backgroundLogic.deleteContainer(userContextId, true); + }); + } + // Handles messages from sdk code const port = browser.runtime.connect(); port.onMessage.addListener(m => {