diff --git a/canvasblocker.xpi b/canvasblocker.xpi index 83acd7f..a86403c 100644 Binary files a/canvasblocker.xpi and b/canvasblocker.xpi differ diff --git a/data/inject.js b/data/inject.js index ee0495b..831fb60 100644 --- a/data/inject.js +++ b/data/inject.js @@ -6,7 +6,8 @@ "use strict"; var settings = { - showCallingFile: false + showCallingFile: false, + showCompleteCallingStack: false }; var blockMode = { getContext: { @@ -247,7 +248,7 @@ // Translation var _ = function(name, replace){ - var str = _[name] || name; + var str = self.options.translations[name] || name; if (replace){ Object.keys(replace).forEach(function(name){ str = str.replace(new RegExp("{" + name + "}", "g"), replace[name]); @@ -255,9 +256,6 @@ } return str; }; - self.port.on("setTranslation", function(name, translation){ - _[name] = translation; - }); // Communication with main.js diff --git a/lib/main.js b/lib/main.js index c0766ec..3186f31 100644 --- a/lib/main.js +++ b/lib/main.js @@ -84,11 +84,24 @@ } var workers = []; + var workerTranslations = { + sourceOutput: _("sourceOutput"), + stackEntryOutput: _("stackEntryOutput") + }; + + ["", "Readout"].forEach(function(type){ + ["", "Visible", "Invisible"].forEach(function(visibility){ + var text = "askFor" + visibility + type + "Permission"; + workerTranslations[text] = _(text); + }); + }); + var workerOptions = { blockMode: checkURL(), whiteList: prefs.whiteList, blackList: prefs.blackList, - askOnce: prefs.askOnce + askOnce: prefs.askOnce, + translations: workerTranslations }; preferences.on("blockMode", function(){ workerOptions.blockMode = checkURL(); @@ -118,14 +131,6 @@ worker.on("detach", function(){ array.remove(workers, this); }); - ["", "Readout"].forEach(function(type){ - ["", "Visible", "Invisible"].forEach(function(visibility){ - var text = "askFor" + visibility + type + "Permission"; - worker.port.emit("setTranslation", text, _(text)); - }); - }); - worker.port.emit("setTranslation", "sourceOutput", _("sourceOutput")); - worker.port.emit("setTranslation", "stackEntryOutput", _("stackEntryOutput")); preferencesForInjected.forEach(function(name){ worker.port.emit("set", name, prefs[name]); @@ -160,6 +165,8 @@ accessKey: "", callback: function(){ browser.contentWindow.alert(callingStackMsg); + // only way to prevent closing... see https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XUL/Method/appendNotification#Notification_box_events + throw new Error("Do not close notification."); } }, { @@ -194,14 +201,14 @@ ]; var priority = notifyBox.PRIORITY_WARNING_MEDIUM; - notifyBox.appendNotification( + notification = notifyBox.appendNotification( message, "fake-readout", "chrome://browser/skin/Info.png", priority, buttons ); - } + } } break; }