summaryrefslogtreecommitdiff
path: root/chromium/extensions/common/api/app_runtime.idl
blob: 070ff3f4a4b71f7cc5844a26496bffca418dc5bf (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
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
// 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.
  // This should be kept in sync with AppLaunchSource in
  // components/services/app_service/public/mojom/types.mojom, and
  // GetLaunchSourceEnum() in
  // extensions/browser/api/app_runtime/app_runtime_api.cc.
  // Note the enumeration is used in UMA histogram so entries
  // should not be re-ordered or removed.
  enum LaunchSource {
    untracked,
    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,
    installed_notification,
    context_menu,
    arc,
    intent_url
  };

  // An app can be launched with a specific action in mind, for example, to
  // create a new note. The type of action the app was launched
  // with is available inside of the |actionData| field from the LaunchData
  // instance.
  enum ActionType {
    // The user wants to quickly take a new note.
    new_note
  };

  // Optional data that includes action-specific launch information.
  dictionary ActionData {
    ActionType actionType;

    // <p>Whether the action was requested on Chrome OS lock screen.</p>
    // <p>
    //   Launch events with this valued set to <code>true</code> are fired
    //   in lock screen context, where apps have reduced access to extension
    //   APIs, but are able to create windows on lock screen.
    // </p>
    // <p>
    //   Note that this value will be set to <code>true</code> only if the app
    //   is set as the lock screen enabled action handler by the user.
    // </p>
    [nodoc] boolean? isLockScreenAction;

    // Currently, used only with lock screen actions. If set, indicates whether
    // the app should attempt to restore state from when the action was last
    // handled.
    [nodoc] boolean? restoreLastActionState;
  };

  // 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 launched in a Chrome OS Demo Mode session. Used for
    // default-installed Demo Mode Chrome apps.
    [nodoc] boolean? isDemoSession;

    // 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;

    // Contains data that specifies the <code>ActionType</code> this app was
    // launched with. This is null if the app was not launched with a specific
    // action intent.
    ActionData? actionData;
  };

  // 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();
  };
};