diff --git a/src/js/background/assignManager.js b/src/js/background/assignManager.js index fd2ff5c..e699fb3 100644 --- a/src/js/background/assignManager.js +++ b/src/js/background/assignManager.js @@ -382,6 +382,13 @@ window.assignManager = { return currentContainerState && currentContainerState.isIsolated; }, + maybeAddProxyListeners() { + if (browser.proxy) { + browser.proxy.onRequest.addListener(this.handleProxifiedRequest, {urls: [""]}); + } + return; + }, + init() { browser.contextMenus.onClicked.addListener((info, tab) => { info.bookmarkId ? @@ -390,7 +397,7 @@ window.assignManager = { }); // Before anything happens we decide if the request should be proxified - browser.proxy.onRequest.addListener(this.handleProxifiedRequest, {urls: [""]}); + this.maybeAddProxyListeners(); // Before a request is handled by the browser we decide if we should // route through a different container diff --git a/src/js/background/messageHandler.js b/src/js/background/messageHandler.js index 37182bb..883186a 100644 --- a/src/js/background/messageHandler.js +++ b/src/js/background/messageHandler.js @@ -91,6 +91,9 @@ const messageHandler = { true ); break; + case "maybeAddProxyListeners": + response = await assignManager.maybeAddProxyListeners(); + break; case "assignAndReloadInContainer": tab = await assignManager.reloadPageInContainer( m.url, diff --git a/src/js/mozillaVpn.js b/src/js/mozillaVpn.js index 767f584..0cb4a37 100644 --- a/src/js/mozillaVpn.js +++ b/src/js/mozillaVpn.js @@ -251,6 +251,19 @@ const MozillaVPN = { randomInteger = (randomInteger - server.weight); } return nextServer; + }, + + async removeMozillaVpnProxies() { + const proxies = await proxifiedContainers.retrieveAll(); + if (!proxies) { + return; + } + for (const proxyObj of proxies) { + const { proxy } = proxyObj; + if (proxy.countryCode !== undefined) { + await proxifiedContainers.delete(proxyObj.cookieStoreId); + } + } } }; diff --git a/src/js/options.js b/src/js/options.js index cd78400..c0c89dd 100644 --- a/src/js/options.js +++ b/src/js/options.js @@ -14,20 +14,14 @@ document.querySelectorAll("[data-permission-id]").forEach( async(el) => { } else { await browser.permissions.remove({ permissions: [permissionId] }); } - switch (permissionId) { case "bookmarks": - browser.runtime.sendMessage({ method: "resetBookmarksContext" }); - break; - + return await browser.runtime.sendMessage({ method: "resetBookmarksContext" }); case "nativeMessaging": - console.log("do native messaging things"); - console.log("if disabled - remove mozilla vpn proxy configurations"); - break; - + await MozillaVPN.removeMozillaVpnProxies(); + return await browser.runtime.reload(); case "proxy": - console.log("do proxy things..."); - console.log("if disabled - remove proxy configurations"); + return await browser.runtime.sendMessage({ method: "maybeAddProxyListeners" }); } }); }); diff --git a/src/options.html b/src/options.html index 3a7ceee..62f3f57 100644 --- a/src/options.html +++ b/src/options.html @@ -4,6 +4,8 @@ + +