[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[or-cvs] [torbutton/master 01/31] Update Cookie Jar code to Firefox 4.
Author: Mike Perry <mikeperry-git@xxxxxxxxxx>
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