diff --git a/src/chrome/content/toolbar_button.js b/src/chrome/content/toolbar_button.js index bcc0f6580..0e90a121d 100644 --- a/src/chrome/content/toolbar_button.js +++ b/src/chrome/content/toolbar_button.js @@ -21,15 +21,22 @@ HTTPSEverywhere = CC["@eff.org/https-everywhere;1"] .wrappedJSObject; // avoid polluting global namespace +// see: https://developer.mozilla.org/en-US/docs/Security_best_practices_in_extensions#Code_wrapping if (!httpsEverywhere) { var httpsEverywhere = {}; } /** - * JS Object for used to display toolbar hints to new users and change toolbar - * UI for cases such as when the toolbar is disabled. + * JS Object that acts as a namespace for the toolbar. * + * Used to display toolbar hints to new users and change toolbar UI for cases + * such as when the toolbar is disabled. */ httpsEverywhere.toolbarButton = { + /** + * Name of preference for determining whether to show ruleset counter. + */ + COUNTER_PREF: "extensions.https_everywhere.show_counter", + /** * Used to determine if a hint has been previously shown. * TODO: Probably extraneous, look into removing @@ -49,6 +56,11 @@ httpsEverywhere.toolbarButton = { // make sure icon is proper color during init tb.changeIcon(); + // make sure the checkbox for showing counter is properly set + var showCounter = tb.shouldShowCounter(); + var counterItem = document.getElementById('https-everywhere-counter-item'); + counterItem.setAttribute('checked', showCounter ? 'true' : 'false'); + // show ruleset counter when a tab is changed tb.updateRulesetsApplied(); gBrowser.tabContainer.addEventListener( @@ -128,7 +140,8 @@ httpsEverywhere.toolbarButton = { updateRulesetsApplied: function() { var toolbarbutton = document.getElementById('https-everywhere-button'); var enabled = HTTPSEverywhere.prefs.getBoolPref("globalEnabled"); - if (!enabled) { + var showCounter = httpsEverywhere.toolbarButton.shouldShowCounter(); + if (!enabled || !showCounter) { toolbarbutton.setAttribute('rulesetsApplied', 0); return; } @@ -155,7 +168,38 @@ httpsEverywhere.toolbarButton = { toolbarbutton.setAttribute('rulesetsApplied', counter); HTTPSEverywhere.log(INFO, 'Setting icon counter to: ' + counter); - } + }, + + /** + * Gets whether to show the rulesets applied counter. + * + * @return {boolean} + */ + shouldShowCounter: function() { + var tb = httpsEverywhere.toolbarButton; + var sp = Services.prefs; + + var prefExists = sp.getPrefType(tb.COUNTER_PREF); + + // the default behavior is to show the rulesets applied counter. + // if no preference exists (default) or its enabled, show the counter + return !prefExists || sp.getBoolPref(tb.COUNTER_PREF); + }, + + /** + * Toggles the user's preference for displaying the rulesets applied counter + * and updates the UI. + */ + toggleShowCounter: function() { + var tb = httpsEverywhere.toolbarButton; + var sp = Services.prefs; + + var showCounter = tb.shouldShowCounter(); + sp.setBoolPref(tb.COUNTER_PREF, !showCounter); + + tb.updateRulesetsApplied(); + } + }; function https_everywhere_load() { diff --git a/src/chrome/content/toolbar_button.xul b/src/chrome/content/toolbar_button.xul index 444faeb36..c3cbed033 100644 --- a/src/chrome/content/toolbar_button.xul +++ b/src/chrome/content/toolbar_button.xul @@ -43,6 +43,9 @@ + + diff --git a/src/chrome/locale/ar/https-everywhere.dtd b/src/chrome/locale/ar/https-everywhere.dtd index b0f391dee..00b898e99 100644 --- a/src/chrome/locale/ar/https-everywhere.dtd +++ b/src/chrome/locale/ar/https-everywhere.dtd @@ -14,6 +14,7 @@ + diff --git a/src/chrome/locale/bg/https-everywhere.dtd b/src/chrome/locale/bg/https-everywhere.dtd index 2673ca359..6bf445fa6 100644 --- a/src/chrome/locale/bg/https-everywhere.dtd +++ b/src/chrome/locale/bg/https-everywhere.dtd @@ -14,6 +14,7 @@ + diff --git a/src/chrome/locale/cs/https-everywhere.dtd b/src/chrome/locale/cs/https-everywhere.dtd index 54d0a78ea..ce1f107a0 100644 --- a/src/chrome/locale/cs/https-everywhere.dtd +++ b/src/chrome/locale/cs/https-everywhere.dtd @@ -14,6 +14,7 @@ + diff --git a/src/chrome/locale/da/https-everywhere.dtd b/src/chrome/locale/da/https-everywhere.dtd index a0b9bea98..83ef71afb 100644 --- a/src/chrome/locale/da/https-everywhere.dtd +++ b/src/chrome/locale/da/https-everywhere.dtd @@ -14,6 +14,7 @@ + diff --git a/src/chrome/locale/de/https-everywhere.dtd b/src/chrome/locale/de/https-everywhere.dtd index 42d9ea8fb..75c863098 100644 --- a/src/chrome/locale/de/https-everywhere.dtd +++ b/src/chrome/locale/de/https-everywhere.dtd @@ -14,6 +14,7 @@ + diff --git a/src/chrome/locale/el/https-everywhere.dtd b/src/chrome/locale/el/https-everywhere.dtd index bc25a528d..f8658cddc 100644 --- a/src/chrome/locale/el/https-everywhere.dtd +++ b/src/chrome/locale/el/https-everywhere.dtd @@ -14,6 +14,7 @@ + diff --git a/src/chrome/locale/en/https-everywhere.dtd b/src/chrome/locale/en/https-everywhere.dtd index 33cd86d2b..9a63c453e 100644 --- a/src/chrome/locale/en/https-everywhere.dtd +++ b/src/chrome/locale/en/https-everywhere.dtd @@ -14,6 +14,7 @@ + diff --git a/src/chrome/locale/es/https-everywhere.dtd b/src/chrome/locale/es/https-everywhere.dtd index 9971a54e2..70456d2a5 100644 --- a/src/chrome/locale/es/https-everywhere.dtd +++ b/src/chrome/locale/es/https-everywhere.dtd @@ -14,6 +14,7 @@ + diff --git a/src/chrome/locale/eu/https-everywhere.dtd b/src/chrome/locale/eu/https-everywhere.dtd index 94d9af5ca..bb7989cb5 100644 --- a/src/chrome/locale/eu/https-everywhere.dtd +++ b/src/chrome/locale/eu/https-everywhere.dtd @@ -14,6 +14,7 @@ + diff --git a/src/chrome/locale/fa/https-everywhere.dtd b/src/chrome/locale/fa/https-everywhere.dtd index a8b18f507..75ea17f79 100644 --- a/src/chrome/locale/fa/https-everywhere.dtd +++ b/src/chrome/locale/fa/https-everywhere.dtd @@ -14,6 +14,7 @@ + diff --git a/src/chrome/locale/fi/https-everywhere.dtd b/src/chrome/locale/fi/https-everywhere.dtd index b5211ee5c..91da15b9a 100644 --- a/src/chrome/locale/fi/https-everywhere.dtd +++ b/src/chrome/locale/fi/https-everywhere.dtd @@ -14,6 +14,7 @@ + diff --git a/src/chrome/locale/fr/https-everywhere.dtd b/src/chrome/locale/fr/https-everywhere.dtd index 5efc86220..bae723dc8 100644 --- a/src/chrome/locale/fr/https-everywhere.dtd +++ b/src/chrome/locale/fr/https-everywhere.dtd @@ -14,6 +14,7 @@ + diff --git a/src/chrome/locale/he/https-everywhere.dtd b/src/chrome/locale/he/https-everywhere.dtd index 1e0109aaf..dd3337788 100644 --- a/src/chrome/locale/he/https-everywhere.dtd +++ b/src/chrome/locale/he/https-everywhere.dtd @@ -14,6 +14,7 @@ + diff --git a/src/chrome/locale/hr/https-everywhere.dtd b/src/chrome/locale/hr/https-everywhere.dtd index abed09c2b..87a30bc67 100644 --- a/src/chrome/locale/hr/https-everywhere.dtd +++ b/src/chrome/locale/hr/https-everywhere.dtd @@ -14,6 +14,7 @@ + diff --git a/src/chrome/locale/hu/https-everywhere.dtd b/src/chrome/locale/hu/https-everywhere.dtd index 9a16f3d29..b9fa56936 100644 --- a/src/chrome/locale/hu/https-everywhere.dtd +++ b/src/chrome/locale/hu/https-everywhere.dtd @@ -14,6 +14,7 @@ + diff --git a/src/chrome/locale/it/https-everywhere.dtd b/src/chrome/locale/it/https-everywhere.dtd index 48f27958a..782711f52 100644 --- a/src/chrome/locale/it/https-everywhere.dtd +++ b/src/chrome/locale/it/https-everywhere.dtd @@ -14,6 +14,7 @@ + diff --git a/src/chrome/locale/ja/https-everywhere.dtd b/src/chrome/locale/ja/https-everywhere.dtd index 140df905f..724a2bdba 100644 --- a/src/chrome/locale/ja/https-everywhere.dtd +++ b/src/chrome/locale/ja/https-everywhere.dtd @@ -14,6 +14,7 @@ + diff --git a/src/chrome/locale/ko/https-everywhere.dtd b/src/chrome/locale/ko/https-everywhere.dtd index 55bd81b08..93d22f432 100644 --- a/src/chrome/locale/ko/https-everywhere.dtd +++ b/src/chrome/locale/ko/https-everywhere.dtd @@ -15,6 +15,7 @@ + diff --git a/src/chrome/locale/lt/https-everywhere.dtd b/src/chrome/locale/lt/https-everywhere.dtd index 14a40cc85..e2494944e 100644 --- a/src/chrome/locale/lt/https-everywhere.dtd +++ b/src/chrome/locale/lt/https-everywhere.dtd @@ -14,6 +14,7 @@ + diff --git a/src/chrome/locale/lv/https-everywhere.dtd b/src/chrome/locale/lv/https-everywhere.dtd index fc81a78c6..c7659afbf 100644 --- a/src/chrome/locale/lv/https-everywhere.dtd +++ b/src/chrome/locale/lv/https-everywhere.dtd @@ -14,6 +14,7 @@ + diff --git a/src/chrome/locale/ms/https-everywhere.dtd b/src/chrome/locale/ms/https-everywhere.dtd index 10d3046dd..358e7816b 100644 --- a/src/chrome/locale/ms/https-everywhere.dtd +++ b/src/chrome/locale/ms/https-everywhere.dtd @@ -14,6 +14,7 @@ + diff --git a/src/chrome/locale/nb/https-everywhere.dtd b/src/chrome/locale/nb/https-everywhere.dtd index c90d95f43..797be6f5f 100644 --- a/src/chrome/locale/nb/https-everywhere.dtd +++ b/src/chrome/locale/nb/https-everywhere.dtd @@ -14,6 +14,7 @@ + diff --git a/src/chrome/locale/nl/https-everywhere.dtd b/src/chrome/locale/nl/https-everywhere.dtd index 6483f3854..04bb6c5d6 100644 --- a/src/chrome/locale/nl/https-everywhere.dtd +++ b/src/chrome/locale/nl/https-everywhere.dtd @@ -14,6 +14,7 @@ + diff --git a/src/chrome/locale/pl/https-everywhere.dtd b/src/chrome/locale/pl/https-everywhere.dtd index 989b0ab7e..e0194a68e 100644 --- a/src/chrome/locale/pl/https-everywhere.dtd +++ b/src/chrome/locale/pl/https-everywhere.dtd @@ -14,6 +14,7 @@ + diff --git a/src/chrome/locale/pt/https-everywhere.dtd b/src/chrome/locale/pt/https-everywhere.dtd index f0017c0b5..805b7c5a8 100644 --- a/src/chrome/locale/pt/https-everywhere.dtd +++ b/src/chrome/locale/pt/https-everywhere.dtd @@ -14,6 +14,7 @@ + diff --git a/src/chrome/locale/ru/https-everywhere.dtd b/src/chrome/locale/ru/https-everywhere.dtd index 0ccab29b0..86d3da25a 100644 --- a/src/chrome/locale/ru/https-everywhere.dtd +++ b/src/chrome/locale/ru/https-everywhere.dtd @@ -14,6 +14,7 @@ + diff --git a/src/chrome/locale/si/https-everywhere.dtd b/src/chrome/locale/si/https-everywhere.dtd index 4221d5a2f..f528d07b3 100644 --- a/src/chrome/locale/si/https-everywhere.dtd +++ b/src/chrome/locale/si/https-everywhere.dtd @@ -14,6 +14,7 @@ + diff --git a/src/chrome/locale/sk/https-everywhere.dtd b/src/chrome/locale/sk/https-everywhere.dtd index 0fd311f3a..3ea4ae85b 100644 --- a/src/chrome/locale/sk/https-everywhere.dtd +++ b/src/chrome/locale/sk/https-everywhere.dtd @@ -14,6 +14,7 @@ + diff --git a/src/chrome/locale/sl/https-everywhere.dtd b/src/chrome/locale/sl/https-everywhere.dtd index ce039f9a9..13bbd7d2e 100644 --- a/src/chrome/locale/sl/https-everywhere.dtd +++ b/src/chrome/locale/sl/https-everywhere.dtd @@ -14,6 +14,7 @@ + diff --git a/src/chrome/locale/sv/https-everywhere.dtd b/src/chrome/locale/sv/https-everywhere.dtd index d197dd4ed..16bfa0e0c 100644 --- a/src/chrome/locale/sv/https-everywhere.dtd +++ b/src/chrome/locale/sv/https-everywhere.dtd @@ -14,6 +14,7 @@ + diff --git a/src/chrome/locale/tr/https-everywhere.dtd b/src/chrome/locale/tr/https-everywhere.dtd index 4a0e55695..e686d1945 100644 --- a/src/chrome/locale/tr/https-everywhere.dtd +++ b/src/chrome/locale/tr/https-everywhere.dtd @@ -14,6 +14,7 @@ + diff --git a/src/chrome/locale/zh-CN/https-everywhere.dtd b/src/chrome/locale/zh-CN/https-everywhere.dtd index 5007b9344..d53c43c60 100644 --- a/src/chrome/locale/zh-CN/https-everywhere.dtd +++ b/src/chrome/locale/zh-CN/https-everywhere.dtd @@ -14,6 +14,7 @@ + diff --git a/src/chrome/locale/zh-TW/https-everywhere.dtd b/src/chrome/locale/zh-TW/https-everywhere.dtd index d6933935c..1b56a6324 100644 --- a/src/chrome/locale/zh-TW/https-everywhere.dtd +++ b/src/chrome/locale/zh-TW/https-everywhere.dtd @@ -15,6 +15,7 @@ +