Handle proxy and nativeMessaging permission disabling + enabling

This commit is contained in:
Lesley Norton 2021-11-29 16:16:46 -06:00
parent ed63f18cf1
commit 1b165aebb5
No known key found for this signature in database
GPG key ID: E98FBAEE3F13956E
5 changed files with 30 additions and 11 deletions

View file

@ -382,6 +382,13 @@ window.assignManager = {
return currentContainerState && currentContainerState.isIsolated; return currentContainerState && currentContainerState.isIsolated;
}, },
maybeAddProxyListeners() {
if (browser.proxy) {
browser.proxy.onRequest.addListener(this.handleProxifiedRequest, {urls: ["<all_urls>"]});
}
return;
},
init() { init() {
browser.contextMenus.onClicked.addListener((info, tab) => { browser.contextMenus.onClicked.addListener((info, tab) => {
info.bookmarkId ? info.bookmarkId ?
@ -390,7 +397,7 @@ window.assignManager = {
}); });
// Before anything happens we decide if the request should be proxified // Before anything happens we decide if the request should be proxified
browser.proxy.onRequest.addListener(this.handleProxifiedRequest, {urls: ["<all_urls>"]}); this.maybeAddProxyListeners();
// Before a request is handled by the browser we decide if we should // Before a request is handled by the browser we decide if we should
// route through a different container // route through a different container

View file

@ -91,6 +91,9 @@ const messageHandler = {
true true
); );
break; break;
case "maybeAddProxyListeners":
response = await assignManager.maybeAddProxyListeners();
break;
case "assignAndReloadInContainer": case "assignAndReloadInContainer":
tab = await assignManager.reloadPageInContainer( tab = await assignManager.reloadPageInContainer(
m.url, m.url,

View file

@ -251,6 +251,19 @@ const MozillaVPN = {
randomInteger = (randomInteger - server.weight); randomInteger = (randomInteger - server.weight);
} }
return nextServer; 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);
}
}
} }
}; };

View file

@ -14,20 +14,14 @@ document.querySelectorAll("[data-permission-id]").forEach( async(el) => {
} else { } else {
await browser.permissions.remove({ permissions: [permissionId] }); await browser.permissions.remove({ permissions: [permissionId] });
} }
switch (permissionId) { switch (permissionId) {
case "bookmarks": case "bookmarks":
browser.runtime.sendMessage({ method: "resetBookmarksContext" }); return await browser.runtime.sendMessage({ method: "resetBookmarksContext" });
break;
case "nativeMessaging": case "nativeMessaging":
console.log("do native messaging things"); await MozillaVPN.removeMozillaVpnProxies();
console.log("if disabled - remove mozilla vpn proxy configurations"); return await browser.runtime.reload();
break;
case "proxy": case "proxy":
console.log("do proxy things..."); return await browser.runtime.sendMessage({ method: "maybeAddProxyListeners" });
console.log("if disabled - remove proxy configurations");
} }
}); });
}); });

View file

@ -4,6 +4,8 @@
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<script type="text/javascript" src="./js/i18n.js"></script> <script type="text/javascript" src="./js/i18n.js"></script>
<script type="text/javascript" src="./js/mozillaVpn.js"></script>
<script type="text/javascript" src="./js/proxified-containers.js"></script>
<link rel="stylesheet" href="css/options.css"> <link rel="stylesheet" href="css/options.css">
</head> </head>