Author: Mike Perry <[email protected]>
Date: Sun, 28 Nov 2010 19:03:15 -0800
Subject: Update Content Policy to Firefox 4.
Commit: afd312059cda428deccc6ae2060e9a46305a4f7d

---
 src/chrome.manifest          |    8 +++-
 src/components/cssblocker.js |  101 ++++++------------------------------------
 2 files changed, 21 insertions(+), 88 deletions(-)

diff --git a/src/chrome.manifest b/src/chrome.manifest
index cc65480..9d8682d 100644
--- a/src/chrome.manifest
+++ b/src/chrome.manifest
@@ -57,12 +57,18 @@ locale torbutton zh-CN chrome/locale/zh-CN/
 locale torbutton zh-HK chrome/locale/zh-HK/
 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
 
+# Firefox 4-style component registration
 component {e6204253-b690-4159-bfe8-d4eedab6b3be} 
components/cookie-jar-selector.js
 contract @torproject.org/cookie-jar-selector;1 
{e6204253-b690-4159-bfe8-d4eedab6b3be}
 
+component {23f4d9ba-023a-94ab-eb75-67aed7562a18} components/cssblocker.js
+contract @torproject.org/cssblocker;1 {23f4d9ba-023a-94ab-eb75-67aed7562a18}
+
+category content-policy ContentPolicy @torproject.org/cssblocker;1
 category profile-after-change CookieJarSelector 
@torproject.org/cookie-jar-selector;1
 
+
+
diff --git a/src/components/cssblocker.js b/src/components/cssblocker.js
index 79e0fbf..8ee8375 100644
--- a/src/components/cssblocker.js
+++ b/src/components/cssblocker.js
@@ -440,94 +440,21 @@ ContentPolicy.prototype = {
     // API to add another addon to be protected from discovery
     addProtectedChromeHost: function(name) {
         protectedChromeHosts[name] = true;
-    }
-};
-
-/*
- * Factory object
- */
-
-var ContentPolicyInstance = null;
-
-const factory = {
-       // nsIFactory interface implementation
-       createInstance: function(outer, iid) {
-               if (outer != null) {
-           Components.returnCode = Cr.NS_ERROR_NO_AGGREGATION;
-           return null;
-       }
-
-        if (!iid.equals(Components.interfaces.nsIContentPolicy) &&
-                !iid.equals(Components.interfaces.nsISupports)) {
-            Components.returnCode = Cr.NS_ERROR_NO_INTERFACE;          
-            return null;
-        }
-
-        if(!ContentPolicyInstance)
-            ContentPolicyInstance = new ContentPolicy();
-
-               return ContentPolicyInstance;
-       },
-
-       // nsISupports interface implementation
-       QueryInterface: function(iid) {
-               if (iid.equals(Components.interfaces.nsISupports) ||
-                               iid.equals(Components.interfaces.nsIModule) ||
-                               iid.equals(Components.interfaces.nsIFactory))
-                       return this;
-
-        /*
-               if (!iid.equals(Components.interfaces.nsIClassInfo))
-                       dump("CSS Blocker: factory.QI to an unknown interface: 
" + iid + "\n");
-        */
-
-        Components.returnCode = Cr.NS_ERROR_NO_INTERFACE;          
-        return null;   
-       }
-};
-
-
-/*
- * Module object
- */
-const module = {
-       registerSelf: function(compMgr, fileSpec, location, type) {
-               compMgr = 
compMgr.QueryInterface(Components.interfaces.nsIComponentRegistrar);
-               compMgr.registerFactoryLocation(CSSB_CID, 
-                                                                               
"Torbutton content policy",
-                                                                               
CSSB_CONTRACTID,
-                                                                               
fileSpec, location, type);
-
-               var catman = 
Components.classes["@mozilla.org/categorymanager;1"]
-                                        
.getService(Components.interfaces.nsICategoryManager);
-               catman.addCategoryEntry("content-policy", CSSB_CONTRACTID,
-                                                       CSSB_CONTRACTID, true, 
true);
-       },
-
-       unregisterSelf: function(compMgr, fileSpec, location) {
-               compMgr = 
compMgr.QueryInterface(Components.interfaces.nsIComponentRegistrar);
-
-               compMgr.unregisterFactoryLocation(CSSB_CID, fileSpec);
-               var catman = 
Components.classes["@mozilla.org/categorymanager;1"]
-                                          
.getService(Components.interfaces.nsICategoryManager);
-               catman.deleteCategoryEntry("content-policy", CSSB_CONTRACTID, 
true);
-       },
-
-       getClassObject: function(compMgr, cid, iid) {
-               if (cid.equals(CSSB_CID))
-            return factory;
+    },
 
-        Components.returnCode = Cr.NS_ERROR_NOT_REGISTERED;
-        return null;
-       },
+    _xpcom_categories: [{category:"content-policy"}],
+    classID: CSSB_CID,
+    contractID: CSSB_CONTRACTID,
+    classDescription: "Torbutton Content Policy"
 
-       canUnload: function(compMgr) {
-               return true;
-       }
 };
 
-function NSGetModule(comMgr, fileSpec) {
-       return module;
-}
-
-
+/**
+* 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([ContentPolicy]);
+else
+    var NSGetModule = XPCOMUtils.generateNSGetModule([ContentPolicy]);
-- 
1.7.1


Reply via email to