1// Copyright 2014 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5// Use the <code>chrome.app.runtime</code> API to manage the app lifecycle.
6// The app runtime manages app installation, controls the event page, and can
7// shut down the app at anytime.
8namespace app.runtime {
9
10  [inline_doc] dictionary LaunchItem {
11    // FileEntry for the file.
12    [instanceOf=FileEntry] object entry;
13
14    // The MIME type of the file.
15    DOMString type;
16  };
17
18  // Optional data for the launch. Either <code>items</code>, or
19  // the pair (<code>url, referrerUrl</code>) can be present for any given
20  // launch.
21  [inline_doc] dictionary LaunchData {
22    // The ID of the file or URL handler that the app is being invoked with.
23    // Handler IDs are the top-level keys in the <code>file_handlers</code>
24    // and/or <code>url_handlers</code> dictionaries in the manifest.
25    DOMString? id;
26
27    // The file entries for the <code>onLaunched</code> event triggered by a
28    // matching file handler in the <code>file_handlers</code> manifest key.
29    LaunchItem[]? items;
30
31    // The URL for the <code>onLaunched</code> event triggered by a matching
32    // URL handler in the <code>url_handlers</code> manifest key.
33    DOMString? url;
34
35    // The referrer URL for the <code>onLaunched</code> event triggered by a
36    // matching URL handler in the <code>url_handlers</code> manifest key.
37    DOMString? referrerUrl;
38
39    // Whether the app is being launched in a <a
40    // href="https://support.google.com/chromebook/answer/3134673">Chrome OS
41    // kiosk session</a>.
42    boolean? isKioskSession;
43  };
44
45  // This object specifies details and operations to perform on the embedding
46  // request. The app to be embedded can make a decision on whether or not to
47  // allow the embedding and what to embed based on the embedder making the
48  // request.
49  dictionary EmbedRequest {
50    DOMString embedderId;
51
52    // Optional developer specified data that the app to be embedded can use
53    // when making an embedding decision.
54    any? data;
55
56    // Allows <code>embedderId</code> to embed this app in an &lt;appview&gt;
57    // element. The <code>url</code> specifies the content to embed.
58    [nocompile] static void allow(DOMString url);
59
60    // Prevents <code> embedderId</code> from embedding this app in an
61    // &lt;appview&gt; element.
62    [nocompile] static void deny();
63  };
64
65  interface Events {
66    // Fired when an embedding app requests to embed this app. This event is
67    // only available on dev channel with the flag --enable-app-view.
68    static void onEmbedRequested(EmbedRequest request);
69
70    // Fired when an app is launched from the launcher.
71    static void onLaunched(optional LaunchData launchData);
72
73    // Fired at Chrome startup to apps that were running when Chrome last shut
74    // down.
75    static void onRestarted();
76  };
77};
78