1999-09-05 10:27:42 +04:00
|
|
|
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
|
|
|
/*
|
|
|
|
* The contents of this file are subject to the Netscape Public License
|
|
|
|
* Version 1.1 (the "NPL"); you may not use this file except in
|
|
|
|
* compliance with the NPL. You may obtain a copy of the NPL at
|
|
|
|
* http://www.mozilla.org/NPL/
|
|
|
|
*
|
|
|
|
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
|
|
|
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
|
|
|
* for the specific language governing rights and limitations under the
|
|
|
|
* NPL.
|
|
|
|
*
|
|
|
|
* The Initial Developer of this code under the NPL is Netscape
|
|
|
|
* Communications Corporation. Portions created by Netscape are
|
|
|
|
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
|
|
|
* Reserved.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#include "nsISupports.idl"
|
|
|
|
#include "nsIFactory.idl"
|
|
|
|
#include "nsIEnumerator.idl"
|
|
|
|
|
2000-01-25 00:28:28 +03:00
|
|
|
interface nsIFile;
|
|
|
|
|
1999-09-05 10:27:42 +04:00
|
|
|
/* should this be in nsroot.idl? */
|
|
|
|
native nsCID(nsCID);
|
|
|
|
|
|
|
|
[scriptable, uuid(8458a740-d5dc-11d2-92fb-00e09805570f)]
|
|
|
|
interface nsIComponentManager : nsISupports
|
|
|
|
{
|
2000-05-05 10:33:05 +04:00
|
|
|
/**
|
|
|
|
* findFactory
|
|
|
|
*
|
|
|
|
* Returns the factory object that can be used to create instances of
|
|
|
|
* CID aClass
|
|
|
|
*
|
|
|
|
* @param aClass The classid of the factory that is being requested
|
|
|
|
*/
|
1999-09-05 10:27:42 +04:00
|
|
|
nsIFactory findFactory(in nsCIDRef aClass);
|
|
|
|
|
2000-05-05 10:33:05 +04:00
|
|
|
/**
|
|
|
|
* getClassObject
|
|
|
|
*
|
|
|
|
* @param aClass : CID of the class whose class object is requested
|
|
|
|
* @param aIID : IID of an interface that the class object is known to
|
|
|
|
* to implement. nsISupports and nsIFactory are known to
|
|
|
|
* be implemented by the class object.
|
|
|
|
*/
|
2000-06-03 13:46:12 +04:00
|
|
|
[noscript] voidPtr getClassObject(in nsCIDRef aClass, in nsIIDRef aIID);
|
2000-05-05 10:33:05 +04:00
|
|
|
|
|
|
|
/**
|
|
|
|
* progIDToClassID
|
|
|
|
*
|
|
|
|
* Get the ClassID for a given ProgID. Many ClassIDs may implement a
|
|
|
|
* ProgID. In such a situation, this returns the preferred ClassID, which
|
|
|
|
* happens to be the last registered ClassID.
|
|
|
|
*
|
|
|
|
* @param aProgID : Progid for which ClassID is requested
|
|
|
|
* @return aClass : ClassID return
|
|
|
|
*/
|
|
|
|
[noscript] void progIDToClassID(in string aProgID, out nsCID aClass);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* classIDToProgid
|
|
|
|
*
|
|
|
|
* Get the ProgID for a given ClassID. A ClassIDs may implement multiple
|
|
|
|
* ProgIDs. This function return the last registered ProgID.
|
|
|
|
*
|
|
|
|
* @param aClass : ClassID for which ProgID is requested.
|
|
|
|
* @return aClassName : returns class name asssociated with aClass
|
|
|
|
* @return : ProgID last registered for aClass
|
|
|
|
*/
|
|
|
|
string CLSIDToProgID(in nsCIDRef aClass, out string aClassName);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* createInstance
|
|
|
|
*
|
|
|
|
* Create an instance of the CID aClass and return the interface aIID.
|
|
|
|
*
|
|
|
|
* @param aClass : ClassID of object instance requested
|
|
|
|
* @param aDelegate : Used for aggregation
|
|
|
|
* @param aIID : IID of interface requested
|
|
|
|
*/
|
2000-06-03 13:46:12 +04:00
|
|
|
[noscript] voidPtr createInstance(in nsCIDRef aClass,
|
|
|
|
in nsISupports aDelegate,
|
|
|
|
in nsIIDRef aIID);
|
1999-09-05 10:27:42 +04:00
|
|
|
|
1999-09-07 09:06:37 +04:00
|
|
|
/**
|
2000-05-05 10:33:05 +04:00
|
|
|
* createInstanceByProgID
|
|
|
|
*
|
|
|
|
* Create an instance of the CID that implements aProgID and return the
|
|
|
|
* interface aIID. This is a convenience function that effectively does
|
|
|
|
* ProgIDToClassID() followed by CreateInstance().
|
|
|
|
*
|
|
|
|
* @param aProgID : aProgID of object instance requested
|
|
|
|
* @param aDelegate : Used for aggregation
|
|
|
|
* @param aIID : IID of interface requested
|
|
|
|
*/
|
2000-06-03 13:46:12 +04:00
|
|
|
[noscript] voidPtr createInstanceByProgID(in string aProgID,
|
|
|
|
in nsISupports aDelegate,
|
|
|
|
in nsIIDRef IID);
|
2000-05-05 10:33:05 +04:00
|
|
|
/**
|
|
|
|
* registryLocationForSpec
|
|
|
|
*
|
|
|
|
* Given a file specification, return the registry representation of
|
|
|
|
* the filename. Files that are found relative to the components
|
|
|
|
* directory will have a registry representation
|
|
|
|
* "rel:<relative-native-path>" while filenames that are not, will have
|
|
|
|
* "abs:<full-native-path>".
|
1999-09-07 09:06:37 +04:00
|
|
|
*/
|
2000-05-05 10:33:05 +04:00
|
|
|
string registryLocationForSpec(in nsIFile aSpec);
|
1999-09-05 10:27:42 +04:00
|
|
|
|
1999-09-07 09:06:37 +04:00
|
|
|
/**
|
2000-05-05 10:33:05 +04:00
|
|
|
* specForRegistyLocation
|
|
|
|
*
|
|
|
|
* Create a file specification for the registry representation (rel:/abs:)
|
|
|
|
* got via registryLocationForSpec.
|
1999-09-07 09:06:37 +04:00
|
|
|
*/
|
2000-01-25 00:28:28 +03:00
|
|
|
nsIFile specForRegistryLocation(in string aLocation);
|
1999-09-07 09:06:37 +04:00
|
|
|
|
2000-05-05 10:33:05 +04:00
|
|
|
/**
|
|
|
|
* registerFactory
|
|
|
|
*
|
|
|
|
* Register a factory and ProgID associated with CID aClass
|
|
|
|
*
|
|
|
|
* @param aClass : CID of object
|
|
|
|
* @param aClassName : Class Name of CID
|
|
|
|
* @param aProgID : ProgID associated with CID aClass
|
|
|
|
* @param aFactory : Factory that will be registered for CID aClass
|
|
|
|
* @param aReplace : Boolean that indicates whether to replace a previous
|
|
|
|
* registration for the CID aClass.
|
|
|
|
*/
|
|
|
|
void registerFactory(in nsCIDRef aClass, in string aClassName,
|
|
|
|
in string aProgID, in nsIFactory aFactory,
|
|
|
|
in boolean aReplace);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* registerComponent
|
|
|
|
*
|
|
|
|
* Register a native dll module via its registry representation as returned
|
|
|
|
* by registryLocationForSpec() as the container of CID implemenation
|
|
|
|
* aClass and associate aProgID and aClassName to the CID aClass. Native
|
|
|
|
* dll component type is assumed.
|
|
|
|
*
|
|
|
|
* @param aClass : CID implemenation contained in module
|
|
|
|
* @param aClassName : Class name associated with CID aClass
|
|
|
|
* @param aProgID : ProgID associated with CID aClass
|
|
|
|
* @param aLocation : Location of module (dll). Format of this is the
|
|
|
|
* registry representation as returned by
|
|
|
|
* registryLocationForSpec()
|
|
|
|
* @param aReplace : Boolean that indicates whether to replace a previous
|
|
|
|
* module registration for aClass.
|
|
|
|
* @param aPersist : Remember this registration across sessions.
|
|
|
|
*/
|
|
|
|
void registerComponent(in nsCIDRef aClass, in string aClassName,
|
|
|
|
in string aProgID, in string aLocation,
|
|
|
|
in boolean aReplace, in boolean aPersist);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* registerComponentWithType
|
|
|
|
*
|
|
|
|
* Register a module's location via its registry representation
|
|
|
|
* as returned by registryLocationForSpec() as the container of CID implemenation
|
|
|
|
* aClass of type aType and associate aProgID and aClassName to the CID aClass.
|
|
|
|
*
|
|
|
|
* @param aClass : CID implemenation contained in module
|
|
|
|
* @param aClassName : Class name associated with CID aClass
|
|
|
|
* @param aProgID : ProgID associated with CID aClass
|
|
|
|
* @param aSpec : Filename spec for module's location.
|
|
|
|
* @param aLocation : Location of module of type aType. Format of this string
|
|
|
|
* is the registry representation as returned by
|
|
|
|
* registryLocationForSpec()
|
|
|
|
* @param aReplace : Boolean that indicates whether to replace a previous
|
|
|
|
* loader registration for aClass.
|
|
|
|
* @param aPersist : Remember this registration across sessions.
|
|
|
|
* @param aType : Component Type of CID aClass.
|
|
|
|
*/
|
|
|
|
void registerComponentWithType(in nsCIDRef aClass, in string aClassName,
|
|
|
|
in string aProgID, in nsIFile aSpec,
|
|
|
|
in string aLocation, in boolean aReplace,
|
|
|
|
in boolean aPersist, in string aType);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* registerComponentSpec
|
|
|
|
*
|
|
|
|
* Register a native dll module via its file specification as the container
|
|
|
|
* of CID implemenation aClass and associate aProgID and aClassName to the
|
|
|
|
* CID aClass. Native dll component type is assumed.
|
|
|
|
*
|
|
|
|
* @param aClass : CID implemenation contained in module
|
|
|
|
* @param aClassName : Class name associated with CID aClass
|
|
|
|
* @param aProgID : ProgID associated with CID aClass
|
|
|
|
* @param aLibrary : File specification Location of module (dll).
|
|
|
|
* @param aReplace : Boolean that indicates whether to replace a previous
|
|
|
|
* module registration for aClass.
|
|
|
|
* @param aPersist : Remember this registration across sessions.
|
|
|
|
*/
|
|
|
|
void registerComponentSpec(in nsCIDRef aClass, in string aClassName,
|
|
|
|
in string aProgID, in nsIFile aLibrary,
|
|
|
|
in boolean aReplace, in boolean aPersist);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* registerComponentLib
|
|
|
|
*
|
|
|
|
* Register a native dll module via its dll name (not full path) as the
|
|
|
|
* container of CID implemenation aClass and associate aProgID and aClassName
|
|
|
|
* to the CID aClass. Native dll component type is assumed and the system
|
|
|
|
* services will be used to load this dll.
|
|
|
|
*
|
|
|
|
* @param aClass : CID implemenation contained in module
|
|
|
|
* @param aClassName : Class name associated with CID aClass
|
|
|
|
* @param aProgID : ProgID associated with CID aClass
|
|
|
|
* @param aDllNameLocation : Dll name of module.
|
|
|
|
* @param aReplace : Boolean that indicates whether to replace a previous
|
|
|
|
* module registration for aClass.
|
|
|
|
* @param aPersist : Remember this registration across sessions.
|
|
|
|
*/
|
|
|
|
void registerComponentLib(in nsCIDRef aClass, in string aClassName,
|
|
|
|
in string aProgID, in string aDllName,
|
|
|
|
in boolean aReplace, in boolean aPersist);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* unregisterFactory
|
|
|
|
*
|
|
|
|
* Unregister a factory associated with CID aClass.
|
|
|
|
*
|
|
|
|
* @param aClass : ClassID being unregistered
|
|
|
|
* @param aFactory : Factory previously registered to create instances of
|
|
|
|
* ClassID aClass.
|
|
|
|
*/
|
|
|
|
void unregisterFactory(in nsCIDRef aClass, in nsIFactory aFactory);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* unregisterComponent
|
|
|
|
*
|
|
|
|
* Disassociate module aLocation represented as registry location as returned
|
|
|
|
* by registryLocationForSpec() as containing ClassID aClass.
|
|
|
|
*
|
|
|
|
* @param aClass : ClassID being unregistered
|
|
|
|
* @param aLocation : Location of module. Format of this is the registry
|
|
|
|
* representation as returned by registryLocationForSpec().
|
|
|
|
* Components of any type will be unregistered.
|
|
|
|
*/
|
|
|
|
void unregisterComponent(in nsCIDRef aClass, in string aLocation);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* unregisterComponentSpec
|
|
|
|
*
|
|
|
|
* Disassociate module references by file specification aLibrarySpec as
|
|
|
|
* containing ClassID aClass.
|
|
|
|
*/
|
|
|
|
void unregisterComponentSpec(in nsCIDRef aClass, in nsIFile aLibrarySpec);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* freeLibraries
|
|
|
|
*
|
|
|
|
* Enumerates all loaded modules and unloads unused modules.
|
|
|
|
*/
|
|
|
|
void freeLibraries();
|
1999-09-05 10:27:42 +04:00
|
|
|
|
2000-05-05 10:33:05 +04:00
|
|
|
/**
|
|
|
|
* ID values for 'when'
|
|
|
|
*/
|
1999-09-05 10:27:42 +04:00
|
|
|
const long NS_Startup = 0;
|
|
|
|
const long NS_Script = 1;
|
|
|
|
const long NS_Timer = 2;
|
1999-09-26 22:02:52 +04:00
|
|
|
const long NS_Shutdown = 3;
|
1999-09-05 10:27:42 +04:00
|
|
|
|
2000-05-05 10:33:05 +04:00
|
|
|
/**
|
|
|
|
* autoRegister
|
|
|
|
*
|
|
|
|
* Enumerates directory looking for modules of all types and registers
|
|
|
|
* modules who have changed (modtime or size) since the last time
|
|
|
|
* autoRegister() was invoked.
|
|
|
|
*
|
|
|
|
* @param when : ID values of when the call is being made.
|
|
|
|
* @param directory : Directory the will be enumerated.
|
|
|
|
*/
|
|
|
|
void autoRegister(in long when, in nsIFile directory);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* autoRegisterComponent
|
|
|
|
*
|
|
|
|
* Loads module using appropriate loader and gives it an opportunity to
|
|
|
|
* register its CIDs if module's modtime or size changed since the last
|
|
|
|
* time this was called.
|
|
|
|
*
|
|
|
|
* @param when : ID values of when the call is being made.
|
|
|
|
* @param aFileLocation : File specification of module.
|
|
|
|
*/
|
|
|
|
void autoRegisterComponent(in long when, in nsIFile aFileLocation);
|
1999-09-05 10:27:42 +04:00
|
|
|
|
2000-05-05 10:33:05 +04:00
|
|
|
/**
|
|
|
|
* autoUnregisterComponent
|
|
|
|
*
|
|
|
|
* Loads module using approriate loader and gives it an opportunity to
|
|
|
|
* unregister its CIDs
|
|
|
|
*/
|
|
|
|
void autoUnregisterComponent(in long when, in nsIFile aFileLocation);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* isRegistered
|
|
|
|
*
|
|
|
|
* Returns true if a factory or module is registered for CID aClass.
|
|
|
|
*
|
|
|
|
* @param aClass : ClassID queried for registeration
|
|
|
|
* @return : true if a factory or module is registered for CID aClass.
|
|
|
|
* false otherwise.
|
|
|
|
*/
|
|
|
|
boolean isRegistered(in nsCIDRef aClass);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* enumerateCLSIDs
|
|
|
|
*
|
|
|
|
* Enumerate the list of all registered ClassIDs.
|
|
|
|
*
|
|
|
|
* @return : enumerator for ClassIDs.
|
|
|
|
*/
|
|
|
|
nsIEnumerator enumerateCLSIDs();
|
|
|
|
|
|
|
|
/**
|
|
|
|
* enumerateProgIDs
|
|
|
|
*
|
|
|
|
* Enumerate the list of all registered ProgIDs.
|
|
|
|
*
|
|
|
|
* @return : enumerator for ProgIDs.
|
|
|
|
*/
|
|
|
|
nsIEnumerator enumerateProgIDs();
|
1999-09-29 06:35:42 +04:00
|
|
|
|
1999-09-05 10:27:42 +04:00
|
|
|
};
|
|
|
|
|
|
|
|
%{ C++
|
|
|
|
/* include after the class def'n, because it needs to see it. */
|
|
|
|
#include "nsComponentManagerUtils.h"
|
|
|
|
%} C++
|
|
|
|
|