diff --git a/data/inject.js b/data/inject.js index d5867e5..b2f32a2 100644 --- a/data/inject.js +++ b/data/inject.js @@ -10,6 +10,7 @@ }; var blockMode = { getContext: { + name: "getContext", status: "block", askText: { visible: "askForVisiblePermission", @@ -23,6 +24,7 @@ } }, readAPI: { + name: "readAPI", status: "allow", askText: { visible: "askForVisibleReadoutPermission", @@ -196,6 +198,7 @@ appearance.reset(); } } + self.port.emit("accessed " + changedFunction.mode.name, status); switch (status){ case "allow": return original; @@ -242,7 +245,7 @@ // Communication with main.js function checkAbout(){ - return document.location.protocol === "about:"); + return document.location.protocol === "about:"; } function checkPDF(blocking){ diff --git a/lib/main.js b/lib/main.js index ee39930..9bf67fd 100644 --- a/lib/main.js +++ b/lib/main.js @@ -48,6 +48,7 @@ var pageMod = require("sdk/page-mod"); var array = require("sdk/util/array"); var preferences = require("sdk/simple-prefs"); + var prefService = require("sdk/preferences/service"); var prefs = preferences.prefs; var URL = require("sdk/url").URL; var _ = require("sdk/l10n").get; @@ -87,7 +88,7 @@ }); function checkURL(url){ - var url = new URL(url); + url = new URL(url); var mode = "block"; switch (prefs.blockMode){ case "blockEverything": @@ -180,6 +181,56 @@ }); checkWorker(worker); + + // display notifications + worker.port.on("accessed readAPI", function(status){ + switch (status){ + case "fake": + var contentURL = new URL(worker.contentURL); + var url = contentURL.href; + var domain = contentURL.hostname; + var message = "Faked readout on " + url; + + + var notifyBox = gWindow.getNotificationBox(); + var notification = notifiyBox.getNotificationBoxWithValue("fake-readout"); + if (notification){ + notification.label = message; + } + else { + var buttons = [ + { + label: 'whitelist URL', + callback: function(){ + prefs.whiteList += "," + url; + prefService.set("extensions.CanvasBlocker@kkapsner.de.whiteList", prefs.whiteList); + updateWhiteList(); + workers.forEach(checkWorker); + } + }, + { + label: 'whitelist domain', + callback: function(){ + prefs.whiteList += "," + domain; + prefService.set("extensions.CanvasBlocker@kkapsner.de.whiteList", prefs.whiteList); + updateWhiteList(); + workers.forEach(checkWorker); + } + } + ]; + + let priority = box.PRIORITY_WARNING_MEDIUM; + box.appendNotification( + message, + 'fake-readout', + 'chrome://browser/skin/Info.png', + priority, + buttons + ); + } + break; + } + }); }, }); diff --git a/package.json b/package.json index 5ec46bb..1c51a66 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,7 @@ "name": "blockMode", "title": "block mode", "type": "menulist", - "value": "askReadout", + "value": "fakeReadout", "options": [ { "value": "blockEverything",