/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "nsISupports.idl" interface nsIFile; interface nsIComponentManager; /** * The nsIModule interface. */ [scriptable, uuid(7392D032-5371-11d3-994E-00805FD26FEE)] interface nsIModule : nsISupports { /** * Object Instance Creation * * Obtains a Class Object from a nsIModule for a given CID and IID pair. * This class object can either be query to a nsIFactory or a may be * query to a nsIClassInfo. * * @param aCompMgr : The global component manager * @param aClass : ClassID of object instance requested * @param aIID : IID of interface requested * */ void getClassObject(in nsIComponentManager aCompMgr, in nsCIDRef aClass, in nsIIDRef aIID, [retval, iid_is(aIID)] out nsQIResult aResult); /** * One time registration callback * * When the nsIModule is discovered, this method will be * called so that any setup registration can be preformed. * * @param aCompMgr : The global component manager * @param aLocation : The location of the nsIModule on disk * @param aLoaderStr: Opaque loader specific string * @param aType : Loader Type being used to load this module */ void registerSelf(in nsIComponentManager aCompMgr, in nsIFile aLocation, in string aLoaderStr, in string aType); /** * One time unregistration callback * * When the nsIModule is being unregistered, this method will be * called so that any unregistration can be preformed * * @param aCompMgr : The global component manager * @param aLocation : The location of the nsIModule on disk * @param aLoaderStr : Opaque loader specific string * */ void unregisterSelf(in nsIComponentManager aCompMgr, in nsIFile aLocation, in string aLoaderStr); /** * Module load management * * @param aCompMgr : The global component manager * * @return indicates to the caller if the module can be unloaded. * Returning PR_TRUE isn't a guarantee that the module will be * unloaded. It constitues only willingness of the module to be * unloaded. It is very important to ensure that no outstanding * references to the module's code/data exist before returning * PR_TRUE. * Returning PR_FALSE guaratees that the module won't be unloaded. */ boolean canUnload(in nsIComponentManager aCompMgr); };