[or-cvs] [torbutton/master 14/31] Update history blocking to support FF4.

mikeperry at torproject.org mikeperry at torproject.org
Tue Jan 4 07:02:19 UTC 2011


Author: Mike Perry <mikeperry-git at fscked.org>
Date: Sun, 19 Dec 2010 16:49:06 -0800
Subject: Update history blocking to support FF4.
Commit: 7ae437de6d1b121ba62f69a1c4ed2767dda612fa

This now involves only keeping places.history.enabled in sync with our prefs.
The CSS history attack is now fixed in FF4, so we do not need to pay attention
to the read pref.
---
 src/chrome/content/torbutton.js         |   62 +++++++++++++++++++++++++++++++
 src/defaults/preferences/preferences.js |    1 +
 2 files changed, 63 insertions(+), 0 deletions(-)

diff --git a/src/chrome/content/torbutton.js b/src/chrome/content/torbutton.js
index 2095f35..f340d4d 100644
--- a/src/chrome/content/torbutton.js
+++ b/src/chrome/content/torbutton.js
@@ -74,6 +74,9 @@ var torbutton_unique_pref_observer =
         this._branch.addObserver("network.proxy", this, false);
         this._branch.addObserver("network.cookie", this, false);
         this._branch.addObserver("general.useragent", this, false);
+        if (m_tb_ff4) {
+          this._branch.addObserver("places.history", this, false);
+        }
     },
 
     unregister: function()
@@ -83,6 +86,9 @@ var torbutton_unique_pref_observer =
         this._branch.removeObserver("network.proxy", this);
         this._branch.removeObserver("network.cookie", this);
         this._branch.removeObserver("general.useragent", this);
+        if (m_tb_ff4) {
+          this._branch.removeObserver("places.history", this);
+        }
     },
 
     // topic:   what event occurred
@@ -125,6 +131,47 @@ var torbutton_unique_pref_observer =
                 torbutton_set_status();
                 break;
 
+            case "places.history.enabled":
+                // This code keeps our prefs in sync with the places global pref
+                var tor_mode =  m_tb_prefs.getBoolPref("extensions.torbutton.tor_enabled");
+                var he = m_tb_prefs.getBoolPref("places.history.enabled");
+                if(tor_mode) {
+                    if (he) {
+                       // User just enabled places. They must want us to stop blocking it...
+                       m_tb_prefs.setBoolPref("extensions.torbutton.block_thwrite", false);
+                    } else {
+                       m_tb_prefs.setBoolPref("extensions.torbutton.block_thwrite", true);
+                    }
+                } else {
+                    if (he) {
+                       m_tb_prefs.setBoolPref("extensions.torbutton.block_nthwrite", false);
+                    } else {
+                       m_tb_prefs.setBoolPref("extensions.torbutton.block_nthwrite", true);
+                    }
+                }
+                break;
+
+            case "extensions.torbutton.block_thwrite":
+            case "extensions.torbutton.block_nthwrite":
+                // This code keeps our prefs in sync with the places global pref for ff4
+                if (m_tb_ff4) {
+                    var tor_mode =  m_tb_prefs.getBoolPref("extensions.torbutton.tor_enabled");
+                    if (tor_mode) {
+                        if (m_tb_prefs.getBoolPref("extensions.torbutton.block_thwrite")) {
+                            m_tb_prefs.setBoolPref("places.history.enabled", false);
+                        } else {
+                            m_tb_prefs.setBoolPref("places.history.enabled", true);
+                        }
+                    } else {
+                        if (m_tb_prefs.getBoolPref("extensions.torbutton.block_nthwrite")) {
+                            m_tb_prefs.setBoolPref("places.history.enabled", false);
+                        } else {
+                            m_tb_prefs.setBoolPref("places.history.enabled", true);
+                        }
+                    }
+                }
+                break;
+
             case "network.cookie.lifetimePolicy":
                 // Keep our prefs in sync with the lifetime policy for non-tor
                 torbutton_log(2, "Got FF cookie pref change");
@@ -1380,6 +1427,14 @@ function torbutton_update_status(mode, force_update) {
             torbutton_setBoolPref("signon.rememberSignons", "remember_signons", 
                     false, mode, changed);
         }
+
+        if (m_tb_ff4) {
+            if(m_tb_prefs.getBoolPref('extensions.torbutton.block_thwrite')) {
+                m_tb_prefs.setBoolPref("places.history.enabled", false);
+            } else {
+                m_tb_prefs.setBoolPref("places.history.enabled", true);
+            }
+        }
     } else {
         if(m_tb_prefs.getBoolPref('extensions.torbutton.block_nthwrite')) {
             m_tb_prefs.setIntPref("browser.download.manager.retention", 0);
@@ -1399,6 +1454,13 @@ function torbutton_update_status(mode, force_update) {
             torbutton_setBoolPref("signon.rememberSignons", "remember_signons", 
                     false, mode, changed);
         }
+        if (m_tb_ff4) {
+            if(m_tb_prefs.getBoolPref('extensions.torbutton.block_nthwrite')) {
+                m_tb_prefs.setBoolPref("places.history.enabled", false);
+            } else {
+                m_tb_prefs.setBoolPref("places.history.enabled", true);
+            }
+        }
     }
 
     torbutton_log(2, "Prefs pretty much done");
diff --git a/src/defaults/preferences/preferences.js b/src/defaults/preferences/preferences.js
index 433ccbc..2d6e258 100644
--- a/src/defaults/preferences/preferences.js
+++ b/src/defaults/preferences/preferences.js
@@ -66,6 +66,7 @@ pref("extensions.torbutton.saved.safebrowsing",true);
 pref("extensions.torbutton.saved.search_suggest",true);
 pref("extensions.torbutton.saved.enable_java", true);
 pref("extensions.torbutton.saved.expire_history", 9);
+pref("extensions.torbutton.saved.places_enabled", true);
 pref("extensions.torbutton.saved.download_retention", 2);
 pref("extensions.torbutton.saved.formfill", true);
 pref("extensions.torbutton.saved.remember_signons", true);
-- 
1.7.1




More information about the tor-commits mailing list