[or-cvs] [torbutton/master 01/31] Update Cookie Jar code to Firefox 4.

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


Author: Mike Perry <mikeperry-git at fscked.org>
Date: Sun, 28 Nov 2010 18:46:49 -0800
Subject: Update Cookie Jar code to Firefox 4.
Commit: 331b0b36cbc105e3405d842f9cc6edd1cafa0cde

---
 src/chrome.manifest                   |    6 +
 src/components/block-livemarks.js     |  166 ---------------------------------
 src/components/cookie-jar-selector.js |   93 +++---------------
 3 files changed, 21 insertions(+), 244 deletions(-)
 delete mode 100644 src/components/block-livemarks.js

diff --git a/src/chrome.manifest b/src/chrome.manifest
index be110a4..cc65480 100644
--- a/src/chrome.manifest
+++ b/src/chrome.manifest
@@ -60,3 +60,9 @@ locale torbutton zh-TW chrome/locale/zh-TW/
 
 skin torbutton classic/1.0 chrome/skin/
 style chrome://global/content/customizeToolbar.xul chrome://torbutton/skin/torbutton.css
+
+component {e6204253-b690-4159-bfe8-d4eedab6b3be} components/cookie-jar-selector.js
+contract @torproject.org/cookie-jar-selector;1 {e6204253-b690-4159-bfe8-d4eedab6b3be}
+
+category profile-after-change CookieJarSelector @torproject.org/cookie-jar-selector;1
+
diff --git a/src/components/block-livemarks.js b/src/components/block-livemarks.js
deleted file mode 100644
index 9666579..0000000
--- a/src/components/block-livemarks.js
+++ /dev/null
@@ -1,166 +0,0 @@
-/*************************************************************************
- * Block Livemarks (JavaScript XPCOM component)
- *
- * The livemark service start() method is run on a 5 second delay timer
- * after startup. The safest way to block this is to hook the component.
- *************************************************************************/
-
-// Module specific constants
-const kMODULE_NAME = "Block Tor Livemarks";
-const kMODULE_CONTRACTID = "@mozilla.org/browser/livemark-service;2";
-const kMODULE_CID = Components.ID("24892630-d5f3-4af8-9662-e1d6479c5290");
-
-/* Mozilla defined interfaces for FF3.x */
-const kREAL_CID = "{dca61eb5-c7cd-4df1-b0fb-d0722baba251}";
-
-const kImplementedInterfaces = [ "nsIFactory",
-                                 "nsILivemarkService",
-                                 "nsINavBookmarkObserver" ];
-const Cr = Components.results;
-
-function LivemarkWrapper() {
-  this.logger = Components.classes["@torproject.org/torbutton-logger;1"]
-      .getService(Components.interfaces.nsISupports).wrappedJSObject;
-  this.logger.log(3, "Component Load 6: New LivemarkWrapper "+kMODULE_CONTRACTID);
-
-  // assuming we're running under Firefox
-  var appInfo = Components.classes["@mozilla.org/xre/app-info;1"]
-      .getService(Components.interfaces.nsIXULAppInfo);
-  var versionChecker = Components.classes["@mozilla.org/xpcom/version-comparator;1"]
-      .getService(Components.interfaces.nsIVersionComparator);
-
-  this._real_service = Components.classesByID[kREAL_CID];
-  this._interfaces = kImplementedInterfaces;
-
-  this._prefs = Components.classes["@mozilla.org/preferences-service;1"]
-      .getService(Components.interfaces.nsIPrefBranch);
-
-  this._service = function() {
-    var service = this._real_service.getService();
-    for (var i = 0; i < this._interfaces.length; i++) {
-      service.QueryInterface(Components.interfaces[this._interfaces[i]]);
-    }
-    return service;
-  };
-
-  this.copyMethods(this._service());
-}
-
-LivemarkWrapper.prototype =
-{
-  QueryInterface: function(iid) {
-    if (iid.equals(Components.interfaces.nsISupports)) {
-      return this;
-    }
-
-    var service = this._service().QueryInterface(iid);
-    this.copyMethods(service);
-    return this;
-  },
-
-  /*
-   * Copies methods from the true service object we are wrapping
-   */
-  copyMethods: function(wrapped) {
-    var mimic = function(newObj, method) {
-       if(typeof(wrapped[method]) == "function") {
-          // Code courtesy of timeless: 
-          // http://www.webwizardry.net/~timeless/windowStubs.js
-          var params = [];
-          params.length = wrapped[method].length;
-          var x = 0;
-          var call;
-          if(params.length) call = "("+params.join().replace(/(?:)/g,function(){return "p"+(++x)})+")";
-          else call = "()";
-          var fun = "(function "+call+"{"+
-            "if (arguments.length < "+wrapped[method].length+")"+
-            "  throw Components.results.NS_ERROR_XPC_NOT_ENOUGH_ARGS;"+
-            "return wrapped."+method+".apply(wrapped, arguments);})";
-          newObj[method] = eval(fun);
-       } else {
-          newObj.__defineGetter__(method, function() { return wrapped[method]; });
-          newObj.__defineSetter__(method, function(val) { wrapped[method] = val; });
-      }
-    };
-    for (var method in wrapped) {
-      if(typeof(this[method]) == "undefined") mimic(this, method);
-    }
-  },
-
-  /* Because start runs on a delayed timer at startup, we must hook it block
-   * it */
-  start: function() {
-    if(this._prefs.getBoolPref("extensions.torbutton.disable_livemarks")
-            && this._prefs.getBoolPref("extensions.torbutton.tor_enabled")) {
-      this.logger.log(3, "Blocked livemarks start from component");
-      return;
-    } else {
-      return this._service().start();
-    }
-  }
-};
-
-var LivemarkWrapperSingleton = null;
-var LivemarkWrapperFactory = new Object();
-
-LivemarkWrapperFactory.createInstance = function (outer, iid)
-{
-  if (outer != null) {
-    Components.returnCode = Cr.NS_ERROR_NO_AGGREGATION;
-    return null;
-  }
-
-  if(!LivemarkWrapperSingleton)
-    LivemarkWrapperSingleton = new LivemarkWrapper();
-
-  return LivemarkWrapperSingleton;
-};
-
-
-/**
- * JS XPCOM component registration goop:
- *
- * Everything below is boring boilerplate and can probably be ignored.
- */
-
-var LivemarkWrapperModule = new Object();
-
-LivemarkWrapperModule.registerSelf =
-function (compMgr, fileSpec, location, type) {
-  var nsIComponentRegistrar = Components.interfaces.nsIComponentRegistrar;
-  compMgr = compMgr.QueryInterface(nsIComponentRegistrar);
-
-  var appInfo = Components.classes["@mozilla.org/xre/app-info;1"]
-      .getService(Components.interfaces.nsIXULAppInfo);
-  var versionChecker = Components.classes["@mozilla.org/xpcom/version-comparator;1"]
-      .getService(Components.interfaces.nsIVersionComparator);
-
-  if(versionChecker.compare(appInfo.version, "3.5a1") >= 0) {
-      compMgr.registerFactoryLocation(kMODULE_CID,
-              kMODULE_NAME,
-              kMODULE_CONTRACTID,
-              fileSpec,
-              location,
-              type);
-  }
-};
-
-LivemarkWrapperModule.getClassObject = function (compMgr, cid, iid)
-{
-  if (cid.equals(kMODULE_CID))
-    return LivemarkWrapperFactory;
-
-  Components.returnCode = Cr.NS_ERROR_NOT_REGISTERED;
-  return null;
-};
-
-LivemarkWrapperModule.canUnload = function (compMgr)
-{
-  return true;
-};
-
-function NSGetModule(compMgr, fileSpec)
-{
-  return LivemarkWrapperModule;
-}
-
diff --git a/src/components/cookie-jar-selector.js b/src/components/cookie-jar-selector.js
index 09ed14e..2956f23 100644
--- a/src/components/cookie-jar-selector.js
+++ b/src/components/cookie-jar-selector.js
@@ -504,12 +504,6 @@ function CookieJarSelector() {
 
 }
 
