• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 #include "chrome/common/extensions/extension_constants.h"
6 
7 namespace extension_manifest_keys {
8 
9 const char* kAllFrames = "all_frames";
10 const char* kApp = "app";
11 const char* kBackground = "background_page";
12 const char* kBrowserAction = "browser_action";
13 const char* kChromeURLOverrides = "chrome_url_overrides";
14 const char* kContentScripts = "content_scripts";
15 const char* kConvertedFromUserScript = "converted_from_user_script";
16 const char* kCss = "css";
17 const char* kCurrentLocale = "current_locale";
18 const char* kDefaultLocale = "default_locale";
19 const char* kDescription = "description";
20 const char* kDevToolsPage = "devtools_page";
21 const char* kExcludeGlobs = "exclude_globs";
22 const char* kFileFilters = "file_filters";
23 const char* kFileBrowserHandlers = "file_browser_handlers";
24 const char* kHomepageURL = "homepage_url";
25 const char* kIcons = "icons";
26 const char* kIncognito = "incognito";
27 const char* kIncludeGlobs = "include_globs";
28 const char* kIsolation = "app.isolation";
29 const char* kJs = "js";
30 const char* kLaunch = "app.launch";
31 const char* kLaunchContainer = "app.launch.container";
32 const char* kLaunchHeight = "app.launch.height";
33 const char* kLaunchLocalPath = "app.launch.local_path";
34 const char* kLaunchWebURL = "app.launch.web_url";
35 const char* kLaunchWidth = "app.launch.width";
36 const char* kMatches = "matches";
37 const char* kMinimumChromeVersion = "minimum_chrome_version";
38 const char* kName = "name";
39 const char* kNaClModules = "nacl_modules";
40 const char* kNaClModulesMIMEType = "mime_type";
41 const char* kNaClModulesPath = "path";
42 const char* kOmnibox = "omnibox";
43 const char* kOmniboxKeyword = "omnibox.keyword";
44 const char* kOptionsPage = "options_page";
45 const char* kPageAction = "page_action";
46 const char* kPageActionDefaultIcon = "default_icon";
47 const char* kPageActionDefaultPopup = "default_popup";
48 const char* kPageActionDefaultTitle = "default_title";
49 const char* kPageActionIcons = "icons";
50 const char* kPageActionId = "id";
51 const char* kPageActionPopup = "popup";
52 const char* kPageActionPopupHeight = "height";
53 const char* kPageActionPopupPath = "path";
54 const char* kPageActions = "page_actions";
55 const char* kPermissions = "permissions";
56 const char* kPlugins = "plugins";
57 const char* kPluginsPath = "path";
58 const char* kPluginsPublic = "public";
59 const char* kPublicKey = "key";
60 const char* kRunAt = "run_at";
61 const char* kSidebar = "sidebar";
62 const char* kSidebarDefaultIcon = "default_icon";
63 const char* kSidebarDefaultPage = "default_page";
64 const char* kSidebarDefaultTitle = "default_title";
65 const char* kSignature = "signature";
66 const char* kTheme = "theme";
67 const char* kThemeColors = "colors";
68 const char* kThemeDisplayProperties = "properties";
69 const char* kThemeImages = "images";
70 const char* kThemeTints = "tints";
71 const char* kToolstripPath = "path";
72 const char* kToolstrips = "toolstrips";
73 const char* kTts = "tts";
74 const char* kTtsGenderFemale = "female";
75 const char* kTtsGenderMale = "male";
76 const char* kTtsVoices = "voices";
77 const char* kTtsVoicesGender = "gender";
78 const char* kTtsVoicesLocale = "locale";
79 const char* kTtsVoicesVoiceName = "voiceName";
80 const char* kType = "type";
81 const char* kUpdateURL = "update_url";
82 const char* kVersion = "version";
83 const char* kWebURLs = "app.urls";
84 }  // namespace extension_manifest_keys
85 
86 namespace extension_manifest_values {
87 const char* kIncognitoSplit = "split";
88 const char* kIncognitoSpanning = "spanning";
89 const char* kIsolatedStorage = "storage";
90 const char* kRunAtDocumentStart = "document_start";
91 const char* kRunAtDocumentEnd = "document_end";
92 const char* kRunAtDocumentIdle = "document_idle";
93 const char* kPageActionTypeTab = "tab";
94 const char* kPageActionTypePermanent = "permanent";
95 const char* kLaunchContainerPanel = "panel";
96 const char* kLaunchContainerTab = "tab";
97 const char* kLaunchContainerWindow = "window";
98 }  // namespace extension_manifest_values
99 
100 // Extension-related error messages. Some of these are simple patterns, where a
101 // '*' is replaced at runtime with a specific value. This is used instead of
102 // printf because we want to unit test them and scanf is hard to make
103 // cross-platform.
104 namespace extension_manifest_errors {
105 const char* kAppsNotEnabled =
106     "Apps are not enabled.";
107 const char* kBackgroundPermissionNeeded =
108     "Hosted apps that use 'background_page' must have the 'background' "
109     "permission.";
110 const char* kCannotAccessPage =
111     "Cannot access contents of url \"*\". "
112     "Extension manifest must request permission to access this host.";
113 const char* kCannotClaimAllHostsInExtent =
114     "Cannot claim all hosts ('*') in an extent.";
115 const char* kCannotClaimAllURLsInExtent =
116     "Cannot claim all URLs in an extent.";
117 const char* kCannotScriptGallery =
118     "The extensions gallery cannot be scripted.";
119 const char* kCannotUninstallManagedExtension =
120     "Attempted uninstallation of an extension that is not user-manageable.";
121 const char* kChromeVersionTooLow =
122     "This extension requires * version * or greater.";
123 const char* kDisabledByPolicy =
124     "This extension has been disabled by your administrator.";
125 const char* kDevToolsExperimental =
126     "You must request the 'experimental' permission in order to use the"
127     " DevTools API.";
128 const char* kExpectString = "Expect string value.";
129 const char* kExperimentalFlagRequired =
130     "Loading extensions with 'experimental' permission requires"
131     " --enable-experimental-extension-apis command line flag.";
132 const char *kExperimentalFeature =
133     "This feature requires 'experimental' permissions and"
134     " --enable-experimental-extension-apis command line flag.";
135 const char* kHostedAppsCannotIncludeExtensionFeatures =
136     "Hosted apps cannot use the extension feature '*'.";
137 const char* kInvalidAllFrames =
138     "Invalid value for 'content_scripts[*].all_frames'.";
139 const char* kInvalidBackground =
140     "Invalid value for 'background_page'.";
141 const char* kInvalidBackgroundInHostedApp =
142     "Invalid value for 'background_page'. Hosted apps must specify an "
143     "absolute HTTPS URL for the background page.";
144 const char* kInvalidBrowserAction =
145     "Invalid value for 'browser_action'.";
146 const char* kInvalidChromeURLOverrides =
147     "Invalid value for 'chrome_url_overrides'.";
148 const char* kInvalidContentScript =
149     "Invalid value for 'content_scripts[*]'.";
150 const char* kInvalidContentScriptsList =
151     "Invalid value for 'content_scripts'.";
152 const char* kInvalidCss =
153     "Invalid value for 'content_scripts[*].css[*]'.";
154 const char* kInvalidCssList =
155     "Required value 'content_scripts[*].css' is invalid.";
156 const char* kInvalidDefaultLocale =
157     "Invalid value for default locale - locale name must be a string.";
158 const char* kInvalidDescription =
159     "Invalid value for 'description'.";
160 const char* kInvalidDevToolsPage =
161     "Invalid value for 'devtools_page'.";
162 const char* kInvalidFileBrowserHandler =
163     "Invalid value for 'file_browser_handers'.";
164 const char* kInvalidFileFiltersList =
165     "Invalid value for 'file_filters'.";
166 const char* kInvalidFileFilterValue =
167     "Invalid value for 'file_filters[*]'.";
168 const char* kInvalidGlob =
169     "Invalid value for 'content_scripts[*].*[*]'.";
170 const char* kInvalidGlobList =
171     "Invalid value for 'content_scripts[*].*'.";
172 const char* kInvalidHomepageURL =
173     "Invalid value for homepage url: '[*]'.";
174 const char* kInvalidIconPath =
175     "Invalid value for 'icons[\"*\"]'.";
176 const char* kInvalidIcons =
177     "Invalid value for 'icons'.";
178 const char* kInvalidIncognitoBehavior =
179     "Invalid value for 'incognito'.";
180 const char* kInvalidIsolation =
181     "Invalid value for 'app.isolation'.";
182 const char* kInvalidIsolationValue =
183     "Invalid value for 'app.isolation[*]'.";
184 const char* kInvalidJs =
185     "Invalid value for 'content_scripts[*].js[*]'.";
186 const char* kInvalidJsList =
187     "Required value 'content_scripts[*].js' is invalid.";
188 const char* kInvalidKey =
189     "Value 'key' is missing or invalid.";
190 const char* kInvalidLaunchContainer =
191     "Invalid value for 'app.launch.container'.";
192 const char* kInvalidLaunchHeight =
193     "Invalid value for 'app.launch.height'.";
194 const char* kInvalidLaunchHeightContainer =
195     "Invalid container type for 'app.launch.height'.";
196 const char* kInvalidLaunchLocalPath =
197     "Invalid value for 'app.launch.local_path'.";
198 const char* kInvalidLaunchWebURL =
199     "Invalid value for 'app.launch.web_url'.";
200 const char* kInvalidLaunchWidth =
201     "Invalid value for 'app.launch.width'.";
202 const char* kInvalidLaunchWidthContainer =
203     "Invalid container type for 'app.launch.width'.";
204 const char* kInvalidManifest =
205     "Manifest file is invalid.";
206 const char* kInvalidMatch =
207     "Invalid value for 'content_scripts[*].matches[*]': *";
208 const char* kInvalidMatchCount =
209     "Invalid value for 'content_scripts[*].matches'. There must be at least"
210     "one match specified.";
211 const char* kInvalidMatches =
212     "Required value 'content_scripts[*].matches' is missing or invalid.";
213 const char* kInvalidMinimumChromeVersion =
214     "Invalid value for 'minimum_chrome_version'.";
215 const char* kInvalidName =
216     "Required value 'name' is missing or invalid.";
217 const char* kInvalidNaClModules =
218     "Invalid value for 'nacl_modules'.";
219 const char* kInvalidNaClModulesPath =
220     "Invalid value for 'nacl_modules[*].path'.";
221 const char* kInvalidNaClModulesMIMEType =
222     "Invalid value for 'nacl_modules[*].mime_type'.";
223 const char* kInvalidOmniboxKeyword =
224     "Invalid value for 'omnibox.keyword'.";
225 const char* kInvalidOptionsPage =
226     "Invalid value for 'options_page'.";
227 const char* kInvalidOptionsPageExpectUrlInPackage =
228     "Invalid value for 'options_page'.  Value must be a relative path.";
229 const char* kInvalidOptionsPageInHostedApp =
230     "Invalid value for 'options_page'. Hosted apps must specify an "
231     "absolute URL.";
232 const char* kInvalidPageAction =
233     "Invalid value for 'page_action'.";
234 const char* kInvalidPageActionDefaultTitle =
235     "Invalid value for 'default_title'.";
236 const char* kInvalidPageActionIconPath =
237     "Invalid value for 'page_action.default_icon'.";
238 const char* kInvalidPageActionId =
239     "Required value 'id' is missing or invalid.";
240 const char* kInvalidPageActionName =
241     "Invalid value for 'page_action.name'.";
242 const char* kInvalidPageActionOldAndNewKeys =
243     "Key \"*\" is deprecated.  Key \"*\" has the same meaning.  You can not "
244     "use both.";
245 const char* kInvalidPageActionPopup =
246     "Invalid type for page action popup.";
247 const char* kInvalidPageActionPopupHeight =
248     "Invalid value for page action popup height [*].";
249 const char* kInvalidPageActionPopupPath =
250     "Invalid value for page action popup path [*].";
251 const char* kInvalidPageActionsList =
252     "Invalid value for 'page_actions'.";
253 const char* kInvalidPageActionsListSize =
254     "Invalid value for 'page_actions'. There can be at most one page action.";
255 const char* kInvalidPageActionTypeValue =
256     "Invalid value for 'page_actions[*].type', expected 'tab' or 'permanent'.";
257 const char* kInvalidPermission =
258     "Invalid value for 'permissions[*]'.";
259 const char* kInvalidPermissions =
260     "Required value 'permissions' is missing or invalid.";
261 const char* kInvalidPermissionScheme =
262     "Invalid scheme for 'permissions[*]'.";
263 const char* kInvalidPlugins =
264     "Invalid value for 'plugins'.";
265 const char* kInvalidPluginsPath =
266     "Invalid value for 'plugins[*].path'.";
267 const char* kInvalidPluginsPublic =
268     "Invalid value for 'plugins[*].public'.";
269 const char* kInvalidRunAt =
270     "Invalid value for 'content_scripts[*].run_at'.";
271 const char* kInvalidSidebar =
272     "Invalid value for 'sidebar'.";
273 const char* kInvalidSidebarDefaultIconPath =
274     "Invalid value for 'sidebar.default_icon'.";
275 const char* kInvalidSidebarDefaultPage =
276     "Invalid value for 'sidebar.default_page'.";
277 const char* kInvalidSidebarDefaultTitle =
278     "Invalid value for 'sidebar.default_title'.";
279 const char* kInvalidSignature =
280     "Value 'signature' is missing or invalid.";
281 const char* kInvalidTheme =
282     "Invalid value for 'theme'.";
283 const char* kInvalidThemeColors =
284     "Invalid value for theme colors - colors must be integers";
285 const char* kInvalidThemeImages =
286     "Invalid value for theme images - images must be strings.";
287 const char* kInvalidThemeImagesMissing =
288     "An image specified in the theme is missing.";
289 const char* kInvalidThemeTints =
290     "Invalid value for theme images - tints must be decimal numbers.";
291 const char* kInvalidToolstrip =
292     "Invalid value for 'toolstrips[*]'";
293 const char* kInvalidToolstrips =
294     "Invalid value for 'toolstrips'.";
295 const char* kInvalidTts =
296     "Invalid value for 'tts'.";
297 const char* kInvalidTtsVoices =
298     "Invalid value for 'tts.voices'.";
299 const char* kInvalidTtsVoicesGender =
300     "Invalid value for 'tts.voices[*].gender'.";
301 const char* kInvalidTtsVoicesLocale =
302     "Invalid value for 'tts.voices[*].locale'.";
303 const char* kInvalidTtsVoicesVoiceName =
304     "Invalid value for 'tts.voices[*].voiceName'.";
305 const char* kInvalidUpdateURL =
306     "Invalid value for update url: '[*]'.";
307 const char* kInvalidURLPatternError =
308     "Invalid url pattern '*'";
309 const char* kInvalidVersion =
310     "Required value 'version' is missing or invalid. It must be between 1-4 "
311     "dot-separated integers each between 0 and 65536.";
312 const char* kInvalidWebURL =
313     "Invalid value for 'app.urls[*]': *";
314 const char* kInvalidWebURLs =
315     "Invalid value for 'app.urls'.";
316 const char* kInvalidZipHash =
317     "Required key 'zip_hash' is missing or invalid.";
318 const char* kLaunchPathAndURLAreExclusive =
319     "The 'app.launch.local_path' and 'launch.web_url' keys cannot both be set.";
320 const char* kLaunchURLRequired =
321     "Either 'app.launch.local_path' or 'app.launch.web_url' is required.";
322 const char* kLocalesMessagesFileMissing =
323     "Messages file is missing for locale.";
324 const char* kLocalesNoDefaultLocaleSpecified =
325     "Localization used, but default_locale wasn't specified in the manifest.";
326 const char* kLocalesNoDefaultMessages =
327     "Default locale is defined but default data couldn't be loaded.";
328 const char* kLocalesNoValidLocaleNamesListed =
329     "No valid locale name could be found in _locales directory.";
330 const char* kLocalesTreeMissing =
331     "Default locale was specified, but _locales subtree is missing.";
332 const char* kManifestParseError =
333     "Manifest is not valid JSON.";
334 const char* kManifestUnreadable =
335     "Manifest file is missing or unreadable.";
336 const char* kMissingFile =
337     "At least one js or css file is required for 'content_scripts[*]'.";
338 const char* kMultipleOverrides =
339     "An extension cannot override more than one page.";
340 const char* kNoWildCardsInPaths =
341   "Wildcards are not allowed in extent URL pattern paths.";
342 const char* kOneUISurfaceOnly =
343     "Only one of 'browser_action', 'page_action', and 'app' can be specified.";
344 const char* kReservedMessageFound =
345     "Reserved key * found in message catalog.";
346 const char* kSidebarExperimental =
347     "You must request the 'experimental' permission in order to use the"
348     " Sidebar API.";
349 const char* kThemesCannotContainExtensions =
350     "A theme cannot contain extensions code.";
351 #if defined(OS_CHROMEOS)
352 const char* kIllegalPlugins =
353     "Extensions cannot install plugins on Chrome OS";
354 #endif
355 }  // namespace extension_manifest_errors
356 
357 namespace extension_urls {
358 const char* kGalleryBrowsePrefix = "https://chrome.google.com/webstore";
359 const char* kMiniGalleryBrowsePrefix = "https://tools.google.com/chrome/";
360 const char* kMiniGalleryDownloadPrefix = "https://dl-ssl.google.com/chrome/";
361 }
362 
363 namespace extension_filenames {
364 const char* kTempExtensionName = "CRX_INSTALL";
365 
366 // The file to write our decoded images to, relative to the extension_path.
367 const char* kDecodedImagesFilename = "DECODED_IMAGES";
368 
369 // The file to write our decoded message catalogs to, relative to the
370 // extension_path.
371 const char* kDecodedMessageCatalogsFilename = "DECODED_MESSAGE_CATALOGS";
372 }
373 
374 namespace extension_misc {
375 const char* kBookmarkManagerId = "eemcgdkfndhakfknompkggombfjjjeno";
376 const char* kWebStoreAppId = "ahfgeienlihckogmohjhadlkjgocpleb";
377 const char* kAppsPromoHistogram = "Extensions.AppsPromo";
378 const char* kAppLaunchHistogram = "Extensions.AppLaunch";
379 #if defined(OS_CHROMEOS)
380 const char* kAccessExtensionPath =
381     "/usr/share/chromeos-assets/accessibility/extensions";
382 #endif
383 }
384