summaryrefslogtreecommitdiffstats
path: root/extensions/common/api/app_runtime.idl
blob: daf953cb20cbfb8ee1b645a8eeda26ed17197c00 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
// 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 <code>chrome.app.runtime</code> 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 <code>items</code>, or
  // the pair (<code>url, referrerUrl</code>) 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 <code>file_handlers</code>
    // and/or <code>url_handlers</code> dictionaries in the manifest.
    DOMString? id;

    // The file entries for the <code>onLaunched</code> event triggered by a
    // matching file handler in the <code>file_handlers</code> manifest key.
    LaunchItem[]? items;

    // The URL for the <code>onLaunched</code> event triggered by a matching
    // URL handler in the <code>url_handlers</code> manifest key.
    DOMString? url;

    // The referrer URL for the <code>onLaunched</code> event triggered by a
    // matching URL handler in the <code>url_handlers</code> manifest key.
    DOMString? referrerUrl;

    // Whether the app is being launched in a <a
    // href="https://support.google.com/chromebook/answer/3134673">Chrome OS
    // kiosk session</a>.
    boolean? isKioskSession;

    // Whether the app is being launched in a <a
    // href="https://support.google.com/chrome/a/answer/3017014">Chrome OS
    // public session</a>.
    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 <code>embedderId</code> to embed this app in an &lt;appview&gt;
    // element. The <code>url</code> specifies the content to embed.
    [nocompile] static void allow(DOMString url);

    // Prevents <code> embedderId</code> from embedding this app in an
    // &lt;appview&gt; 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 <code>onRestarted</code> handler they will be sent
    // an <code>onLaunched </code> event instead.
    static void onRestarted();
  };
};