From 74dd775f9854165c0adaed3ae52ee417296c0fd6 Mon Sep 17 00:00:00 2001 From: Jay Satiro Date: Sat, 6 Dec 2014 22:38:07 -0500 Subject: [PATCH 1/3] Show caller when asking for readout permission Get stack and show the caller when asking for readout API permission. Related to enhancement request to show source where canvas is nested. https://github.com/kkapsner/CanvasBlocker/issues/8 --- data/inject.js | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/data/inject.js b/data/inject.js index fbb1099..da3bf6b 100644 --- a/data/inject.js +++ b/data/inject.js @@ -101,10 +101,27 @@ status = askStatus.answer; } else { - // console.log("asking"); - status = window.confirm(_(changedFunction.mode.askText))? "allow": "block"; + //unsafeWindow.console.log("asking"); + var callers = new Error().stack.split('\n'); + var findme = callers.shift(); // Remove us from the stack + findme = findme.replace(/(:[0-9]+){1,2}$/, ""); // rm line & column + // Eliminate squashed stack. stack may contain 2+ stacks, but why... + for (var i = 0; callers[i]; i++){ + if (callers[i].search(findme) == 0){ + callers.splice(i, callers.length - i); + break; + } + } + var msg = _(changedFunction.mode.askText); + if (changedFunction.mode.askText === "askForReadoutPermission"){ + msg += "\n\nCaller: " + callers[0]; + // maybe show full stack here if some pref + //msg += "\n\nFull stack: \n" + callers.join('\n'); + } + status = window.confirm(msg) ? "allow": "block"; askStatus.alreadyAsked = true; askStatus.answer = status; + //unsafeWindow.console.log("asking (done)"); } } switch (status){ From a408a736298af4469bda3fbf7864a102a4bf59fb Mon Sep 17 00:00:00 2001 From: kkapsner Date: Wed, 10 Dec 2014 15:58:26 +0100 Subject: [PATCH 2/3] Built with caller display. --- canvasblocker.xpi | Bin 22418 -> 22712 bytes data/inject.js | 22 ++++++++++------------ 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/canvasblocker.xpi b/canvasblocker.xpi index cf95067e3fabbab4f422088e64751c73d57adf79..d00aa0559d04427d1200bd775b06eaae7e026353 100644 GIT binary patch delta 1878 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 Date: Mon, 15 Dec 2014 18:43:47 +0100 Subject: [PATCH 3/3] Added preferences to display caller(s) --- canvasblocker.xpi | Bin 22712 -> 23772 bytes data/inject.js | 45 +++++++++++++++++++++++++++++++++------- lib/main.js | 17 +++++++++++++++ locale/de-DE.properties | 11 +++++++++- locale/en-US.properties | 11 +++++++++- package.json | 12 +++++++++++ 6 files changed, 87 insertions(+), 9 deletions(-) diff --git a/canvasblocker.xpi b/canvasblocker.xpi index d00aa0559d04427d1200bd775b06eaae7e026353..6ada0347a7af62e44a3ab1c16ff77db60f3827fd 100644 GIT binary patch delta 6825 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 mV6W-@kWgWzTNaU}yGy!D5tas}Q-K8p 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 ZO4k4N>3>9x;iYBG)$nid{{a79ueksK diff --git a/data/inject.js b/data/inject.js index a45b194..d479bc6 100644 --- a/data/inject.js +++ b/data/inject.js @@ -2,6 +2,9 @@ (function(){ "use strict"; + var settings = { + showCallingFile: false + }; var blockMode = { getContext: { status: "block", @@ -103,8 +106,8 @@ else { //console.log("asking"); var msg = _(changedFunction.mode.askText); - if (changedFunction.mode.askText === "askForReadoutPermission"){ - var callers = new Error().stack.split('\n'); + if (settings.showCallingFile){ + var callers = new Error().stack.trim().split("\n"); //console.log(callers); var findme = callers.shift(); // Remove us from the stack findme = findme.replace(/(:[0-9]+){1,2}$/, ""); // rm line & column @@ -112,9 +115,15 @@ callers = callers.filter(function(caller){ return caller.search(findme) === -1; }); - msg += "\n\nCaller: " + callers[0]; - // maybe show full stack here if some pref - //msg += "\n\nFull stack: \n" + callers.join('\n'); + msg += "\n\n" + _("sourceOutput") + ": "; + if (settings.showCompleteCallingStack){ + msg += callers.reduce(function(stack, c){ + return stack + "\n\t" + _("stackEntryOutput", parseStackEntry(c)); + }, ""); + } + else{ + msg += _("stackEntryOutput", parseStackEntry(callers[0])); + } } status = window.confirm(msg) ? "allow": "block"; askStatus.alreadyAsked = true; @@ -140,9 +149,26 @@ ); }); + // Stack parsing + function parseStackEntry(entry){ + var m = /@(.*):(\d*):(\d*)$/.exec(entry) || ["", entry, "--", "--"]; + return { + url: m[1], + line: m[2], + column: m[3], + raw: entry + }; + } + // Translation - var _ = function(name){ - return _[name] || name; + var _ = function(name, replace){ + var str = _[name] || name; + if (replace){ + Object.keys(replace).forEach(function(name){ + str = str.replace(new RegExp("{" + name + "}", "g"), replace[name]); + }); + } + return str; }; self.port.on("setTranslation", function(name, translation){ _[name] = translation; @@ -198,4 +224,9 @@ blockMode.getContext.status = "allow"; blockMode.readAPI.status = "allow"; }); + + // settings passthrough + self.port.on("set", function(name, value){ + settings[name] = value; + }); }()); diff --git a/lib/main.js b/lib/main.js index 318e80c..d49e21a 100644 --- a/lib/main.js +++ b/lib/main.js @@ -73,6 +73,16 @@ updateBlackList(); }); + // preferences for injected file + var preferencesForInjected = ["showCallingFile", "showCompleteCallingStack"]; + preferencesForInjected.forEach(function(name){ + preferences.on(name, function(){ + workers.forEach(function(worker){ + worker.port.emit("set", name, prefs[name]); + }); + }); + }); + function checkURL(url){ var url = new URL(url); var mode = "block"; @@ -155,6 +165,13 @@ }); worker.port.emit("setTranslation", "askForPermission", _("askForPermission")); worker.port.emit("setTranslation", "askForReadoutPermission", _("askForReadoutPermission")); + worker.port.emit("setTranslation", "sourceOutput", _("sourceOutput")); + worker.port.emit("setTranslation", "stackEntryOutput", _("stackEntryOutput")); + + preferencesForInjected.forEach(function(name){ + worker.port.emit("set", name, prefs[name]); + }); + checkWorker(worker); }, }); diff --git a/locale/de-DE.properties b/locale/de-DE.properties index 1cf7ed2..0af4d33 100644 --- a/locale/de-DE.properties +++ b/locale/de-DE.properties @@ -19,8 +19,17 @@ blockMode_options.allow everything= alles erlauben askOnlyOnce_title= Nur einmal nachfragen askOnlyOnce_description= Wenn eine Seite öfters versucht, die -API abzurufen, erscheint jedes mal eine Nachfrage. Mit diesem Schalter wird pro Seitenbesuch nur einmal nachgefragt. Bei manchen Seiten kann es trotzdem zu mehrmaligem Nachfragen kommen. +showCallingFile_title= Aufrufende Datei anzeigen +showCallingFile_description= + +showCompleteCallingStack_title= Kompletten Aufrufestack anzeigen +showCompleteCallingStack_description= + 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 erlauben? -askForReadoutPermission= Wollen Sie das Auslesen von erlauben? \ No newline at end of file +askForReadoutPermission= Wollen Sie das Auslesen von erlauben? + +sourceOutput= Aufrufende Datei +stackEntryOutput= {url} Zeile {line} Spalte {column} \ No newline at end of file diff --git a/locale/en-US.properties b/locale/en-US.properties index e989787..267cdac 100644 --- a/locale/en-US.properties +++ b/locale/en-US.properties @@ -19,8 +19,17 @@ blockMode_options.allow everything= allow everything askOnlyOnce_title= Ask only once askOnlyOnce_description= If a page tries to access the -API several times a confirm message will appear every time. This switch tries to make only one confirmation. Never the less on some pages there will be more. +showCallingFile_title= Show calling file +showCallingFile_description= + +showCompleteCallingStack_title= Display complete calling stack +showCompleteCallingStack_description= + 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 ? -askForReadoutPermission= Do you want to allow readout? \ No newline at end of file +askForReadoutPermission= Do you want to allow readout? + +sourceOutput= Calling file +stackEntryOutput= {url} line {line} column {column} \ No newline at end of file diff --git a/package.json b/package.json index db6f712..5200844 100644 --- a/package.json +++ b/package.json @@ -62,6 +62,18 @@ "type": "bool", "value": true }, + { + "name": "showCallingFile", + "title": "Display calling file", + "type": "bool", + "value": false + }, + { + "name": "showCompleteCallingStack", + "title": "Display complete calling stack", + "type": "bool", + "value": false + }, { "name": "allowPDFCanvas", "title": "Allow canvas in PDFs",