// Copyright 2014 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // Use the chrome.app.runtime API to manage the app lifecycle. // The app runtime manages app installation, controls the event page, and can // shut down the app at anytime. namespace app.runtime { [inline_doc] dictionary LaunchItem { // Entry for the item. [instanceOf=Entry] object entry; // The MIME type of the file. DOMString? type; }; // Enumeration of app launch sources. enum LaunchSource { app_launcher, new_tab_page, reload, restart, load_and_launch, command_line, file_handler, url_handler, system_tray, about_page, keyboard, extensions_page, management_api, ephemeral_app, background, kiosk, chrome_internal, test }; // Optional data for the launch. Either items, or // the pair (url, referrerUrl) can be present for any given // launch. [inline_doc] dictionary LaunchData { // The ID of the file or URL handler that the app is being invoked with. // Handler IDs are the top-level keys in the file_handlers // and/or url_handlers dictionaries in the manifest. DOMString? id; // The file entries for the onLaunched event triggered by a // matching file handler in the file_handlers manifest key. LaunchItem[]? items; // The URL for the onLaunched event triggered by a matching // URL handler in the url_handlers manifest key. DOMString? url; // The referrer URL for the onLaunched event triggered by a // matching URL handler in the url_handlers manifest key. DOMString? referrerUrl; // Whether the app is being launched in a Chrome OS // kiosk session. boolean? isKioskSession; // Whether the app is being launched in a Chrome OS // public session. boolean? isPublicSession; // Where the app is launched from. LaunchSource? source; }; // This object specifies details and operations to perform on the embedding // request. The app to be embedded can make a decision on whether or not to // allow the embedding and what to embed based on the embedder making the // request. dictionary EmbedRequest { DOMString embedderId; // Optional developer specified data that the app to be embedded can use // when making an embedding decision. any? data; // Allows embedderId to embed this app in an <appview> // element. The url specifies the content to embed. [nocompile] static void allow(DOMString url); // Prevents embedderId from embedding this app in an // <appview> element. [nocompile] static void deny(); }; interface Events { // Fired when an embedding app requests to embed this app. This event is // only available on dev channel with the flag --enable-app-view. static void onEmbedRequested(EmbedRequest request); // Fired when an app is launched from the launcher. static void onLaunched(optional LaunchData launchData); // Fired at Chrome startup to apps that were running when Chrome last shut // down, or when apps have been requested to restart from their previous // state for other reasons (e.g. when the user revokes access to an app's // retained files the runtime will restart the app). In these situations if // apps do not have an onRestarted handler they will be sent // an onLaunched event instead. static void onRestarted(); }; };