1// Copyright (c) 2012 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#ifndef CHROME_COMMON_EXTENSIONS_EXTENSION_CONSTANTS_H_
6#define CHROME_COMMON_EXTENSIONS_EXTENSION_CONSTANTS_H_
7
8#include <string>
9
10#include "base/basictypes.h"
11#include "url/gurl.h"
12
13namespace extension_urls {
14
15// This returns the compile-time constant webstore update url specific to
16// Chrome. Usually you should prefer using GetWebstoreUpdateUrl.
17GURL GetDefaultWebstoreUpdateUrl();
18
19// Field to use with webstore URL for tracking launch source.
20extern const char kWebstoreSourceField[];
21
22// Values to use with webstore URL launch source field.
23extern const char kLaunchSourceAppList[];
24extern const char kLaunchSourceAppListSearch[];
25extern const char kLaunchSourceAppListInfoDialog[];
26
27}  // namespace extension_urls
28
29namespace extension_misc {
30
31// The extension id of the bookmark manager.
32extern const char kBookmarkManagerId[];
33
34// The extension id of the Chrome component application.
35extern const char kChromeAppId[];
36
37// The extension id of the Cloud Print component application.
38extern const char kCloudPrintAppId[];
39
40// The extension id of the Easy Unlock component application.
41extern const char kEasyUnlockAppId[];
42
43// The extension id of the Enterprise Web Store component application.
44extern const char kEnterpriseWebStoreAppId[];
45
46// The extension id of GMail application.
47extern const char kGmailAppId[];
48
49// The extension id of the Google Doc application.
50extern const char kGoogleDocAppId[];
51
52// The extension id of the Google Play Music application.
53extern const char kGooglePlayMusicAppId[];
54
55// The extension id of the Google Search application.
56extern const char kGoogleSearchAppId[];
57
58// The extension id of the Google Sheets application.
59extern const char kGoogleSheetsAppId[];
60
61// The extension id of the Google Slides application.
62extern const char kGoogleSlidesAppId[];
63
64// The extension id of the HTerm app for ChromeOS.
65extern const char kHTermAppId[];
66
67// The extension id of the HTerm dev app for ChromeOS.
68extern const char kHTermDevAppId[];
69
70// The extension id of the Identity API UI application.
71extern const char kIdentityApiUiAppId[];
72
73// The extension id of the Crosh component app for ChromeOS.
74extern const char kCroshBuiltinAppId[];
75
76// The extension id of the hotword audio verification dialogue app.
77extern const char kHotwordAudioVerificationAppId[];
78
79// The extension id of the hotword voice search trigger extension.
80extern const char kHotwordExtensionId[];
81
82// The extension id of the hotword shared module.
83extern const char kHotwordSharedModuleId[];
84
85// The extension id of the PDF extension.
86extern const char kPdfExtensionId[];
87
88// The extension id of the Office Viewer component extension.
89extern const char kQuickOfficeComponentExtensionId[];
90
91// The extension id of the Office Viewer extension on the internal webstore.
92extern const char kQuickOfficeInternalExtensionId[];
93
94// The extension id of the Office Viewer extension.
95extern const char kQuickOfficeExtensionId[];
96
97// The extension id of the settings application.
98extern const char kSettingsAppId[];
99
100// The extension id used for testing streamsPrivate
101extern const char kStreamsPrivateTestExtensionId[];
102
103// The extension id of the Youtube application.
104extern const char kYoutubeAppId[];
105
106// The extension id of the in-app payments support application.
107extern const char kInAppPaymentsSupportAppId[];
108
109// The name of the app launch histogram.
110extern const char kAppLaunchHistogram[];
111
112// The name of the app launch histogram for platform apps.
113extern const char kPlatformAppLaunchHistogram[];
114
115// The buckets used for app launches.
116enum AppLaunchBucket {
117  // Launch from NTP apps section while maximized.
118  APP_LAUNCH_NTP_APPS_MAXIMIZED,
119
120  // Launch from NTP apps section while collapsed.
121  APP_LAUNCH_NTP_APPS_COLLAPSED,
122
123  // Launch from NTP apps section while in menu mode.
124  APP_LAUNCH_NTP_APPS_MENU,
125
126  // Launch from NTP most visited section in any mode.
127  APP_LAUNCH_NTP_MOST_VISITED,
128
129  // Launch from NTP recently closed section in any mode.
130  APP_LAUNCH_NTP_RECENTLY_CLOSED,
131
132  // App link clicked from bookmark bar.
133  APP_LAUNCH_BOOKMARK_BAR,
134
135  // Nvigated to an app from within a web page (like by clicking a link).
136  APP_LAUNCH_CONTENT_NAVIGATION,
137
138  // Launch from session restore.
139  APP_LAUNCH_SESSION_RESTORE,
140
141  // Autolaunched at startup, like for pinned tabs.
142  APP_LAUNCH_AUTOLAUNCH,
143
144  // Launched from omnibox app links.
145  APP_LAUNCH_OMNIBOX_APP,
146
147  // App URL typed directly into the omnibox (w/ instant turned off).
148  APP_LAUNCH_OMNIBOX_LOCATION,
149
150  // Navigate to an app URL via instant.
151  APP_LAUNCH_OMNIBOX_INSTANT,
152
153  // Launch via chrome.management.launchApp.
154  APP_LAUNCH_EXTENSION_API,
155
156  // Launch an app via a shortcut. This includes using the --app or --app-id
157  // command line arguments, or via an app shim process on Mac.
158  APP_LAUNCH_CMD_LINE_APP,
159
160  // App launch by passing the URL on the cmd line (not using app switches).
161  APP_LAUNCH_CMD_LINE_URL,
162
163  // User clicked web store launcher on NTP.
164  APP_LAUNCH_NTP_WEBSTORE,
165
166  // App launched after the user re-enabled it on the NTP.
167  APP_LAUNCH_NTP_APP_RE_ENABLE,
168
169  // URL launched using the --app cmd line option, but the URL does not
170  // correspond to an installed app. These launches are left over from a
171  // feature that let you make desktop shortcuts from the file menu.
172  APP_LAUNCH_CMD_LINE_APP_LEGACY,
173
174  // User clicked web store link on the NTP footer.
175  APP_LAUNCH_NTP_WEBSTORE_FOOTER,
176
177  // User clicked [+] icon in apps page.
178  APP_LAUNCH_NTP_WEBSTORE_PLUS_ICON,
179
180  // User clicked icon in app launcher main view.
181  APP_LAUNCH_APP_LIST_MAIN,
182
183  // User clicked app launcher search result.
184  APP_LAUNCH_APP_LIST_SEARCH,
185
186  // User clicked the chrome app icon from the app launcher's main view.
187  APP_LAUNCH_APP_LIST_MAIN_CHROME,
188
189  // User clicked the webstore icon from the app launcher's main view.
190  APP_LAUNCH_APP_LIST_MAIN_WEBSTORE,
191
192  // User clicked the chrome app icon from the app launcher's search view.
193  APP_LAUNCH_APP_LIST_SEARCH_CHROME,
194
195  // User clicked the webstore icon from the app launcher's search view.
196  APP_LAUNCH_APP_LIST_SEARCH_WEBSTORE,
197  APP_LAUNCH_BUCKET_BOUNDARY,
198  APP_LAUNCH_BUCKET_INVALID
199};
200
201// The extension id of the ChromeVox extension.
202extern const char kChromeVoxExtensionId[];
203
204#if defined(OS_CHROMEOS)
205// Path to preinstalled ChromeVox screen reader extension (relative to
206// |chrome::DIR_RESOURCES|).
207extern const char kChromeVoxExtensionPath[];
208// Name of ChromeVox manifest file.
209extern const char kChromeVoxManifestFilename[];
210// Name of ChromeVox guest manifest file.
211extern const char kChromeVoxGuestManifestFilename[];
212// Name of ChromeVox next manifest file.
213extern const char kChromeVoxNextManifestFilename[];
214// Name of ChromeVox next guest manifest file.
215extern const char kChromeVoxNextGuestManifestFilename[];
216// Extension id, path (relative to |chrome::DIR_RESOURCES|) and IME engine
217// id for the builtin-in Braille IME extension.
218extern const char kBrailleImeExtensionId[];
219extern const char kBrailleImeExtensionPath[];
220extern const char kBrailleImeEngineId[];
221// Path to preinstalled Connectivity Diagnostics extension.
222extern const char kConnectivityDiagnosticsPath[];
223extern const char kConnectivityDiagnosticsKioskPath[];
224extern const char kConnectivityDiagnosticsLauncherPath[];
225// Path to preinstalled speech synthesis extension.
226extern const char kSpeechSynthesisExtensionPath[];
227// The extension id of the speech synthesis extension.
228extern const char kSpeechSynthesisExtensionId[];
229// The extension id of the wallpaper manager application.
230extern const char kWallpaperManagerId[];
231// The extension id of the first run dialog application.
232extern const char kFirstRunDialogId[];
233#endif
234
235// What causes an extension to be installed? Used in histograms, so don't
236// change existing values.
237enum CrxInstallCause {
238  INSTALL_CAUSE_UNSET = 0,
239  INSTALL_CAUSE_USER_DOWNLOAD,
240  INSTALL_CAUSE_UPDATE,
241  INSTALL_CAUSE_EXTERNAL_FILE,
242  INSTALL_CAUSE_AUTOMATION,
243  NUM_INSTALL_CAUSES
244};
245
246// The states that an app can be in, as reported by chrome.app.installState
247// and chrome.app.runningState.
248extern const char kAppStateNotInstalled[];
249extern const char kAppStateInstalled[];
250extern const char kAppStateDisabled[];
251extern const char kAppStateRunning[];
252extern const char kAppStateCannotRun[];
253extern const char kAppStateReadyToRun[];
254
255// The path part of the file system url used for media file systems.
256extern const char kMediaFileSystemPathPart[];
257
258// The key used for signing some pieces of data from the webstore.
259extern const uint8 kWebstoreSignaturesPublicKey[];
260extern const int kWebstoreSignaturesPublicKeySize;
261
262}  // namespace extension_misc
263
264namespace extensions {
265
266// This enum is used for the launch type the user wants to use for an
267// application.
268// Do not remove items or re-order this enum as it is used in preferences
269// and histograms.
270enum LaunchType {
271  LAUNCH_TYPE_INVALID = -1,
272  LAUNCH_TYPE_FIRST = 0,
273  LAUNCH_TYPE_PINNED = LAUNCH_TYPE_FIRST,
274  LAUNCH_TYPE_REGULAR = 1,
275  LAUNCH_TYPE_FULLSCREEN = 2,
276  LAUNCH_TYPE_WINDOW = 3,
277  NUM_LAUNCH_TYPES,
278
279  // Launch an app in the in the way a click on the NTP would,
280  // if no user pref were set.  Update this constant to change
281  // the default for the NTP and chrome.management.launchApp().
282  LAUNCH_TYPE_DEFAULT = LAUNCH_TYPE_REGULAR
283};
284
285// Don't remove items or change the order of this enum.  It's used in
286// histograms and preferences.
287enum LaunchContainer {
288  LAUNCH_CONTAINER_WINDOW,
289  LAUNCH_CONTAINER_PANEL,
290  LAUNCH_CONTAINER_TAB,
291  // For platform apps, which don't actually have a container (they just get a
292  // "onLaunched" event).
293  LAUNCH_CONTAINER_NONE
294};
295
296}  // namespace extensions
297
298#endif  // CHROME_COMMON_EXTENSIONS_EXTENSION_CONSTANTS_H_
299