[or-cvs] r13814: Make the navigator object's hooks dynamicly mirror all prope (torbutton/trunk/src/chrome/content)

mikeperry at seul.org mikeperry at seul.org
Mon Mar 3 08:44:27 UTC 2008


Author: mikeperry
Date: 2008-03-03 03:44:27 -0500 (Mon, 03 Mar 2008)
New Revision: 13814

Modified:
   torbutton/trunk/src/chrome/content/jshooks.js
Log:

Make the navigator object's hooks dynamicly mirror all
properties instead of listing them manually.



Modified: torbutton/trunk/src/chrome/content/jshooks.js
===================================================================
--- torbutton/trunk/src/chrome/content/jshooks.js	2008-03-03 03:52:51 UTC (rev 13813)
+++ torbutton/trunk/src/chrome/content/jshooks.js	2008-03-03 08:44:27 UTC (rev 13814)
@@ -18,27 +18,24 @@
       // like Date upon delete, allowing unmasking for that case. Talk about 
       // rock+hard place. 
       try {
-          var cE = window.navigator.cookieEnabled;
-          var lang = window.navigator.language;
-          var uA = window.navigator.userAgent;
-          var v = window.navigator.vendor;
-          var vS = window.navigator.vendorSub;
-          var jE = window.navigator.javaEnabled;
+          if(!(window.navigator.__proto__ == null) ||
+             typeof(window.navigator.__defineGetter__) === "function") {
+              var tmpNav = new Object();
+              var f;
+              for(var i in window.navigator) {
+                  tmpNav[i] = window.navigator[i];
+                  f = function() { // crazy scope hack to preserve i
+                      var holder = i;
+                      window.navigator.__defineGetter__(i, function() { return tmpNav[holder];});
+                  };
+                  f();
+              }
 
-          window.navigator.__defineGetter__("appCodeName", function() { return "Mozilla";});
-          window.navigator.__defineGetter__("appName", function() { return "Netscape";});
-          window.navigator.__defineGetter__("appVersion", function() { return "5.0";});
-          window.navigator.__defineGetter__("cookieEnabled", function() { return cE;});
-          window.navigator.__defineGetter__("language", function() { return lang;});
-          window.navigator.__defineGetter__("userAgent", function() { return uA;});
-          window.navigator.__defineGetter__("vendor", function() { return v;});
-          window.navigator.__defineGetter__("vendorSub", function() { return vS;});
-          window.navigator.__defineGetter__("javaEnabled", function() { return jE;});
-          window.navigator.__defineGetter__("oscpu", function() { return tmp_oscpu;});
-          window.navigator.__defineGetter__("productSub", function() { return tmp_productSub;});
-          window.navigator.__defineGetter__("buildID", function() { return 0;});
-          window.navigator.__proto__ = null;
-          /*navigator.__proto__.__defineGetter__("platform", function() { return tmp_platform;});*/
+              window.navigator.__defineGetter__("oscpu", function() { return tmp_oscpu;});
+              window.navigator.__defineGetter__("productSub", function() { return tmp_productSub;});
+              window.navigator.__defineGetter__("buildID", function() { return 0;});
+              window.navigator.__proto__ = null;
+          }
       } catch(e) {
       }
   }
@@ -282,13 +279,7 @@
   var wintmp = window;
   with(window.valueOf.call()) {
       for(var i in wintmp) {
-          if(i == "globalStorage" || i == "sessionStorage") {
-              //Causes an exception without this. 
-              //Disabled for now anyways.
-              tmp[i] = new Object();
-          } else {
-              tmp[i] = wintmp[i];                  
-          }
+          tmp[i] = wintmp[i];                  
       }
       try { // FF3 throws an exception here
           var __proto__ = tmp;



More information about the tor-commits mailing list