-/**
- * JS XPCOM component registration goop:
- *
- * Everything below is boring boilerplate and can probably be ignored.
- */
-
 const nsISupports = Components.interfaces.nsISupports;
 const nsIClassInfo = Components.interfaces.nsIClassInfo;
 const nsIObserver = Components.interfaces.nsIObserver;
@@ -530,12 +524,15 @@ CookieJarSelector.prototype =
     }
     return this;
   },
+
   wrappedJSObject: null,  // Initialized by constructor
 
   // make this an nsIClassInfo object
   flags: nsIClassInfo.DOM_OBJECT,
 
-  // method of nsIClassInfo
+  _xpcom_categories: [{category:"profile-after-change"}],
+  classID: kMODULE_CID,
+  contractID: kMODULE_CONTRACTID,
   classDescription: "CookieJarSelector",
 
   // method of nsIClassInfo
@@ -560,20 +557,13 @@ CookieJarSelector.prototype =
               this.addProtectedCookie(aSubject.QueryInterface(Components.interfaces.nsICookie2));//protect the new cookie!    
             }
             break;
-        case "app-startup": 
+        case "profile-after-change":
             var obsSvc = Components.classes["@mozilla.org/observer-service;1"].getService(nsIObserverService);
-            obsSvc.addObserver(this, "profile-after-change", false); 
-            obsSvc.addObserver(this, "quit-application", false); 
-            obsSvc.addObserver(this, "cookie-changed", false); 
-            break;
-        case "profile-after-change": 
+            obsSvc.addObserver(this, "cookie-changed", false);
             // after profil loading, initialize a timer to call timerCallback
             // at a specified interval
             this.timer.initWithCallback(this.timerCallback, 60 * 1000, nsITimer.TYPE_REPEATING_SLACK); // 1 minute
             break;
