1
0
mirror of https://github.com/kkapsner/CanvasBlocker synced 2024-12-22 12:50:36 +01:00

Added indicator for whitelisted tab

First draft for #241
This commit is contained in:
kkapsner 2018-09-06 20:13:16 +02:00
parent aa8b202545
commit 6477572f79
7 changed files with 180 additions and 9 deletions

View File

@ -22,6 +22,7 @@
"prefs",
"spodermenpls",
"webgl",
"whitelisted",
"yfdyh"
],
"cSpell.language": "en,de,en-GB"

View File

@ -13,7 +13,11 @@
"description": ""
},
"browserAction_title_notified": {
"message": "CanvasBlocker \n\nSchutz erfolgreich für:",
"message": " \n\nSchutz erfolgreich für:",
"description": ""
},
"browserAction_title_whitelisted": {
"message": " (APIs erlaubt für {url})",
"description": ""
},
"browserAction_title_protectedAPIs": {

View File

@ -13,7 +13,11 @@
"description": ""
},
"browserAction_title_notified": {
"message": "CanvasBlocker \n\nprotection successful for:",
"message": " \n\nprotection successful for:",
"description": ""
},
"browserAction_title_whitelisted": {
"message": " (APIs whitelisted for {url})",
"description": ""
},
"browserAction_title_protectedAPIs": {

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 15 KiB

View File

@ -65,7 +65,7 @@
notification.show(port.sender.tab.id, url, data["canvasBlocker-notify"].api);
}
if (data.hasOwnProperty("canvasBlocker-clear-page-action")){
notification.hide(port.sender.tab.id);
notification.hide(port.sender.tab.id, url);
}
verbose("got data", data, "from port", port);
});

View File

@ -17,6 +17,27 @@
const lists = require("./lists");
const logging = require("./logging");
function isWhitelisted(url){
if (!(url instanceof URL)){
url = new URL(url);
}
return lists.get("white").match(url) ||
lists.get("sessionWhite").match(url) ||
settings.get("blockMode", url).startsWith("allow");
}
function getBrowserActionIconName(url, notified){
if (isWhitelisted(url)){
return "whitelisted";
}
else if (notified) {
return settings.highlightBrowserAction;
}
else {
return "none";
}
}
const paths = {
pageAction: {
none: "icons/pageAction-printed.svg",
@ -26,7 +47,8 @@
browserAction: {
none: "icons/browserAction-notPrinted.svg",
color: "icons/browserAction-printed.svg",
blink: "icons/browserAction-printedBlink.svg"
blink: "icons/browserAction-printedBlink.svg",
whitelisted: "icons/browserAction-whitelisted.svg"
}
};
@ -52,7 +74,7 @@
}
browser.browserAction.setIcon({
tabId: tabId,
path: paths.browserAction[settings.highlightBrowserAction]
path: paths.browserAction[getBrowserActionIconName(url, true)]
});
let apis = apiMap.get(tabId);
@ -72,13 +94,20 @@
apis.forEach(function(api){
apiList += browser.i18n.getMessage("browserAction_title_protectedAPIs").replace(/{api}/g, api);
});
let browserActionTitle = browser.i18n.getMessage("browserAction_title_default");
if (isWhitelisted(url)){
browserActionTitle += browser.i18n.getMessage("browserAction_title_whitelisted").replace(/{url}/g, url);
}
browserActionTitle += browser.i18n.getMessage("browserAction_title_notified");
browserActionTitle += apiList;
browser.browserAction.setTitle({
tabId: tabId,
title: browser.i18n.getMessage("browserAction_title_notified") + apiList
title: browserActionTitle
});
};
scope.hide = function hideNotification(tabId){
scope.hide = function hideNotification(tabId, url){
logging.notice("Hide page action for tab", tabId);
apiMap.delete(tabId);
browser.pageAction.hide(tabId);
@ -88,15 +117,19 @@
});
browser.browserAction.setIcon({
tabId: tabId,
path: paths.browserAction.none
path: paths.browserAction[getBrowserActionIconName(url, false)]
});
browser.browserAction.setBadgeText({
tabId: tabId,
text: ""
});
let browserActionTitle = browser.i18n.getMessage("browserAction_title_default");
if (isWhitelisted(url)){
browserActionTitle += browser.i18n.getMessage("browserAction_title_whitelisted").replace(/{url}/g, url);
}
browser.browserAction.setTitle({
tabId: tabId,
title: browser.i18n.getMessage("browserAction_title_default")
title: browserActionTitle
});
};

View File

@ -4,6 +4,7 @@ Version 0.5.4:
new features:
- added save/load directly to/from file option
- browser action icon gets grayed out if the page is whitelisted
fixes:
- window and audio API were always blocked when using any of the "block ..." modes