home *** CD-ROM | disk | FTP | other *** search
- const nsIAppShellService = Components.interfaces.nsIAppShellService;
- const nsISupports = Components.interfaces.nsISupports;
- const nsICategoryManager = Components.interfaces.nsICategoryManager;
- const nsIComponentRegistrar = Components.interfaces.nsIComponentRegistrar;
- const nsICommandLine = Components.interfaces.nsICommandLine;
- const nsICommandLineHandler = Components.interfaces.nsICommandLineHandler;
- const nsIFactory = Components.interfaces.nsIFactory;
- const nsIModule = Components.interfaces.nsIModule;
- const nsIWindowWatcher = Components.interfaces.nsIWindowWatcher;
-
- const clh_contractID = "@mozilla.org/commandlinehandler/general-startup;1?type=stylish";
- const clh_CID = Components.ID("{639A2E30-078F-11DE-9C63-BC2A56D89593}");
- const clh_category = "m-stylish";
-
- /**
- * The XPCOM component that implements nsICommandLineHandler.
- * It also implements nsIFactory to serve as its own singleton factory.
- */
- const myAppHandler = {
- /* nsISupports */
- QueryInterface : function clh_QI(iid)
- {
- if (iid.equals(nsICommandLineHandler) ||
- iid.equals(nsIFactory) ||
- iid.equals(nsISupports))
- return this;
-
- throw Components.results.NS_ERROR_NO_INTERFACE;
- },
-
- /* nsICommandLineHandler */
-
- handle: function(commandLine) {
- var index = commandLine.findFlag("stylish-disable", false);
- if (index > -1) {
- var prefs = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch)
- prefs.setBoolPref("extensions.stylish.styleRegistrationEnabled", false);
- commandLine.removeArguments(index, index);
- }
- },
-
- helpInfo: " -stylish-disable Turn off style registration in Stylish\n",
-
- /* nsIFactory */
-
- createInstance : function clh_CI(outer, iid)
- {
- if (outer != null)
- throw Components.results.NS_ERROR_NO_AGGREGATION;
-
- return this.QueryInterface(iid);
- },
-
- lockFactory : function clh_lock(lock)
- {
- /* no-op */
- }
- };
-
- /**
- * The XPCOM glue that implements nsIModule
- */
- const myAppHandlerModule = {
- /* nsISupports */
- QueryInterface : function mod_QI(iid)
- {
- if (iid.equals(nsIModule) ||
- iid.equals(nsISupports))
- return this;
-
- throw Components.results.NS_ERROR_NO_INTERFACE;
- },
-
- /* nsIModule */
- getClassObject : function mod_gch(compMgr, cid, iid)
- {
- if (cid.equals(clh_CID))
- return myAppHandler.QueryInterface(iid);
-
- throw Components.results.NS_ERROR_NOT_REGISTERED;
- },
-
- registerSelf : function mod_regself(compMgr, fileSpec, location, type)
- {
- compMgr.QueryInterface(nsIComponentRegistrar);
-
- compMgr.registerFactoryLocation(clh_CID,
- "myAppHandler",
- clh_contractID,
- fileSpec,
- location,
- type);
-
- var catMan = Components.classes["@mozilla.org/categorymanager;1"].
- getService(nsICategoryManager);
- catMan.addCategoryEntry("command-line-handler",
- clh_category,
- clh_contractID, true, true);
- },
-
- unregisterSelf : function mod_unreg(compMgr, location, type)
- {
- compMgr.QueryInterface(nsIComponentRegistrar);
- compMgr.unregisterFactoryLocation(clh_CID, location);
-
- var catMan = Components.classes["@mozilla.org/categorymanager;1"].
- getService(nsICategoryManager);
- catMan.deleteCategoryEntry("command-line-handler", clh_category);
- },
-
- canUnload : function (compMgr)
- {
- return true;
- }
- };
-
- /* The NSGetModule function is the magic entry point that XPCOM uses to find what XPCOM objects
- * this component provides
- */
- function NSGetModule(comMgr, fileSpec)
- {
- return myAppHandlerModule;
- }
-
-