From bc835e0c8a2b967407837f98481299c205639905 Mon Sep 17 00:00:00 2001 From: Pavel Kazakov Date: Tue, 20 Aug 2013 21:22:32 -0700 Subject: [PATCH 1/8] Added placeholder for option to show counter --- src/chrome/content/toolbar_button.xul | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/chrome/content/toolbar_button.xul b/src/chrome/content/toolbar_button.xul index 7fdcb5841..d4995ba01 100644 --- a/src/chrome/content/toolbar_button.xul +++ b/src/chrome/content/toolbar_button.xul @@ -42,6 +42,8 @@ + + From 3fde0551565624ffd0215a4b81571545674f9b04 Mon Sep 17 00:00:00 2001 From: Pavel Kazakov Date: Tue, 27 Aug 2013 21:40:17 -0700 Subject: [PATCH 2/8] Added a function that returns the preference of a user for displaying the ruleset counter --- src/chrome/content/toolbar_button.js | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/src/chrome/content/toolbar_button.js b/src/chrome/content/toolbar_button.js index d5322b7f8..a87efc85b 100644 --- a/src/chrome/content/toolbar_button.js +++ b/src/chrome/content/toolbar_button.js @@ -30,6 +30,11 @@ if (!httpsEverywhere) { var httpsEverywhere = {}; } */ 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 @@ -155,7 +160,24 @@ 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) == PREF_INVALID; + + // 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(counterPref); + } + }; function https_everywhere_load() { From c5baea426c3634de4f8610f48a7cc45b7a2331dc Mon Sep 17 00:00:00 2001 From: Pavel Kazakov Date: Fri, 30 Aug 2013 16:17:12 -0700 Subject: [PATCH 3/8] Syntax error fixes --- checkout | 1 + src/chrome/content/toolbar_button.js | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) create mode 160000 checkout diff --git a/checkout b/checkout new file mode 160000 index 000000000..25f963350 --- /dev/null +++ b/checkout @@ -0,0 +1 @@ +Subproject commit 25f963350bd078553587ad55f8411f2a02618deb diff --git a/src/chrome/content/toolbar_button.js b/src/chrome/content/toolbar_button.js index a87efc85b..5ad705233 100644 --- a/src/chrome/content/toolbar_button.js +++ b/src/chrome/content/toolbar_button.js @@ -33,7 +33,7 @@ httpsEverywhere.toolbarButton = { /** * Name of preference for determining whether to show ruleset counter. */ - COUNTER_PREF = "extensions.https_everywhere.show_counter", + COUNTER_PREF: "extensions.https_everywhere.show_counter", /** * Used to determine if a hint has been previously shown. @@ -167,7 +167,7 @@ httpsEverywhere.toolbarButton = { * * @return {boolean} */ - shouldShowCounter(): function() { + shouldShowCounter: function() { var tb = httpsEverywhere.toolbarButton; var sp = Services.prefs; From fcfeda22dd2eada401e253ce6b75c1a159ca2d3a Mon Sep 17 00:00:00 2001 From: Pavel Kazakov Date: Fri, 30 Aug 2013 16:52:22 -0700 Subject: [PATCH 4/8] Added option to disable rulesets applied counter. --- src/chrome/content/toolbar_button.js | 26 +++++++++++++++++++++++--- src/chrome/content/toolbar_button.xul | 3 ++- 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/src/chrome/content/toolbar_button.js b/src/chrome/content/toolbar_button.js index 5ad705233..caec038e3 100644 --- a/src/chrome/content/toolbar_button.js +++ b/src/chrome/content/toolbar_button.js @@ -54,6 +54,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( @@ -133,7 +138,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; } @@ -171,11 +177,25 @@ httpsEverywhere.toolbarButton = { var tb = httpsEverywhere.toolbarButton; var sp = Services.prefs; - var prefExists = !sp.getPrefType(tb.COUNTER_PREF) == PREF_INVALID; + 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(counterPref); + 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(); } }; diff --git a/src/chrome/content/toolbar_button.xul b/src/chrome/content/toolbar_button.xul index d4995ba01..dec4e7b7d 100644 --- a/src/chrome/content/toolbar_button.xul +++ b/src/chrome/content/toolbar_button.xul @@ -42,7 +42,8 @@ - + From 3831b939809e8a8811e3e8483e068badbf2278b5 Mon Sep 17 00:00:00 2001 From: Pavel Kazakov Date: Fri, 30 Aug 2013 17:01:05 -0700 Subject: [PATCH 5/8] Localize show counter label --- src/chrome/content/toolbar_button.xul | 2 +- src/chrome/locale/en/https-everywhere.dtd | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/chrome/content/toolbar_button.xul b/src/chrome/content/toolbar_button.xul index dec4e7b7d..b1003441b 100644 --- a/src/chrome/content/toolbar_button.xul +++ b/src/chrome/content/toolbar_button.xul @@ -42,7 +42,7 @@ - diff --git a/src/chrome/locale/en/https-everywhere.dtd b/src/chrome/locale/en/https-everywhere.dtd index f374e6f69..85438cc99 100644 --- a/src/chrome/locale/en/https-everywhere.dtd +++ b/src/chrome/locale/en/https-everywhere.dtd @@ -14,6 +14,7 @@ + From 0f8d19b9726a59e75e005e1406dae3819c1d0bea Mon Sep 17 00:00:00 2001 From: Pavel Kazakov Date: Fri, 30 Aug 2013 19:38:41 -0700 Subject: [PATCH 6/8] Propogate localization to all dtd files. Translations are still needed. --- src/chrome/locale/ar/https-everywhere.dtd | 1 + src/chrome/locale/bg/https-everywhere.dtd | 1 + src/chrome/locale/cs/https-everywhere.dtd | 1 + src/chrome/locale/da/https-everywhere.dtd | 1 + src/chrome/locale/de/https-everywhere.dtd | 1 + src/chrome/locale/el/https-everywhere.dtd | 1 + src/chrome/locale/es/https-everywhere.dtd | 1 + src/chrome/locale/eu/https-everywhere.dtd | 1 + src/chrome/locale/fa/https-everywhere.dtd | 1 + src/chrome/locale/fi/https-everywhere.dtd | 1 + src/chrome/locale/fr/https-everywhere.dtd | 1 + src/chrome/locale/he/https-everywhere.dtd | 1 + src/chrome/locale/hr/https-everywhere.dtd | 1 + src/chrome/locale/hu/https-everywhere.dtd | 1 + src/chrome/locale/it/https-everywhere.dtd | 1 + src/chrome/locale/ja/https-everywhere.dtd | 1 + src/chrome/locale/ko/https-everywhere.dtd | 1 + src/chrome/locale/lt/https-everywhere.dtd | 1 + src/chrome/locale/lv/https-everywhere.dtd | 1 + src/chrome/locale/ms/https-everywhere.dtd | 1 + src/chrome/locale/nb/https-everywhere.dtd | 1 + src/chrome/locale/nl/https-everywhere.dtd | 1 + src/chrome/locale/pl/https-everywhere.dtd | 1 + src/chrome/locale/pt/https-everywhere.dtd | 1 + src/chrome/locale/ru/https-everywhere.dtd | 1 + src/chrome/locale/si/https-everywhere.dtd | 1 + src/chrome/locale/sk/https-everywhere.dtd | 1 + src/chrome/locale/sl/https-everywhere.dtd | 1 + src/chrome/locale/sv/https-everywhere.dtd | 1 + src/chrome/locale/tr/https-everywhere.dtd | 1 + src/chrome/locale/zh-CN/https-everywhere.dtd | 1 + src/chrome/locale/zh-TW/https-everywhere.dtd | 1 + 32 files changed, 32 insertions(+) diff --git a/src/chrome/locale/ar/https-everywhere.dtd b/src/chrome/locale/ar/https-everywhere.dtd index 1f9f471d7..0cca0e489 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 32c975d0c..583bc98ab 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 7db3dfdb9..f3ddfb4dc 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 fc4058c23..224268b88 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 f258ef76d..ed0a13344 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 daed36a36..60c963f04 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/es/https-everywhere.dtd b/src/chrome/locale/es/https-everywhere.dtd index bdf453b06..a983802c8 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 c151bbabd..0f2a45eda 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 8b109f617..e7263c967 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 c78108d8d..2d5f093b7 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 312389670..2864e2fdb 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 173900420..6c4de8d10 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 f374e6f69..85438cc99 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 41de250db..671b3cd6b 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 bc115b1a2..c4b56c033 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 1f48b2a4e..0cdb70fbf 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 2996d755c..14d77a036 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 9e14f7540..7b813ce43 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 093c05b1a..019227835 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 7f1836789..3e2b70bf7 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 0f9f3213f..8c0f3a16d 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 2626b6461..3b4c620af 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 b5094675e..7c798ea4d 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 a1e96f636..562c70b3e 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 23f9c7b1a..1c2f0cc80 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 39faeb51a..b3f5f4471 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 b279bed3a..350d57c52 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 c63aecc26..ddea62cce 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 da5c9e762..5759348cd 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 32e2fbfc9..89497c813 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 fa53eeee4..17dc5b5a6 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 e154fbb7e..b86dc95d2 100644 --- a/src/chrome/locale/zh-TW/https-everywhere.dtd +++ b/src/chrome/locale/zh-TW/https-everywhere.dtd @@ -15,6 +15,7 @@ + From e8fc3b50b723b06b1db8e76e715c5d6ed04e0318 Mon Sep 17 00:00:00 2001 From: Pavel Kazakov Date: Sat, 31 Aug 2013 00:14:52 -0700 Subject: [PATCH 7/8] Remove temporary folder --- checkout | 1 - 1 file changed, 1 deletion(-) delete mode 160000 checkout diff --git a/checkout b/checkout deleted file mode 160000 index 25f963350..000000000 --- a/checkout +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 25f963350bd078553587ad55f8411f2a02618deb From 3a28f2e1a53bbd0744d012b87f5d477d90b63e68 Mon Sep 17 00:00:00 2001 From: Pavel Kazakov Date: Sat, 31 Aug 2013 00:42:48 -0700 Subject: [PATCH 8/8] Fix typo and update comment --- src/chrome/content/toolbar_button.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/chrome/content/toolbar_button.js b/src/chrome/content/toolbar_button.js index caec038e3..282e747c4 100644 --- a/src/chrome/content/toolbar_button.js +++ b/src/chrome/content/toolbar_button.js @@ -21,12 +21,14 @@ 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 = {