mirror of
https://github.com/kkapsner/CanvasBlocker
synced 2024-06-30 15:02:45 +02:00
54 lines
1.2 KiB
JavaScript
54 lines
1.2 KiB
JavaScript
![]() |
var self = require("sdk/self");
|
||
|
var pageMod = require("sdk/page-mod");
|
||
|
var preferences = require("sdk/simple-prefs");
|
||
|
var prefs = preferences.prefs;
|
||
|
var {URL} = require("sdk/url");
|
||
|
var workers = [];
|
||
|
var whiteList;
|
||
|
updateWhiteList();
|
||
|
|
||
|
function updateWhiteList(){
|
||
|
whiteList = prefs.whiteList.split(",").map(function(entry){
|
||
|
return new RegExp("(?:^|\\.)" + entry.replace(/([\\\+\*\?\[\^\]\$\(\)\{\}\=\!\|\.])/g, "\\$1") + "\\.?$", "i");
|
||
|
});
|
||
|
}
|
||
|
|
||
|
function detachWorker(worker, workerArray) {
|
||
|
var index = workerArray.indexOf(worker);
|
||
|
if (index != -1){
|
||
|
workerArray.splice(index, 1);
|
||
|
}
|
||
|
}
|
||
|
function checkWorker(worker){
|
||
|
var url = new URL(worker.url);
|
||
|
if (prefs.blockAll || !whiteList.some(function(entry){
|
||
|
return url.hostname.match(entry);
|
||
|
})){
|
||
|
worker.port.emit("block");
|
||
|
}
|
||
|
else {
|
||
|
worker.port.emit("unblock");
|
||
|
}
|
||
|
}
|
||
|
|
||
|
preferences.on("whiteList", function(){
|
||
|
updateWhiteList();
|
||
|
workers.forEach(checkWorker);
|
||
|
});
|
||
|
preferences.on("blockAll", function(){
|
||
|
workers.forEach(checkWorker);
|
||
|
});
|
||
|
|
||
|
pageMod.PageMod({
|
||
|
include: "*",
|
||
|
contentScriptWhen: "start",
|
||
|
contentScriptFile: self.data.url("inject.js"),
|
||
|
onAttach: function(worker){
|
||
|
checkWorker(worker);
|
||
|
|
||
|
workers.push(worker);
|
||
|
worker.on("detach", function(){
|
||
|
detachWorker(this, workers);
|
||
|
});
|
||
|
},
|
||
|
});
|