source: trunk/third/firefox/xpcom/components/nsIComponentRegistrar.idl @ 21695

Revision 21695, 8.6 KB checked in by rbasch, 20 years ago (diff)
This commit was generated by cvs2svn to compensate for changes in r21694, which included commits to RCS files with non-trunk default branches.
Line 
1/* ***** BEGIN LICENSE BLOCK *****
2 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
3 *
4 * The contents of this file are subject to the Mozilla Public License Version
5 * 1.1 (the "License"); you may not use this file except in compliance with
6 * the License. You may obtain a copy of the License at
7 * http://www.mozilla.org/MPL/
8 *
9 * Software distributed under the License is distributed on an "AS IS" basis,
10 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
11 * for the specific language governing rights and limitations under the
12 * License.
13 *
14 * The Original Code is XPCOM.
15 *
16 * The Initial Developer of the Original Code is Netscape Communications.
17 * Portions created by the Initial Developer are Copyright (C) 2001
18 * the Initial Developer. All Rights Reserved.
19 *
20 * Contributor(s):
21 *
22 * Alternatively, the contents of this file may be used under the terms of
23 * either the GNU General Public License Version 2 or later (the "GPL"), or
24 * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
25 * in which case the provisions of the GPL or the LGPL are applicable instead
26 * of those above. If you wish to allow use of your version of this file only
27 * under the terms of either the GPL or the LGPL, and not to allow others to
28 * use your version of this file under the terms of the MPL, indicate your
29 * decision by deleting the provisions above and replace them with the notice
30 * and other provisions required by the GPL or the LGPL. If you do not delete
31 * the provisions above, a recipient may use your version of this file under
32 * the terms of any one of the MPL, the GPL or the LGPL.
33 *
34 * ***** END LICENSE BLOCK ***** */
35
36/**
37 * The nsIComponentRegistrar interface.
38 * @status FROZEN
39 */
40
41#include "nsISupports.idl"
42
43interface nsIFile;
44interface nsIFactory;
45interface nsISimpleEnumerator;
46
47[scriptable, uuid(2417cbfe-65ad-48a6-b4b6-eb84db174392)]
48interface nsIComponentRegistrar : nsISupports
49{
50    /**
51     * autoRegister
52     *
53     * Register a component file or all component files in a directory. 
54     *
55     * Component files must have an associated loader and export the required
56     * symbols which this loader defines.  For example, if the given file is a
57     * native library (which is built into XPCOM), it must export the symbol
58     * "NSGetModule".  Other loaders may have different semantics.
59     *
60     * This method may only be called from the main thread.
61     *
62     * @param aSpec    : Filename spec for component file's location. If aSpec
63     *                   is a directory, then every component file in the
64     *                   directory will be registered. 
65     *                   If the aSpec is null, then the application component's
66     *                   directory as defined by NS_XPCOM_COMPONENT_DIR will be
67     *                   registered  (see nsIDirectoryService.idl)
68     *
69     * @return NS_OK   : Registration was successful.
70     *         NS_ERROR: Method failure.
71     */
72    void autoRegister(in nsIFile aSpec);
73
74    /**
75     * autoUnregister
76     *
77     * Unregister a component file or all component files in a directory. 
78     * This method may only be called from the main thread.
79     *
80     * @param aSpec    : Filename spec for component file's location. If aSpec
81     *                   is a directory, the every component file in the directory
82     *                   will be registered. 
83     *                   If aSpec is null, then the application component's
84     *                   directory as defined by NS_XPCOM_COMPONENT_DIR will be
85     *                   registered. (see nsIDirectoryService.idl)
86     *
87     * @return NS_OK     Unregistration was successful.
88     *         NS_ERROR* Method failure.
89     */
90    void autoUnregister(in nsIFile aSpec);
91
92
93    /**
94     * registerFactory
95     *
96     * Register a factory with a given ContractID, CID and Class Name.
97     *
98     * @param aClass      : CID of object
99     * @param aClassName  : Class Name of CID
100     * @param aContractID : ContractID associated with CID aClass
101     * @param aFactory    : Factory that will be registered for CID aClass
102     *
103     * @return NS_OK        Registration was successful.
104     *         NS_ERROR*    method failure.
105     */
106    void registerFactory(in nsCIDRef aClass,
107                         in string aClassName,
108                         in string aContractID,
109                         in nsIFactory aFactory);
110
111    /**
112     * unregisterFactory
113     *
114     * Unregister a factory associated with CID aClass.
115     *
116     * @param aClass   : CID being unregistered
117     * @param aFactory : Factory previously registered to create instances of
118     *                   CID aClass.
119     *
120     * @return NS_OK     Unregistration was successful.
121     *         NS_ERROR* Method failure.
122     */   
123    void unregisterFactory(in nsCIDRef aClass,
124                           in nsIFactory aFactory);
125
126    /**
127     * registerFactoryLocation
128     *
129     * Register a factory with a given ContractID, CID and Class Name
130     *
131     * @param aClass      : CID of object
132     * @param aClassName  : Class Name of CID
133     * @param aContractID : ContractID associated with CID aClass
134     * @param aFile       : Component File. This file must have an associated
135     *                      loader and export the required symbols which this
136     *                      loader specifies.
137     * @param aLoaderStr  : Opaque loader specific string.  This value is
138     *                      passed into the nsIModule's registerSelf
139     *                      callback and must be fowarded unmodified when
140     *                      registering factories via their location.
141     * @param aType       : Component Type of CID aClass.  This value is
142     *                      passed into the nsIModule's registerSelf
143     *                      callback and must be fowarded unmodified when
144     *                      registering factories via their location.
145     *
146     * @return NS_OK        Registration was successful.
147     *         NS_ERROR*    Method failure.
148     */
149    void registerFactoryLocation(in nsCIDRef aClass,
150                                 in string aClassName,
151                                 in string aContractID,
152                                 in nsIFile aFile,
153                                 in string aLoaderStr,
154                                 in string aType);
155
156    /**
157     * unregisterFactoryLocation
158     *
159     * Unregister a factory associated with CID aClass.
160     *
161     * @param aClass   : CID being unregistered
162     * @param aFile    : Component File previously registered
163     *
164     * @return NS_OK     Unregistration was successful.
165     *         NS_ERROR* Method failure.
166     */   
167    void unregisterFactoryLocation(in nsCIDRef aClass,
168                                   in nsIFile aFile);
169
170    /**
171     * isCIDRegistered
172     *
173     * Returns true if a factory is registered for the CID.
174     *
175     * @param aClass : CID queried for registeration
176     * @return       : true if a factory is registered for CID
177     *                 false otherwise.
178     */
179    boolean isCIDRegistered(in nsCIDRef aClass);
180   
181    /**
182     * isContractIDRegistered
183     *
184     * Returns true if a factory is registered for the contract id.
185     *
186     * @param aClass : contract id queried for registeration
187     * @return       : true if a factory is registered for contract id
188     *                 false otherwise.
189     */
190    boolean isContractIDRegistered(in string aContractID);
191
192    /**
193     * enumerateCIDs
194     *
195     * Enumerate the list of all registered CIDs.
196     *
197     * @return : enumerator for CIDs.  Elements of the enumeration can be QI'ed
198     *           for the nsISupportsID interface.  From the nsISupportsID, you
199     *           can obtain the actual CID.
200     */
201    nsISimpleEnumerator enumerateCIDs();
202
203    /**
204     * enumerateContractIDs
205     *
206     * Enumerate the list of all registered ContractIDs.
207     *
208     * @return : enumerator for ContractIDs. Elements of the enumeration can be
209     *           QI'ed for the nsISupportsCString interface.  From  the
210     *           nsISupportsCString interface, you can obtain the actual
211     *           Contract ID string.
212     */
213    nsISimpleEnumerator enumerateContractIDs();
214
215    /**
216     * CIDToContractID
217     *
218     * Returns the Contract ID for a given CID, if one exists and is registered.
219     *
220     * @return : Contract ID.
221     */
222    string   CIDToContractID(in nsCIDRef aClass);
223
224    /**
225     * contractIDToCID
226     *
227     * Returns the CID for a given Contract ID, if one exists and is registered.
228     *
229     * @return : Contract ID.
230     */
231    nsCIDPtr contractIDToCID(in string aContractID);
232
233};
234
235
236
237
238
239
240
241
242
243
Note: See TracBrowser for help on using the repository browser.