blob: d1fa89eea4aea30401ed018fbafc2817f11bc03f [file] [log] [blame]
// Copyright (c) 2012 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.
#include "chrome/common/extensions/extension_manifest_constants.h"
namespace extension_manifest_keys {
const char kAllFrames[] = "all_frames";
const char kAltKey[] = "altKey";
const char kApp[] = "app";
const char kBackground[] = "background";
const char kBackgroundAllowJsAccess[] = "background.allow_js_access";
const char kBackgroundPage[] = "background.page";
const char kBackgroundPageLegacy[] = "background_page";
const char kBackgroundPersistent[] = "background.persistent";
const char kBackgroundScripts[] = "background.scripts";
const char kBrowserAction[] = "browser_action";
const char kChromeURLOverrides[] = "chrome_url_overrides";
const char kCommands[] = "commands";
const char kContentScripts[] = "content_scripts";
const char kContentSecurityPolicy[] = "content_security_policy";
const char kConvertedFromUserScript[] = "converted_from_user_script";
const char kCss[] = "css";
const char kCtrlKey[] = "ctrlKey";
const char kCurrentLocale[] = "current_locale";
const char kDefaultLocale[] = "default_locale";
const char kDescription[] = "description";
const char kDevToolsPage[] = "devtools_page";
const char kEventName[] = "event_name";
const char kExcludeGlobs[] = "exclude_globs";
const char kExcludeMatches[] = "exclude_matches";
const char kFileFilters[] = "file_filters";
const char kFileBrowserHandlers[] = "file_browser_handlers";
const char kHomepageURL[] = "homepage_url";
const char kIcons[] = "icons";
const char kId[] = "id";
const char kIncognito[] = "incognito";
const char kIncludeGlobs[] = "include_globs";
const char kInputComponents[] = "input_components";
const char kIntentDisposition[] = "disposition";
const char kIntentHref[] = "href";
const char kIntentPath[] = "path";
const char kIntents[] = "intents";
const char kIntentTitle[] = "title";
const char kIntentType[] = "type";
const char kIsolation[] = "app.isolation";
const char kJs[] = "js";
const char kKey[] = "key";
const char kKeycode[] = "keyCode";
const char kLanguage[] = "language";
const char kLaunch[] = "app.launch";
const char kLaunchContainer[] = "app.launch.container";
const char kLaunchHeight[] = "app.launch.height";
const char kLaunchLocalPath[] = "app.launch.local_path";
const char kLaunchWebURL[] = "app.launch.web_url";
const char kLaunchMaxHeight[] = "app.launch.max_height";
const char kLaunchMaxWidth[] = "app.launch.max_width";
const char kLaunchMinHeight[] = "app.launch.min_height";
const char kLaunchMinWidth[] = "app.launch.min_width";
const char kLaunchWidth[] = "app.launch.width";
const char kLayouts[] = "layouts";
const char kManifestVersion[] = "manifest_version";
const char kMatches[] = "matches";
const char kMinimumChromeVersion[] = "minimum_chrome_version";
const char kName[] = "name";
const char kNaClModules[] = "nacl_modules";
const char kNaClModulesMIMEType[] = "mime_type";
const char kNaClModulesPath[] = "path";
const char kOAuth2[] = "oauth2";
const char kOAuth2ClientId[] = "oauth2.client_id";
const char kOAuth2Scopes[] = "oauth2.scopes";
const char kOfflineEnabled[] = "offline_enabled";
const char kOmnibox[] = "omnibox";
const char kOmniboxKeyword[] = "omnibox.keyword";
const char kOptionalPermissions[] = "optional_permissions";
const char kOptionsPage[] = "options_page";
const char kPageAction[] = "page_action";
const char kPageActionDefaultIcon[] = "default_icon";
const char kPageActionDefaultPopup[] = "default_popup";
const char kPageActionDefaultTitle[] = "default_title";
const char kPageActionIcons[] = "icons";
const char kPageActionId[] = "id";
const char kPageActionPopup[] = "popup";
const char kPageActionPopupPath[] = "path";
const char kPageActions[] = "page_actions";
const char kPermissions[] = "permissions";
const char kPlatformApp[] = "platform_app";
const char kPlugins[] = "plugins";
const char kPluginsPath[] = "path";
const char kPluginsPublic[] = "public";
const char kPublicKey[] = "key";
const char kRequirements[] = "requirements";
const char kRunAt[] = "run_at";
const char kShiftKey[] = "shiftKey";
const char kShortcutKey[] = "shortcutKey";
const char kSignature[] = "signature";
const char kTheme[] = "theme";
const char kThemeColors[] = "colors";
const char kThemeDisplayProperties[] = "properties";
const char kThemeImages[] = "images";
const char kThemeTints[] = "tints";
const char kTtsEngine[] = "tts_engine";
const char kTtsGenderFemale[] = "female";
const char kTtsGenderMale[] = "male";
const char kTtsVoices[] = "voices";
const char kTtsVoicesEventTypeEnd[] = "end";
const char kTtsVoicesEventTypeError[] = "error";
const char kTtsVoicesEventTypeMarker[] = "marker";
const char kTtsVoicesEventTypeSentence[] = "sentence";
const char kTtsVoicesEventTypeStart[] = "start";
const char kTtsVoicesEventTypeWord[] = "word";
const char kTtsVoicesEventTypes[] = "event_types";
const char kTtsVoicesGender[] = "gender";
const char kTtsVoicesLang[] = "lang";
const char kTtsVoicesVoiceName[] = "voice_name";
const char kType[] = "type";
const char kUpdateURL[] = "update_url";
const char kVersion[] = "version";
const char kWebAccessibleResources[] = "web_accessible_resources";
const char kWebURLs[] = "app.urls";
} // namespace extension_manifest_keys
namespace extension_manifest_values {
const char kBrowserActionKeybindingEvent[] = "browserAction";
const char kIncognitoSplit[] = "split";
const char kIncognitoSpanning[] = "spanning";
const char kIntentDispositionWindow[] = "window";
const char kIntentDispositionInline[] = "inline";
const char kIsolatedStorage[] = "storage";
const char kRunAtDocumentStart[] = "document_start";
const char kRunAtDocumentEnd[] = "document_end";
const char kRunAtDocumentIdle[] = "document_idle";
const char kPageActionKeybindingEvent[] = "pageAction";
const char kPageActionTypeTab[] = "tab";
const char kPageActionTypePermanent[] = "permanent";
const char kLaunchContainerPanel[] = "panel";
const char kLaunchContainerShell[] = "shell";
const char kLaunchContainerTab[] = "tab";
const char kLaunchContainerWindow[] = "window";
} // namespace extension_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 extension_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 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 kCannotUninstallManagedExtension[] =
"Attempted uninstallation of an extension that is not user-manageable.";
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 kFeatureNotAllowed[] =
"Feature '*' is not accessible. *";
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 kInvalidBackgroundAllowJsAccessNoPage[] =
"Must specify one of background.page or background.scripts to use"
" 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 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 kInvalidExcludeMatch[] =
"Invalid value for 'content_scripts[*].exclude_matches[*]': *";
const char kInvalidExcludeMatches[] =
"Invalid value for 'content_scripts[*].exclude_matches'.";
const char kInvalidFileBrowserHandler[] =
"Invalid value for 'file_browser_handers'.";
const char kInvalidFileFiltersList[] =
"Invalid value for 'file_filters'.";
const char kInvalidFileFilterValue[] =
"Invalid value for 'file_filters[*]'.";
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 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 kInvalidInputComponentLayouts[] =
"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 kInvalidIntentHref[] =
"Invalid value for intents[*].href";
const char kInvalidIntentHrefEmpty[] =
"Missing value for intents[*].href";
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[*].key':";
const char kInvalidKeyBindingDescription[] =
"Invalid value for 'commands[*].description'.";
const char kInvalidKeyBindingDictionary[] =
"Contents of 'commands[*]' invalid.";
const char kInvalidLaunchContainer[] =
"Invalid value for 'app.launch.container'.";
const char kInvalidLaunchContainerForNonPlatform[] =
"'app.launch.container' = 'shell' can only be used with platform_app.";
const char kInvalidLaunchContainerForPlatform[] =
"platform_app requires 'app.launch.container' == 'shell'.";
const char kInvalidLaunchValue[] =
"Invalid value for '*'.";
const char kInvalidLaunchValueContainer[] =
"Invalid container type for '*'.";
const char kInvalidManifest[] =
"Manifest file is invalid.";
const char kInvalidManifestVersion[] =
"The 'manifest_version' key must be present and set to 2 (without quotes).";
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 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 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 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[] =
"Required value 'permissions' is missing or invalid.";
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 kInvalidSignature[] =
"Value 'signature' is missing or invalid.";
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 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 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 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 kPermissionNotAllowed[] =
"Access to permission '*' denied.";
const char kReservedMessageFound[] =
"Reserved key * found in message catalog.";
#if defined(OS_CHROMEOS)
const char kIllegalPlugins[] =
"Extensions cannot install plugins on Chrome OS";
#endif
} // namespace extension_manifest_errors