[or-cvs] [torbutton/master] Fix bug #1110: Provide a popup about English for intl users.

mikeperry at torproject.org mikeperry at torproject.org
Thu Feb 3 09:33:22 UTC 2011


commit da26e5d31c1dada2f3368860f8da1111842cb780
Author: Mike Perry <mikeperry-git at fscked.org>
Date:   Thu Feb 3 01:32:21 2011 -0800

    Fix bug #1110: Provide a popup about English for intl users.
    
    We always ask this to intl users, because really it's quite fair for them to
    choose either option, depending on their use case.
---
 src/chrome/content/torbutton.js           |   35 ++++++++++++++++++++++++++++-
 src/chrome/locale/en/torbutton.properties |    1 +
 src/defaults/preferences/preferences.js   |    1 +
 3 files changed, 36 insertions(+), 1 deletions(-)

diff --git a/src/chrome/content/torbutton.js b/src/chrome/content/torbutton.js
index 4ee57c1..322a8fb 100644
--- a/src/chrome/content/torbutton.js
+++ b/src/chrome/content/torbutton.js
@@ -537,8 +537,30 @@ function torbutton_init() {
     var mode = m_tb_prefs.getBoolPref("extensions.torbutton.tor_enabled");
     torbutton_update_toolbutton(mode);
     torbutton_update_statusbar(mode);
+
     torbutton_log(3, 'init completed');
+}
+
+// Asks the user whether Torbutton should make "English requests", and updates
+// the extensions.torbutton.spoof_english preference accordingly.
+function torbutton_prompt_for_language_preference() {
+  var prompts = Cc["@mozilla.org/embedcomp/prompt-service;1"]
+      .getService(Components.interfaces.nsIPromptService);
+
+  // Display two buttons, both with string titles.
+  var flags = prompts.BUTTON_POS_0 * prompts.BUTTON_TITLE_IS_STRING +
+      prompts.BUTTON_POS_1 * prompts.BUTTON_TITLE_IS_STRING;
+
+  var strings = torbutton_get_stringbundle();
+  var message = strings.GetStringFromName("torbutton.popup.prompted_language");
 
+  var response = prompts.confirmEx(null, "", message, flags, "Yes", "No", null,
+      null, {value: false});
+
+  // Update preferences to reflect their response and to prevent the prompt from
+  // being displayed again.
+  m_tb_prefs.setBoolPref("extensions.torbutton.spoof_english", response == 0);
+  m_tb_prefs.setBoolPref("extensions.torbutton.prompted_language", true);
 }
 
 //this function checks to see if the context menu is being clicked on a link.
@@ -549,6 +571,7 @@ function torbutton_check_contextmenu() {
     var torwin = document.getElementById("torcontext-opentorwin");
     torurl.hidden = tortab.hidden = torwin.hidden = (document.popupNode.localName != "A") 
 }
+
 function torbutton_copy_link() {
   var element = document.popupNode;
   var myURI = Components.classes["@mozilla.org/network/io-service;1"]
@@ -3402,7 +3425,6 @@ function torbutton_do_startup()
           torbutton_new_google_cookie();
         }
 
-
         m_tb_prefs.setBoolPref("extensions.torbutton.startup", false);
     }
 }
@@ -3434,6 +3456,17 @@ function torbutton_new_tab(event)
     var browser = gBrowser.getBrowserForTab(event.target);
 
     torbutton_tag_new_browser(browser, tor_tag, no_plugins);
+
+    // XXX: This is possibly slightly the wrong place to do this check,
+    // but we know the TabOpen effect is late enough to provide the popup
+    // after firefox is visible, which makes it more clear who's popup this is.
+    //
+    // Ask the user if they want to make "English requests" if their default
+    // language isn't English and the prompt hasn't been displayed before.
+    if (torbutton_get_general_useragent_locale().substring(0, 2) != "en" &&
+        !m_tb_prefs.getBoolPref("extensions.torbutton.prompted_language")) {
+      torbutton_prompt_for_language_preference();
+    }
 }
 
 // Returns true if the window wind is neither maximized, full screen,
diff --git a/src/chrome/locale/en/torbutton.properties b/src/chrome/locale/en/torbutton.properties
index f991f5a..b9b76c8 100644
--- a/src/chrome/locale/en/torbutton.properties
+++ b/src/chrome/locale/en/torbutton.properties
@@ -34,3 +34,4 @@ torbutton.popup.captcha.ask = Torbutton detected a Google Captcha. Would you lik
 torbutton.popup.captcha.always = Always perform this action from now on
 torbutton.popup.redirect = Redirect
 torbutton.popup.no_redirect = Don't Redirect
+torbutton.popup.prompted_language = To give you more privacy, Torbutton can request the English language version of webppages. This may cause webpages that you prefer to read in your native language to display in English instead.\n\nWould you like to request English language webpages for better privacy?
diff --git a/src/defaults/preferences/preferences.js b/src/defaults/preferences/preferences.js
index c97272c..ea514bf 100644
--- a/src/defaults/preferences/preferences.js
+++ b/src/defaults/preferences/preferences.js
@@ -109,6 +109,7 @@ pref("extensions.torbutton.warned_ff3",false);
 pref("extensions.torbutton.fresh_install",true);
 pref("extensions.torbutton.normal_exit",false);
 pref("extensions.torbutton.inserted_button",false);
+pref("extensions.torbutton.prompted_language",false);
 
 // Security prefs:
 pref("extensions.torbutton.no_tor_plugins",true);



More information about the tor-commits mailing list