// Copyright (c) 2011 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_constants.h"
namespace extension_manifest_keys {
const char* kAllFrames = "all_frames";
const char* kApp = "app";
const char* kBackground = "background_page";
const char* kBrowserAction = "browser_action";
const char* kChromeURLOverrides = "chrome_url_overrides";
const char* kContentScripts = "content_scripts";
const char* kConvertedFromUserScript = "converted_from_user_script";
const char* kCss = "css";
const char* kCurrentLocale = "current_locale";
const char* kDefaultLocale = "default_locale";
const char* kDescription = "description";
const char* kDevToolsPage = "devtools_page";
const char* kExcludeGlobs = "exclude_globs";
const char* kFileFilters = "file_filters";
const char* kFileBrowserHandlers = "file_browser_handlers";
const char* kHomepageURL = "homepage_url";
const char* kIcons = "icons";
const char* kIncognito = "incognito";
const char* kIncludeGlobs = "include_globs";
const char* kIsolation = "app.isolation";
const char* kJs = "js";
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* kLaunchWidth = "app.launch.width";
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* kOmnibox = "omnibox";
const char* kOmniboxKeyword = "omnibox.keyword";
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* kPageActionPopupHeight = "height";
const char* kPageActionPopupPath = "path";
const char* kPageActions = "page_actions";
const char* kPermissions = "permissions";
const char* kPlugins = "plugins";
const char* kPluginsPath = "path";
const char* kPluginsPublic = "public";
const char* kPublicKey = "key";
const char* kRunAt = "run_at";
const char* kSidebar = "sidebar";
const char* kSidebarDefaultIcon = "default_icon";
const char* kSidebarDefaultPage = "default_page";
const char* kSidebarDefaultTitle = "default_title";
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* kToolstripPath = "path";
const char* kToolstrips = "toolstrips";
const char* kTts = "tts";
const char* kTtsGenderFemale = "female";
const char* kTtsGenderMale = "male";
const char* kTtsVoices = "voices";
const char* kTtsVoicesGender = "gender";
const char* kTtsVoicesLocale = "locale";
const char* kTtsVoicesVoiceName = "voiceName";
const char* kType = "type";
const char* kUpdateURL = "update_url";
const char* kVersion = "version";
const char* kWebURLs = "app.urls";
} // namespace extension_manifest_keys
namespace extension_manifest_values {
const char* kIncognitoSplit = "split";
const char* kIncognitoSpanning = "spanning";
const char* kIsolatedStorage = "storage";
const char* kRunAtDocumentStart = "document_start";
const char* kRunAtDocumentEnd = "document_end";
const char* kRunAtDocumentIdle = "document_idle";
const char* kPageActionTypeTab = "tab";
const char* kPageActionTypePermanent = "permanent";
const char* kLaunchContainerPanel = "panel";
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* 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* kDevToolsExperimental =
"You must request the 'experimental' permission in order to use the"
" DevTools API.";
const char* kExpectString = "Expect string value.";
const char* kExperimentalFlagRequired =
"Loading extensions with 'experimental' permission requires"
" --enable-experimental-extension-apis command line flag.";
const char *kExperimentalFeature =
"This feature requires 'experimental' permissions and"
" --enable-experimental-extension-apis command line flag.";
const char* kHostedAppsCannotIncludeExtensionFeatures =
"Hosted apps cannot use the extension feature '*'.";
const char* kInvalidAllFrames =
"Invalid value for 'content_scripts[*].all_frames'.";
const char* kInvalidBackground =
"Invalid value for 'background_page'.";
const char* kInvalidBackgroundInHostedApp =
"Invalid value for 'background_page'. Hosted apps must specify an "
"absolute HTTPS URL for the background page.";
const char* kInvalidBrowserAction =
"Invalid value for 'browser_action'.";
const char* kInvalidChromeURLOverrides =
"Invalid value for 'chrome_url_overrides'.";
const char* kInvalidContentScript =
"Invalid value for 'content_scripts[*]'.";
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* 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* 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* kInvalidLaunchContainer =
"Invalid value for 'app.launch.container'.";
const char* kInvalidLaunchHeight =
"Invalid value for 'app.launch.height'.";
const char* kInvalidLaunchHeightContainer =
"Invalid container type for 'app.launch.height'.";
const char* kInvalidLaunchLocalPath =
"Invalid value for 'app.launch.local_path'.";
const char* kInvalidLaunchWebURL =
"Invalid value for 'app.launch.web_url'.";
const char* kInvalidLaunchWidth =
"Invalid value for 'app.launch.width'.";
const char* kInvalidLaunchWidthContainer =
"Invalid container type for 'app.launch.width'.";
const char* kInvalidManifest =
"Manifest file is invalid.";
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* 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* kInvalidPageActionPopupHeight =
"Invalid value for page action popup height [*].";
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* kInvalidRunAt =
"Invalid value for 'content_scripts[*].run_at'.";
const char* kInvalidSidebar =
"Invalid value for 'sidebar'.";
const char* kInvalidSidebarDefaultIconPath =
"Invalid value for 'sidebar.default_icon'.";
const char* kInvalidSidebarDefaultPage =
"Invalid value for 'sidebar.default_page'.";
const char* kInvalidSidebarDefaultTitle =
"Invalid value for 'sidebar.default_title'.";
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* kInvalidToolstrip =
"Invalid value for 'toolstrips[*]'";
const char* kInvalidToolstrips =
"Invalid value for 'toolstrips'.";
const char* kInvalidTts =
"Invalid value for 'tts'.";
const char* kInvalidTtsVoices =
"Invalid value for 'tts.voices'.";
const char* kInvalidTtsVoicesGender =
"Invalid value for 'tts.voices[*].gender'.";
const char* kInvalidTtsVoicesLocale =
"Invalid value for 'tts.voices[*].locale'.";
const char* kInvalidTtsVoicesVoiceName =
"Invalid value for 'tts.voices[*].voiceName'.";
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* 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* kLaunchPathAndURLAreExclusive =
"The 'app.launch.local_path' and '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* kReservedMessageFound =
"Reserved key * found in message catalog.";
const char* kSidebarExperimental =
"You must request the 'experimental' permission in order to use the"
" Sidebar API.";
const char* kThemesCannotContainExtensions =
"A theme cannot contain extensions code.";
#if defined(OS_CHROMEOS)
const char* kIllegalPlugins =
"Extensions cannot install plugins on Chrome OS";
#endif
} // namespace extension_manifest_errors
namespace extension_urls {
const char* kGalleryBrowsePrefix = "https://chrome.google.com/webstore";
const char* kMiniGalleryBrowsePrefix = "https://tools.google.com/chrome/";
const char* kMiniGalleryDownloadPrefix = "https://dl-ssl.google.com/chrome/";
}
namespace extension_filenames {
const char* kTempExtensionName = "CRX_INSTALL";
// The file to write our decoded images to, relative to the extension_path.
const char* kDecodedImagesFilename = "DECODED_IMAGES";
// The file to write our decoded message catalogs to, relative to the
// extension_path.
const char* kDecodedMessageCatalogsFilename = "DECODED_MESSAGE_CATALOGS";
}
namespace extension_misc {
const char* kBookmarkManagerId = "eemcgdkfndhakfknompkggombfjjjeno";
const char* kWebStoreAppId = "ahfgeienlihckogmohjhadlkjgocpleb";
const char* kAppsPromoHistogram = "Extensions.AppsPromo";
const char* kAppLaunchHistogram = "Extensions.AppLaunch";
#if defined(OS_CHROMEOS)
const char* kAccessExtensionPath =
"/usr/share/chromeos-assets/accessibility/extensions";
#endif
}