diff --git a/webextension/js/background/backgroundLogic.js b/webextension/js/background/backgroundLogic.js index 2fd5c5c..65aaee5 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}; }, @@ -158,13 +157,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 23d2e6a..5f51019 100644 --- a/webextension/js/background/messageHandler.js +++ b/webextension/js/background/messageHandler.js @@ -75,6 +75,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 => {