blob: 4869978829397922b64631bb88662464e6ffabca [file] [log] [blame] [edit]
// Copyright 2013 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef EXTENSIONS_COMMON_MANIFEST_CONSTANTS_H_
#define EXTENSIONS_COMMON_MANIFEST_CONSTANTS_H_
#include "build/build_config.h"
#include "build/chromeos_buildflags.h"
namespace extensions {
// Keys used in JSON representation of extensions.
namespace manifest_keys {
// A list of keys that do not generate warnings when specified in the manifest,
// despite the fact that they are not recognized by Chrome. Keys should be
// added here if they are widely adopted but a developer is unlikely to expect
// that it would do anything in Chrome, and so wouldn't benefit from a warning.
inline constexpr const char* const kIgnoredUnrecognizedKeys[] = {
// This is used by non-Chromium browsers:
// https://developer.mozilla.org/docs/Mozilla/Add-ons/WebExtensions/manifest.json/browser_specific_settings
"browser_specific_settings",
// This is part of the JSON schema definition:
// https://json-schema.org/understanding-json-schema/reference/schema#schema
"$schema"};
inline constexpr char kAboutPage[] = "about_page";
inline constexpr char kAction[] = "action";
inline constexpr char kActionDefaultIcon[] = "default_icon";
inline constexpr char kActionDefaultPopup[] = "default_popup";
inline constexpr char kActionDefaultState[] = "default_state";
inline constexpr char kActionDefaultTitle[] = "default_title";
inline constexpr char kApp[] = "app";
inline constexpr char kAutomation[] = "automation";
inline constexpr char kBackground[] = "background";
inline constexpr char kBackgroundAllowJsAccess[] = "background.allow_js_access";
inline constexpr char kBackgroundPage[] = "background.page";
inline constexpr char kBackgroundPersistent[] = "background.persistent";
inline constexpr char kBackgroundScripts[] = "background.scripts";
inline constexpr char kBackgroundServiceWorkerScript[] =
"background.service_worker";
inline constexpr char kBackgroundServiceWorkerType[] = "background.type";
inline constexpr char kBluetooth[] = "bluetooth";
inline constexpr char kBookmarkUI[] = "bookmarks_ui";
inline constexpr char kBrowserAction[] = "browser_action";
inline constexpr char kChromeOSSystemExtension[] = "chromeos_system_extension";
inline constexpr char kCommands[] = "commands";
inline constexpr char kContentCapabilities[] = "content_capabilities";
inline constexpr char kContentSecurityPolicy[] = "content_security_policy";
inline constexpr char kContentSecurityPolicy_ExtensionPagesPath[] =
"content_security_policy.extension_pages";
inline constexpr char kContentSecurityPolicy_SandboxedPagesPath[] =
"content_security_policy.sandbox";
inline constexpr char kConvertedFromUserScript[] = "converted_from_user_script";
inline constexpr char kCurrentLocale[] = "current_locale";
inline constexpr char kDefaultLocale[] = "default_locale";
inline constexpr char kDescription[] = "description";
inline constexpr char kDevToolsPage[] = "devtools_page";
inline constexpr char kDifferentialFingerprint[] = "differential_fingerprint";
inline constexpr char kDisplayInLauncher[] = "display_in_launcher";
inline constexpr char kDisplayInNewTabPage[] = "display_in_new_tab_page";
inline constexpr char kEventName[] = "event_name";
inline constexpr char kExternallyConnectable[] = "externally_connectable";
inline constexpr char kEventRules[] = "event_rules";
inline constexpr char kFileAccessList[] = "file_access";
inline constexpr char kFileBrowserHandlerId[] = "id";
inline constexpr char kFileBrowserHandlers[] = "file_browser_handlers";
inline constexpr char kFileFilters[] = "file_filters";
inline constexpr char kFileHandlerExtensions[] = "extensions";
inline constexpr char kFileHandlerIncludeDirectories[] = "include_directories";
inline constexpr char kFileHandlerTypes[] = "types";
inline constexpr char kFileHandlerVerb[] = "verb";
inline constexpr char kFileHandlers[] = "file_handlers";
inline constexpr char kGlobal[] = "global";
inline constexpr char kHandwritingLanguage[] = "handwriting_language";
inline constexpr char kHideBookmarkButton[] = "hide_bookmark_button";
inline constexpr char kHomepageURL[] = "homepage_url";
inline constexpr char kHostPermissions[] = "host_permissions";
inline constexpr char kIcons[] = "icons";
inline constexpr char kIconVariants[] = "icon_variants";
inline constexpr char kId[] = "id";
inline constexpr char kImeOptionsPage[] = "options_page";
inline constexpr char kIndicator[] = "indicator";
inline constexpr char kInputComponents[] = "input_components";
inline constexpr char kInputView[] = "input_view";
inline constexpr char kKey[] = "key";
inline constexpr char kKiosk[] = "kiosk";
inline constexpr char kKioskAlwaysUpdate[] = "kiosk.always_update";
inline constexpr char kKioskEnabled[] = "kiosk_enabled";
inline constexpr char kKioskOnly[] = "kiosk_only";
inline constexpr char kKioskMode[] = "kiosk_mode";
inline constexpr char kKioskRequiredPlatformVersion[] =
"kiosk.required_platform_version";
inline constexpr char kKioskSecondaryApps[] = "kiosk_secondary_apps";
inline constexpr char kLanguage[] = "language";
inline constexpr char kLaunch[] = "app.launch";
inline constexpr char kLaunchContainer[] = "app.launch.container";
inline constexpr char kLaunchHeight[] = "app.launch.height";
inline constexpr char kLaunchLocalPath[] = "app.launch.local_path";
inline constexpr char kLaunchWebURL[] = "app.launch.web_url";
inline constexpr char kLaunchWidth[] = "app.launch.width";
inline constexpr char kLayouts[] = "layouts";
inline constexpr char kLinkedAppIcons[] = "app.linked_icons";
inline constexpr char kLinkedAppIconURL[] = "url";
inline constexpr char kLinkedAppIconSize[] = "size";
inline constexpr char kManifestVersion[] = "manifest_version";
inline constexpr char kMatches[] = "matches";
inline constexpr char kMIMETypes[] = "mime_types";
inline constexpr char kMimeTypesHandler[] = "mime_types_handler";
inline constexpr char kMinimumChromeVersion[] = "minimum_chrome_version";
inline constexpr char kNaClModules[] = "nacl_modules";
inline constexpr char kNaClModulesMIMEType[] = "mime_type";
inline constexpr char kNaClModulesPath[] = "path";
inline constexpr char kName[] = "name";
inline constexpr char kNativelyConnectable[] = "natively_connectable";
inline constexpr char kOfflineEnabled[] = "offline_enabled";
inline constexpr char kOmniboxKeyword[] = "omnibox.keyword";
inline constexpr char kOptionalHostPermissions[] = "optional_host_permissions";
inline constexpr char kOptionalPermissions[] = "optional_permissions";
inline constexpr char kOptionsPage[] = "options_page";
inline constexpr char kOptionsUI[] = "options_ui";
inline constexpr char kOverrideHomepage[] =
"chrome_settings_overrides.homepage";
inline constexpr char kOverrideSearchProvider[] =
"chrome_settings_overrides.search_provider";
inline constexpr char kOverrideStartupPage[] =
"chrome_settings_overrides.startup_pages";
inline constexpr char kPageAction[] = "page_action";
inline constexpr char kPermissions[] = "permissions";
inline constexpr char kPlatformAppBackground[] = "app.background";
inline constexpr char kPlatformAppBackgroundPage[] = "app.background.page";
inline constexpr char kPlatformAppBackgroundScripts[] =
"app.background.scripts";
inline constexpr char kPlatformAppContentSecurityPolicy[] =
"app.content_security_policy";
inline constexpr char kPublicKey[] = "key";
inline constexpr char kRemoveButton[] = "remove_button";
inline constexpr char kReplacementWebApp[] = "replacement_web_app";
inline constexpr char kSandboxedPages[] = "sandbox.pages";
inline constexpr char kSandboxedPagesCSP[] = "sandbox.content_security_policy";
inline constexpr char kSettingsOverride[] = "chrome_settings_overrides";
inline constexpr char kSettingsOverrideAlternateUrls[] =
"chrome_settings_overrides.search_provider.alternate_urls";
inline constexpr char kShortName[] = "short_name";
inline constexpr char kSockets[] = "sockets";
inline constexpr char kStorageManagedSchema[] = "storage.managed_schema";
inline constexpr char kSuggestedKey[] = "suggested_key";
inline constexpr char kTheme[] = "theme";
inline constexpr char kThemeColors[] = "colors";
inline constexpr char kThemeDisplayProperties[] = "properties";
inline constexpr char kThemeImages[] = "images";
inline constexpr char kThemeTints[] = "tints";
inline constexpr char kTrialTokens[] = "trial_tokens";
inline constexpr char kTtsEngine[] = "tts_engine";
inline constexpr char kTtsEngineSampleRate[] = "sample_rate";
inline constexpr char kTtsEngineBufferSize[] = "buffer_size";
inline constexpr char kTtsVoices[] = "voices";
inline constexpr char kTtsVoicesEventTypeEnd[] = "end";
inline constexpr char kTtsVoicesEventTypeError[] = "error";
inline constexpr char kTtsVoicesEventTypeMarker[] = "marker";
inline constexpr char kTtsVoicesEventTypeSentence[] = "sentence";
inline constexpr char kTtsVoicesEventTypeStart[] = "start";
inline constexpr char kTtsVoicesEventTypeWord[] = "word";
inline constexpr char kTtsVoicesEventTypes[] = "event_types";
inline constexpr char kTtsVoicesLang[] = "lang";
inline constexpr char kTtsVoicesRemote[] = "remote";
inline constexpr char kTtsVoicesVoiceName[] = "voice_name";
inline constexpr char kUpdateURL[] = "update_url";
inline constexpr char kUrlHandlers[] = "url_handlers";
inline constexpr char kUrlHandlerTitle[] = "title";
inline constexpr char kUsbPrinters[] = "usb_printers";
inline constexpr char kVersion[] = "version";
inline constexpr char kVersionName[] = "version_name";
inline constexpr char kWebURLs[] = "app.urls";
inline constexpr char kWebview[] = "webview";
inline constexpr char kWebviewAccessibleResources[] = "accessible_resources";
inline constexpr char kWebviewName[] = "name";
inline constexpr char kWebviewPartitions[] = "partitions";
#if BUILDFLAG(IS_CHROMEOS)
inline constexpr char kFileSystemProviderCapabilities[] =
"file_system_provider_capabilities";
inline constexpr char kActionHandlers[] = "action_handlers";
inline constexpr char kActionHandlerActionKey[] = "action";
#endif
} // namespace manifest_keys
// Some values expected in manifests.
namespace manifest_values {
inline constexpr char kActionCommandEvent[] = "_execute_action";
inline constexpr char kApiKey[] = "api_key";
inline constexpr char kBrowserActionCommandEvent[] = "_execute_browser_action";
inline constexpr char kIncognitoNotAllowed[] = "not_allowed";
inline constexpr char kIncognitoSplit[] = "split";
inline constexpr char kIncognitoSpanning[] = "spanning";
inline constexpr char kLaunchContainerPanelDeprecated[] = "panel";
inline constexpr char kLaunchContainerTab[] = "tab";
inline constexpr char kLaunchContainerWindow[] = "window";
inline constexpr char kPageActionCommandEvent[] = "_execute_page_action";
} // 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 {
inline constexpr char kActiveTabPermissionNotGranted[] =
"The 'activeTab' permission is not in effect because this extension has "
"not been in invoked.";
inline constexpr char kAllURLOrActiveTabNeeded[] =
"Either the '<all_urls>' or 'activeTab' permission is required.";
inline constexpr char kAppsNotEnabled[] = "Apps are not enabled.";
inline constexpr char16_t kBackgroundPermissionNeeded[] =
u"Hosted apps that use 'background_page' must have the 'background' "
"permission.";
inline constexpr char16_t kBackgroundRequiredForPlatformApps[] =
u"Packaged apps must have a background page or background scripts.";
inline constexpr char kCannotAccessAboutUrl[] =
"Cannot access \"*\" at origin \"*\". Extension must have permission to "
"access the frame's origin, and matchAboutBlank must be true.";
inline constexpr char kCannotAccessChromeUrl[] =
"Cannot access a chrome:// URL";
inline constexpr char kCannotAccessExtensionUrl[] =
"Cannot access a chrome-extension:// URL of different extension";
// This deliberately does not contain a URL. Otherwise an extension can parse
// error messages and determine the URLs of open tabs without having appropriate
// permissions to see these URLs.
inline constexpr char kCannotAccessPage[] =
"Cannot access contents of the page. "
"Extension manifest must request permission to access the respective host.";
// Use this error message with caution and only if the extension triggering it
// has tabs permission. Otherwise, URLs may be leaked to extensions.
inline constexpr char kCannotAccessPageWithUrl[] =
"Cannot access contents of url \"*\". "
"Extension manifest must request permission to access this host.";
inline constexpr char kCannotChangeExtensionID[] =
"Installed extensions cannot change their IDs.";
inline constexpr char kCannotClaimAllHostsInExtent[] =
"Cannot claim all hosts ('*') in an extent.";
inline constexpr char kCannotClaimAllURLsInExtent[] =
"Cannot claim all URLs in an extent.";
inline constexpr char kCannotScriptGallery[] =
"The extensions gallery cannot be scripted.";
inline constexpr char kCannotScriptNtp[] =
"The New Tab Page cannot be scripted.";
inline constexpr char16_t kChromeStyleInvalidForManifestV3[] =
u"The chrome_style option cannot be used with manifest version 3.";
inline constexpr char kChromeVersionTooLow[] =
"This extension requires * version * or greater.";
inline constexpr char kCommandActionIncorrectForManifestActionType[] =
"The action commands in the manifest do not match the manifest's action "
"type and were ignored.";
inline constexpr char kDeclarativeNetRequestPathDuplicates[] =
"The same ruleset file appears multiple times with different IDs in the "
"manifest 'declarative_net_request.rule_resources' key.";
inline constexpr char kDeclarativeNetRequestPermissionNeeded[] =
"The extension requires the 'declarativeNetRequest' or the "
"'declarativeNetRequestWithHostAccess' permission for the '*' manifest "
"key.";
inline constexpr char16_t kDefaultStateShouldNotBeSet[] =
u"The default_state key cannot be set for browser_action or page_action "
"keys.";
inline constexpr char16_t kEmptyOmniboxKeyword[] =
u"Invalid value for 'omnibox.keyword'. It must be non-empty.";
inline constexpr char kEnabledRulesetCountExceeded[] =
"Invalid value for key '*.*': The number of enabled rulesets must be less "
"than or equal to *.";
inline constexpr char kExecutionWorldRestrictedToMV3[] =
"The 'world' property is restricted to extensions with 'manifest_version' "
"set to 3 or higher.";
inline constexpr char kExpectString[] = "Expect string value.";
inline constexpr char kFileNotFound[] = "File not found: *.";
inline constexpr char kHasDifferentialFingerprint[] =
"Manifest contains a differential_fingerprint key that will be overridden "
"on extension update.";
inline constexpr char16_t kInvalidAboutPage[] =
u"Invalid value for 'about_page'.";
inline constexpr char16_t kInvalidAboutPageExpectRelativePath[] =
u"Invalid value for 'about_page'. Value must be a relative path.";
inline constexpr char kInvalidAction[] = "Invalid value for 'action'.";
inline constexpr char16_t kInvalidActionDefaultIcon[] =
u"Invalid value for 'default_icon'.";
inline constexpr char kInvalidActionDefaultIconMimeType[] =
"Invalid mime type for 'default_icon'.";
inline constexpr char16_t kInvalidActionDefaultPopup[] =
u"Invalid type for 'default_popup'.";
inline constexpr char16_t kInvalidActionDefaultState[] =
u"Invalid value for 'default_state'.";
inline constexpr char16_t kInvalidActionDefaultTitle[] =
u"Invalid value for 'default_title'.";
inline constexpr char16_t kInvalidBackground[] =
u"Invalid value for 'background_page'.";
inline constexpr char16_t kInvalidBackgroundAllowJsAccess[] =
u"Invalid value for 'background.allow_js_access'.";
inline constexpr char16_t kInvalidBackgroundCombination[] =
u"Only one of 'background.page', 'background.scripts', and "
"'background.service_worker' can be specified.";
inline constexpr char kInvalidBackgroundScript[] =
"Invalid value for 'background.scripts[*]'.";
inline constexpr char16_t kInvalidBackgroundScripts[] =
u"Invalid value for 'background.scripts'.";
inline constexpr char kInvalidBackgroundScriptMimeType[] =
"Invalid background script mime type for 'background.scripts[*]', a "
"background script can only be loaded from supported JavaScript files such "
"as .js files.";
inline constexpr char16_t kInvalidBackgroundServiceWorkerScript[] =
u"Invalid value for 'background.service_worker'.";
inline constexpr char16_t kInvalidBackgroundServiceWorkerType[] =
u"Invalid value for 'background.type'.";
inline constexpr char16_t kInvalidBackgroundInHostedApp[] =
u"Invalid value for 'background_page'. Hosted apps must specify an "
"absolute HTTPS URL for the background page.";
inline constexpr char16_t kInvalidBackgroundPersistent[] =
u"Invalid value for 'background.persistent'.";
inline constexpr char kInvalidBackgroundPersistentInPlatformApp[] =
"Invalid value for 'app.background.persistent'. Packaged apps do not "
"support persistent background pages and must use event pages.";
inline constexpr char16_t kInvalidBackgroundPersistentNoPage[] =
u"Must specify one of background.page or background.scripts to use"
" background.persistent.";
inline constexpr char kInvalidBrowserAction[] =
"Invalid value for 'browser_action'.";
inline constexpr char kInvalidChromeURLOverrides[] =
"Invalid value for 'chrome_url_overrides'.";
inline constexpr char16_t kInvalidCommandsKey[] =
u"Invalid value for 'commands'.";
inline constexpr char16_t kInvalidContentCapabilities[] =
u"Invalid value for 'content_capabilities'.";
inline constexpr char kInvalidContentCapabilitiesMatch[] =
"Invalid content_capabilities URL pattern: *";
inline constexpr char kInvalidContentCapabilitiesMatchOrigin[] =
"Domain wildcards are not allowed for content_capabilities URL patterns.";
inline constexpr char16_t kInvalidContentCapabilitiesParsedValue[] =
u"Invalid content_capabilities parsing value. ";
inline constexpr char kInvalidContentCapabilitiesPermission[] =
"Invalid content_capabilities permission: *.";
inline constexpr char kInvalidCSPInsecureValueIgnored[] =
"'*': Ignored insecure CSP value \"*\" in directive '*'.";
inline constexpr char kInvalidCSPInsecureValueError[] =
"'*': Insecure CSP value \"*\" in directive '*'.";
inline constexpr char kInvalidCSPMissingSecureSrc[] =
"'*': CSP directive '*' must be specified (either explicitly, or "
"implicitly via 'default-src') and must allowlist only secure resources.";
inline constexpr char kInvalidDefaultLocale[] =
"Invalid value for default locale - locale name must be a string.";
inline constexpr char16_t kInvalidDefaultLocale16[] =
u"Invalid value for default locale - locale name must be a string.";
inline constexpr char16_t kInvalidDescription[] =
u"Invalid value for 'description'.";
inline constexpr char16_t kInvalidDevToolsPage[] =
u"Invalid value for 'devtools_page'.";
inline constexpr char16_t kInvalidDisplayInLauncher[] =
u"Invalid value for 'display_in_launcher'.";
inline constexpr char16_t kInvalidDisplayInNewTabPage[] =
u"Invalid value for 'display_in_new_tab_page'.";
inline constexpr char kInvalidEmptyDictionary[] = "Empty dictionary for '*'.";
inline constexpr char kInvalidExcludeMatch[] =
"Invalid value for 'content_scripts[*].exclude_matches[*]': *";
inline constexpr char kInvalidExcludeMatches[] =
"Invalid value for 'content_scripts[*].exclude_matches'.";
inline constexpr char kInvalidExportPermissions[] =
"Permissions are not allowed for extensions that export resources.";
inline constexpr char kInvalidExportAllowlistEmpty[] =
"Empty 'export.allowlist' implies any extension can import this module.";
inline constexpr char kInvalidExportAllowlistString[] =
"Invalid value for 'export.allowlist[*]'.";
inline constexpr char kInvalidExtensionOriginPopup[] =
"The default_popup path specified in the manifest is invalid. Ensure it is "
"a path to a file in this extension.";
inline constexpr char16_t kInvalidFileAccessList[] =
u"Invalid value for 'file_access'.";
inline constexpr char kInvalidFileAccessValue[] =
"Invalid value for 'file_access[*]'.";
inline constexpr char kInvalidFileBrowserHandler[] =
"Invalid value for 'file_browser_handlers'.";
inline constexpr char16_t kInvalidFileBrowserHandler16[] =
u"Invalid value for 'file_browser_handlers'.";
inline constexpr char16_t kInvalidFileBrowserHandlerId[] =
u"Required value 'id' is missing or invalid.";
inline constexpr char kInvalidFileBrowserHandlerMissingPermission[] =
"Declaring file browser handlers requires the fileBrowserHandler manifest "
"permission.";
inline constexpr char16_t kInvalidFileFiltersList[] =
u"Invalid value for 'file_filters'.";
inline constexpr char kInvalidFileFilterValue[] =
"Invalid value for 'file_filters[*]'.";
inline constexpr char16_t kInvalidFileHandlers[] =
u"Invalid value for 'file_handlers'.";
inline constexpr char kInvalidWebFileHandlers[] =
"Invalid value for 'file_handlers[*]'. *";
inline constexpr char16_t kInvalidFileHandlersTooManyTypesAndExtensions[] =
u"Too many MIME and extension file_handlers have been declared.";
inline constexpr char kInvalidFileHandlerExtension[] =
"Invalid value for 'file_handlers[*].extensions'.";
inline constexpr char kInvalidFileHandlerExtensionElement[] =
"Invalid value for 'file_handlers[*].extensions[*]'.";
inline constexpr char16_t kInvalidFileHandlerIncludeDirectories[] =
u"Invalid value for 'include_directories'.";
inline constexpr char kInvalidFileHandlerNoTypeOrExtension[] =
"'file_handlers[*]' must contain a non-empty 'types', 'extensions' "
"or 'include_directories'.";
inline constexpr char kInvalidFileHandlerType[] =
"Invalid value for 'file_handlers[*].types'.";
inline constexpr char kInvalidFileHandlerTypeElement[] =
"Invalid value for 'file_handlers[*].types[*]'.";
inline constexpr char kInvalidFileHandlerVerb[] =
"Invalid value for 'file_handlers[*].verb'.";
inline constexpr char kInvalidHomepageOverrideURL[] =
"Invalid value for overriding homepage url: '[*]'.";
inline constexpr char kInvalidHomepageURL[] =
"Invalid value for homepage url: '[*]'.";
inline constexpr char kInvalidHostPermission[] = "Invalid value for '*[*]'.";
inline constexpr char kInvalidHostPermissions[] = "Invalid value for '*'.";
inline constexpr char kInvalidIconKey[] = "Invalid key in icons: \"*\".";
inline constexpr char kInvalidIconPath[] = "Invalid value for 'icons[\"*\"]'.";
inline constexpr char kInvalidIconMimeType[] =
"Invalid mime type for 'icons[\"*\"]'.";
inline constexpr char16_t kInvalidIcons[] = u"Invalid value for 'icons'.";
inline constexpr char16_t kInvalidImportAndExport[] =
u"Simultaneous 'import' and 'export' are not allowed.";
inline constexpr char kInvalidImportId[] = "Invalid value for 'import[*].id'.";
inline constexpr char kInvalidImportVersion[] =
"Invalid value for 'import[*].minimum_version'.";
inline constexpr char kInvalidImportRepeatedImport[] =
"There are multiple occurences of the same extension ID in 'import'. Only "
"one version will be installed.";
inline constexpr char kInvalidInputComponents[] =
"Invalid value for 'input_components'";
inline constexpr char16_t kInvalidInputComponents16[] =
u"Invalid value for 'input_components'";
inline constexpr char kInvalidInputComponentLayoutName[] =
"Invalid value for 'input_components[*].layouts[*]";
inline constexpr char kInvalidInputComponentName[] =
"Invalid value for 'input_components[*].name";
inline constexpr char kInvalidInputView[] = "Invalid value for 'input_view'.";
inline constexpr char16_t kInvalidIsolation[] =
u"Invalid value for 'app.isolation'.";
inline constexpr char kInvalidIsolationValue[] =
"Invalid value for 'app.isolation[*]'.";
inline constexpr char16_t kInvalidKey[] = u"Value 'key' is missing or invalid.";
inline constexpr char kInvalidKeyBinding[] =
"Invalid value for 'commands[*].*': *.";
inline constexpr char kInvalidKeyBindingDescription[] =
"Invalid value for 'commands[*].description'.";
inline constexpr char kInvalidKeyBindingDictionary[] =
"Contents of 'commands[*]' invalid.";
inline constexpr char kInvalidKeyBindingMediaKeyWithModifier[] =
"Media key cannot have any modifier for 'commands[*].*': *.";
inline constexpr char kInvalidKeyBindingMissingPlatform[] =
"Could not find key specification for 'command[*].*': Either specify a key "
"for '*', or specify a default key.";
inline constexpr char kInvalidKeyBindingTooMany[] =
"Too many shortcuts specified for 'commands': The maximum is *.";
inline constexpr char kInvalidKeyBindingUnknownPlatform[] =
"Unknown platform for 'command[*]': *. Valid values are: 'windows', 'mac'"
" 'chromeos', 'linux' and 'default'.";
inline constexpr char16_t kInvalidKioskAlwaysUpdate[] =
u"Invalid value for 'kiosk.always_update'.";
inline constexpr char16_t kInvalidKioskEnabled[] =
u"Invalid value for 'kiosk_enabled'.";
inline constexpr char16_t kInvalidKioskOnly[] =
u"Invalid value for 'kiosk_only'.";
inline constexpr char16_t kInvalidKioskOnlyButNotEnabled[] =
u"The 'kiosk_only' key is set, but 'kiosk_enabled' is not set.";
inline constexpr char16_t kInvalidKioskRequiredPlatformVersion[] =
u"Invalid value for 'kiosk.required_platform_version'";
inline constexpr char16_t kInvalidKioskSecondaryApps[] =
u"Invalid value for 'kiosk_secondary_apps'";
inline constexpr char16_t kInvalidKioskSecondaryAppsBadAppEntry[] =
u"Invalid app item for 'kiosk_secondary_apps'";
inline constexpr char kInvalidKioskSecondaryAppsDuplicateApp[] =
"Duplicate app id in 'kiosk_secondary_apps': '*'.";
inline constexpr char kInvalidKioskSecondaryAppsPropertyUnavailable[] =
"Property '*' not allowed for 'kiosk_secondary_apps' item '*'.";
inline constexpr char16_t kInvalidLaunchContainer[] =
u"Invalid value for 'app.launch.container'.";
inline constexpr char kInvalidLaunchValue[] = "Invalid value for '*'.";
inline constexpr char kInvalidLaunchValueContainer[] =
"Invalid container type for '*'.";
inline constexpr char kInvalidLinkedAppIcon[] =
"Invalid linked app icon. Must be a dictionary";
inline constexpr char kInvalidLinkedAppIconSize[] =
"Invalid 'size' for linked app icon. Must be an integer";
inline constexpr char kInvalidLinkedAppIconURL[] =
"Invalid 'url' for linked app icon. Must be a string that is a valid URL";
inline constexpr char kInvalidLinkedAppIcons[] =
"Invalid 'app.linked_icons'. Must be an array";
inline constexpr char kInvalidManifest[] = "Manifest file is invalid";
inline constexpr char kInvalidManifestKey[] = "Invalid value for '*'.";
inline constexpr char kInvalidManifestVersionMissingKey[] =
"Missing 'manifest_version' key. Its value must be an integer *. "
"See developer.chrome.com/*/manifestVersion for details.";
inline constexpr char kInvalidManifestVersionUnsupported[] =
"Invalid value for 'manifest_version'. Must be an integer *. "
"See developer.chrome.com/*/manifestVersion for details.";
inline constexpr char kInvalidMatch[] =
"Invalid value for 'content_scripts[*].matches[*]': *";
inline constexpr char kInvalidMatchCount[] =
"Invalid value for 'content_scripts[*].matches'. There must be at least "
"one match specified.";
inline constexpr char kInvalidMatches[] =
"Required value 'content_scripts[*].matches' is missing or invalid.";
inline constexpr char kInvalidUserScriptMimeType[] =
"Invalid script mime type: '%s'";
inline constexpr char16_t kInvalidMIMETypes[] =
u"Invalid value for 'mime_types'";
inline constexpr char16_t kInvalidMimeTypesHandler[] =
u"Invalid value for 'mime_types'.";
inline constexpr char16_t kInvalidMinimumChromeVersion[] =
u"Invalid value for 'minimum_chrome_version'.";
inline constexpr char16_t kInvalidNaClModules[] =
u"Invalid value for 'nacl_modules'.";
inline constexpr char kInvalidNaClModulesMIMEType[] =
"Invalid value for 'nacl_modules[*].mime_type'.";
inline constexpr char kInvalidNaClModulesPath[] =
"Invalid value for 'nacl_modules[*].path'.";
inline constexpr char kInvalidName[] =
"Required value 'name' is missing or invalid.";
inline constexpr char16_t kInvalidName16[] =
u"Required value 'name' is missing or invalid.";
inline constexpr char16_t kInvalidNativelyConnectable[] =
u"Invalid natively_connectable. Must be a list.";
inline constexpr char kInvalidNativelyConnectableValue[] =
"Invalid natively_connectable value. Must be a non-empty string.";
inline constexpr char16_t kInvalidNativelyConnectableValue16[] =
u"Invalid natively_connectable value. Must be a non-empty string.";
inline constexpr char16_t kInvalidOAuth2ClientId[] =
u"Invalid value for 'oauth2.client_id'.";
inline constexpr char16_t kInvalidOfflineEnabled[] =
u"Invalid value for 'offline_enabled'.";
inline constexpr char kInvalidOptionsPage[] = "Invalid value for '*'.";
inline constexpr char16_t kInvalidOptionsPageExpectUrlInPackage[] =
u"Invalid value for 'options_page'. Value must be a relative path.";
inline constexpr char16_t kInvalidOptionsPageInHostedApp[] =
u"Invalid value for 'options_page'. Hosted apps must specify an "
"absolute URL.";
inline constexpr char kInvalidOptionsUIChromeStyle[] =
"Invalid value for 'options_ui.chrome_style'.";
inline constexpr char kInvalidOptionsUIOpenInTab[] =
"Invalid value for 'options_ui.open_in_tab'.";
inline constexpr char kInvalidPageAction[] = "Invalid value for 'page_action'.";
inline constexpr char kInvalidPermission[] =
"Invalid value for 'permissions[*]'.";
inline constexpr char kInvalidPermissionScheme[] = "Invalid scheme for '*[*]'.";
inline constexpr char kInvalidPermissionWithDetail[] =
"Invalid value for 'permissions[*]': *.";
inline constexpr char16_t kInvalidPermissions[] =
u"Invalid value for 'permissions'.";
inline constexpr char16_t kInvalidReplacementWebApp[] =
u"Invalid value for 'replacement_web_app'.";
inline constexpr char kInvalidRulesetID[] =
"'*.*': Invalid 'id' specified for Ruleset at index *. The ID must be "
"non-empty, unique and must not start with '_'.";
inline constexpr char16_t kInvalidSandboxedPagesList[] =
u"Invalid value for 'sandbox.pages'.";
inline constexpr char kInvalidSandboxedPage[] =
"Invalid value for 'sandbox.pages[*]'.";
inline constexpr char kInvalidSearchEngineMissingKeys[] =
"Missing or invalid value for "
"'chrome_settings_overrides.search_provider.*.";
inline constexpr char kInvalidSearchEngineURL[] =
"Invalid URL [*] for 'chrome_settings_overrides.search_provider'.";
inline constexpr char16_t kInvalidShortName[] =
u"Invalid value for 'short_name'.";
inline constexpr char kInvalidStartupOverrideURL[] =
"Invalid value for overriding startup URL: '[*]'.";
inline constexpr char16_t kInvalidTheme[] = u"Invalid value for 'theme'.";
inline constexpr char16_t kInvalidThemeColors[] =
u"Invalid value for theme colors - colors must be integers";
inline constexpr char16_t kInvalidThemeImages[] =
u"Invalid value for theme images - images must be strings.";
inline constexpr char kInvalidThemeImageMimeType[] =
"Invalid mime type for theme image '*'.";
inline constexpr char kThemeImageMissingFileExtension[] =
"A file name extension is missing for theme image '*'. The image is "
"accepted for compatibility reasons, but such images might become "
"unsupported in the future.";
inline constexpr char kInvalidThemeImagesMissing[] =
"An image specified in the theme is missing.";
inline constexpr char16_t kInvalidThemeTints[] =
u"Invalid value for theme images - tints must be decimal numbers.";
inline constexpr char kInvalidTrialTokensNonEmptyList[] =
"Invalid value for 'trial_tokens'. Must be a non-empty list.";
inline constexpr char kInvalidTrialTokensValue[] =
"Invalid element in 'trial_tokens'. Must be a non-empty string.";
inline constexpr char kInvalidTrialTokensValueDuplicate[] =
"Duplicate element in 'trial_tokens': '%s'.";
inline constexpr char kInvalidTrialTokensValueTooLong[] =
"Invalid element in 'trial_tokens'. Token must not be longer than %zu.";
inline constexpr char kInvalidTrialTokensTooManyTokens[] =
"Invalid value for 'trial_tokens': too many tokens. Only the first %zu "
"will be processed.";
inline constexpr char16_t kInvalidTts[] = u"Invalid value for 'tts_engine'.";
inline constexpr char16_t kInvalidTtsSampleRateFormat[] =
u"Invalid format for tts_engine.sample_rate: expected integer.";
inline constexpr char kInvalidTtsSampleRateRange[] =
"Invalid tts_engine.sample_rate: out of range. Expected sample_rate >= %d "
"and sample_rate <= %d.";
inline constexpr char16_t kInvalidTtsBufferSizeFormat[] =
u"Invalid format for tts_engine.buffer_size: expected integer.";
inline constexpr char kInvalidTtsBufferSizeRange[] =
"Invalid tts_engine.buffer_size: out of range. Expected buffer_size >= %d "
"and buffer_size <= %d.";
inline constexpr char16_t kInvalidTtsRequiresSampleRateAndBufferSize[] =
u"Invalid tts_engine: requires both sample_rate and buffer_size if either "
"is specified.";
inline constexpr char16_t kInvalidTtsVoices[] =
u"Invalid value for 'tts_engine.voices'.";
inline constexpr char16_t kInvalidTtsVoicesEventTypes[] =
u"Invalid value for 'tts_engine.voices[*].event_types'.";
inline constexpr char16_t kInvalidTtsVoicesLang[] =
u"Invalid value for 'tts_engine.voices[*].lang'.";
inline constexpr char16_t kInvalidTtsVoicesRemote[] =
u"Invalid value for 'tts_engine.voices[*].remote'.";
inline constexpr char16_t kInvalidTtsVoicesVoiceName[] =
u"Invalid value for 'tts_engine.voices[*].voice_name'.";
inline constexpr char kInvalidURLHandlerPattern[] =
"Invalid value for 'url_handlers[*].matches'.";
inline constexpr char kInvalidURLHandlerPatternElement[] =
"Invalid value for 'url_handlers[*]'.";
inline constexpr char16_t kInvalidURLHandlerPatternElement16[] =
u"Invalid value for 'url_handlers[*]'.";
inline constexpr char16_t kInvalidURLHandlerTitle[] =
u"Invalid value for 'url_handlers[*].title'.";
inline constexpr char16_t kInvalidURLHandlers[] =
u"Invalid value for 'url_handlers'.";
inline constexpr char kInvalidURLPatternError[] = "Invalid url pattern '*'";
inline constexpr char kInvalidUpdateURL[] =
"Invalid value for update url: '[*]'.";
inline constexpr char16_t kInvalidVersion[] =
u"Required value 'version' is missing or invalid. It must be between 1-4 "
"dot-separated integers each between 0 and 65536.";
inline constexpr char16_t kInvalidVersionName[] =
u"Invalid value for 'version_name'.";
inline constexpr char kInvalidWebAccessibleResource[] =
"Invalid value for 'web_accessible_resources[*]'. *";
inline constexpr char16_t kInvalidWebview[] = u"Invalid value for 'webview'.";
inline constexpr char16_t kInvalidWebviewAccessibleResourcesList[] =
u"Invalid value for'webview.accessible_resources'.";
inline constexpr char kInvalidWebviewAccessibleResource[] =
"Invalid value for 'webview.accessible_resources[*]'.";
inline constexpr char kInvalidWebviewPartition[] =
"Invalid value for 'webview.partitions[*]'.";
inline constexpr char kInvalidWebviewPartitionName[] =
"Invalid value for 'webview.partitions[*].name'.";
inline constexpr char16_t kInvalidWebviewPartitionsList[] =
u"Invalid value for 'webview.partitions'.";
inline constexpr char kInvalidWebURL[] = "Invalid value for 'app.urls[*]': *";
inline constexpr char kInvalidWebURLs[] = "Invalid value for 'app.urls'.";
inline constexpr char16_t kLaunchPathAndExtentAreExclusive[] =
u"The 'app.launch.local_path' and 'app.urls' keys cannot both be set.";
inline constexpr char16_t kLaunchPathAndURLAreExclusive[] =
u"The 'app.launch.local_path' and 'app.launch.web_url' keys cannot "
"both be set.";
inline constexpr char16_t kLaunchURLRequired[] =
u"Either 'app.launch.local_path' or 'app.launch.web_url' is required.";
inline constexpr char kLocalesInvalidLocale[] = "Invalid locale file '*': *";
inline constexpr char16_t kLocalesMessagesFileMissing[] =
u"Messages file is missing for locale.";
inline constexpr char kLocalesNoDefaultMessages[] =
"Default locale is defined but default data couldn't be loaded.";
inline constexpr char kLocalesNoValidLocaleNamesListed[] =
"No valid locale name could be found in _locales directory.";
inline constexpr char kLocalesTreeMissing[] =
"Default locale was specified, but _locales subtree is missing.";
inline constexpr char kManifestParseError[] = "Manifest is not valid JSON.";
inline constexpr char kManifestUnreadable[] =
"Manifest file is missing or unreadable";
inline constexpr char kManifestV2IsDeprecatedWarning[] =
"Manifest version 2 is deprecated, and support will be removed in 2025. "
"See "
"https://developer.chrome.com/docs/extensions/develop/migrate/"
"mv2-deprecation-timeline"
" for details.";
inline constexpr char kManifestVersionTooHighWarning[] =
"The maximum currently-supported manifest version is *, but this is *. "
"Certain features may not work as expected.";
inline constexpr char16_t kMatchOriginAsFallbackCantHavePaths[] =
u"The path component for scripts with 'match_origin_as_fallback' must be "
"'*'.";
inline constexpr char kMissingFile[] =
"At least one js or css file is required for 'content_scripts[*]'.";
inline constexpr char16_t kMultipleOverrides[] =
u"An extension cannot override more than one page.";
inline constexpr char16_t kNPAPIPluginsNotSupported[] =
u"NPAPI plugins are not supported.";
inline constexpr char kNoWildCardsInPaths[] =
"Wildcards are not allowed in extent URL pattern paths.";
inline constexpr char kNonexistentDefaultPopup[] =
"The default_popup file in the manifest doesn't exist. Confirm it exists "
"and then reload the extension.";
inline constexpr char16_t kOneUISurfaceOnly[] =
u"Only one of 'browser_action', 'page_action', and 'app' can be specified.";
inline constexpr char kPageCaptureNeeded[] =
"'pageCapture' permission is required.";
inline constexpr char kPatternMalformed[] = "URL pattern '*' is malformed.";
inline constexpr char kPermissionCannotBeOptional[] =
"Permission '*' cannot be listed as optional. This permission will be "
"omitted.";
inline constexpr char kPermissionMarkedOptionalAndRequired[] =
"Optional permission '*' is redundant with the required permissions;"
"this permission will be omitted.";
inline constexpr char kPermissionNotAllowed[] =
"Access to permission '*' denied.";
inline constexpr char kPermissionUnknown[] = "Permission '*' is unknown.";
inline constexpr char kPermissionUnknownOrMalformed[] =
"Permission '*' is unknown or URL pattern is malformed.";
inline constexpr char kPluginsRequirementDeprecated[] =
"The \"plugins\" requirement is deprecated.";
inline constexpr char kReservedMessageFound[] =
"Reserved key * found in message catalog.";
inline constexpr char kRulesFileIsInvalid[] =
"Invalid value for key '*.*': The provided path '*' is invalid.";
inline constexpr char kRulesetCountExceeded[] =
"Invalid value for key '*.*': The number of rulesets must be less than or "
"equal to *.";
inline constexpr char16_t kSandboxPagesCSPKeyNotAllowed[] =
u"The Content Security Policy for sandboxed pages should be specified in "
"'content_security_policy.sandbox'.";
inline constexpr char kSidePanelManifestDefaultPathError[] =
"Side panel file path must exist.";
inline constexpr char16_t
kTransientBackgroundConflictsWithPersistentBackground[] =
u"The 'transientBackground' permission cannot be used with a "
"persistent background page.";
inline constexpr char kUnrecognizedManifestKey[] =
"Unrecognized manifest key '*'.";
inline constexpr char16_t kWebRequestConflictsWithLazyBackground[] =
u"The 'webRequest' API cannot be used with event pages.";
#if BUILDFLAG(IS_CHROMEOS)
inline constexpr char kDuplicateActionHandlerFound[] =
"'action_handlers' list contains duplicate entries for the action: \"*\".";
inline constexpr char kIllegalPlugins[] =
"Extensions cannot install plugins on Chrome OS.";
inline constexpr char16_t kInvalidActionHandlerDictionary[] =
u"Invalid action handler dictionary in 'action_handlers': 'action' key "
"missing.";
inline constexpr char kInvalidActionHandlersActionType[] =
"Invalid entry in 'action_handlers': \"*\".";
inline constexpr char16_t kInvalidActionHandlersType[] =
u"Invalid value for 'action_handlers'. Value must be a list of strings or "
"a dictionary with 'action' key.";
inline constexpr char16_t kInvalidFileSystemProviderMissingCapabilities[] =
u"The 'fileSystemProvider' permission requires the "
"'file_system_provider_capabilities' section to be specified in the "
"manifest.";
inline constexpr char kInvalidFileSystemProviderMissingPermission[] =
"The 'file_system_provider_capabilities' section requires the "
"'fileSystemProvider' permission to be specified in the manifest.";
#endif // BUILDFLAG(IS_CHROMEOS)
} // namespace manifest_errors
} // namespace extensions
#endif // EXTENSIONS_COMMON_MANIFEST_CONSTANTS_H_
OSZAR »