Skip to content

Instantly share code, notes, and snippets.

@anaran
Last active November 22, 2015 23:44
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save anaran/d08cf8ccd082e81cf72a to your computer and use it in GitHub Desktop.
Save anaran/d08cf8ccd082e81cf72a to your computer and use it in GitHub Desktop.
/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* 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/.
*/
dictionary InstallParameters {
sequence<DOMString> receipts = [];
sequence<DOMString> categories = [];
};
dictionary LanguageDesc {
DOMString target;
long revision;
DOMString name;
};
enum LocaleResourceType {
"binary",
"json",
"text"
};
// [NoInterfaceObject, NavigatorProperty="mozApps",
// JSImplementation="@mozilla.org/webapps;1"]
interface DOMApplicationsRegistry {
[CheckAnyPermissions/*="webapps-manage homescreen-webapps-manage"*/]
readonly attribute DOMApplicationsManager mgmt;
DOMRequest install(DOMString url, optional InstallParameters params);
DOMRequest installPackage(DOMString url, optional InstallParameters params);
DOMRequest getSelf();
DOMRequest getInstalled();
DOMRequest checkInstalled(DOMString manifestUrl);
// Language pack API.
// These promises will be rejected if the page is not in an app context,
// i.e. they are implicitely acting on getSelf().
Promise<MozMap<sequence<LanguageDesc>>> getAdditionalLanguages();
// Resolves to a different object depending on the dataType value.
Promise<any>
getLocalizationResource(DOMString language,
DOMString version,
DOMString path,
LocaleResourceType dataType);
};
[JSImplementation/*="@mozilla.org/webapps/application;1"*/, ChromeOnly]
interface DOMApplication : EventTarget {
// manifest and updateManifest will be turned into dictionaries once
// in bug 1053033 once bug 963382 is fixed.
readonly attribute any manifest;
readonly attribute any updateManifest;
readonly attribute DOMString manifestURL;
readonly attribute DOMString origin;
readonly attribute DOMString installOrigin;
readonly attribute DOMTimeStamp installTime;
readonly attribute boolean removable;
readonly attribute boolean enabled;
[Cached, Pure]
// readonly attribute sequence<DOMString> receipts;
readonly attribute double progress;
readonly attribute DOMString installState;
readonly attribute DOMTimeStamp lastUpdateCheck;
readonly attribute DOMTimeStamp updateTime;
readonly attribute boolean downloadAvailable;
readonly attribute boolean downloading;
readonly attribute boolean readyToApplyDownload;
readonly attribute long downloadSize;
readonly attribute DOMError? downloadError;
attribute EventHandler onprogress;
attribute EventHandler ondownloadsuccess;
attribute EventHandler ondownloaderror;
attribute EventHandler ondownloadavailable;
attribute EventHandler ondownloadapplied;
void download();
void cancelDownload();
DOMRequest launch(optional DOMString? url);
DOMRequest clearBrowserData();
DOMRequest checkForUpdate();
/**
* Inter-App Communication APIs.
*
* https://wiki.mozilla.org/WebAPI/Inter_App_Communication_Alt_proposal
*
*/
Promise<MozInterAppConnection> connect(DOMString keyword, optional any rules);
Promise<sequence<MozInterAppMessagePort>> getConnections();
// Receipts handling functions.
DOMRequest addReceipt(optional DOMString receipt);
DOMRequest removeReceipt(optional DOMString receipt);
DOMRequest replaceReceipt(optional DOMString oldReceipt,
optional DOMString newReceipt);
// Export this app as a shareable Blob.
Promise<Blob> export();
// Returns the localized value of a property, using either the manifest or
// a langpack if one is available.
Promise<DOMString> getLocalizedValue(DOMString property,
DOMString locale,
optional DOMString entryPoint);
};
[JSImplementation/*="@mozilla.org/webapps/manager;1"*/,
ChromeOnly,
CheckAnyPermissions/*="webapps-manage homescreen-webapps-manage"*/]
interface DOMApplicationsManager : EventTarget {
DOMRequest getAll();
[CheckAnyPermissions/*="webapps-manage"*/]
DOMRequest getNotInstalled();
[CheckAnyPermissions/*="webapps-manage"*/]
void applyDownload(DOMApplication app);
DOMRequest uninstall(DOMApplication app);
[CheckAnyPermissions/*"webapps-manage"*/]
Promise<DOMApplication> import(Blob blob);
[CheckAnyPermissions/*"webapps-manage"*/]
Promise<any> extractManifest(Blob blob);
[CheckAnyPermissions/*"webapps-manage"*/]
void setEnabled(DOMApplication app, boolean state);
Promise<Blob> getIcon(DOMApplication app, DOMString iconID,
optional DOMString entryPoint);
attribute EventHandler oninstall;
attribute EventHandler onuninstall;
attribute EventHandler onenabledstatechange;
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment