a) create a new nsIComponentManager with only four functions on it: CreateInstance CreateInstanceByContractID GetClassInfo GetClassInfoByContractID. b) rename the old nsIComponentManager to nsIComponentManagerObsolete. c) fixes callers which use to access the nsIComponentManager for component registration functionality. These callers will temporary use the nsIComponentManagerObsolete interface. d) Create a new API NS_GetComponentManager() which mirrors the NS_GetServiceManager() e) Perserves the old NS_GetGlobalComponentManager(). Note the cast usage. r/sr = rpotts@netscape.com alecf@netscape.com brendan@mozilla.org
118 lines
3.8 KiB
JavaScript
118 lines
3.8 KiB
JavaScript
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
|
* The contents of this file are subject to the Mozilla Public
|
|
* License Version 1.1 (the "License"); you may not use this file
|
|
* except in compliance with the License. You may obtain a copy of
|
|
* the License at http://www.mozilla.org/MPL/
|
|
*
|
|
* Software distributed under the License is distributed on an "AS
|
|
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
|
* implied. See the License for the specific language governing
|
|
* rights and limitations under the License.
|
|
*
|
|
* The Original Code is mozilla.org code.
|
|
*
|
|
* The Initial Developer of the Original Code is Netscape
|
|
* Communications Corporation. Portions created by Netscape are
|
|
* Copyright (C) 1999 Netscape Communications Corporation. All
|
|
* Rights Reserved.
|
|
*
|
|
* Contributor(s): Martijn Pieters <mj@digicool.com>
|
|
*/
|
|
|
|
/*
|
|
* -jsconsole commandline handler; starts up the JavaScript console.
|
|
*/
|
|
|
|
/*
|
|
* Constants
|
|
*/
|
|
|
|
const JSCONSOLEHANDLER_CONTRACTID =
|
|
"@mozilla.org/commandlinehandler/general-startup;1?type=jsconsole";
|
|
|
|
const JSCONSOLEHANDLER_CID =
|
|
Components.ID('{1698ef18-c128-41a1-b4d0-7f9acd2ae86c}');
|
|
|
|
/*
|
|
* Classes
|
|
*/
|
|
|
|
/* jsConsoleHandler class constructor */
|
|
function jsConsoleHandler() {}
|
|
|
|
/* jsConsoleHandler class def */
|
|
jsConsoleHandler.prototype = {
|
|
commandLineArgument: '-jsconsole',
|
|
prefNameForStartup: 'general.startup.jsconsole',
|
|
chromeUrlForTask: 'chrome://global/content/console.xul',
|
|
helpText: 'Start with Javascript Console',
|
|
handlesArgs: false,
|
|
defaultArgs: null,
|
|
openWindowWithArgs: false
|
|
};
|
|
|
|
/*
|
|
* Objects
|
|
*/
|
|
|
|
/* jsConsoleHandler Module (for XPCOM registration) */
|
|
var jsConsoleHandlerModule = {
|
|
registerSelf: function(compMgr, fileSpec, location, type) {
|
|
compMgr = compMgr.QueryInterface(Components.interfaces.nsIComponentManagerObsolete);
|
|
|
|
compMgr.registerComponentWithType(JSCONSOLEHANDLER_CID,
|
|
'JS Console Commandline Handler component',
|
|
JSCONSOLEHANDLER_CONTRACTID, fileSpec,
|
|
location, true, true, type);
|
|
var catman = Components.classes["@mozilla.org/categorymanager;1"]
|
|
.getService(Components.interfaces.nsICategoryManager);
|
|
catman.addCategoryEntry("command-line-argument-handlers", "jsconsole command line handler",
|
|
JSCONSOLEHANDLER_CONTRACTID,
|
|
true, true);
|
|
},
|
|
|
|
unregisterSelf: function(compMgr, fileSpec, location) {
|
|
compMgr = compMgr.QueryInterface(Components.interfaces.nsIComponentManagerObsolete);
|
|
compMgr.unregisterComponentSpec(JSCONSOLEHANDLER_CID, fileSpec);
|
|
var catman = Components.classes["@mozilla.org/categorymanager;1"]
|
|
.getService(Components.interfaces.nsICategoryManager);
|
|
catman.deleteCategoryEntry("command-line-argument-handlers",
|
|
JSCONSOLEHANDLER_CONTRACTID, true);
|
|
},
|
|
|
|
getClassObject: function(compMgr, cid, iid) {
|
|
if (!cid.equals(JSCONSOLEHANDLER_CID))
|
|
throw Components.results.NS_ERROR_NO_INTERFACE;
|
|
|
|
if (!iid.equals(Components.interfaces.nsIFactory))
|
|
throw Components.results.NS_ERROR_NOT_IMPLEMENTED;
|
|
|
|
return jsConsoleHandlerFactory;
|
|
},
|
|
|
|
canUnload: function(compMgr) { return true; }
|
|
};
|
|
|
|
/* jsConsoleHandler Class Factory */
|
|
var jsConsoleHandlerFactory = {
|
|
createInstance: function(outer, iid) {
|
|
if (outer != null)
|
|
throw Components.results.NS_ERROR_NO_AGGREGATION;
|
|
|
|
if (!iid.equals(Components.interfaces.nsICmdLineHandler) &&
|
|
!iid.equals(Components.interfaces.nsISupports))
|
|
throw Components.results.NS_ERROR_INVALID_ARG;
|
|
|
|
return new jsConsoleHandler();
|
|
}
|
|
}
|
|
|
|
/*
|
|
* Functions
|
|
*/
|
|
|
|
/* module initialisation */
|
|
function NSGetModule(comMgr, fileSpec) { return jsConsoleHandlerModule; }
|
|
|
|
// vim:sw=4:sr:sta:et:sts:
|