diff options
Diffstat (limited to 'dom/webidl/AddonManager.webidl')
-rw-r--r-- | dom/webidl/AddonManager.webidl | 106 |
1 files changed, 106 insertions, 0 deletions
diff --git a/dom/webidl/AddonManager.webidl b/dom/webidl/AddonManager.webidl new file mode 100644 index 0000000000..d392b90fb9 --- /dev/null +++ b/dom/webidl/AddonManager.webidl @@ -0,0 +1,106 @@ +/* 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/. + */ + +/* 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", + Exposed=Window] +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; + // If the add-on may be uninstalled + readonly attribute boolean canUninstall; + + Promise<boolean> uninstall(); + Promise<undefined> setEnabled(boolean value); +}; + +[ChromeOnly, JSImplementation="dummy", + Exposed=Window] +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<undefined> install(); + Promise<undefined> cancel(); +}; + +dictionary addonInstallOptions { + required DOMString url; + // If a non-empty string is passed for "hash", it is used to verify the + // checksum of the downloaded XPI before installing. If is omitted or if + // it is null or empty string, no checksum verification is performed. + DOMString? hash = null; +}; + +[HeaderFile="mozilla/AddonManagerWebAPI.h", + Func="mozilla::AddonManagerWebAPI::IsAPIEnabled", + JSImplementation="@mozilla.org/addon-web-api/manager;1", + WantsEventListenerHooks, + Exposed=Window] +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 = {}); + + /** + * Opens an Abuse Report dialog window for the addon with the given id. + * The addon may be currently installed (in which case the report will + * include the details available locally), or not (in which case the report + * will include the details that can be retrieved from the AMO API endpoint). + * + * @param id + * The ID of the add-on to report. + * @return A promise that resolves to a boolean (true when the report + * has been submitted successfully, false if the user cancelled + * the report). The Promise is rejected is the report fails + * for a reason other than user cancellation. + */ + Promise<boolean> reportAbuse(DOMString id); + + // Indicator to content whether handing off the reports to the integrated + // abuse report panel is enabled. + readonly attribute boolean abuseReportPanelEnabled; +}; + +[ChromeOnly,Exposed=Window,HeaderFile="mozilla/AddonManagerWebAPI.h"] +namespace AddonManagerPermissions { + boolean isHostPermitted(DOMString host); +}; |