Index: extensions/common/manifest_constants.cc |
diff --git a/extensions/common/manifest_constants.cc b/extensions/common/manifest_constants.cc |
index cc73f022691918f3a112ce277a63c74d452ed44e..caf22e17eb9919cdca2b565a35468aad12d56af3 100644 |
--- a/extensions/common/manifest_constants.cc |
+++ b/extensions/common/manifest_constants.cc |
@@ -151,11 +151,502 @@ const char kWebURLs[] = "app.urls"; |
} // namespace manifest_keys |
+namespace manifest_values { |
+ |
+const char kBrowserActionCommandEvent[] = "_execute_browser_action"; |
+const char kIncognitoSplit[] = "split"; |
+const char kIncognitoSpanning[] = "spanning"; |
+const char kIntentDispositionWindow[] = "window"; |
+const char kIntentDispositionInline[] = "inline"; |
+const char kIsolatedStorage[] = "storage"; |
+const char kKeybindingPlatformChromeOs[] = "chromeos"; |
+const char kKeybindingPlatformDefault[] = "default"; |
+const char kKeybindingPlatformLinux[] = "linux"; |
+const char kKeybindingPlatformMac[] = "mac"; |
+const char kKeybindingPlatformWin[] = "windows"; |
+const char kKeyAlt[] = "Alt"; |
+const char kKeyComma[] = "Comma"; |
+const char kKeyCommand[] = "Command"; |
+const char kKeyCtrl[] = "Ctrl"; |
+const char kKeyDel[] = "Delete"; |
+const char kKeyDown[] = "Down"; |
+const char kKeyEnd[] = "End"; |
+const char kKeyHome[] = "Home"; |
+const char kKeyIns[] = "Insert"; |
+const char kKeyLeft[] = "Left"; |
+const char kKeyMacCtrl[] = "MacCtrl"; |
+const char kKeyMediaNextTrack[] = "MediaNextTrack"; |
+const char kKeyMediaPlayPause[] = "MediaPlayPause"; |
+const char kKeyMediaPrevTrack[] = "MediaPrevTrack"; |
+const char kKeyMediaStop[] = "MediaStop"; |
+const char kKeyPgDwn[] = "PageDown"; |
+const char kKeyPgUp[] = "PageUp"; |
+const char kKeyPeriod[] = "Period"; |
+const char kKeyRight[] = "Right"; |
+const char kKeySeparator[] = "+"; |
+const char kKeyShift[] = "Shift"; |
+const char kKeyTab[] = "Tab"; |
+const char kKeyUp[] = "Up"; |
+const char kRunAtDocumentStart[] = "document_start"; |
+const char kRunAtDocumentEnd[] = "document_end"; |
+const char kRunAtDocumentIdle[] = "document_idle"; |
+const char kPageActionCommandEvent[] = "_execute_page_action"; |
+const char kPageActionTypeTab[] = "tab"; |
+const char kPageActionTypePermanent[] = "permanent"; |
+const char kScriptBadgeCommandEvent[] = "_execute_script_badge"; |
+const char kLaunchContainerPanel[] = "panel"; |
+const char kLaunchContainerTab[] = "tab"; |
+const char kLaunchContainerWindow[] = "window"; |
+ |
+} // namespace manifest_values |
+ |
+// Extension-related error messages. Some of these are simple patterns, where a |
+// '*' is replaced at runtime with a specific value. This is used instead of |
+// printf because we want to unit test them and scanf is hard to make |
+// cross-platform. |
namespace manifest_errors { |
+const char kAppsNotEnabled[] = |
+ "Apps are not enabled."; |
+const char kBackgroundPermissionNeeded[] = |
+ "Hosted apps that use 'background_page' must have the 'background' " |
+ "permission."; |
+const char kBackgroundRequiredForPlatformApps[] = |
+ "Packaged apps must have a background page or background scripts."; |
+const char kCannotAccessChromeUrl[] = "Cannot access a chrome:// URL"; |
+const char kCannotAccessExtensionUrl[] = |
+ "Cannot access a chrome-extension:// URL of different extension"; |
+const char kCannotAccessPage[] = |
+ "Cannot access contents of url \"*\". " |
+ "Extension manifest must request permission to access this host."; |
+const char kCannotChangeExtensionID[] = |
+ "Installed extensions cannot change their IDs."; |
+const char kCannotClaimAllHostsInExtent[] = |
+ "Cannot claim all hosts ('*') in an extent."; |
+const char kCannotClaimAllURLsInExtent[] = |
+ "Cannot claim all URLs in an extent."; |
+const char kCannotScriptGallery[] = |
+ "The extensions gallery cannot be scripted."; |
+const char kCannotScriptSigninPage[] = |
+ "The sign-in page cannot be scripted."; |
+const char kChromeVersionTooLow[] = |
+ "This extension requires * version * or greater."; |
+const char kDisabledByPolicy[] = |
+ "This extension has been disabled by your administrator."; |
+const char kExpectString[] = "Expect string value."; |
+const char kExperimentalFlagRequired[] = |
+ "Loading extensions with 'experimental' permission is turned off by " |
+ "default. You can enable 'Experimental Extension APIs' " |
+ "by visiting chrome://flags."; |
+const char kInvalidAllFrames[] = |
+ "Invalid value for 'content_scripts[*].all_frames'."; |
+const char kInvalidBackground[] = |
+ "Invalid value for 'background_page'."; |
+const char kInvalidBackgroundAllowJsAccess[] = |
+ "Invalid value for 'background.allow_js_access'."; |
+const char kInvalidBackgroundCombination[] = |
+ "The background.page and background.scripts properties cannot be used at " |
+ "the same time."; |
+const char kInvalidBackgroundScript[] = |
+ "Invalid value for 'background.scripts[*]'."; |
+const char kInvalidBackgroundScripts[] = |
+ "Invalid value for 'background.scripts'."; |
+const char kInvalidBackgroundInHostedApp[] = |
+ "Invalid value for 'background_page'. Hosted apps must specify an " |
+ "absolute HTTPS URL for the background page."; |
+const char kInvalidBackgroundPersistent[] = |
+ "Invalid value for 'background.persistent'."; |
+const char kInvalidBackgroundPersistentNoPage[] = |
+ "Must specify one of background.page or background.scripts to use" |
+ " background.persistent."; |
+const char kInvalidBrowserAction[] = |
+ "Invalid value for 'browser_action'."; |
+const char kInvalidChromeURLOverrides[] = |
+ "Invalid value for 'chrome_url_overrides'."; |
+const char kInvalidCommandsKey[] = |
+ "Invalid value for 'commands'."; |
+const char kInvalidContentPack[] = |
+ "Invalid value for 'content_pack'."; |
+const char kInvalidContentPackSites[] = |
+ "Invalid value for Content Pack sites - files must be strings."; |
+const char kInvalidContentScript[] = |
+ "Invalid value for 'content_scripts[*]'."; |
+const char kInvalidContentSecurityPolicy[] = |
+ "Invalid value for 'content_security_policy'."; |
+const char kInvalidContentScriptsList[] = |
+ "Invalid value for 'content_scripts'."; |
+const char kInvalidCss[] = |
+ "Invalid value for 'content_scripts[*].css[*]'."; |
+const char kInvalidCssList[] = |
+ "Required value 'content_scripts[*].css' is invalid."; |
+const char kInvalidDefaultLocale[] = |
+ "Invalid value for default locale - locale name must be a string."; |
+const char kInvalidDescription[] = |
+ "Invalid value for 'description'."; |
+const char kInvalidDevToolsPage[] = |
+ "Invalid value for 'devtools_page'."; |
+const char kInvalidDisplayInLauncher[] = |
+ "Invalid value for 'display_in_launcher'."; |
+const char kInvalidDisplayInNewTabPage[] = |
+ "Invalid value for 'display_in_new_tab_page'."; |
+const char kInvalidExcludeMatch[] = |
+ "Invalid value for 'content_scripts[*].exclude_matches[*]': *"; |
+const char kInvalidExcludeMatches[] = |
+ "Invalid value for 'content_scripts[*].exclude_matches'."; |
+const char kInvalidExport[] = |
+ "Invalid value for 'export'."; |
+const char kInvalidExportPermissions[] = |
+ "Permissions are not allowed for extensions that export resources."; |
+const char kInvalidExportResources[] = |
+ "Invalid value for 'export.resources'."; |
+const char kInvalidExportResourcesString[] = |
+ "Invalid value for 'export.resources[*]'."; |
+const char kInvalidFileAccessList[] = |
+ "Invalid value for 'file_access'."; |
+const char kInvalidFileAccessValue[] = |
+ "Invalid value for 'file_access[*]'."; |
+const char kInvalidFileBrowserHandler[] = |
+ "Invalid value for 'file_browser_handlers'."; |
+const char kInvalidMediaGalleriesHandler[] = |
+ "Invalid value for 'media_galleries_handlers'."; |
+const char kInvalidFileFiltersList[] = |
+ "Invalid value for 'file_filters'."; |
+const char kInvalidFileFilterValue[] = |
+ "Invalid value for 'file_filters[*]'."; |
+const char kInvalidFileHandlers[] = |
+ "Invalid value for 'file_handlers'."; |
+const char kInvalidFileHandlerExtension[] = |
+ "Invalid value for 'file_handlers[*].extensions'."; |
+const char kInvalidFileHandlerExtensionElement[] = |
+ "Invalid value for 'file_handlers[*].extensions[*]'."; |
+const char kInvalidFileHandlerNoTypeOrExtension[] = |
+ "'file_handlers[*]' must contain a non-empty 'types' or 'extensions'."; |
+const char kInvalidFileHandlerTitle[] = |
+ "Invalid value for 'file_handlers[*].title'."; |
+const char kInvalidFileHandlerType[] = |
+ "Invalid value for 'file_handlers[*].types'."; |
+const char kInvalidFileHandlerTypeElement[] = |
+ "Invalid value for 'file_handlers[*].types[*]'."; |
+const char kInvalidGlob[] = |
+ "Invalid value for 'content_scripts[*].*[*]'."; |
+const char kInvalidGlobList[] = |
+ "Invalid value for 'content_scripts[*].*'."; |
+const char kInvalidHomepageURL[] = |
+ "Invalid value for homepage url: '[*]'."; |
+const char kInvalidIconPath[] = |
+ "Invalid value for 'icons[\"*\"]'."; |
+const char kInvalidIcons[] = |
+ "Invalid value for 'icons'."; |
+const char kInvalidImport[] = |
+ "Invalid value for 'import'."; |
+const char kInvalidImportAndExport[] = |
+ "Simultaneous 'import' and 'export' are not allowed."; |
+const char kInvalidImportId[] = |
+ "Invalid value for 'import[*].id'."; |
+const char kInvalidImportVersion[] = |
+ "Invalid value for 'import[*].minimum_version'."; |
+const char kInvalidIncognitoBehavior[] = |
+ "Invalid value for 'incognito'."; |
+const char kInvalidInputComponents[] = |
+ "Invalid value for 'input_components'"; |
+const char kInvalidInputComponentDescription[] = |
+ "Invalid value for 'input_components[*].description"; |
+const char kInvalidInputComponentLayoutName[] = |
+ "Invalid value for 'input_components[*].layouts[*]"; |
+const char kInvalidInputComponentName[] = |
+ "Invalid value for 'input_components[*].name"; |
+const char kInvalidInputComponentShortcutKey[] = |
+ "Invalid value for 'input_components[*].shortcutKey"; |
+const char kInvalidInputComponentShortcutKeycode[] = |
+ "Invalid value for 'input_components[*].shortcutKey.keyCode"; |
+const char kInvalidInputComponentType[] = |
+ "Invalid value for 'input_components[*].type"; |
+const char kInvalidIntent[] = |
+ "Invalid value for intents[*]"; |
+const char kInvalidIntentDisposition[] = |
+ "Invalid value for intents[*].disposition"; |
+const char kInvalidIntentDispositionInPlatformApp[] = |
+ "Invalid value for intents[*].disposition. Packaged apps cannot specify " |
+ "a disposition"; |
+const char kInvalidIntentHref[] = |
+ "Invalid value for intents[*].href"; |
+const char kInvalidIntentHrefEmpty[] = |
+ "Missing value for intents[*].href"; |
+const char kInvalidIntentHrefInPlatformApp[] = |
+ "Invalid value for intents[*].href. Packaged apps cannot specify a " |
+ "URL for intents"; |
+const char kInvalidIntentHrefOldAndNewKey[] = |
+ "intents[*]: Key \"*\" is deprecated. Key \"*\" has the same meaning. " |
+ "You can not use both."; |
+const char kInvalidIntentPageInHostedApp[] = |
+ "Invalid value for intents[*].href. Hosted apps must specify an " |
+ "absolute URL within app.urls[]."; |
+const char kInvalidIntents[] = |
+ "Invalid value for intents"; |
+const char kInvalidIntentType[] = |
+ "Invalid value for intents[*].type"; |
+const char kInvalidIntentTypeElement[] = |
+ "Invalid value for intents[*].type[*]"; |
+const char kInvalidIntentTitle[] = |
+ "Invalid value for intents[*].title"; |
+const char kInvalidIsolation[] = |
+ "Invalid value for 'app.isolation'."; |
+const char kInvalidIsolationValue[] = |
+ "Invalid value for 'app.isolation[*]'."; |
+const char kInvalidJs[] = |
+ "Invalid value for 'content_scripts[*].js[*]'."; |
+const char kInvalidJsList[] = |
+ "Required value 'content_scripts[*].js' is invalid."; |
+const char kInvalidKey[] = |
+ "Value 'key' is missing or invalid."; |
+const char kInvalidKeyBinding[] = |
+ "Invalid value for 'commands[*].*': *."; |
+const char kInvalidKeyBindingDescription[] = |
+ "Invalid value for 'commands[*].description'."; |
+const char kInvalidKeyBindingDictionary[] = |
+ "Contents of 'commands[*]' invalid."; |
+const char kInvalidKeyBindingMediaKeyWithModifier[] = |
+ "Media key cannot have any modifier for 'commands[*].*': *."; |
+const char kInvalidKeyBindingMissingPlatform[] = |
+ "Could not find key specification for 'command[*].*': Either specify a key " |
+ "for '*', or specify a default key."; |
+const char kInvalidKeyBindingTooMany[] = |
+ "Too many shortcuts specified for 'commands': The maximum is *."; |
+const char kInvalidKeyBindingUnknownPlatform[] = |
+ "Unknown platform for 'command[*]': *. Valid values are: 'windows', 'mac'" |
+ " 'chromeos', 'linux' and 'default'."; |
+const char kInvalidKioskEnabled[] = |
+ "Invalid value for 'kiosk_enabled'."; |
+const char kInvalidLaunchContainer[] = |
+ "Invalid value for 'app.launch.container'."; |
+const char kInvalidLaunchValue[] = |
+ "Invalid value for '*'."; |
+const char kInvalidLaunchValueContainer[] = |
+ "Invalid container type for '*'."; |
+const char kInvalidManifest[] = |
+ "Manifest file is invalid."; |
+const char kInvalidManifestVersion[] = |
+ "Invalid value for 'manifest_version'. Must be an integer greater than " |
+ "zero."; |
+const char kInvalidManifestVersionOld[] = |
+ "The 'manifest_version' key must be present and set to * (without quotes). " |
+ "See developer.chrome.com/*/manifestVersion.html for details."; |
+const char kInvalidMatch[] = |
+ "Invalid value for 'content_scripts[*].matches[*]': *"; |
+const char kInvalidMatchCount[] = |
+ "Invalid value for 'content_scripts[*].matches'. There must be at least " |
+ "one match specified."; |
+const char kInvalidMatches[] = |
+ "Required value 'content_scripts[*].matches' is missing or invalid."; |
+const char kInvalidMIMETypes[] = |
+ "Invalid value for 'mime_types'"; |
+const char kInvalidMimeTypesHandler[] = |
+ "Invalid value for 'mime_types'."; |
+const char kInvalidMinimumChromeVersion[] = |
+ "Invalid value for 'minimum_chrome_version'."; |
+const char kInvalidName[] = |
+ "Required value 'name' is missing or invalid."; |
+const char kInvalidNaClModules[] = |
+ "Invalid value for 'nacl_modules'."; |
+const char kInvalidNaClModulesPath[] = |
+ "Invalid value for 'nacl_modules[*].path'."; |
+const char kInvalidNaClModulesMIMEType[] = |
+ "Invalid value for 'nacl_modules[*].mime_type'."; |
+const char kInvalidOAuth2AutoApprove[] = |
+ "Invalid value for 'oauth2.auto_approve'. Value must be true or false."; |
+const char kInvalidOAuth2ClientId[] = |
+ "Invalid value for 'oauth2.client_id'."; |
+const char kInvalidOAuth2Scopes[] = |
+ "Invalid value for 'oauth2.scopes'."; |
+const char kInvalidOfflineEnabled[] = |
+ "Invalid value for 'offline_enabled'."; |
+const char kInvalidOmniboxKeyword[] = |
+ "Invalid value for 'omnibox.keyword'."; |
+const char kInvalidOptionsPage[] = |
+ "Invalid value for 'options_page'."; |
+const char kInvalidOptionsPageExpectUrlInPackage[] = |
+ "Invalid value for 'options_page'. Value must be a relative path."; |
+const char kInvalidOptionsPageInHostedApp[] = |
+ "Invalid value for 'options_page'. Hosted apps must specify an " |
+ "absolute URL."; |
+const char kInvalidOptionalPermissions[] = |
+ "Invalid value for 'optional_permissions'."; |
+const char kInvalidPageAction[] = |
+ "Invalid value for 'page_action'."; |
+const char kInvalidPageActionDefaultTitle[] = |
+ "Invalid value for 'default_title'."; |
+const char kInvalidPageActionIconPath[] = |
+ "Invalid value for 'page_action.default_icon'."; |
+const char kInvalidPageActionId[] = |
+ "Required value 'id' is missing or invalid."; |
+const char kInvalidPageActionName[] = |
+ "Invalid value for 'page_action.name'."; |
+const char kInvalidPageActionOldAndNewKeys[] = |
+ "Key \"*\" is deprecated. Key \"*\" has the same meaning. You can not " |
+ "use both."; |
+const char kInvalidPageActionPopup[] = |
+ "Invalid type for page action popup."; |
+const char kInvalidPageActionPopupPath[] = |
+ "Invalid value for page action popup path [*]."; |
+const char kInvalidPageActionsList[] = |
+ "Invalid value for 'page_actions'."; |
+const char kInvalidPageActionsListSize[] = |
+ "Invalid value for 'page_actions'. There can be at most one page action."; |
+const char kInvalidPageActionTypeValue[] = |
+ "Invalid value for 'page_actions[*].type', expected 'tab' or 'permanent'."; |
+const char kInvalidPermission[] = |
+ "Invalid value for 'permissions[*]'."; |
+const char kInvalidPermissions[] = |
+ "Invalid value for 'permissions'."; |
+const char kInvalidPermissionScheme[] = |
+ "Invalid scheme for 'permissions[*]'."; |
+const char kInvalidPlugins[] = |
+ "Invalid value for 'plugins'."; |
+const char kInvalidPluginsPath[] = |
+ "Invalid value for 'plugins[*].path'."; |
+const char kInvalidPluginsPublic[] = |
+ "Invalid value for 'plugins[*].public'."; |
+const char kInvalidRequirement[] = |
+ "Invalid value for requirement \"*\""; |
+const char kInvalidRequirements[] = |
+ "Invalid value for 'requirements'"; |
+const char kInvalidRunAt[] = |
+ "Invalid value for 'content_scripts[*].run_at'."; |
+const char kInvalidSandboxedPagesList[] = |
+ "Invalid value for 'sandbox.pages'."; |
+const char kInvalidSandboxedPage[] = |
+ "Invalid value for 'sandbox.pages[*]'."; |
+const char kInvalidSandboxedPagesCSP[] = |
+ "Invalid value for 'sandbox.content_security_policy'."; |
+const char kInvalidScriptBadge[] = |
+ "Invalid value for 'script_badge'."; |
+const char kInvalidShortName[] = |
+ "Invalid value for 'short_name'."; |
+const char kInvalidSignature[] = |
+ "Value 'signature' is missing or invalid."; |
+const char kInvalidSpellcheck[] = |
+ "Invalid value for 'spellcheck'."; |
+const char kInvalidSpellcheckDictionaryFormat[] = |
+ "Invalid value for spellcheck dictionary format."; |
+const char kInvalidSpellcheckDictionaryLanguage[] = |
+ "Invalid value for spellcheck dictionary language."; |
+const char kInvalidSpellcheckDictionaryLocale[] = |
+ "Invalid value for spellcheck dictionary locale."; |
+const char kInvalidSpellcheckDictionaryPath[] = |
+ "Invalid value for spellcheck dictionary path."; |
+const char kInvalidSystemIndicator[] = |
+ "Invalid value for 'system_indicator'."; |
+const char kInvalidTheme[] = |
+ "Invalid value for 'theme'."; |
+const char kInvalidThemeColors[] = |
+ "Invalid value for theme colors - colors must be integers"; |
+const char kInvalidThemeImages[] = |
+ "Invalid value for theme images - images must be strings."; |
+const char kInvalidThemeImagesMissing[] = |
+ "An image specified in the theme is missing."; |
+const char kInvalidThemeTints[] = |
+ "Invalid value for theme images - tints must be decimal numbers."; |
+const char kInvalidTts[] = |
+ "Invalid value for 'tts_engine'."; |
+const char kInvalidTtsVoices[] = |
+ "Invalid value for 'tts_engine.voices'."; |
+const char kInvalidTtsVoicesEventTypes[] = |
+ "Invalid value for 'tts_engine.voices[*].event_types'."; |
+const char kInvalidTtsVoicesGender[] = |
+ "Invalid value for 'tts_engine.voices[*].gender'."; |
+const char kInvalidTtsVoicesLang[] = |
+ "Invalid value for 'tts_engine.voices[*].lang'."; |
+const char kInvalidTtsVoicesVoiceName[] = |
+ "Invalid value for 'tts_engine.voices[*].voice_name'."; |
+const char kInvalidUpdateURL[] = |
+ "Invalid value for update url: '[*]'."; |
+const char kInvalidURLHandlers[] = |
+ "Invalid value for 'url_handlers'."; |
+const char kInvalidURLHandlerPatternElement[] = |
+ "Invalid value for 'url_handlers[*]'."; |
+const char kInvalidURLHandlerTitle[] = |
+ "Invalid value for 'url_handlers[*].title'."; |
+const char kInvalidURLHandlerPattern[] = |
+ "Invalid value for 'url_handlers[*].matches[*]'."; |
+const char kInvalidURLPatternError[] = |
+ "Invalid url pattern '*'"; |
+const char kInvalidVersion[] = |
+ "Required value 'version' is missing or invalid. It must be between 1-4 " |
+ "dot-separated integers each between 0 and 65536."; |
+const char kInvalidWebAccessibleResourcesList[] = |
+ "Invalid value for 'web_accessible_resources'."; |
+const char kInvalidWebAccessibleResource[] = |
+ "Invalid value for 'web_accessible_resources[*]'."; |
+const char kInvalidWebURL[] = |
+ "Invalid value for 'app.urls[*]': *"; |
+const char kInvalidWebURLs[] = |
+ "Invalid value for 'app.urls'."; |
+const char kInvalidZipHash[] = |
+ "Required key 'zip_hash' is missing or invalid."; |
+const char kInsecureContentSecurityPolicy[] = |
+ "Invalid value for 'content_security_policy': Both 'script-src' and" |
+ " 'object-src' directives must be specified (either explicitly, or" |
+ " implicitly via 'default-src'), and both must whitelist only secure" |
+ " resources. You may include any of the following sources: \"'self'\"," |
+ " \"'unsafe-eval'\", \"http://127.0.0.1\", \"http://localhost\", or any" |
+ " \"https://\" or \"chrome-extension://\" origin. For more information," |
+ " see http://developer.chrome.com/extensions/contentSecurityPolicy.html"; |
+const char kLaunchPathAndExtentAreExclusive[] = |
+ "The 'app.launch.local_path' and 'app.urls' keys cannot both be set."; |
+const char kLaunchPathAndURLAreExclusive[] = |
+ "The 'app.launch.local_path' and 'app.launch.web_url' keys cannot " |
+ "both be set."; |
+const char kLaunchURLRequired[] = |
+ "Either 'app.launch.local_path' or 'app.launch.web_url' is required."; |
+const char kLocalesMessagesFileMissing[] = |
+ "Messages file is missing for locale."; |
+const char kLocalesNoDefaultLocaleSpecified[] = |
+ "Localization used, but default_locale wasn't specified in the manifest."; |
+const char kLocalesNoDefaultMessages[] = |
+ "Default locale is defined but default data couldn't be loaded."; |
+const char kLocalesNoValidLocaleNamesListed[] = |
+ "No valid locale name could be found in _locales directory."; |
+const char kLocalesTreeMissing[] = |
+ "Default locale was specified, but _locales subtree is missing."; |
+const char kManifestParseError[] = |
+ "Manifest is not valid JSON."; |
+const char kManifestUnreadable[] = |
+ "Manifest file is missing or unreadable."; |
+const char kMissingFile[] = |
+ "At least one js or css file is required for 'content_scripts[*]'."; |
+const char kMultipleOverrides[] = |
+ "An extension cannot override more than one page."; |
+const char kNoPermissionForMIMETypes[] = |
+ "The extension is not allowed to use mime_types key."; |
+const char kNoWildCardsInPaths[] = |
+ "Wildcards are not allowed in extent URL pattern paths."; |
+const char kOneUISurfaceOnly[] = |
+ "Only one of 'browser_action', 'page_action', and 'app' can be specified."; |
+const char kPermissionMustBeOptional[] = |
+ "Permission '*' must be specified in the optional section of the manifest."; |
+const char kPermissionNotAllowed[] = |
+ "Access to permission '*' denied."; |
+const char kPermissionNotAllowedInManifest[] = |
+ "Permission '*' cannot be specified in the manifest."; |
const char kPermissionUnknownOrMalformed[] = |
"Permission '*' is unknown or URL pattern is malformed."; |
+const char kReservedMessageFound[] = |
+ "Reserved key * found in message catalog."; |
+const char kScriptBadgeRequiresFlag[] = |
+ "The script_badge manifest key is turned off by default. " |
+ "You can enable it with the --enable-script-badges command-line flag."; |
+const char kScriptBadgeIconIgnored[] = |
+ "default_icon specified in script_badge manifest section will not be used."; |
+const char kScriptBadgeTitleIgnored[] = |
+ "default_title specified in script_badge manifest section will not be " |
+ "used."; |
const char kUnrecognizedManifestKey[] = "Unrecognized manifest key '*'."; |
+const char kWebRequestConflictsWithLazyBackground[] = |
+ "The 'webRequest' API cannot be used with event pages."; |
+#if defined(OS_CHROMEOS) |
+const char kIllegalPlugins[] = |
+ "Extensions cannot install plugins on Chrome OS"; |
+#endif |
} // namespace manifest_errors |