-        // put some stuff you want applied at firefox shutdown
-        case "quit-application":
-        break;
        }
   },
 
@@ -581,65 +571,12 @@ CookieJarSelector.prototype =
 
 }
 
-var CookieJarSelectorFactory = new Object();
-
-CookieJarSelectorFactory.createInstance = function (outer, iid)
-{
-  if (outer != null) {
-    Components.returnCode = Cr.NS_ERROR_NO_AGGREGATION;
-    return null;
-  }
-  if (!iid.equals(nsIClassInfo) &&
-      !iid.equals(nsIObserver) &&
-      !iid.equals(nsISupports)) {
-    Components.returnCode = Cr.NS_ERROR_NO_INTERFACE;
-    return null;
-  }
-  return new CookieJarSelector();
-}
-
-var CookieJarSelectorModule = new Object();
-
-CookieJarSelectorModule.registerSelf = 
-function (compMgr, fileSpec, location, type)
-{
-  compMgr = compMgr.QueryInterface(nsIComponentRegistrar);
-  compMgr.registerFactoryLocation(kMODULE_CID,
-                                  kMODULE_NAME,
-                                  kMODULE_CONTRACTID,
-                                  fileSpec, 
-                                  location, 
-                                  type);
-   var catman = Components.classes['@mozilla.org/categorymanager;1'].getService(nsICategoryManager);
-   catman.addCategoryEntry("app-startup", kMODULE_NAME, kMODULE_CONTRACTID, true, true);
-}
-
-CookieJarSelectorModule.unregisterSelf = 
-function (compMgr, fileSpec, location, type)
-{
-   var catman = Components.classes['@mozilla.org/categorymanager;1'].getService(nsICategoryManager);
-   catman.deleteCategoryEntry("app-startup", kMODULE_NAME, true);
-  compMgr = compMgr.QueryInterface(nsIComponentRegistrar);
-  compMgr.unregisterFactoryLocation(kMODULE_CID,
-                                  fileSpec);
-}
-
-CookieJarSelectorModule.getClassObject = function (compMgr, cid, iid)
-{
-  if (cid.equals(kMODULE_CID))
-    return CookieJarSelectorFactory;
-
-
-  Components.returnCode = Cr.NS_ERROR_NOT_REGISTERED;
-  return null;
-}
-
-CookieJarSelectorModule.canUnload = function (compMgr)
-{
-  return true;
-}
-
-function NSGetModule(compMgr, fileSpec)
-{
-  return CookieJarSelectorModule;
-}
+/**
+* XPCOMUtils.generateNSGetFactory was introduced in Mozilla 2 (Firefox 4).
+* XPCOMUtils.generateNSGetModule is for Mozilla 1.9.2 (Firefox 3.6).
+*/
+Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
+if (XPCOMUtils.generateNSGetFactory)
+    var NSGetFactory = XPCOMUtils.generateNSGetFactory([CookieJarSelector]);
+else
+    var NSGetModule = XPCOMUtils.generateNSGetModule([CookieJarSelector]);
-- 
1.7.1




More information about the tor-commits mailing list