Linux Mac OSX Windows

Implemented by

 Interface representing a system for the installation and management of
 Extensions, Themes etc. 

 XXXben - Some of this stuff should go into a management-ey interface, 
          some into an app-startup-ey interface.
[scriptable, uuid(a3f5396c-a6e8-414a-8fbc-c8d831746328)]
interface nsIExtensionManager : nsISupports

Attributes

 The Extensions Datasource
 XXXben - the datasource should be registered with the RDF system, so it 
          can be accessed via rdf:extensions, and not exposed through the API
          like this.
readonly attribute nsIRDFDataSource datasource
 An enumeration of all registered Install Items
readonly attribute nsISimpleEnumerator installLocations

Methods

 Adds active download entries to the UI
 @param   items
          A list of nsIUpdateItems to entries to add
 @param   itemCount
          The length of |items|
 @param   fromChrome
          true when called from chrome
          false when not called from chrome (e.g. web page)
void addDownloads([array, size_is(itemCount)] in nsIUpdateItem items, in unsigned long itemCount, in boolean fromChrome)
 Adds a download progress listener so the front end can listen to download
 and install progress.
 @param   listener
          The listener to add
 @returns the index of the added listen in the listener list. 
long addUpdateListener(in nsIAddonUpdateListener listener)
 
 Determines if there are incompatible items installed (and offers to
 upgrade them to newer versions if available, via a UI). 
 @returns true if there were incompatible items that were disabled
          and the application needs to restart to re-register components,
          chrome etc, false otherwise.
boolean checkForMismatches()
 Disables an enabled item
 @param   id
          The GUID of the item.
void disableItem(in AString id)
 Enables a disabled item
 @param   id
          The GUID of the item.
void enableItem(in AString id)
 Retrieves a list of nsIUpdateItems of items that are incompatible
 with the supplied parameters.
 @param   id
          The id of the application to check compatibility against
 @param   version
          The version of the application to check compatibility against
 @param   type
          The type of item to return
 @param   includeDisabled
          true if disabled items should be included in the result set, 
          false otherwise
 @param   countRef
          The XPCJS reference to the number of items returned.
 @returns An array of incompatible nsIUpdateItems.
void getIncompatibleItemList(in AString id, in AString version, in unsigned long type, in boolean includeDisabled, out unsigned long itemCount, [array, size_is(itemCount), retval] out nsIUpdateItem items)
 Gets the Install Location for an item
 @param   id
          The GUID of the item
 @returns The Install Location where the item is installed.
nsIInstallLocation getInstallLocation(in AString id)
 Gets a nsIUpdateItem for the item with the specified id.
 @param   id
          The GUID of the item to construct a nsIUpdateItem for.
 @returns The nsIUpdateItem representing the item.
nsIUpdateItem getItemForID(in AString id)
 Retrieves a list of visible nsIUpdateItems of items matching the 
 specified type.
 @param   type
          The type of item to return.
 @param   countRef
          The XPCJS reference to the number of items returned.
 @returns An array of nsIUpdateItems matching the id/type filter.

 XXXben - it would be good if this function took an optional 
          install location.
void getItemList(in unsigned long type, out unsigned long itemCount, [array, size_is(itemCount), retval] out nsIUpdateItem items)
 Handle command line flags, e.g. -install-global-[extension|theme]
 @param   cmdLine
          the command line the application was started with
 XXXben - move this off this API - currently it is only used for 
          global installation, and the apprunner can do this directly
          with |installItemFromFile|
void handleCommandLineArgs(in nsICommandLine cmdline)
 Installs an item from a XPI/JAR file into the location specified. 
 @param   xpiFile
          The source file to install from. This function stages a copy
          of this file for persistence across potential application 
          restarts, you are responsible for removing the file you pass
          in. 
 @param   installLocationKey
          The name identifier of an Install Location to install into.
void installItemFromFile(in nsIFile xpiFile, in AString installLocationKey)
 Move an Item to the index of another item in its container.
 @param   movingID
          The ID of an item to be moved.
 @param   destinationID
          The ID of an item to move an item to.
void moveToIndexOf(in AString movingID, in AString destinationID)
 Removes an active download from the UI
 @param   url
          The URL of the active download to remove
void removeDownload(in AString url)
 Removes a download progress listener.
 @param   index
          The index of the listener to remove.
void removeUpdateListenerAt(in long index)
 Starts the Extension Manager, checking for item changes, additions and
 removals, and finishing pending operations.
 @param   commandLine
          The command line the application was started with.
 @returns true if the application has rewritten the extensions.ini file
          and needs to restart to register components/chrome etc, 
          false otherwise
boolean start(in nsICommandLine commandLine)
 Uninstalls an item
 @param   id
          The GUID of the item.
void uninstallItem(in AString id)
 Checks for updates to a list of items.
 @param   items
          An array of nsIUpdateItems to check for updates for.
 @param   itemCount
          The length of |items|
 @param   versionUpdateOnly
          false if this check should find the newest versions available,
          true if it should only find newer target application compatibility
          information for the currently installed version.
          2 if this check should only find target application compatibility
          information for the currently installed version and synchronize
          the values.
 @param   listener
          An nsIAddonUpdateCheckListener object which will be notified during
          the update check process. 
void update([array, size_is(itemCount)] in nsIUpdateItem items, in unsigned long itemCount, in unsigned long versionUpdateOnly, in nsIAddonUpdateCheckListener listener)