// 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. #ifndef CHROME_COMMON_EXTENSIONS_EXTENSION_CONSTANTS_H_ #define CHROME_COMMON_EXTENSIONS_EXTENSION_CONSTANTS_H_ #pragma once #include #include "base/basictypes.h" #include "googleurl/src/gurl.h" // Keys used in JSON representation of extensions. namespace extension_manifest_keys { extern const char* kAllFrames; extern const char* kAltKey; extern const char* kApp; extern const char* kBackground; extern const char* kBrowserAction; extern const char* kBrowseURLs; extern const char* kChromeURLOverrides; extern const char* kContentScripts; extern const char* kContentSecurityPolicy; extern const char* kConvertedFromUserScript; extern const char* kCss; extern const char* kCtrlKey; extern const char* kCurrentLocale; extern const char* kDefaultLocale; extern const char* kDescription; extern const char* kDevToolsPage; extern const char* kExcludeGlobs; extern const char* kExcludeMatches; extern const char* kFileFilters; extern const char* kFileBrowserHandlers; extern const char* kHomepageURL; extern const char* kIcons; extern const char* kId; extern const char* kIncognito; extern const char* kIncludeGlobs; extern const char* kInputComponents; extern const char* kIntents; extern const char* kIntentType; extern const char* kIntentPath; extern const char* kIntentTitle; extern const char* kIntentDisposition; extern const char* kIsolation; extern const char* kJs; extern const char* kKeycode; extern const char* kLanguage; extern const char* kLaunch; extern const char* kLaunchContainer; extern const char* kLaunchHeight; extern const char* kLaunchLocalPath; extern const char* kLaunchWebURL; extern const char* kLaunchWidth; extern const char* kLayouts; extern const char* kMatches; extern const char* kMinimumChromeVersion; extern const char* kNaClModules; extern const char* kNaClModulesMIMEType; extern const char* kNaClModulesPath; extern const char* kName; extern const char* kOfflineEnabled; extern const char* kOmnibox; extern const char* kOmniboxKeyword; extern const char* kOptionalPermissions; extern const char* kOptionsPage; extern const char* kPageAction; extern const char* kPageActionDefaultIcon; extern const char* kPageActionDefaultPopup; extern const char* kPageActionDefaultTitle; extern const char* kPageActionIcons; extern const char* kPageActionId; extern const char* kPageActionPopup; extern const char* kPageActionPopupHeight; extern const char* kPageActionPopupPath; extern const char* kPageActions; extern const char* kPermissions; extern const char* kPlugins; extern const char* kPluginsPath; extern const char* kPluginsPublic; extern const char* kPublicKey; extern const char* kRequirements; extern const char* kRunAt; extern const char* kShiftKey; extern const char* kShortcutKey; extern const char* kSidebar; extern const char* kSidebarDefaultIcon; extern const char* kSidebarDefaultPage; extern const char* kSidebarDefaultTitle; extern const char* kSignature; extern const char* kTheme; extern const char* kThemeColors; extern const char* kThemeDisplayProperties; extern const char* kThemeImages; extern const char* kThemeTints; extern const char* kToolstripPath; extern const char* kToolstrips; extern const char* kTtsEngine; extern const char* kTtsGenderFemale; extern const char* kTtsGenderMale; extern const char* kTtsVoices; extern const char* kTtsVoicesEventTypeEnd; extern const char* kTtsVoicesEventTypeError; extern const char* kTtsVoicesEventTypeMarker; extern const char* kTtsVoicesEventTypeSentence; extern const char* kTtsVoicesEventTypeStart; extern const char* kTtsVoicesEventTypeWord; extern const char* kTtsVoicesEventTypes; extern const char* kTtsVoicesGender; extern const char* kTtsVoicesLang; extern const char* kTtsVoicesVoiceName; extern const char* kType; extern const char* kUpdateURL; extern const char* kVersion; extern const char* kWebURLs; } // namespace extension_manifest_keys // Some values expected in manifests. namespace extension_manifest_values { extern const char* kIncognitoSplit; extern const char* kIncognitoSpanning; extern const char* kIntentDispositionWindow; extern const char* kIntentDispositionInline; extern const char* kIsolatedStorage; extern const char* kLaunchContainerPanel; extern const char* kLaunchContainerTab; extern const char* kLaunchContainerWindow; extern const char* kPageActionTypePermanent; extern const char* kPageActionTypeTab; extern const char* kRunAtDocumentEnd; extern const char* kRunAtDocumentIdle; extern const char* kRunAtDocumentStart; } // namespace extension_manifest_values // Error messages returned from Extension::InitFromValue(). namespace extension_manifest_errors { extern const char* kAppsNotEnabled; extern const char* kBackgroundPermissionNeeded; extern const char* kCannotAccessPage; extern const char* kCannotChangeExtensionID; extern const char* kCannotClaimAllHostsInExtent; extern const char* kCannotClaimAllURLsInExtent; extern const char* kCannotScriptGallery; extern const char* kCannotUninstallManagedExtension; extern const char* kChromeVersionTooLow; extern const char* kDevToolsExperimental; extern const char* kDisabledByPolicy; extern const char* kExperimentalFlagRequired; extern const char* kExpectString; extern const char* kHostedAppsCannotIncludeExtensionFeatures; extern const char* kInvalidAllFrames; extern const char* kInvalidBackground; extern const char* kInvalidBackgroundInHostedApp; extern const char* kInvalidBrowserAction; extern const char* kInvalidBrowseURL; extern const char* kInvalidBrowseURLs; extern const char* kInvalidChromeURLOverrides; extern const char* kInvalidContentScript; extern const char* kInvalidContentScriptsList; extern const char* kInvalidContentSecurityPolicy; extern const char* kInvalidCss; extern const char* kInvalidCssList; extern const char* kInvalidDefaultLocale; extern const char* kInvalidDescription; extern const char* kInvalidDevToolsPage; extern const char* kInvalidExcludeMatch; extern const char* kInvalidExcludeMatches; extern const char* kInvalidFileBrowserHandler; extern const char* kInvalidFileFiltersList; extern const char* kInvalidFileFilterValue; extern const char* kInvalidGlob; extern const char* kInvalidGlobList; extern const char* kInvalidHomepageURL; extern const char* kInvalidIconPath; extern const char* kInvalidIcons; extern const char* kInvalidIncognitoBehavior; extern const char* kInvalidInputComponents; extern const char* kInvalidInputComponentDescription; extern const char* kInvalidInputComponentLayoutName; extern const char* kInvalidInputComponentLayouts; extern const char* kInvalidInputComponentName; extern const char* kInvalidInputComponentShortcutKey; extern const char* kInvalidInputComponentShortcutKeycode; extern const char* kInvalidInputComponentType; extern const char* kInvalidIntent; extern const char* kInvalidIntentDisposition; extern const char* kInvalidIntentPath; extern const char* kInvalidIntents; extern const char* kInvalidIntentType; extern const char* kInvalidIntentTitle; extern const char* kInvalidIsolation; extern const char* kInvalidIsolationValue; extern const char* kInvalidJs; extern const char* kInvalidJsList; extern const char* kInvalidKey; extern const char* kInvalidLaunchContainer; extern const char* kInvalidLaunchHeight; extern const char* kInvalidLaunchHeightContainer; extern const char* kInvalidLaunchLocalPath; extern const char* kInvalidLaunchWebURL; extern const char* kInvalidLaunchWidth; extern const char* kInvalidLaunchWidthContainer; extern const char* kInvalidManifest; extern const char* kInvalidMatch; extern const char* kInvalidMatchCount; extern const char* kInvalidMatches; extern const char* kInvalidMinimumChromeVersion; extern const char* kInvalidNaClModules; extern const char* kInvalidNaClModulesMIMEType; extern const char* kInvalidNaClModulesPath; extern const char* kInvalidName; extern const char* kInvalidOfflineEnabled; extern const char* kInvalidOmniboxKeyword; extern const char* kInvalidOptionsPage; extern const char* kInvalidOptionsPageExpectUrlInPackage; extern const char* kInvalidOptionsPageInHostedApp; extern const char* kInvalidPageAction; extern const char* kInvalidPageActionDefaultTitle; extern const char* kInvalidPageActionIconPath; extern const char* kInvalidPageActionId; extern const char* kInvalidPageActionName; extern const char* kInvalidPageActionOldAndNewKeys; extern const char* kInvalidPageActionPopup; extern const char* kInvalidPageActionPopupHeight; extern const char* kInvalidPageActionPopupPath; extern const char* kInvalidPageActionsList; extern const char* kInvalidPageActionsListSize; extern const char* kInvalidPageActionTypeValue; extern const char* kInvalidPermission; extern const char* kInvalidPermissions; extern const char* kInvalidPermissionScheme; extern const char* kInvalidPlugins; extern const char* kInvalidPluginsPath; extern const char* kInvalidPluginsPublic; extern const char* kInvalidRequirement; extern const char* kInvalidRequirements; extern const char* kInvalidRunAt; extern const char* kInvalidSidebar; extern const char* kInvalidSidebarDefaultIconPath; extern const char* kInvalidSidebarDefaultPage; extern const char* kInvalidSidebarDefaultTitle; extern const char* kInvalidSignature; extern const char* kInvalidTheme; extern const char* kInvalidThemeColors; extern const char* kInvalidThemeImages; extern const char* kInvalidThemeImagesMissing; extern const char* kInvalidThemeTints; extern const char* kInvalidToolstrip; extern const char* kInvalidToolstrips; extern const char* kInvalidTts; extern const char* kInvalidTtsVoices; extern const char* kInvalidTtsVoicesEventTypes; extern const char* kInvalidTtsVoicesGender; extern const char* kInvalidTtsVoicesLang; extern const char* kInvalidTtsVoicesVoiceName; extern const char* kInvalidUpdateURL; extern const char* kInvalidURLPatternError; extern const char* kInvalidVersion; extern const char* kInvalidWebURL; extern const char* kInvalidWebURLs; extern const char* kInvalidZipHash; extern const char* kLaunchPathAndExtentAreExclusive; extern const char* kLaunchPathAndURLAreExclusive; extern const char* kLaunchURLRequired; extern const char* kLocalesMessagesFileMissing; extern const char* kLocalesNoDefaultLocaleSpecified; extern const char* kLocalesNoDefaultMessages; extern const char* kLocalesNoValidLocaleNamesListed; extern const char* kLocalesTreeMissing; extern const char* kManifestParseError; extern const char* kManifestUnreadable; extern const char* kMissingFile; extern const char* kMultipleOverrides; extern const char* kNoWildCardsInPaths; extern const char* kOneUISurfaceOnly; extern const char* kReservedMessageFound; extern const char* kSidebarExperimental; extern const char* kThemesCannotContainExtensions; extern const char* kWebContentMustBeEnabled; #if defined(OS_CHROMEOS) extern const char* kIllegalPlugins; #endif } // namespace extension_manifest_errors namespace extension_urls { // Returns the URL prefix for the extension/apps gallery. Can be set via the // --apps-gallery-url switch. The URL returned will not contain a trailing // slash. Do not use this as a prefix/extent for the store. Instead see // ExtensionService::GetWebStoreApp or // ExtensionService::IsDownloadFromGallery std::string GetWebstoreLaunchURL(); // Returns the URL prefix for an item in the extension/app gallery. This URL // will contain a trailing slash and should be concatenated with an item ID // to get the item detail URL. std::string GetWebstoreItemDetailURLPrefix(); // Returns the URL used to get webstore data (ratings, manifest, icon URL, // etc.) about an extension from the webstore as JSON. GURL GetWebstoreItemJsonDataURL(const std::string& extension_id); // Return the update URL used by gallery/webstore extensions/apps. The // |secure| parameter will be ignored if the update URL is overriden with // --apps-gallery-update-url. GURL GetWebstoreUpdateUrl(bool secure); // Return the URL for an extension/app's .crx file that is hosted by the // webstore. GURL GetWebstoreInstallUrl(const std::string& extension_id, const std::string& locale); // The greatest common prefixes of the main extensions gallery's browse and // download URLs. extern const char* kGalleryBrowsePrefix; // Same thing for the "minigallery". The minigallery is the temporary static // themes gallery that we put up when we launched themes. extern const char* kMiniGalleryBrowsePrefix; extern const char* kMiniGalleryDownloadPrefix; } // namespace extension_urls namespace extension_filenames { // The name of a temporary directory to install an extension into for // validation before finalizing install. extern const char* kTempExtensionName; // The file to write our decoded images to, relative to the extension_path. extern const char* kDecodedImagesFilename; // The file to write our decoded message catalogs to, relative to the // extension_path. extern const char* kDecodedMessageCatalogsFilename; } namespace extension_misc { const int kUnknownWindowId = -1; // The extension id of the bookmark manager. extern const char* kBookmarkManagerId; // The extension id of the Web Store component application. extern const char* kWebStoreAppId; // The extension id of the Cloud Print component application. extern const char* kCloudPrintAppId; // Note: this structure is an ASN.1 which encodes the algorithm used // with its parameters. This is defined in PKCS #1 v2.1 (RFC 3447). // It is encoding: { OID sha1WithRSAEncryption PARAMETERS NULL } const uint8 kSignatureAlgorithm[15] = { 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00 }; // Don't remove items or change the order of this enum. It's used in // histograms and preferences. enum LaunchContainer { LAUNCH_WINDOW, LAUNCH_PANEL, LAUNCH_TAB }; // The name of the apps promo histogram. extern const char* kAppsPromoHistogram; // The buckets used in the apps promo histogram. enum AppsPromoBuckets { PROMO_LAUNCH_APP, PROMO_LAUNCH_WEB_STORE, PROMO_CLOSE, PROMO_EXPIRE, PROMO_SEEN, PROMO_BUCKET_BOUNDARY }; // The name of the app launch histogram. extern const char* kAppLaunchHistogram; // The buckets used for app launches. enum AppLaunchBucket { // Launch from NTP apps section while maximized. APP_LAUNCH_NTP_APPS_MAXIMIZED, // Launch from NTP apps section while collapsed. APP_LAUNCH_NTP_APPS_COLLAPSED, // Launch from NTP apps section while in menu mode. APP_LAUNCH_NTP_APPS_MENU, // Launch from NTP most visited section in any mode. APP_LAUNCH_NTP_MOST_VISITED, // Launch from NTP recently closed section in any mode. APP_LAUNCH_NTP_RECENTLY_CLOSED, // App link clicked from bookmark bar. APP_LAUNCH_BOOKMARK_BAR, // Nvigated to an app from within a web page (like by clicking a link). APP_LAUNCH_CONTENT_NAVIGATION, // Launch from session restore. APP_LAUNCH_SESSION_RESTORE, // Autolaunched at startup, like for pinned tabs. APP_LAUNCH_AUTOLAUNCH, // Launched from omnibox app links. APP_LAUNCH_OMNIBOX_APP, // App URL typed directly into the omnibox (w/ instant turned off). APP_LAUNCH_OMNIBOX_LOCATION, // Navigate to an app URL via instant. APP_LAUNCH_OMNIBOX_INSTANT, // Launch via chrome.management.launchApp. APP_LAUNCH_EXTENSION_API, // Launch using the --app or --app-id cmd line options. APP_LAUNCH_CMD_LINE_APP, // App launch by passing the URL on the cmd line (not using app switches). APP_LAUNCH_CMD_LINE_URL, // User clicked web store launcher on NTP. APP_LAUNCH_NTP_WEBSTORE, // App launched after the user re-enabled it on the NTP. APP_LAUNCH_NTP_APP_RE_ENABLE, // URL launched using the --app cmd line option, but the URL does not // correspond to an installed app. These launches are left over from a // feature that let you make desktop shortcuts from the file menu. APP_LAUNCH_CMD_LINE_APP_LEGACY, APP_LAUNCH_BUCKET_BOUNDARY, APP_LAUNCH_BUCKET_INVALID }; #if defined(OS_CHROMEOS) // The directory path on a ChromeOS device where accessibility extensions are // stored. extern const char* kAccessExtensionPath; extern const char* kChromeVoxDirectoryName; #endif // What causes an extension to be installed? Used in histograms, so don't // change existing values. enum CrxInstallCause { INSTALL_CAUSE_UNSET = 0, INSTALL_CAUSE_USER_DOWNLOAD, INSTALL_CAUSE_UPDATE, INSTALL_CAUSE_EXTERNAL_FILE, INSTALL_CAUSE_AUTOMATION, NUM_INSTALL_CAUSES }; enum UnloadedExtensionReason { UNLOAD_REASON_DISABLE, // Extension is being disabled. UNLOAD_REASON_UPDATE, // Extension is being updated to a newer version. UNLOAD_REASON_UNINSTALL, // Extension is being uninstalled. }; // User actions on the sync promo (aka "Sign in to Chrome"). enum SyncPromoBuckets { SYNC_PROMO_VIEWED, SYNC_PROMO_LEARN_MORE_CLICKED, SYNC_PROMO_ACCOUNT_HELP_CLICKED, SYNC_PROMO_CREATE_ACCOUNT_CLICKED, SYNC_PROMO_SKIP_CLICKED, SYNC_PROMO_SIGN_IN_ATTEMPTED, SYNC_PROMO_SIGNED_IN_SUCCESSFULLY, SYNC_PROMO_ADVANCED_CLICKED, SYNC_PROMO_ENCRYPTION_HELP_CLICKED, SYNC_PROMO_CANCELLED_AFTER_SIGN_IN, SYNC_PROMO_CONFIRMED_AFTER_SIGN_IN, SYNC_PROMO_CLOSED_TAB, SYNC_PROMO_CLOSED_WINDOW, SYNC_PROMO_BUCKET_BOUNDARY, SYNC_PROMO_FIRST_VALID_JS_ACTION = SYNC_PROMO_LEARN_MORE_CLICKED, SYNC_PROMO_LAST_VALID_JS_ACTION = SYNC_PROMO_CONFIRMED_AFTER_SIGN_IN, }; } // extension_misc #endif // CHROME_COMMON_EXTENSIONS_EXTENSION_CONSTANTS_H_