1// Copyright (c) 2011 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#pragma once
8
9#include "base/basictypes.h"
10
11// Keys used in JSON representation of extensions.
12namespace extension_manifest_keys {
13  extern const char* kAllFrames;
14  extern const char* kApp;
15  extern const char* kBackground;
16  extern const char* kBrowserAction;
17  extern const char* kBrowseURLs;
18  extern const char* kChromeURLOverrides;
19  extern const char* kContentScripts;
20  extern const char* kConvertedFromUserScript;
21  extern const char* kCss;
22  extern const char* kCurrentLocale;
23  extern const char* kDefaultLocale;
24  extern const char* kDescription;
25  extern const char* kDevToolsPage;
26  extern const char* kExcludeGlobs;
27  extern const char* kFileFilters;
28  extern const char* kFileBrowserHandlers;
29  extern const char* kHomepageURL;
30  extern const char* kIcons;
31  extern const char* kIncognito;
32  extern const char* kIncludeGlobs;
33  extern const char* kIsolation;
34  extern const char* kJs;
35  extern const char* kLaunch;
36  extern const char* kLaunchContainer;
37  extern const char* kLaunchHeight;
38  extern const char* kLaunchLocalPath;
39  extern const char* kLaunchWebURL;
40  extern const char* kLaunchWidth;
41  extern const char* kMatches;
42  extern const char* kMinimumChromeVersion;
43  extern const char* kNaClModules;
44  extern const char* kNaClModulesMIMEType;
45  extern const char* kNaClModulesPath;
46  extern const char* kName;
47  extern const char* kOmnibox;
48  extern const char* kOmniboxKeyword;
49  extern const char* kOptionsPage;
50  extern const char* kPageAction;
51  extern const char* kPageActionDefaultIcon;
52  extern const char* kPageActionDefaultPopup;
53  extern const char* kPageActionDefaultTitle;
54  extern const char* kPageActionIcons;
55  extern const char* kPageActionId;
56  extern const char* kPageActionPopup;
57  extern const char* kPageActionPopupHeight;
58  extern const char* kPageActionPopupPath;
59  extern const char* kPageActions;
60  extern const char* kPermissions;
61  extern const char* kPlugins;
62  extern const char* kPluginsPath;
63  extern const char* kPluginsPublic;
64  extern const char* kPublicKey;
65  extern const char* kRunAt;
66  extern const char* kSidebar;
67  extern const char* kSidebarDefaultIcon;
68  extern const char* kSidebarDefaultPage;
69  extern const char* kSidebarDefaultTitle;
70  extern const char* kSignature;
71  extern const char* kTheme;
72  extern const char* kThemeColors;
73  extern const char* kThemeDisplayProperties;
74  extern const char* kThemeImages;
75  extern const char* kThemeTints;
76  extern const char* kToolstripPath;
77  extern const char* kToolstrips;
78  extern const char* kTts;
79  extern const char* kTtsGenderFemale;
80  extern const char* kTtsGenderMale;
81  extern const char* kTtsVoices;
82  extern const char* kTtsVoicesGender;
83  extern const char* kTtsVoicesLocale;
84  extern const char* kTtsVoicesVoiceName;
85  extern const char* kType;
86  extern const char* kUpdateURL;
87  extern const char* kVersion;
88  extern const char* kWebURLs;
89}  // namespace extension_manifest_keys
90
91// Some values expected in manifests.
92namespace extension_manifest_values {
93  extern const char* kIncognitoSplit;
94  extern const char* kIncognitoSpanning;
95  extern const char* kIsolatedStorage;
96  extern const char* kLaunchContainerPanel;
97  extern const char* kLaunchContainerTab;
98  extern const char* kLaunchContainerWindow;
99  extern const char* kPageActionTypePermanent;
100  extern const char* kPageActionTypeTab;
101  extern const char* kRunAtDocumentEnd;
102  extern const char* kRunAtDocumentIdle;
103  extern const char* kRunAtDocumentStart;
104}  // namespace extension_manifest_values
105
106// Error messages returned from Extension::InitFromValue().
107namespace extension_manifest_errors {
108  extern const char* kAppsNotEnabled;
109  extern const char* kBackgroundPermissionNeeded;
110  extern const char* kCannotAccessPage;
111  extern const char* kCannotClaimAllHostsInExtent;
112  extern const char* kCannotClaimAllURLsInExtent;
113  extern const char* kCannotScriptGallery;
114  extern const char* kCannotUninstallManagedExtension;
115  extern const char* kChromeVersionTooLow;
116  extern const char* kDevToolsExperimental;
117  extern const char* kDisabledByPolicy;
118  extern const char* kExperimentalFlagRequired;
119  extern const char* kExperimentalFeature;
120  extern const char* kExpectString;
121  extern const char* kHostedAppsCannotIncludeExtensionFeatures;
122  extern const char* kInvalidAllFrames;
123  extern const char* kInvalidBackground;
124  extern const char* kInvalidBackgroundInHostedApp;
125  extern const char* kInvalidBrowserAction;
126  extern const char* kInvalidBrowseURL;
127  extern const char* kInvalidBrowseURLs;
128  extern const char* kInvalidChromeURLOverrides;
129  extern const char* kInvalidContentScript;
130  extern const char* kInvalidContentScriptsList;
131  extern const char* kInvalidCss;
132  extern const char* kInvalidCssList;
133  extern const char* kInvalidDefaultLocale;
134  extern const char* kInvalidDescription;
135  extern const char* kInvalidDevToolsPage;
136  extern const char* kInvalidFileBrowserHandler;
137  extern const char* kInvalidFileFiltersList;
138  extern const char* kInvalidFileFilterValue;
139  extern const char* kInvalidGlob;
140  extern const char* kInvalidGlobList;
141  extern const char* kInvalidHomepageURL;
142  extern const char* kInvalidIconPath;
143  extern const char* kInvalidIcons;
144  extern const char* kInvalidIncognitoBehavior;
145  extern const char* kInvalidIsolation;
146  extern const char* kInvalidIsolationValue;
147  extern const char* kInvalidJs;
148  extern const char* kInvalidJsList;
149  extern const char* kInvalidKey;
150  extern const char* kInvalidLaunchContainer;
151  extern const char* kInvalidLaunchHeight;
152  extern const char* kInvalidLaunchHeightContainer;
153  extern const char* kInvalidLaunchLocalPath;
154  extern const char* kInvalidLaunchWebURL;
155  extern const char* kInvalidLaunchWidth;
156  extern const char* kInvalidLaunchWidthContainer;
157  extern const char* kInvalidManifest;
158  extern const char* kInvalidMatch;
159  extern const char* kInvalidMatchCount;
160  extern const char* kInvalidMatches;
161  extern const char* kInvalidMinimumChromeVersion;
162  extern const char* kInvalidNaClModules;
163  extern const char* kInvalidNaClModulesMIMEType;
164  extern const char* kInvalidNaClModulesPath;
165  extern const char* kInvalidName;
166  extern const char* kInvalidOmniboxKeyword;
167  extern const char* kInvalidOptionsPage;
168  extern const char* kInvalidOptionsPageExpectUrlInPackage;
169  extern const char* kInvalidOptionsPageInHostedApp;
170  extern const char* kInvalidPageAction;
171  extern const char* kInvalidPageActionDefaultTitle;
172  extern const char* kInvalidPageActionIconPath;
173  extern const char* kInvalidPageActionId;
174  extern const char* kInvalidPageActionName;
175  extern const char* kInvalidPageActionOldAndNewKeys;
176  extern const char* kInvalidPageActionPopup;
177  extern const char* kInvalidPageActionPopupHeight;
178  extern const char* kInvalidPageActionPopupPath;
179  extern const char* kInvalidPageActionsList;
180  extern const char* kInvalidPageActionsListSize;
181  extern const char* kInvalidPageActionTypeValue;
182  extern const char* kInvalidPermission;
183  extern const char* kInvalidPermissions;
184  extern const char* kInvalidPermissionScheme;
185  extern const char* kInvalidPlugins;
186  extern const char* kInvalidPluginsPath;
187  extern const char* kInvalidPluginsPublic;
188  extern const char* kInvalidRunAt;
189  extern const char* kInvalidSidebar;
190  extern const char* kInvalidSidebarDefaultIconPath;
191  extern const char* kInvalidSidebarDefaultPage;
192  extern const char* kInvalidSidebarDefaultTitle;
193  extern const char* kInvalidSignature;
194  extern const char* kInvalidTheme;
195  extern const char* kInvalidThemeColors;
196  extern const char* kInvalidThemeImages;
197  extern const char* kInvalidThemeImagesMissing;
198  extern const char* kInvalidThemeTints;
199  extern const char* kInvalidToolstrip;
200  extern const char* kInvalidToolstrips;
201  extern const char* kInvalidTts;
202  extern const char* kInvalidTtsVoices;
203  extern const char* kInvalidTtsVoicesGender;
204  extern const char* kInvalidTtsVoicesLocale;
205  extern const char* kInvalidTtsVoicesVoiceName;
206  extern const char* kInvalidUpdateURL;
207  extern const char* kInvalidURLPatternError;
208  extern const char* kInvalidVersion;
209  extern const char* kInvalidWebURL;
210  extern const char* kInvalidWebURLs;
211  extern const char* kInvalidZipHash;
212  extern const char* kLaunchPathAndURLAreExclusive;
213  extern const char* kLaunchURLRequired;
214  extern const char* kLocalesMessagesFileMissing;
215  extern const char* kLocalesNoDefaultLocaleSpecified;
216  extern const char* kLocalesNoDefaultMessages;
217  extern const char* kLocalesNoValidLocaleNamesListed;
218  extern const char* kLocalesTreeMissing;
219  extern const char* kManifestParseError;
220  extern const char* kManifestUnreadable;
221  extern const char* kMissingFile;
222  extern const char* kMultipleOverrides;
223  extern const char* kNoWildCardsInPaths;
224  extern const char* kOneUISurfaceOnly;
225  extern const char* kReservedMessageFound;
226  extern const char* kSidebarExperimental;
227  extern const char* kThemesCannotContainExtensions;
228  extern const char* kWebContentMustBeEnabled;
229#if defined(OS_CHROMEOS)
230  extern const char* kIllegalPlugins;
231#endif
232}  // namespace extension_manifest_errors
233
234namespace extension_urls {
235  // The greatest common prefixes of the main extensions gallery's browse and
236  // download URLs.
237  extern const char* kGalleryBrowsePrefix;
238
239  // Same thing for the "minigallery". The minigallery is the temporary static
240  // themes gallery that we put up when we launched themes.
241  extern const char* kMiniGalleryBrowsePrefix;
242  extern const char* kMiniGalleryDownloadPrefix;
243}  // namespace extension_urls
244
245namespace extension_filenames {
246  // The name of a temporary directory to install an extension into for
247  // validation before finalizing install.
248  extern const char* kTempExtensionName;
249
250  // The file to write our decoded images to, relative to the extension_path.
251  extern const char* kDecodedImagesFilename;
252
253  // The file to write our decoded message catalogs to, relative to the
254  // extension_path.
255  extern const char* kDecodedMessageCatalogsFilename;
256}
257
258namespace extension_misc {
259  const int kUnknownWindowId = -1;
260
261  // The extension id of the bookmark manager.
262  extern const char* kBookmarkManagerId;
263
264  // The extension id of the Web Store component application.
265  extern const char* kWebStoreAppId;
266
267  // Note: this structure is an ASN.1 which encodes the algorithm used
268  // with its parameters. This is defined in PKCS #1 v2.1 (RFC 3447).
269  // It is encoding: { OID sha1WithRSAEncryption      PARAMETERS NULL }
270  const uint8 kSignatureAlgorithm[15] = {
271    0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86,
272    0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00
273  };
274
275  // Don't remove items or change the order of this enum.  It's used in
276  // histograms and preferences.
277  enum LaunchContainer {
278    LAUNCH_WINDOW,
279    LAUNCH_PANEL,
280    LAUNCH_TAB
281  };
282
283  // The name of the apps promo histogram.
284  extern const char* kAppsPromoHistogram;
285
286  // The buckets used in the apps promo histogram.
287  enum AppsPromoBuckets {
288    PROMO_LAUNCH_APP,
289    PROMO_LAUNCH_WEB_STORE,
290    PROMO_CLOSE,
291    PROMO_EXPIRE,
292    PROMO_SEEN,
293    PROMO_BUCKET_BOUNDARY
294  };
295
296  // The name of the app launch histogram.
297  extern const char* kAppLaunchHistogram;
298
299  // The buckets used for app launches.
300  enum AppLaunchBucket {
301    // Launch from NTP apps section while maximized.
302    APP_LAUNCH_NTP_APPS_MAXIMIZED,
303
304    // Launch from NTP apps section while collapsed.
305    APP_LAUNCH_NTP_APPS_COLLAPSED,
306
307    // Launch from NTP apps section while in menu mode.
308    APP_LAUNCH_NTP_APPS_MENU,
309
310    // Launch from NTP most visited section in any mode.
311    APP_LAUNCH_NTP_MOST_VISITED,
312
313    // Launch from NTP recently closed section in any mode.
314    APP_LAUNCH_NTP_RECENTLY_CLOSED,
315
316    // App link clicked from bookmark bar.
317    APP_LAUNCH_BOOKMARK_BAR,
318
319    // Nvigated to an app from within a web page (like by clicking a link).
320    APP_LAUNCH_CONTENT_NAVIGATION,
321
322    // Launch from session restore.
323    APP_LAUNCH_SESSION_RESTORE,
324
325    // Autolaunched at startup, like for pinned tabs.
326    APP_LAUNCH_AUTOLAUNCH,
327
328    // Launched from omnibox app links (not implemented yet).
329    APP_LAUNCH_OMNIBOX_APP,
330
331    // App URL typed directly into the omnibox (w/ instant turned off).
332    APP_LAUNCH_OMNIBOX_LOCATION,
333
334    // Navigate to an app URL via instant.
335    APP_LAUNCH_OMNIBOX_INSTANT,
336
337    // Launch via chrome.management.launchApp.
338    APP_LAUNCH_EXTENSION_API,
339
340    // Launch using the --app or --app-id cmd line options.
341    APP_LAUNCH_CMD_LINE_APP,
342
343    // App launch by passing the URL on the cmd line (not using app switches).
344    APP_LAUNCH_CMD_LINE_URL,
345
346    // User clicked web store launcher on NTP.
347    APP_LAUNCH_NTP_WEBSTORE,
348
349    // App launched after the user re-enabled it on the NTP.
350    APP_LAUNCH_NTP_APP_RE_ENABLE,
351
352    // URL launched using the --app cmd line option, but the URL does not
353    // correspond to an installed app. These launches are left over from a
354    // feature that let you make desktop shortcuts from the file menu.
355    APP_LAUNCH_CMD_LINE_APP_LEGACY,
356
357    APP_LAUNCH_BUCKET_BOUNDARY,
358    APP_LAUNCH_BUCKET_INVALID
359  };
360
361#if defined(OS_CHROMEOS)
362  // The directory path on a ChromeOS device where accessibility extensions are
363  // stored.
364  extern const char* kAccessExtensionPath;
365#endif
366}  // extension_misc
367
368#endif  // CHROME_COMMON_EXTENSIONS_EXTENSION_CONSTANTS_H_
369