From 430a9226dc37f059b15d44fa2e89d3b1f8bb5509 Mon Sep 17 00:00:00 2001 From: kkapsner Date: Sun, 17 Aug 2014 23:32:23 +0200 Subject: [PATCH] Separated invisible and visible canvas asking --- AllowIcon.png | Bin 0 -> 7902 bytes AskIcon.png | Bin 0 -> 7808 bytes data/inject.js | 89 ++++++++++++++++++++++++++++++++-------- lib/main.js | 28 ++++++++++++- locale/de-DE.properties | 20 +++++++++ locale/en-US.properties | 20 +++++++++ package.json | 15 +++---- 7 files changed, 146 insertions(+), 26 deletions(-) create mode 100644 AllowIcon.png create mode 100644 AskIcon.png create mode 100644 locale/de-DE.properties create mode 100644 locale/en-US.properties diff --git a/AllowIcon.png b/AllowIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..dec1c1d8503ef0e95817b663b1b3c7d321564655 GIT binary patch literal 7902 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 OQRHP*q)R1V2K^7#19A=k literal 0 HcmV?d00001 diff --git a/AskIcon.png b/AskIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..c929448c84cb6627a3a85fa5e8d7da374320edf1 GIT binary patch literal 7808 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 literal 0 HcmV?d00001 diff --git a/data/inject.js b/data/inject.js index 0c4cd8b..8056e68 100644 --- a/data/inject.js +++ b/data/inject.js @@ -16,6 +16,7 @@ function block(force){ unsafeWindow.HTMLCanvasElement.prototype.getContext = null; } } + function ask(force){ if (force || !checkPDF("ask")){ // console.log("ask"); @@ -28,23 +29,69 @@ function ask(force){ enumerabe: false } ); - unsafeWindow.HTMLCanvasElement.prototype.getContext = new unsafeWindow.Function(function(){ - var oldBorder = this.style.border; - this.style.border = "2px dashed red"; - var confirmText = - this.parentNode? - "Do you want to allow the red bordered ?": - "Do you want to allow an invisibe ?"; - var allow = confirm(confirmText); - this.style.border = oldBorder; - if (allow){ - this.getContext = this["askFunctionName"]; - return this["askFunctionName"].apply(this, arguments); + unsafeWindow.HTMLCanvasElement.prototype.getContext = new unsafeWindow.Function( + function(){ + if (this.parentNode){ + var oldBorder = this.style.border; + this.style.border = "2px dashed red"; + var confirmText = "askForPermission"; + var allow = confirm(confirmText); + this.style.border = oldBorder; + if (allow){ + this.getContext = this["askFunctionName"]; + return this["askFunctionName"].apply(this, arguments); + } + else { + this.getContext = null; + return null; + } + } + else { + return null; + } + }.toString() + .replace(/^function\s*\(\)\s*\{|\}\s*$/g, "") + .replace(/askFunctionName/g, askFunctionName) + .replace(/askForPermission/g, _("askForPermission")) + ); + } +} +function askInvisible(force){ + if (force || !checkPDF("askInvisible")){ + // console.log("ask"); + + Object.defineProperty( + unsafeWindow.HTMLCanvasElement.prototype, + askFunctionName, + { + value: getContext, + enumerabe: false } - else { - return null; - } - }.toString().replace(/^function\s*\(\)\s*\{|\}\s*$/g, "").replace(/askFunctionName/g, askFunctionName)); + ); + unsafeWindow.HTMLCanvasElement.prototype.getContext = new unsafeWindow.Function( + function(){ + var oldBorder = this.style.border; + this.style.border = "2px dashed red"; + var confirmText = + this.parentNode? + "askForPermission": + "askForInvisiblePermission"; + var allow = confirm(confirmText); + this.style.border = oldBorder; + if (allow){ + this.getContext = this["askFunctionName"]; + return this["askFunctionName"].apply(this, arguments); + } + else { + this.getContext = null; + return null; + } + }.toString() + .replace(/^function\s*\(\)\s*\{|\}\s*$/g, "") + .replace(/askFunctionName/g, askFunctionName) + .replace(/askForPermission/g, _("askForPermission")) + .replace(/askForInvisiblePermission/g, _("askForInvisiblePermission")) + ); } } function unblock(){ @@ -52,8 +99,16 @@ function unblock(){ unsafeWindow.HTMLCanvasElement.prototype.getContext = getContext; } -ask(); +var _ = function(name){ + return _[name] || name; +} +self.port.on("setTranslation", function(name, translation){ + _[name] = translation; +}); + +block(); self.port.on("block", block); self.port.on("ask", ask); +self.port.on("askInvisible", askInvisible); self.port.on("unblock", unblock); self.port.on("detach", unblock); \ No newline at end of file diff --git a/lib/main.js b/lib/main.js index 2f2b1cb..a946fe5 100644 --- a/lib/main.js +++ b/lib/main.js @@ -34,7 +34,9 @@ var pageMod = require("sdk/page-mod"); var preferences = require("sdk/simple-prefs"); var prefs = preferences.prefs; var {URL} = require("sdk/url"); +var _ = require("sdk/l10n").get; +// preferences var whiteList; function updateWhiteList(){ whiteList = getDomainRegExpList(prefs.whiteList); @@ -55,6 +57,7 @@ preferences.on("blackList", function(){ workers.forEach(checkWorker); }); + var workers = []; function detachWorker(worker, workerArray) { var index = workerArray.indexOf(worker); @@ -83,7 +86,12 @@ function checkWorker(worker){ } else { if (prefs.askPermission){ - worker.port.emit("ask"); + if (prefs.askInvisiblePermission){ + worker.port.emit("askInvisible"); + } + else { + worker.port.emit("ask"); + } } else { worker.port.emit("block"); @@ -96,6 +104,7 @@ function checkWorker(worker){ preferences.on("blockAll", function(){ if (prefs.blockAll){ prefs.askPermission = false; + prefs.askInsiviblePermission = false; } workers.forEach(checkWorker); }); @@ -103,6 +112,16 @@ preferences.on("askPermission", function(){ if (prefs.askPermission){ prefs.blockAll = false; } + else { + prefs.askInvisiblePermission = false; + } + workers.forEach(checkWorker); +}); +preferences.on("askInvisiblePermission", function(){ + if (prefs.askInvisiblePermission){ + prefs.askPermission = true; + prefs.blockAll = false; + } workers.forEach(checkWorker); }); preferences.on("allowPDFCanvas", function(){ @@ -115,12 +134,14 @@ pageMod.PageMod({ contentScriptWhen: "start", contentScriptFile: self.data.url("inject.js"), onAttach: function(worker){ - checkWorker(worker); workers.push(worker); worker.on("detach", function(){ detachWorker(this, workers); }); + worker.port.on("getTranslation", function(name){ + worker.port.emit("setTranslation", name, _.apply(null, arguments)); + }); worker.port.on("isPDF", function(blocking){ if (prefs.allowPDFCanvas){ worker.port.emit("unblock"); @@ -129,5 +150,8 @@ pageMod.PageMod({ worker.port.emit(blocking, true); } }); + worker.port.emit("setTranslation", "askForPermission", _("askForPermission")); + worker.port.emit("setTranslation", "askForInvisiblePermission", _("askForInvisiblePermission")); + checkWorker(worker); }, }); \ No newline at end of file diff --git a/locale/de-DE.properties b/locale/de-DE.properties new file mode 100644 index 0000000..377dacb --- /dev/null +++ b/locale/de-DE.properties @@ -0,0 +1,20 @@ +whilteList_title= Whitelist +whiteList_description= Domänen oder URLs, die die -API verwenden dürfen. Mehrere Einträge müssen durch ein Komma getrennt weren. + +blockAll_title= Alles blockieren +blockAll_description= Ob immer alles blockiert werden soll (ignoriert die Whitelist). + +blackList_title= Blacklist +blackList_description= Domänen oder URLs, die die -API niemals verwenden dürfen. Mehrere Einträge müssen durch ein Komma getrennt weren. + +askPermission_title= Um Erlaubnis fragen +askPermission_description= Ob man gefragt werden soll, ob ein sichtbares -Element blockiert werden soll oder nicht, wenn die Domäne oder URL weder auf der Whitelist noch auf der Blacklist steht. + +askInvisiblePermission_title= Bei verstecken Elementen um Erlaubnis fragen +askInvisiblePermission_description= Ob man gefragt werden soll, ob ein verstecktes -Element blockiert werden soll oder nicht, wenn die Domäne oder URL weder auf der Whitelist noch auf der Blacklist steht. + +allowPDFCanvas_title= in PDFs erlauben +allowPDFCanvas_description= Die native pdf.js verwendet um den Inhalt von PDFs anzuzeigen. Wenn dies nicht markiert ist, werden viele Nachfragedialoge erscheinen oder die PDF Ansicht nicht funktionieren. + +askForPermission= Wollen Sie das rot umrandete erlauben? +askForInvisiblePermission= Wollen Sie ein verstecktes erlauben? \ No newline at end of file diff --git a/locale/en-US.properties b/locale/en-US.properties new file mode 100644 index 0000000..c876eb0 --- /dev/null +++ b/locale/en-US.properties @@ -0,0 +1,20 @@ +whilteList_title= White list +whiteList_description= Domains or URLs where the -API should not be blocked. To add multiple entries seperate them by comma. + +blockAll_title= Block everything +blockAll_description= If you want to block everything (ignore the white list). + +blackList_title= Black list +blackList_description= Domains or URLs where the -API should always be blocked. To add multiple entries seperate them by comma. + +askPermission_title= Ask for permission +askPermission_description= If you want to be asked if you want to block a visible canvas element if the domain or URL is neither in the white or black list. + +askInvisiblePermission_title= Ask for permission for invisible elements +askInvisiblePermission_description= If you want to be asked if you want to block an invisible canvas element if the domain or URL is neither in the white or black list. + +allowPDFCanvas_title= Allow canvas in PDFs +allowPDFCanvas_description= The native pdf.js uses to display the PDF content. If this is unchecked there will lots of annoying ask dialogs or the PDF display will not work. + +askForPermission= Do you want to allow the red bordered ? +askForInvisiblePermission= Do you want to allow an invisibe ? \ No newline at end of file diff --git a/package.json b/package.json index 4066943..bab5f49 100644 --- a/package.json +++ b/package.json @@ -7,41 +7,42 @@ { "name": "whiteList", "title": "White list", - "description": "Domains where the -API should not be blocked. To add multiple domains seperate them by comma.", "type": "string", "value": "kkapsner.de,^https?://(\\\\w+\\\\.)*google.[a-z]+/maps" }, { "name": "blockAll", "title": "Block everything", - "description": "If you want to block everything (ignore the white list).", "type": "bool", "value": false }, { "name": "blackList", "title": "Black list", - "description": "Domains where the -API should always be blocked. To add multiple domains seperate them by comma.", "type": "string", "value": "" }, { "name": "askPermission", "title": "Ask for permission", - "description": "If you want to be asked if you want to block a canvas element if the domain is neither in the white or black list.", "type": "bool", "value": true }, + { + "name": "askInvisiblePermission", + "title": "Ask for permission for invisible elements", + "type": "bool", + "value": false + }, { "name": "allowPDFCanvas", - "title": "Allow canvas in PDFs.", - "description": "The native pdf.js uses to display the PDF content. If this is unchecked there will lots of annoying ask dialogs.", + "title": "Allow canvas in PDFs", "type": "bool", "value": true } ], "author": "Korbinian Kapsner", "license": "MPL 2.0", - "version": "0.1.2", + "version": "0.1.3", "permissions": {"private-browsing": true} }