Extension Manager:Sqlite Storage:nsIAddon

This replaces nsIUpdateItem

nsIAddon

/**
 * An item managed by the Extension System. Contains metadata that describes
 * the item.
 */
[scriptable, uuid(89c8d1a5-ac74-46e0-b983-7778c275d625)]
interface nsIAddon : nsISupports
{
  const unsigned long TYPE_APP         = 0x01;
  const unsigned long TYPE_EXTENSION   = 0x02;
  const unsigned long TYPE_THEME       = 0x04;
  const unsigned long TYPE_LOCALE      = 0x08;
  const unsigned long TYPE_MULTI_XPI   = 0x20;
  const unsigned long TYPE_ADDON       = TYPE_EXTENSION + TYPE_THEME + TYPE_LOCALE;
  const unsigned long TYPE_ANY         = 0xff;

  /**
   * The GUID of the item.
   */
  readonly attribute AString  id;

  /**
   * The name of the Install Location where this item is installed.
   */
  readonly attribute AString  installLocationKey;

  /**
   * The Version of the item, in FVF format.
   */
  readonly attribute AString  version;

  /**
   * The type of this item.
   */
  readonly attribute long type;

  /**
   * The URL of the update manifest for this item.
   */
  readonly attribute AString  updateURL;

  /**
   * The public key to verify updates for this item. This must be the public
   * part of the key that was used to sign update manifests for this add-on.
   */
  readonly attribute AString  updateKey;

  /**
   * The URL of the options dialog for for this item.
   */
  readonly attribute AString  optionsURL;

  /**
   * The URL of the about dialog for this item.
   */
  readonly attribute AString  aboutURL;

  /**
   * The URL of the icon that can be shown for this item.
   */
  readonly attribute AString  iconURL;

  /**
   * The internal chrome name for this item if it is a theme.
   */
  readonly attribute AString  internalName;

  /**
   * This attribute is true if the item is locked and cannot be
   * uninstalled.
   */
  readonly attribute boolean  locked;

  /**
   * This attribute is true if the item is hidden and should not be
   * displayed to the user.
   */
  readonly attribute boolean  hidden;

  /**
   * This attribute is true if the item is managed by the application.
   */
  readonly attribute boolean  appManaged;

  /**
   * This attribute is true if the user has disabled the item.
   */
  readonly attribute boolean  userDisabled;


  /**
   * This attribute is true if anything is causing the item to be
   * disabled.
   */
  readonly attribute boolean  isDisabled;

  /**
   * This attribute is true if the item is blocklisted.
   */
  readonly attribute boolean  isBlocklisted;

  /**
   * This attribute is true if the item is compatible with the
   * current application.
   */
  readonly attribute boolean  isCompatible;

  
  /**
   * The target application ID used for checking compatibility for this item.
   *
   * @note Add-ons can specify a targetApplication id of toolkit@mozilla.org in
   *       their install manifest for compatibility with all apps using a
   *       specific release of the toolkit.
   */
  readonly attribute AString  targetAppID;

  /**
   * The minimum version of this application that this item works with,
   * in FVF format.
   */
  readonly attribute AString  minAppVersion;

  /**
   * The maximum version of this application that this item works with,
   * in FVF format.
   */
  readonly attribute AString  maxAppVersion;


  /**
   * The name of this item.
   */
  readonly attribute AString  name;

  /**
   * The description of this item.
   */
  readonly attribute AString  description;

  /**
   * The creator of this item.
   */
  readonly attribute AString  creator;

  /**
   * The homepageURL of this item.
   */
  readonly attribute AString  homepageURL;

  /**
   * Retrieve the list of developers of this item.
   */
  void getDevelopers(out unsigned long count,
                     [retval, array, size_is(count)] out AString developers)

  /**
   * Retrieve the list of translators of this item.
   */
  void getTranslators(out unsigned long count,
                     [retval, array, size_is(count)] out AString translators)

  /**
   * Retrieve the list of contributors of this item.
   */
  void getContributors(out unsigned long count,
                     [retval, array, size_is(count)] out AString contributors)
};

nsIAddonDownload

/**
 * An item that is currently waiting to be downloaded/installed.
 * Certain of the nsIAddon properties are only available after the
 * xpi has been downloaded.
 */
[scriptable, uuid(89c8d1a5-ac74-46e0-b983-7778c275d625)]
interface nsIAddonDownload : nsIAddon
{
  /**
   * Before download has started, e.g. for available updates.
   */
  const unsigned long STATE_PENDING = 0;
  const unsigned long STATE_DOWNLOADING = 1;
  /**
   * This state may be skipped if no check is necessary.
   */
  const unsigned long STATE_CHECKING_COMPATIBILITY = 2;
  const unsigned long STATE_INSTALLING = 3;
  /**
   * This state may be skipped if no restart is necessary.
   */
  const unsigned long STATE_PENDING_RESTART = 4;
  const unsigned long STATE_INSTALLED = 5;

  /**
   * The current state of the install. There are notifications
   * in nsIAddonInstallListener whenever this changes.
   */
  readonly attribute unsigned long state

  /**
   * The url of any information about the update
   */
  readonly attribute nsIURL        updateInfoURL

  /**
   * The url the xpi is downloaded from (may be file: if there was
   * no download necessary.
   */
  readonly attribute nsIURL        xpiURL

  /**
   * The expected hash of the xpi
   */
  readonly attribute AString       xpiHash

  /**
   * The temporary file for the xpi
   */
  readonly attribute nsIFile       xpiFile

  /**
   * The certificate signing the xpi
   */
  readonly attribute nsIPrincipal  certificate

  /**
   * Adds an install listener that will be notified of state changes
   * for this install.
   */
  void addInstallListener(in nsIAddonInstallListener installListener);

  /**
   * Removes an install listener.
   */
  void removeInstallListener(in nsIAddonInstallListener installListener);
}