author James Cheng <>
Fri, 05 Aug 2016 13:23:44 -0400
changeset 308428 8ee6f2eb8b349a351f6f76585eb85e0ec2b5c475
parent 302792 eb9d3d2aa71d713697cd364e8956d8c9183e76ed
child 310891 0db6683f22c5682decc8ce12bf9c4582d819129f
permissions -rw-r--r--
Bug 1291229 - Fix typo for moving Java bindings to mozilla::java namespace. r=jchen MozReview-Commit-ID: KGAS6EhnwAI

/* 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

/* We need a JSImplementation but cannot get one without a contract ID.
   Since Addon and AddonInstall are only ever created from JS they don't need
   real contract IDs. */
[ChromeOnly, JSImplementation="dummy"]
interface Addon {
  // The add-on's ID.
  readonly attribute DOMString id;
  // The add-on's version.
  readonly attribute DOMString version;
  // The add-on's type (extension, theme, etc.).
  readonly attribute DOMString type;
  // The add-on's name in the current locale.
  readonly attribute DOMString name;
  // The add-on's description in the current locale.
  readonly attribute DOMString description;
  // If the user has enabled this add-on, note that it still may not be running
  // depending on whether enabling requires a restart or if the add-on is
  // incompatible in some way.
  readonly attribute boolean isEnabled;
  // If the add-on is currently active in the browser.
  readonly attribute boolean isActive;

  Promise<boolean> uninstall();
  Promise<void> setEnabled(boolean value);

[ChromeOnly, JSImplementation="dummy"]
interface AddonInstall : EventTarget {
  // One of the STATE_* symbols from AddonManager.jsm
  readonly attribute DOMString state;
  // One of the ERROR_* symbols from AddonManager.jsm, or null
  readonly attribute DOMString? error;
  // How many bytes have been downloaded
  readonly attribute long long progress;
  // How many total bytes will need to be downloaded or -1 if unknown
  readonly attribute long long maxProgress;

  Promise<void> install();
  Promise<void> cancel();

dictionary addonInstallOptions {
  required DOMString url;

interface AddonManager : EventTarget {
   * Gets information about an add-on
   * @param  id
   *         The ID of the add-on to test for.
   * @return A promise. It will resolve to an Addon if the add-on is installed.
  Promise<Addon> getAddonByID(DOMString id);

   * Creates an AddonInstall object for a given URL.
   * @param options
   *        Only one supported option: 'url', the URL of the addon to install.
   * @return A promise that resolves to an instance of AddonInstall.
  Promise<AddonInstall> createInstall(optional addonInstallOptions options);

  /* Hooks for managing event listeners */
  void eventListenerWasAdded(DOMString type);
  void eventListenerWasRemoved(DOMString type);