// Copyright 2017 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/browser/flag_descriptions.h"

namespace flag_descriptions {

//  Material Design version of chrome://bookmarks

const char kEnableMaterialDesignBookmarksName[] =
    "Enable Material Design bookmarks";

const char kEnableMaterialDesignBookmarksDescription[] =
    "If enabled, the chrome://bookmarks/ URL loads the Material Design "
    "bookmarks page.";

//  Material Design version of chrome://policy

const char kEnableMaterialDesignPolicyPageName[] =
    "Enable Material Design policy page";

const char kEnableMaterialDesignPolicyPageDescription[] =
    "If enabled, the chrome://md-policy URL loads the Material Design "
    "policy page.";

//  Material Design version of chrome://settings

const char kEnableMaterialDesignSettingsName[] =
    "Enable Material Design settings";

const char kEnableMaterialDesignSettingsDescription[] =
    "If enabled, the chrome://settings/ URL loads the Material Design "
    "settings page.";

//  Material Design version of chrome://extensions

const char kEnableMaterialDesignExtensionsName[] =
    "Enable Material Design extensions";

const char kEnableMaterialDesignExtensionsDescription[] =
    "If enabled, the chrome://extensions/ URL loads the Material Design "
    "extensions page.";

//  Material Design version of feedback form

const char kEnableMaterialDesignFeedbackName[] =
    "Enable Material Design feedback";

const char kEnableMaterialDesignFeedbackDescription[] =
    "If enabled, reporting an issue will load the Material Design feedback "
    "UI.";

const char kContextualSuggestionsCarouselName[] =
    "Enable Contextual Suggestions";

const char kContextualSuggestionsCarouselDescription[] =
    "If enabled, shows contextual suggestions in a horizontal carousel in "
    "bottom sheet content.";

//  Report URL to SafeSearch

const char kSafeSearchUrlReportingName[] = "SafeSearch URLs reporting.";

const char kSafeSearchUrlReportingDescription[] =
    "If enabled, inappropriate URLs can be reported back to SafeSearch.";

//  Device scale factor change in content crbug.com/485650.

const char kEnableUseZoomForDsfName[] =
    "Use Blink's zoom for device scale factor.";

const char kEnableUseZoomForDsfDescription[] =
    "If enabled, Blink uses its zooming mechanism to scale content for "
    "device scale factor.";

const char kEnableUseZoomForDsfChoiceDefault[] = "Default";

const char kEnableUseZoomForDsfChoiceEnabled[] = "Enabled";

const char kEnableUseZoomForDsfChoiceDisabled[] = "Disabled";

const char kNostatePrefetch[] = "No-State Prefetch";

const char kNostatePrefetchDescription[] =
    R"*("No-State Prefetch" pre-downloads resources to improve load )*"
    R"*(times. "Prerender" does a full pre-rendering of the page, to )*"
    R"*(improve load times even more. "Simple Load" does nothing and is )*"
    R"*(similar to disabling the feature, but collects more metrics for )*"
    R"*(comparison purposes.)*";

const char kSpeculativePrefetchName[] = "Speculative Prefetch";

const char kSpeculativePrefetchDescription[] =
    R"*("Speculative Prefetch" fetches likely resources early to improve )*"
    R"*(load times, based on a local database (see chrome://predictors). )*"
    R"*("Learning" means that only the database construction is enabled, )*"
    R"*("Prefetching" that learning and prefetching are enabled.)*";

//  Force Tablet Mode

const char kForceTabletModeName[] = "Force Tablet Mode";

const char kForceTabletModeDescription[] =
    R"*(This flag can be used to force a certain mode on to a chromebook, )*"
    R"*(despite its current orientation. "TouchView" means that the )*"
    R"*(chromebook will act as if it were in touch view mode. "Clamshell" )*"
    R"*(means that the chromebook will act as if it were in clamshell )*"
    R"*(mode . "Auto" means that the chromebook will alternate between )*"
    R"*(the two, based on its orientation.)*";

const char kForceTabletModeTouchview[] = "TouchView";

const char kForceTabletModeClamshell[] = "Clamshell";

const char kForceTabletModeAuto[] = "Auto (default)";

//  Print Preview features

const char kPrintPdfAsImageName[] = "Print Pdf as Image";

const char kPrintPdfAsImageDescription[] =
    "If enabled, an option to print PDF files as images will be available "
    "in print preview.";

const char kNaclName[] = "Native Client";

#if defined(OS_ANDROID)

const char kNaclDescription[] = "Enable support for Native Client.";

#endif  // defined(OS_ANDROID)

#if !defined(OS_ANDROID)

const char kNaclDescription[] =
    "Support Native Client for all web applications, even those that were "
    "not installed from the Chrome Web Store.";

#endif  // !defined(OS_ANDROID)

const char kNaclDebugName[] = "Native Client GDB-based debugging";

const char kNaclDebugDescription[] =
    "Enable GDB debug stub. This will stop a Native Client application on "
    "startup and wait for nacl-gdb (from the NaCl SDK) to attach to it.";

#if !defined(OS_ANDROID)

const char kPnaclSubzeroName[] = "Force PNaCl Subzero";

const char kPnaclSubzeroDescription[] =
    "Force the use of PNaCl's fast Subzero translator for all pexe files.";

#endif  // !defined(OS_ANDROID)

const char kNaclDebugMaskName[] =
    "Restrict Native Client GDB-based debugging by pattern";

const char kNaclDebugMaskDescription[] =
    "Restricts Native Client application GDB-based debugging by URL of "
    "manifest file. Native Client GDB-based debugging must be enabled for "
    "this option to work.";

const char kNaclDebugMaskChoiceDebugAll[] = "Debug everything.";

const char kNaclDebugMaskChoiceExcludeUtilsPnacl[] =
    "Debug everything except secure shell and the PNaCl translator.";

const char kNaclDebugMaskChoiceIncludeDebug[] =
    "Debug only if manifest URL ends with debug.nmf.";

const char kEnableHttpFormWarningName[] =
    "Show in-form warnings for sensitive fields when the top-level page is "
    "not HTTPS";

const char kEnableHttpFormWarningDescription[] =
    "Attaches a warning UI to any password or credit card fields detected "
    "when the top-level page is not HTTPS";

const char kMarkHttpAsName[] = "Mark non-secure origins as non-secure";

const char kMarkHttpAsDescription[] = "Change the UI treatment for HTTP pages";

const char kMarkHttpAsDangerous[] = "Always mark HTTP as actively dangerous";

//  Material design of the Incognito NTP.

extern const char kMaterialDesignIncognitoNTPName[] =
    "Material Design Incognito NTP.";

extern const char kMaterialDesignIncognitoNTPDescription[] =
    "If enabled, the Incognito New Tab page uses the new material design "
    "with a better readable text.";

const char kSavePageAsMhtmlName[] = "Save Page as MHTML";

const char kSavePageAsMhtmlDescription[] =
    "Enables saving pages as MHTML: a single text file containing HTML and "
    "all sub-resources.";

//  Flag and values for MHTML Geenrator options lab.

const char kMhtmlGeneratorOptionName[] = "MHTML Generation Option";

const char kMhtmlGeneratorOptionDescription[] =
    "Provides experimental options for MHTML file generator.";

const char kMhtmlSkipNostoreMain[] = "Skips no-store main frame.";

const char kMhtmlSkipNostoreAll[] = "Skips all no-store resources.";

const char kDeviceDiscoveryNotificationsName[] =
    "Device Discovery Notifications";

const char kDeviceDiscoveryNotificationsDescription[] =
    "Device discovery notifications on local network.";

#if defined(OS_WIN)

const char kCloudPrintXpsName[] = "XPS in Google Cloud Print";

const char kCloudPrintXpsDescription[] =
    "XPS enables advanced options for classic printers connected to the "
    "Cloud Print with Chrome. Printers must be re-connected after changing "
    "this flag.";

#endif  // defined(OS_WIN)

const char kLoadMediaRouterComponentExtensionName[] =
    "Load Media Router Component Extension";

const char kLoadMediaRouterComponentExtensionDescription[] =
    "Loads the Media Router component extension at startup.";

const char kPrintPreviewRegisterPromosName[] =
    "Print Preview Registration Promos";

const char kPrintPreviewRegisterPromosDescription[] =
    "Enable registering unregistered cloud printers from print preview.";

const char kScrollPredictionName[] = "Scroll prediction";

const char kTopChromeMd[] = "UI Layout for the browser's top chrome";

const char kTopChromeMdDescription[] =
    R"*(Toggles between normal and touch (formerly "hybrid") layouts.)*";

const char kTopChromeMdMaterial[] = "Normal";

const char kTopChromeMdMaterialHybrid[] = "Touch";

const char kSiteDetails[] = "Site Details";

const char kSiteDetailsDescription[] =
    "Adds UI in MD Settings to view all content settings for a specific "
    "origin.";

const char kSiteSettings[] = "Site settings with All sites and Site details";

const char kSiteSettingsDescription[] =
    "Adds new ways of viewing Site settings.";

const char kSecondaryUiMd[] =
    "Material Design in the rest of the browser's native UI";

const char kSecondaryUiMdDescription[] =
    "Extends the --top-chrome-md setting to secondary UI (bubbles, dialogs, "
    "etc.). On Mac, this enables MacViews, which uses toolkit-views for "
    "native browser dialogs.";

const char kScrollPredictionDescription[] =
    "Predicts the finger's future position during scrolls allowing time to "
    "render the frame before the finger is there.";

const char kAddToShelfName[] = "Add to shelf";

const char kAddToShelfDescription[] =
    "Enable the display of add to shelf banners, which prompt a user to add "
    "a web app to their shelf, or other platform-specific equivalent.";

const char kBypassAppBannerEngagementChecksName[] =
    "Bypass user engagement checks";

const char kBypassAppBannerEngagementChecksDescription[] =
    "Bypasses user engagement checks for displaying app banners, such as "
    "requiring that users have visited the site before and that the banner "
    "hasn't been shown recently. This allows developers to test that other "
    "eligibility requirements for showing app banners, such as having a "
    "manifest, are met.";

#if defined(OS_ANDROID)

const char kAccessibilityTabSwitcherName[] = "Accessibility Tab Switcher";

const char kAccessibilityTabSwitcherDescription[] =
    "Enable the accessibility tab switcher for Android.";

const char kAndroidAutofillAccessibilityName[] = "Autofill Accessibility";

const char kAndroidAutofillAccessibilityDescription[] =
    "Enable accessibility for autofill popup.";

const char kEnablePhysicalWebName[] = "Enable the Physical Web.";

const char kEnablePhysicalWebDescription[] =
    "Enable scanning for URLs from Physical Web objects.";

#endif  // defined(OS_ANDROID)

const char kTouchEventsName[] = "Touch Events API";

const char kTouchEventsDescription[] =
    "Force Touch Events API feature detection to always be enabled or "
    "disabled, or to be enabled when a touchscreen is detected on startup "
    "(Automatic, the default).";

const char kTouchAdjustmentName[] = "Touch adjustment";

const char kTouchAdjustmentDescription[] =
    "Refine the position of a touch gesture in order to compensate for "
    "touches having poor resolution compared to a mouse.";

const char kCompositedLayerBorders[] = "Composited render layer borders";

const char kCompositedLayerBordersDescription[] =
    "Renders a border around composited Render Layers to help debug and "
    "study layer compositing.";

const char kGlCompositedTextureQuadBorders[] =
    "GL composited texture quad borders";

const char kGlCompositedTextureQuadBordersDescription[] =
    "Renders a border around GL composited texture quads to help debug and "
    "study overlay support.";

const char kShowOverdrawFeedback[] = "Show overdraw feedback";

const char kShowOverdrawFeedbackDescription[] =
    "Visualize overdraw by color-coding elements based on if they have "
    "other elements drawn underneath.";

const char kUiPartialSwapName[] = "Partial swap";

const char kUiPartialSwapDescription[] = "Sets partial swap behavior.";

const char kDebugShortcutsName[] = "Debugging keyboard shortcuts";

const char kIgnoreGpuBlacklistName[] = "Override software rendering list";

const char kIgnoreGpuBlacklistDescription[] =
    "Overrides the built-in software rendering list and enables "
    "GPU-acceleration on unsupported system configurations.";

const char kInertVisualViewportName[] = "Inert visual viewport.";

const char kInertVisualViewportDescription[] =
    "Experiment to have all APIs reflect the layout viewport. This will "
    "make window.scroll properties relative to the layout viewport.";

const char kColorCorrectRenderingName[] = "Color correct rendering";

const char kColorCorrectRenderingDescription[] =
    "Enables color correct rendering of web content.";

const char kExperimentalCanvasFeaturesName[] = "Experimental canvas features";

const char kExperimentalCanvasFeaturesDescription[] =
    "Enables the use of experimental canvas features which are still in "
    "development.";

const char kAccelerated2dCanvasName[] = "Accelerated 2D canvas";

const char kAccelerated2dCanvasDescription[] =
    "Enables the use of the GPU to perform 2d canvas rendering instead of "
    "using software rendering.";

const char kDisplayList2dCanvasName[] = "Display list 2D canvas";

const char kDisplayList2dCanvasDescription[] =
    "Enables the use of display lists to record 2D canvas commands. This "
    "allows 2D canvas rasterization to be performed on separate thread.";

const char kEnable2dCanvasDynamicRenderingModeSwitchingName[] =
    "Enable 2D canvas dynamic rendering mode switching.";

const char kEnable2dCanvasDynamicRenderingModeSwitchingDescription[] =
    "There are multiple implementations of the graphics rendering pipeline "
    "for the 2D canvas. These different implementations have different "
    "performance characteristics. Turning on this flag allows canvas 2D "
    "contexts to switch between these implementations on the fly based on "
    "how the canvas is used in order to increase performance. For example, "
    "going from an implementation that uses the GPU to one that doesn't.";

const char kExperimentalExtensionApisName[] = "Experimental Extension APIs";

const char kExperimentalExtensionApisDescription[] =
    "Enables experimental extension APIs. Note that the extension gallery "
    "doesn't allow you to upload extensions that use experimental APIs.";

const char kExtensionsOnChromeUrlsName[] = "Extensions on chrome:// URLs";

const char kExtensionsOnChromeUrlsDescription[] =
    "Enables running extensions on chrome:// URLs, where extensions "
    "explicitly request this permission.";

const char kFastUnloadName[] = "Fast tab/window close";

const char kFastUnloadDescription[] =
    "Enables fast tab/window closing - runs a tab's onunload js handler "
    "independently of the GUI.";

const char kUserConsentForExtensionScriptsName[] =
    "User consent for extension scripts";

const char kUserConsentForExtensionScriptsDescription[] =
    "Require user consent for an extension running a script on the page, if "
    "the extension requested permission to run on all urls.";

const char kHistoryRequiresUserGestureName[] =
    "New history entries require a user gesture.";

const char kHistoryRequiresUserGestureDescription[] =
    "Require a user gesture to add a history entry.";

const char kHyperlinkAuditingName[] = "Hyperlink auditing";

const char kHyperlinkAuditingDescription[] = "Sends hyperlink auditing pings.";

#if defined(OS_ANDROID)

const char kContextualSearch[] = "Contextual Search";

const char kContextualSearchDescription[] =
    "Whether or not Contextual Search is enabled.";

const char kContextualSearchContextualCardsBarIntegration[] =
    "Contextual Search - Contextual Cards Integration";

const char kContextualSearchContextualCardsBarIntegrationDescription[] =
    "Whether or not integration of Contextual Cards data in the Contextual "
    "Search Bar is enabled.";

const char kContextualSearchSingleActions[] =
    "Contextual Search - Single Actions";

const char kContextualSearchSingleActionsDescription[] =
    "Whether or not single actions using Contextual Cards data in the "
    "Contextual Search Bar is enabled.";

const char kContextualSearchUrlActions[] = "Contextual Search - URL Actions";

const char kContextualSearchUrlActionsDescription[] =
    "Whether or not URL actions using Contextual Cards data in the "
    "Contextual Search Bar is enabled.";

#endif  // defined(OS_ANDROID)

const char kSmoothScrollingName[] = "Smooth Scrolling";

const char kSmoothScrollingDescription[] =
    "Animate smoothly when scrolling page content.";

const char kOverlayScrollbarsName[] = "Overlay Scrollbars";

const char kOverlayScrollbarsDescription[] =
    "Enable the experimental overlay scrollbars implementation. You must "
    "also enable threaded compositing to have the scrollbars animate.";

const char kShowAutofillTypePredictionsName[] = "Show Autofill predictions";

const char kShowAutofillTypePredictionsDescription[] =
    "Annotates web forms with Autofill field type predictions as "
    "placeholder text.";

const char kTcpFastOpenName[] = "TCP Fast Open";

const char kTcpFastOpenDescription[] =
    "Enable the option to send extra authentication information in the "
    "initial SYN packet for a previously connected client, allowing faster "
    "data send start.";

const char kTouchDragDropName[] = "Touch initiated drag and drop";

const char kTouchDragDropDescription[] =
    "Touch drag and drop can be initiated through long press on a draggable "
    "element.";

const char kTouchSelectionStrategyName[] = "Touch text selection strategy";

const char kTouchSelectionStrategyDescription[] =
    "Controls how text selection granularity changes when touch text "
    "selection handles are dragged. Non-default behavior is experimental.";

const char kTouchSelectionStrategyCharacter[] = "Character";

const char kTouchSelectionStrategyDirection[] = "Direction";

const char kWalletServiceUseSandboxName[] =
    "Use Google Payments sandbox servers";

const char kWalletServiceUseSandboxDescription[] =
    "For developers: use the sandbox service for Google Payments API "
    "calls.";

const char kOverscrollHistoryNavigationName[] = "Overscroll history navigation";

const char kOverscrollHistoryNavigationDescription[] =
    "Experimental history navigation in response to horizontal overscroll.";

const char kOverscrollHistoryNavigationSimpleUi[] = "Simple";

const char kOverscrollStartThresholdName[] = "Overscroll start threshold";

const char kOverscrollStartThresholdDescription[] =
    "Changes overscroll start threshold relative to the default value.";

const char kOverscrollStartThreshold133Percent[] = "133%";

const char kOverscrollStartThreshold166Percent[] = "166%";

const char kOverscrollStartThreshold200Percent[] = "200%";

const char kScrollEndEffectName[] = "Scroll end effect";

const char kScrollEndEffectDescription[] =
    "Experimental scroll end effect in response to vertical overscroll.";

const char kWebgl2Name[] = "WebGL 2.0";

const char kWebgl2Description[] = "Allow web applications to access WebGL 2.0.";

const char kWebglDraftExtensionsName[] = "WebGL Draft Extensions";

const char kWebglDraftExtensionsDescription[] =
    "Enabling this option allows web applications to access the WebGL "
    "Extensions that are still in draft status.";

const char kWebrtcHwDecodingName[] = "WebRTC hardware video decoding";

const char kWebrtcHwDecodingDescription[] =
    "Support in WebRTC for decoding video streams using platform hardware.";

const char kWebrtcHwEncodingName[] = "WebRTC hardware video encoding";

const char kWebrtcHwEncodingDescription[] =
    "Support in WebRTC for encoding video streams using platform hardware.";

const char kWebrtcHwH264EncodingName[] = "WebRTC hardware h264 video encoding";

const char kWebrtcHwH264EncodingDescription[] =
    "Support in WebRTC for encoding h264 video streams using platform "
    "hardware.";

const char kWebrtcHwVP8EncodingName[] = "WebRTC hardware vp8 video encoding";

const char kWebrtcHwVP8EncodingDescription[] =
    "Support in WebRTC for encoding vp8 video streams using platform "
    "hardware.";

const char kWebrtcSrtpAesGcmName[] =
    "Negotiation with GCM cipher suites for SRTP in WebRTC";

const char kWebrtcSrtpAesGcmDescription[] =
    "When enabled, WebRTC will try to negotiate GCM cipher suites for "
    "SRTP.";

const char kWebrtcStunOriginName[] = "WebRTC Stun origin header";

const char kWebrtcStunOriginDescription[] =
    "When enabled, Stun messages generated by WebRTC will contain the "
    "Origin header.";

const char kWebrtcEchoCanceller3Name[] = "WebRTC Echo Canceller 3.";

const char kWebrtcEchoCanceller3Description[] =
    "Experimental WebRTC echo canceller (AEC3).";

#if defined(OS_ANDROID)

const char kMediaScreenCaptureName[] = "Experimental ScreenCapture.";

const char kMediaScreenCaptureDescription[] =
    "Enable this option for experimental ScreenCapture feature on Android.";

#endif  // defined(OS_ANDROID)

#if BUILDFLAG(ENABLE_WEBRTC)

const char kWebrtcH264WithOpenh264FfmpegName[] =
    "WebRTC H.264 software video encoder/decoder";

const char kWebrtcH264WithOpenh264FfmpegDescription[] =
    "When enabled, an H.264 software video encoder/decoder pair is "
    "included. If a hardware encoder/decoder is also available it may be "
    "used instead of this encoder/decoder.";

#endif  // BUILDFLAG(ENABLE_WEBRTC)

const char kWebvrName[] = "WebVR";

const char kWebvrDescription[] =
    "Enabling this option allows web applications to access experimental "
    "Virtual Reality APIs.";

const char kWebvrExperimentalRenderingName[] =
    "WebVR experimental rendering optimizations";

const char kWebvrExperimentalRenderingDescription[] =
    "Enabling this option activates experimental rendering path "
    "optimizations for WebVR.";

const char kGamepadExtensionsName[] = "Gamepad Extensions";

const char kGamepadExtensionsDescription[] =
    "Enabling this option allows web applications to access experimental "
    "extensions to the Gamepad APIs.";

#if defined(OS_ANDROID)

const char kNewPhotoPickerName[] = "Enable new Photopicker";

const char kNewPhotoPickerDescription[] =
    "Activates the new picker for selecting photos.";

#endif  // defined(OS_ANDROID)

#if defined(OS_ANDROID)

const char kEnableOskOverscrollName[] = "Enable OSK Overscroll";

const char kEnableOskOverscrollDescription[] =
    "Enable OSK overscroll support. With this flag on, the OSK will only "
    "resize the visual viewport.";

#endif  // defined(OS_ANDROID)

const char kQuicName[] = "Experimental QUIC protocol";

const char kQuicDescription[] = "Enable experimental QUIC protocol support.";

const char kSslVersionMaxName[] = "Maximum TLS version enabled.";

const char kSslVersionMaxDescription[] = "Set maximum enabled TLS version.";

const char kSslVersionMaxTls12[] = "TLS 1.2";

const char kSslVersionMaxTls13[] = "TLS 1.3";

const char kEnableTokenBindingName[] = "Token Binding.";

const char kEnableTokenBindingDescription[] = "Enable Token Binding support.";

const char kPassiveDocumentEventListenersDescription[] =
    "Forces touchstart, and touchmove event listeners on document level "
    "targets (which haven't requested otherwise) to be treated as passive.";

const char kPassiveDocumentEventListenersName[] =
    "Document Level Event Listeners Passive Default";

const char kPassiveEventListenersDueToFlingDescription[] =
    "Forces touchstart, and first touchmove per scroll event listeners "
    "during fling to be treated as passive.";

const char kPassiveEventListenersDueToFlingName[] =
    "Touch Event Listeners Passive Default During Fling";

const char kPassiveEventListenerTrue[] = "True (when unspecified)";

const char kPassiveEventListenerForceAllTrue[] = "Force All True";

const char kPassiveEventListenerDefaultName[] =
    "Passive Event Listener Override";

const char kPassiveEventListenerDefaultDescription[] =
    "Forces touchstart, touchmove, mousewheel and wheel event listeners "
    "(which haven't requested otherwise) to be treated as passive. This "
    "will break touch/wheel behavior on some websites but is useful for "
    "demonstrating the potential performance benefits of adopting passive "
    "event listeners.";

#if defined(OS_ANDROID)

const char kImportantSitesInCbdName[] =
    "Important sites options in clear browsing data dialog";

const char kImportantSitesInCbdDescription[] =
    "Include the option to whitelist important sites in the clear browsing "
    "data dialog.";

#endif  // defined(OS_ANDROID)

#if defined(USE_ASH)

const char kAshShelfColor[] = "Shelf color in Chrome OS system UI";

const char kAshShelfColorDescription[] =
    "Enables/disables the shelf color to be a derived from the wallpaper. The "
    "--ash-shelf-color-scheme flag defines how that color is derived.";

const char kAshShelfColorScheme[] = "Shelf color scheme in Chrome OS System UI";

const char kAshShelfColorSchemeDescription[] =
    "Specify how the color is derived from the wallpaper. This flag is only "
    "used when the --ash-shelf-color flag is enabled. Defaults to Dark & Muted";

const char kAshShelfColorSchemeLightVibrant[] = "Light & Vibrant";

const char kAshShelfColorSchemeNormalVibrant[] = "Normal & Vibrant";

const char kAshShelfColorSchemeDarkVibrant[] = "Dark & Vibrant";

const char kAshShelfColorSchemeLightMuted[] = "Light & Muted";

const char kAshShelfColorSchemeNormalMuted[] = "Normal & Muted";

const char kAshShelfColorSchemeDarkMuted[] = "Dark & Muted";

const char kAshMaximizeModeWindowBackdropName[] =
    "Window backdrops in TouchView";

const char kAshMaximizeModeWindowBackdropDescription[] =
    "Show grey window backdrops used in TouchView (maximize mode) behind "
    "windows which cannot be maximized.";

const char kAshScreenOrientationLockName[] = "Screen Orientation locking";

const char kAshScreenOrientationLockDescription[] =
    "Allows javascript to lock the screen orienation.";

const char kAshEnableMirroredScreenName[] = "Enable mirrored screen mode.";

const char kAshEnableMirroredScreenDescription[] =
    "Enable the mirrored screen mode. This mode flips the screen image "
    "horizontally.";

const char kAshDisableSmoothScreenRotationName[] =
    "Disable smooth rotation animations.";

const char kAshDisableSmoothScreenRotationDescription[] =
    "Disable smooth rotation animations.";

const char kMaterialDesignInkDropAnimationFast[] = "Fast";

const char kMaterialDesignInkDropAnimationSlow[] = "Slow";

const char kMaterialDesignInkDropAnimationSpeedName[] =
    "Material Design Ink Drop Animation Speed";

const char kMaterialDesignInkDropAnimationSpeedDescription[] =
    "Sets the speed of the experimental visual feedback animations for "
    "material design.";

const char kUiSlowAnimationsName[] = "Slow UI animations";

const char kUiSlowAnimationsDescription[] = "Makes all UI animations slow.";

const char kUiShowCompositedLayerBordersName[] =
    "Show UI composited layer borders";

const char kUiShowCompositedLayerBordersDescription[] =
    "Show border around composited layers created by UI.";

const char kUiShowCompositedLayerBordersRenderPass[] = "RenderPass";

const char kUiShowCompositedLayerBordersSurface[] = "Surface";

const char kUiShowCompositedLayerBordersLayer[] = "Layer";

const char kUiShowCompositedLayerBordersAll[] = "All";

#endif  // defined(USE_ASH)

const char kJavascriptHarmonyShippingName[] =
    "Latest stable JavaScript features";

const char kJavascriptHarmonyShippingDescription[] =
    "Some web pages use legacy or non-standard JavaScript extensions that "
    "may conflict with the latest JavaScript features. This flag allows "
    "disabling support of those features for compatibility with such "
    "pages.";

const char kJavascriptHarmonyName[] = "Experimental JavaScript";

const char kJavascriptHarmonyDescription[] =
    "Enable web pages to use experimental JavaScript features.";

const char kV8DisableIgnitionTurboName[] =
    "Classic JavaScript Compilation Pipeline";

const char kV8DisableIgnitionTurboDescription[] =
    "Enables V8's classic compilation pipeline for JavaScript execution "
    "(disabling V8's new Ignition interpreter and TurboFan compiler)";

const char kEnableAsmWasmName[] =
    "Experimental Validate Asm.js and convert to WebAssembly when valid.";

const char kEnableAsmWasmDescription[] =
    R"*(Validate Asm.js when "use asm" is present and then convert to )*"
    R"*(WebAssembly.)*";

const char kEnableSharedArrayBufferName[] =
    "Experimental enabled SharedArrayBuffer support in JavaScript.";

const char kEnableSharedArrayBufferDescription[] =
    "Enable SharedArrayBuffer support in JavaScript.";

const char kEnableWasmName[] = "WebAssembly structured cloning support.";
const char kEnableWasmDescription[] =
    "Enable web pages to use WebAssembly structured cloning.";

const char kEnableWasmStreamingName[] =
    "WebAssembly streaming compile/instantiate support.";
const char kEnableWasmStreamingDescription[] =
    "WebAssembly.{compile|instantiate} taking a Response as parameter.";

#if defined(OS_ANDROID)

const char kMediaDocumentDownloadButtonName[] =
    "Download button when opening a page with media url.";

const char kMediaDocumentDownloadButtonDescription[] =
    "Allow a download button to show up when opening a page with media "
    "url.";

#endif  // defined(OS_ANDROID)

const char kSoftwareRasterizerName[] = "3D software rasterizer";

const char kSoftwareRasterizerDescription[] =
    "Fall back to a 3D software rasterizer when the GPU cannot be used.";

const char kGpuRasterizationName[] = "GPU rasterization";

const char kGpuRasterizationDescription[] =
    "Use GPU to rasterize web content. Requires impl-side painting.";

const char kForceGpuRasterization[] = "Force-enabled for all layers";

const char kGpuRasterizationMsaaSampleCountName[] =
    "GPU rasterization MSAA sample count.";

const char kGpuRasterizationMsaaSampleCountDescription[] =
    "Specify the number of MSAA samples for GPU rasterization.";

const char kGpuRasterizationMsaaSampleCountZero[] = "0";

const char kGpuRasterizationMsaaSampleCountTwo[] = "2";

const char kGpuRasterizationMsaaSampleCountFour[] = "4";

const char kGpuRasterizationMsaaSampleCountEight[] = "8";

const char kGpuRasterizationMsaaSampleCountSixteen[] = "16";

const char kSlimmingPaintInvalidationName[] = "Slimming paint invalidation.";

const char kSlimmingPaintInvalidationDescription[] =
    "Whether to enable a new paint invalidation system.";

const char kExperimentalSecurityFeaturesName[] =
    "Potentially annoying security features";

const char kExperimentalSecurityFeaturesDescription[] =
    "Enables several security features that will likely break one or more "
    "pages that you visit on a daily basis. Strict mixed content checking, "
    "for example. And locking powerful features to secure contexts. This "
    "flag will probably annoy you.";

const char kExperimentalWebPlatformFeaturesName[] =
    "Experimental Web Platform features";

const char kExperimentalWebPlatformFeaturesDescription[] =
    "Enables experimental Web Platform features that are in development.";

const char kExperimentalPointerEventName[] = "Pointer Events";

const char kExperimentalPointerEventDescription[] =
    "Enables support for the Pointer Events API. This is intended only for "
    "testing by web developers.";

const char kOriginTrialsName[] = "Origin Trials";

const char kOriginTrialsDescription[] =
    "Enables origin trials for controlling access to feature/API "
    "experiments.";

const char kBleAdvertisingInExtensionsName[] = "BLE Advertising in Chrome Apps";

const char kBleAdvertisingInExtensionsDescription[] =
    "Enables BLE Advertising in Chrome Apps. BLE Advertising might "
    "interfere with regular use of Bluetooth Low Energy features.";

const char kDevtoolsExperimentsName[] = "Developer Tools experiments";

const char kDevtoolsExperimentsDescription[] =
    "Enables Developer Tools experiments. Use Settings panel in Developer "
    "Tools to toggle individual experiments.";

const char kSilentDebuggerExtensionApiName[] = "Silent Debugging";

const char kSilentDebuggerExtensionApiDescription[] =
    "Do not show the infobar when an extension attaches to a page via "
    "chrome.debugger API. This is required to debug extension background "
    "pages.";

const char kShowTouchHudName[] = "Show HUD for touch points";

const char kShowTouchHudDescription[] =
    "Enables a heads-up display at the top-left corner of the screen that "
    "lists information about the touch-points on the screen.";

const char kPreferHtmlOverPluginsName[] = "Prefer HTML over Flash";

const char kPreferHtmlOverPluginsDescription[] =
    "Prefer HTML content by hiding Flash from the list of plugins.";

const char kAllowNaclSocketApiName[] = "NaCl Socket API.";

const char kAllowNaclSocketApiDescription[] =
    "Allows applications to use NaCl Socket API. Use only to test NaCl "
    "plugins.";

const char kRunAllFlashInAllowModeName[] =
    R"*(Run all Flash content when Flash setting is set to "allow")*";

const char kRunAllFlashInAllowModeDescription[] =
    R"*(For sites that have been set to "allow" Flash content, run all )*"
    R"*(content including any that has been deemed unimportant.)*";

const char kPinchScaleName[] = "Pinch scale";

const char kPinchScaleDescription[] =
    "Enables experimental support for scale using pinch.";

const char kReducedReferrerGranularityName[] =
    "Reduce default 'referer' header granularity.";

const char kReducedReferrerGranularityDescription[] =
    "If a page hasn't set an explicit referrer policy, setting this flag "
    "will reduce the amount of information in the 'referer' header for "
    "cross-origin requests.";

#if defined(OS_CHROMEOS)

const char kUseMashName[] = "Mojo UI Service (mus).";

const char kUseMashDescription[] = "Enable mus, mash etc.";

const char kAllowTouchpadThreeFingerClickName[] = "Touchpad three-finger-click";

const char kAllowTouchpadThreeFingerClickDescription[] =
    "Enables touchpad three-finger-click as middle button.";

const char kAshEnableUnifiedDesktopName[] = "Unified desktop mode";

const char kAshEnableUnifiedDesktopDescription[] =
    "Enable unified desktop mode which allows a window to span multiple "
    "displays.";

const char kBootAnimation[] = "Boot animation";

const char kBootAnimationDescription[] =
    "Wallpaper boot animation (except for OOBE case).";

const char kTetherName[] = "Instant Tethering";

const char kTetherDescription[] =
    "Enables Instant Tethering. Instant Tethering allows your nearby Google "
    "phone to share its Internet connection with this device.";

#endif  // defined(OS_CHROMEOS)

const char kAcceleratedVideoDecodeName[] = "Hardware-accelerated video decode";

const char kAcceleratedVideoDecodeDescription[] =
    "Hardware-accelerated video decode where available.";

const char kEnableHDRName[] = "HDR mode";

const char kEnableHDRDescription[] =
    "Enables HDR support on compatible displays.";

const char kCloudImport[] = "Cloud Import";

const char kCloudImportDescription[] = "Allows the cloud-import feature.";

const char kRequestTabletSiteName[] =
    "Request tablet site option in the settings menu";

const char kRequestTabletSiteDescription[] =
    "Allows the user to request tablet site. Web content is often optimized "
    "for tablet devices. When this option is selected the user agent string "
    "is changed to indicate a tablet device. Web content optimized for "
    "tablets is received there after for the current tab.";

const char kDebugPackedAppName[] = "Debugging for packed apps";

const char kDebugPackedAppDescription[] =
    "Enables debugging context menu options such as Inspect Element for "
    "packed applications.";

const char kDropSyncCredentialName[] =
    "Drop sync credentials from password manager";

const char kDropSyncCredentialDescription[] =
    "The password manager will not offer to save the credential used to "
    "sync.";

const char kPasswordGenerationName[] = "Password generation";

const char kPasswordGenerationDescription[] =
    "Allow the user to have Chrome generate passwords when it detects "
    "account creation pages.";

const char kPasswordForceSavingName[] = "Force-saving of passwords";

const char kPasswordForceSavingDescription[] =
    "Allow the user to manually enforce password saving instead of relying "
    "on password manager's heuristics.";

const char kManualPasswordGenerationName[] = "Manual password generation.";

const char kManualPasswordGenerationDescription[] =
    "Show a 'Generate Password' option on the context menu for all password "
    "fields.";

const char kShowAutofillSignatures[] = "Show autofill signatures.";

const char kShowAutofillSignaturesDescription[] =
    "Annotates web forms with Autofill signatures as HTML attributes.";

const char kSuggestionsWithSubStringMatchName[] =
    "Substring matching for Autofill suggestions";

const char kSuggestionsWithSubStringMatchDescription[] =
    "Match Autofill suggestions based on substrings (token prefixes) rather "
    "than just prefixes.";

const char kAffiliationBasedMatchingName[] =
    "Affiliation based matching in password manager";

const char kAffiliationBasedMatchingDescription[] =
    "Allow credentials stored for Android applications to be filled into "
    "corresponding websites.";

const char kProtectSyncCredentialName[] = "Autofill sync credential";

const char kProtectSyncCredentialDescription[] =
    "How the password manager handles autofill for the sync credential.";

const char kPasswordImportExportName[] = "Password import and export";

const char kPasswordImportExportDescription[] =
    "Import and Export functionality in password settings.";

const char kProtectSyncCredentialOnReauthName[] =
    "Autofill sync credential only for transactional reauth pages";

const char kProtectSyncCredentialOnReauthDescription[] =
    "How the password manager handles autofill for the sync credential only "
    "for transactional reauth pages.";

const char kIconNtpName[] = "Large icons on the New Tab page";

const char kIconNtpDescription[] =
    "Enable the experimental New Tab page using large icons.";

const char kPushApiBackgroundModeName[] = "Enable Push API background mode";

const char kPushApiBackgroundModeDescription[] =
    "Enable background mode for the Push API. This allows Chrome to "
    "continue running after the last window is closed, and to launch at OS "
    "startup, if the Push API needs it.";

const char kEnableNavigationTracing[] = "Enable navigation tracing";

const char kEnableNavigationTracingDescription[] =
    "This is to be used in conjunction with the trace-upload-url flag. "
    "WARNING: When enabled, Chrome will record performance data for every "
    "navigation and upload it to the URL specified by the trace-upload-url "
    "flag. The trace may include personally identifiable information (PII) "
    "such as the titles and URLs of websites you visit.";

const char kTraceUploadUrl[] = "Trace label for navigation tracing";

const char kTraceUploadUrlDescription[] =
    "This is to be used in conjunction with the enable-navigation-tracing "
    "flag. Please select the label that best describes the recorded traces. "
    "This will choose the destination the traces are uploaded to. If you "
    "are not sure, select other. If left empty, no traces will be "
    "uploaded.";

const char kDisableAudioForDesktopShare[] = "Disable Audio For Desktop Share";

const char kDisableAudioForDesktopShareDescription[] =
    "With this flag on, desktop share picker window will not let the user "
    "choose whether to share audio.";

const char kDisableTabForDesktopShare[] =
    "Disable Desktop Share with tab source";

const char kDisableTabForDesktopShareDescription[] =
    "This flag controls whether users can choose a tab for desktop share.";

const char kTraceUploadUrlChoiceOther[] = "Other";

const char kTraceUploadUrlChoiceEmloading[] = "emloading";

const char kTraceUploadUrlChoiceQa[] = "QA";

const char kTraceUploadUrlChoiceTesting[] = "Testing";

const char kSupervisedUserManagedBookmarksFolderName[] =
    "Managed bookmarks for supervised users";

const char kSupervisedUserManagedBookmarksFolderDescription[] =
    "Enable the managed bookmarks folder for supervised users.";

const char kSyncAppListName[] = "App Launcher sync";

const char kSyncAppListDescription[] =
    "Enable App Launcher sync. This also enables Folders where available "
    "(non OSX).";

const char kDriveSearchInChromeLauncher[] =
    "Drive Search in Chrome App Launcher";

const char kDriveSearchInChromeLauncherDescription[] =
    "Files from Drive will show up when searching the Chrome App Launcher.";

const char kV8CacheOptionsName[] = "V8 caching mode.";

const char kV8CacheOptionsDescription[] =
    "Caching mode for the V8 JavaScript engine.";

const char kV8CacheOptionsParse[] = "Cache V8 parser data.";

const char kV8CacheOptionsCode[] = "Cache V8 compiler data.";

const char kV8CacheStrategiesForCacheStorageName[] =
    "V8 caching strategy for CacheStorage.";

const char kV8CacheStrategiesForCacheStorageDescription[] =
    "Caching strategy of scripts in CacheStorage for the V8 JavaScript "
    "engine.";

const char kV8CacheStrategiesForCacheStorageNormal[] = "Normal";

const char kV8CacheStrategiesForCacheStorageAggressive[] = "Aggressive";

const char kMemoryCoordinatorName[] = "Memory coordinator";

const char kMemoryCoordinatorDescription[] =
    "Enable memory coordinator instead of memory pressure listeners.";

const char kServiceWorkerNavigationPreloadName[] =
    "Service worker navigation preload.";

const char kServiceWorkerNavigationPreloadDescription[] =
    "Enable web pages to use the experimental service worker navigation "
    "preload API.";

//  Data Reduction Proxy

const char kDataReductionProxyLoFiName[] = "Data Saver Lo-Fi mode";

const char kDataReductionProxyLoFiDescription[] =
    "Forces Data Saver Lo-Fi mode to be always enabled, enabled only on "
    "cellular connections, or disabled. Data Saver must be enabled for "
    "Lo-Fi mode to be used.";

const char kDataReductionProxyLoFiAlwaysOn[] = "Always on";

const char kDataReductionProxyLoFiCellularOnly[] = "Cellular only";

const char kDataReductionProxyLoFiDisabled[] = "Disable";

const char kDataReductionProxyLoFiSlowConnectionsOnly[] =
    "Slow connections only";

const char kEnableDataReductionProxyLitePageName[] =
    "Lite pages for Data Saver Lo-Fi mode";

const char kEnableDataReductionProxyLitePageDescription[] =
    "Enable lite pages in Data Saver Lo-Fi mode. Previews of pages will be "
    "shown instead of image placeholders when Lo-Fi is on. Data Saver and "
    "Lo-Fi must be enabled for lite pages to be shown.";

const char kDataReductionProxyCarrierTestName[] =
    "Enable a carrier-specific Data Reduction Proxy for testing.";

const char kDataReductionProxyCarrierTestDescription[] =
    "Use a carrier-specific Data Reduction Proxy for testing.";

const char kEnableDataReductionProxySavingsPromoName[] =
    "Data Saver 1 MB Savings Promo";

const char kEnableDataReductionProxySavingsPromoDescription[] =
    "Enable a Data Saver promo for 1 MB of savings. If Data Saver has "
    "already saved 1 MB of data, then the promo will not be shown. Data "
    "Saver must be enabled for the promo to be shown.";

#if defined(OS_ANDROID)

const char kEnableDataReductionProxyMainMenuName[] =
    "Enable Data Saver main menu footer";

const char kEnableDataReductionProxyMainMenuDescription[] =
    "Enables the Data Saver footer in the main menu";

const char kEnableDataReductionProxySiteBreakdownName[] =
    "Data Saver Site Breakdown";

const char kEnableDataReductionProxySiteBreakdownDescription[] =
    "Enable the site breakdown on the Data Saver settings page.";

const char kEnableOfflinePreviewsName[] = "Offline Page Previews";

const char kEnableOfflinePreviewsDescription[] =
    "Enable showing offline page previews on slow networks.";

const char kEnableClientLoFiName[] = "Client-side Lo-Fi previews";

const char kEnableClientLoFiDescription[] =
    "Enable showing low fidelity images on some pages on slow networks.";

#endif  // defined(OS_ANDROID)

const char kLcdTextName[] = "LCD text antialiasing";

const char kLcdTextDescription[] =
    "If disabled, text is rendered with grayscale antialiasing instead of "
    "LCD (subpixel) when doing accelerated compositing.";

const char kDistanceFieldTextName[] = "Distance field text";

const char kDistanceFieldTextDescription[] =
    "Text is rendered with signed distance fields rather than bitmap alpha "
    "masks.";

const char kZeroCopyName[] = "Zero-copy rasterizer";

const char kZeroCopyDescription[] =
    "Raster threads write directly to GPU memory associated with tiles.";

const char kHideInactiveStackedTabCloseButtonsName[] =
    "Hiding close buttons on inactive tabs when stacked";

const char kHideInactiveStackedTabCloseButtonsDescription[] =
    "Hides the close buttons of inactive tabs when the tabstrip is in "
    "stacked mode.";

const char kDefaultTileWidthName[] = "Default tile width";

const char kDefaultTileWidthDescription[] = "Specify the default tile width.";

const char kDefaultTileWidthShort[] = "128";

const char kDefaultTileWidthTall[] = "256";

const char kDefaultTileWidthGrande[] = "512";

const char kDefaultTileWidthVenti[] = "1024";

const char kDefaultTileHeightName[] = "Default tile height";

const char kDefaultTileHeightDescription[] = "Specify the default tile height.";

const char kDefaultTileHeightShort[] = "128";

const char kDefaultTileHeightTall[] = "256";

const char kDefaultTileHeightGrande[] = "512";

const char kDefaultTileHeightVenti[] = "1024";

const char kNumRasterThreadsName[] = "Number of raster threads";

const char kNumRasterThreadsDescription[] =
    "Specify the number of raster threads.";

const char kNumRasterThreadsOne[] = "1";

const char kNumRasterThreadsTwo[] = "2";

const char kNumRasterThreadsThree[] = "3";

const char kNumRasterThreadsFour[] = "4";

const char kResetAppListInstallStateName[] =
    "Reset the App Launcher install state on every restart.";

const char kResetAppListInstallStateDescription[] =
    "Reset the App Launcher install state on every restart. While this flag "
    "is set, Chrome will forget the launcher has been installed each time "
    "it starts. This is used for testing the App Launcher install flow.";

#if defined(OS_CHROMEOS)

const char kFirstRunUiTransitionsName[] =
    "Animated transitions in the first-run tutorial";

const char kFirstRunUiTransitionsDescription[] =
    "Transitions during first-run tutorial are animated.";

#endif  // defined(OS_CHROMEOS)

const char kNewBookmarkAppsName[] = "The new bookmark app system";

const char kNewBookmarkAppsDescription[] =
    "Enables the new system for creating bookmark apps.";

#if defined(OS_MACOSX)

const char kHostedAppsInWindowsName[] =
    "Allow hosted apps to be opened in windows";

const char kHostedAppsInWindowsDescription[] =
    "Allows hosted apps to be opened in windows instead of being limited to "
    "tabs.";

const char kTabDetachingInFullscreenName[] =
    "Allow tab detaching in fullscreen";

const char kTabDetachingInFullscreenDescription[] =
    "Allow tabs to detach from the tabstrip when in fullscreen mode on "
    "Mac.";

const char kFullscreenToolbarRevealName[] =
    "Enables the toolbar in fullscreen to reveal itself.";

const char kFullscreenToolbarRevealDescription[] =
    "Reveal the toolbar in fullscreen for a short period when the tab strip "
    "has changed.";

const char kTabStripKeyboardFocusName[] = "Tab Strip Keyboard Focus";

const char kTabStripKeyboardFocusDescription[] =
    "Enable keyboard focus for the tabs in the tab strip.";

#endif  // defined(OS_MACOSX)

const char kHostedAppShimCreationName[] =
    "Creation of app shims for hosted apps on Mac";

const char kHostedAppShimCreationDescription[] =
    "Create app shims on Mac when creating a hosted app.";

const char kHostedAppQuitNotificationName[] =
    "Quit notification for hosted apps";

const char kHostedAppQuitNotificationDescription[] =
    "Display a notification when quitting Chrome if hosted apps are "
    "currently running.";

#if defined(OS_ANDROID)

const char kPullToRefreshEffectName[] = "The pull-to-refresh effect";

const char kPullToRefreshEffectDescription[] =
    "Page reloads triggered by vertically overscrolling content.";

const char kTranslateCompactUIName[] = "New Translate Infobar";

const char kTranslateCompactUIDescription[] =
    "Enable the new Translate compact infobar UI.";

#endif  // defined(OS_ANDROID)

#if defined(OS_MACOSX)

const char kTranslateNewUxName[] = "New Translate UX";

const char kTranslateNewUxDescription[] =
    "Enable the new Translate bubble UX is offered instead of the infobar.";

#endif  // defined(OS_MACOSX)

const char kTranslate2016q2UiName[] = "Translate 2016Q2 UI";

const char kTranslate2016q2UiDescription[] =
    "Improved triggering logic and look for Translate Bubble UI";

const char kTranslateLanguageByUlpName[] = "Translate Language by ULP";

const char kTranslateLanguageByUlpDescription[] =
    "Improved translate target language and triggering logic by considering "
    "information from User Language Profile (ULP).";

const char kViewsRectBasedTargetingName[] = "Rect-based targeting in views";

const char kViewsRectBasedTargetingDescription[] =
    "Rect-based targeting uses a heuristic to determine the most probable "
    "target of a gesture, where the touch region is represented by a "
    "rectangle.";

const char kPermissionActionReportingName[] = "Permission Action Reporting";

const char kPermissionActionReportingDescription[] =
    "Enables permission action reporting to Safe Browsing servers for opted "
    "in users.";

const char kPermissionsBlacklistName[] = "Permissions Blacklist";

const char kPermissionsBlacklistDescription[] =
    "Enables the Permissions Blacklist, which blocks permissions for "
    "blacklisted sites for Safe Browsing users.";

const char kThreadedScrollingName[] = "Threaded scrolling";

const char kThreadedScrollingDescription[] =
    "Threaded handling of scroll-related input events. Disabling this will "
    "force all such scroll events to be handled on the main thread. Note "
    "that this can dramatically hurt scrolling performance of most websites "
    "and is intended for testing purposes only.";

const char kHarfbuzzRendertextName[] = "HarfBuzz for UI text";

const char kHarfbuzzRendertextDescription[] =
    "Enable cross-platform HarfBuzz layout engine for UI text. Doesn't "
    "affect web content.";

const char kEmbeddedExtensionOptionsName[] = "Embedded extension options";

const char kEmbeddedExtensionOptionsDescription[] =
    "Display extension options as an embedded element in "
    "chrome://extensions rather than opening a new tab.";

const char kTabAudioMutingName[] = "Tab audio muting UI control";

const char kTabAudioMutingDescription[] =
    "When enabled, the audio indicators in the tab strip double as tab "
    "audio mute controls. This also adds commands in the tab context menu "
    "for quickly muting multiple selected tabs.";

const char kEasyUnlockBluetoothLowEnergyDiscoveryName[] =
    "Smart Lock Bluetooth Low Energy Discovery";

const char kEasyUnlockBluetoothLowEnergyDiscoveryDescription[] =
    "Enables a Smart Lock setting that allows Chromebook to discover phones "
    "over Bluetooth Low Energy in order to unlock the Chromebook when the "
    "phone is in its proximity.";

const char kEasyUnlockProximityDetectionName[] =
    "Smart Lock proximity detection";

const char kEasyUnlockProximityDetectionDescription[] =
    "Enables a Smart Lock setting that restricts unlocking to only work "
    "when your phone is very close to (roughly, within an arm's length of) "
    "the Chrome device.";

const char kWifiCredentialSyncName[] = "WiFi credential sync";

const char kWifiCredentialSyncDescription[] =
    "Enables synchronizing WiFi network settings across devices. When "
    "enabled, the WiFi credential datatype is registered with Chrome Sync, "
    "and WiFi credentials are synchronized subject to user preferences. "
    "(See also, chrome://settings/syncSetup.)";

const char kSyncSandboxName[] = "Use Chrome Sync sandbox";

const char kSyncSandboxDescription[] =
    "Connects to the testing server for Chrome Sync.";

const char kDatasaverPromptName[] = "Cellular Data Saver Prompt";

const char kDatasaverPromptDescription[] =
    "Enables a prompt, which appears when a cellular network connection is "
    "detected, to take the user to the Data Saver extension page on Chrome "
    "Web Store.";

const char kDatasaverPromptDemoMode[] = "Demo mode";

const char kDisableUnifiedMediaPipelineDescription[] =
    "Disables the unified (Android and desktop) media pipeline on Android.";

const char kTrySupportedChannelLayoutsName[] =
    "Causes audio output streams to check if channel layouts other than the "
    "default hardware layout are available.";

const char kTrySupportedChannelLayoutsDescription[] =
    "Causes audio output streams to check if channel layouts other than the "
    "default hardware layout are available. Turning this on will allow the "
    "OS to do stereo to surround expansion if supported. May expose third "
    "party driver bugs, use with caution.";

#if defined(OS_MACOSX)

const char kAppInfoDialogName[] = "Toolkit-Views App Info Dialog.";

const char kAppInfoDialogDescription[] =
    "Makes the Toolkit-Views based App Info dialog accessible from "
    "chrome://apps or chrome://extensions in place of the native extension "
    "permissions dialog, or the details link (which is a link to the Web "
    "Store).";

const char kMacViewsNativeAppWindowsName[] = "Toolkit-Views App Windows.";

const char kMacViewsNativeAppWindowsDescription[] =
    "Controls whether to use Toolkit-Views based Chrome App windows.";

const char kMacViewsTaskManagerName[] = "Toolkit-Views Task Manager.";

const char kMacViewsTaskManagerDescription[] =
    "Controls whether to use the Toolkit-Views based Task Manager.";

const char kAppWindowCyclingName[] = "Custom Window Cycling for Chrome Apps.";

const char kAppWindowCyclingDescription[] =
    "Changes the behavior of Cmd+` when a Chrome App becomes active. When "
    "enabled, Chrome Apps will not be cycled when Cmd+` is pressed from a "
    "browser window, and browser windows will not be cycled when a Chrome "
    "App is active.";

#endif  // defined(OS_MACOSX)

#if defined(OS_CHROMEOS)

const char kAcceleratedMjpegDecodeName[] =
    "Hardware-accelerated mjpeg decode for captured frame";

const char kAcceleratedMjpegDecodeDescription[] =
    "Enable hardware-accelerated mjpeg decode for captured frame where "
    "available.";

#endif  // defined(OS_CHROMEOS)

const char kSimplifiedFullscreenUiName[] =
    "Simplified full screen / mouse lock UI.";

const char kSimplifiedFullscreenUiDescription[] =
    "A simplified new user experience when entering page-triggered full "
    "screen or mouse pointer lock states.";

const char kExperimentalKeyboardLockUiName[] = "Experimental keyboard lock UI.";

const char kExperimentalKeyboardLockUiDescription[] =
    "An experimental full screen with keyboard lock mode requiring users to "
    "hold Esc to exit.";

#if defined(OS_ANDROID)

const char kProgressBarAnimationName[] =
    "Android phone page loading progress bar animation";

const char kProgressBarAnimationDescription[] =
    "Configures Android phone page loading progress bar animation.";

const char kProgressBarAnimationLinear[] = "Linear";

const char kProgressBarAnimationSmooth[] = "Smooth";

const char kProgressBarAnimationSmoothIndeterminate[] = "Smooth indeterminate";

const char kProgressBarAnimationFastStart[] = "Fast start";

const char kProgressBarCompletionName[] =
    "Android phone page load progress bar completion time.";

const char kProgressBarCompletionDescription[] =
    "Configures Android phone page loading progress bar completion time.";

const char kProgressBarCompletionLoadEvent[] =
    R"*(Top loading frame's onload event ("everything" is done in the )*"
    R"*(page, historical behavior).)*";

const char kProgressBarCompletionResourcesBeforeDcl[] =
    "Main frame's domContentLoaded and all resources loads started before "
    "domContentLoaded (iframes ignored).";

const char kProgressBarCompletionDomContentLoaded[] =
    "Main frame's domContentLoaded (iframes ignored).";

const char kProgressBarCompletionResourcesBeforeDclAndSameOriginIframes[] =
    "domContentLoaded and all resources loads started before "
    "domContentLoaded (main frame and same origin iframes).";

#endif  // defined(OS_ANDROID)

const char kDisallowDocWrittenScriptsUiName[] =
    "Block scripts loaded via document.write";

const char kDisallowDocWrittenScriptsUiDescription[] =
    "Disallows fetches for third-party parser-blocking scripts inserted "
    "into the main frame via document.write.";

#if defined(OS_WIN)

const char kEnableAppcontainerName[] = "Enable AppContainer Lockdown.";

const char kEnableAppcontainerDescription[] =
    "Enables the use of an AppContainer on sandboxed processes to improve "
    "security.";

#endif  // defined(OS_WIN)

#if defined(TOOLKIT_VIEWS) || (defined(OS_MACOSX) && !defined(OS_IOS))

const char kShowCertLinkOnPageInfoName[] = "Show certificate link";

const char kShowCertLinkOnPageInfoDescription[] =
    "Add a link from the Page Info bubble to the certificate viewer for HTTPS "
    "sites.";

#endif  // defined(TOOLKIT_VIEWS) || (defined(OS_MACOSX) && !defined(OS_IOS))

#if defined(TOOLKIT_VIEWS) || defined(OS_ANDROID)

const char kAutofillCreditCardUploadName[] =
    "Enable offering upload of Autofilled credit cards";

const char kAutofillCreditCardUploadDescription[] =
    "Enables a new option to upload credit cards to Google Payments for "
    "sync to all Chrome devices.";

#endif  // defined(TOOLKIT_VIEWS) || defined(OS_ANDROID)

const char kForceUiDirectionName[] = "Force UI direction";

const char kForceUiDirectionDescription[] =
    "Explicitly force the UI to left-to-right (LTR) or right-to-left (RTL) "
    "mode, overriding the default direction of the UI language.";

const char kForceTextDirectionName[] = "Force text direction";

const char kForceTextDirectionDescription[] =
    "Explicitly force the per-character directionality of UI text to "
    "left-to-right (LTR) or right-to-left (RTL) mode, overriding the "
    "default direction of the character language.";

const char kForceDirectionLtr[] = "Left-to-right";

const char kForceDirectionRtl[] = "Right-to-left";

#if defined(OS_WIN) || defined(OS_LINUX)

const char kEnableInputImeApiName[] = "Enable Input IME API";

const char kEnableInputImeApiDescription[] =
    "Enable the use of chrome.input.ime API.";

#endif  // defined(OS_WIN) || defined(OS_LINUX)

const char kEnableGroupedHistoryName[] = "Group history by domain";

const char kEnableGroupedHistoryDescription[] =
    "Group history by website domain (i.e. google.com) on "
    "chrome://history.";

const char kSecurityChipDefault[] = "Default";

const char kSecurityChipShowNonsecureOnly[] = "Show non-secure only";

const char kSecurityChipShowAll[] = "Show all";

const char kSecurityChipAnimationDefault[] = "Default";

const char kSecurityChipAnimationNone[] = "No animation";

const char kSecurityChipAnimationNonsecureOnly[] = "Animate non-secure only";

const char kSecurityChipAnimationAll[] = "Animate all";

const char kSaveasMenuLabelExperimentName[] =
    "Switch 'Save as' menu labels to 'Download'";

const char kSaveasMenuLabelExperimentDescription[] =
    "Enables an experiment to switch menu labels that use 'Save as...' to "
    "'Download'.";

const char kEnableEnumeratingAudioDevicesName[] =
    "Experimentally enable enumerating audio devices.";

const char kEnableEnumeratingAudioDevicesDescription[] =
    "Experimentally enable the use of enumerating audio devices.";

const char kNewUsbBackendName[] = "Enable new USB backend";

const char kNewUsbBackendDescription[] =
    "Enables the new experimental USB backend for Windows.";

const char kNewOmniboxAnswerTypesName[] =
    "New omnibox answers in suggest types";

const char kNewOmniboxAnswerTypesDescription[] =
    "Enables new types of answers in the omnibox suggest drop-down: "
    "currency conversions, dictionary definitions, sports scores, "
    "translations, and when is.";

const char kEnableZeroSuggestRedirectToChromeName[] =
    "Experimental contextual omnibox suggestion";

const char kEnableZeroSuggestRedirectToChromeDescription[] =
    "Change omnibox contextual suggestions to an experimental source. Note "
    "that this is not an on/off switch for contextual omnibox and it only "
    "applies to suggestions provided before the user starts typing a URL or "
    "a search query (i.e. zero suggest).";

const char kFillOnAccountSelectName[] = "Fill passwords on account selection";

const char kFillOnAccountSelectDescription[] =
    "Filling of passwords when an account is explicitly selected by the "
    "user rather than autofilling credentials on page load.";

const char kEnableClearBrowsingDataCountersName[] =
    "Enable Clear browsing data counters.";

const char kEnableClearBrowsingDataCountersDescription[] =
    "Shows data volume counters in the Clear browsing data dialog.";

#if defined(OS_ANDROID)

const char kTabsInCbdName[] = "Enable tabs for the Clear Browsing Data dialog.";

const char kTabsInCbdDescription[] =
    "Enables a basic and an advanced tab for the Clear Browsing Data "
    "dialog.";

#endif  // defined(OS_ANDROID)

const char kNotificationsNativeFlag[] = "Enable native notifications.";

const char kNotificationsNativeFlagDescription[] =
    "Enable support for using the native notification toasts and "
    "notification center on platforms where these are available.";

#if defined(OS_ANDROID)

const char kEnableAndroidSpellcheckerDescription[] =
    "Enables use of the Android spellchecker.";

const char kEnableAndroidSpellcheckerName[] = "Enable spell checking";

#endif  // defined(OS_ANDROID)

const char kEnableWebNotificationCustomLayoutsName[] =
    "Enable custom layouts for Web Notifications.";

const char kEnableWebNotificationCustomLayoutsDescription[] =
    "Enable custom layouts for Web Notifications. They will have subtle "
    "layout improvements that are otherwise not possible.";

const char kAccountConsistencyName[] =
    "Identity consistency between browser and cookie jar";

const char kAccountConsistencyDescription[] =
    "When enabled, the browser manages signing in and out of Google "
    "accounts.";

const char kGoogleProfileInfoName[] = "Google profile name and icon";

const char kGoogleProfileInfoDescription[] =
    "Enables using Google information to populate the profile name and icon "
    "in the avatar menu.";

const char kOfferStoreUnmaskedWalletCards[] =
    "Google Payments card saving checkbox";

const char kOfferStoreUnmaskedWalletCardsDescription[] =
    "Show the checkbox to offer local saving of a credit card downloaded "
    "from the server.";

const char kOfflineAutoReloadName[] = "Offline Auto-Reload Mode";

const char kOfflineAutoReloadDescription[] =
    "Pages that fail to load while the browser is offline will be "
    "auto-reloaded when the browser is online again.";

const char kOfflineAutoReloadVisibleOnlyName[] =
    "Only Auto-Reload Visible Tabs";

const char kOfflineAutoReloadVisibleOnlyDescription[] =
    "Pages that fail to load while the browser is offline will only be "
    "auto-reloaded if their tab is visible.";

const char kShowSavedCopyName[] = "Show Saved Copy Button";

const char kShowSavedCopyDescription[] =
    "When a page fails to load, if a stale copy of the page exists in the "
    "browser cache, a button will be presented to allow the user to load "
    "that stale copy. The primary enabling choice puts the button in the "
    "most salient position on the error page; the secondary enabling choice "
    "puts it secondary to the reload button.";

const char kEnableShowSavedCopyPrimary[] = "Enable: Primary";

const char kEnableShowSavedCopySecondary[] = "Enable: Secondary";

const char kDisableShowSavedCopy[] = "Disable";

#if defined(OS_CHROMEOS)

const char kSmartVirtualKeyboardName[] =
    "Smart Deployment of the Virtual Keyboard";

const char kSmartVirtualKeyboardDescription[] =
    "Enable/Disable smart deployment of the virtual keyboard.";

const char kVirtualKeyboardName[] = "Virtual Keyboard";

const char kVirtualKeyboardDescription[] = "Enable virtual keyboard support.";

const char kVirtualKeyboardOverscrollName[] = "Virtual Keyboard Overscroll";

const char kVirtualKeyboardOverscrollDescription[] =
    "Enables virtual keyboard overscroll support.";

const char kInputViewName[] = "Input views";

const char kInputViewDescription[] =
    "Enable IME extensions to supply custom views for user input such as "
    "virtual keyboards.";

const char kNewKoreanImeName[] = "New Korean IME";

const char kNewKoreanImeDescription[] =
    "New Korean IME, which is based on Google Input Tools' HMM engine.";

const char kPhysicalKeyboardAutocorrectName[] = "Physical keyboard autocorrect";

const char kPhysicalKeyboardAutocorrectDescription[] =
    "Enable physical keyboard autocorrect for US keyboard, which can "
    "provide suggestions as typing on physical keyboard.";

const char kVoiceInputName[] = "Voice input on virtual keyboard";

const char kVoiceInputDescription[] =
    "Enables voice input on virtual keyboard.";

const char kExperimentalInputViewFeaturesName[] =
    "Experimental input view features";

const char kExperimentalInputViewFeaturesDescription[] =
    "Enable experimental features for IME input views.";

const char kFloatingVirtualKeyboardName[] = "Floating virtual keyboard.";

const char kFloatingVirtualKeyboardDescription[] =
    "Enable/Disable floating virtual keyboard.";

const char kGestureTypingName[] = "Gesture typing for the virtual keyboard.";

const char kGestureTypingDescription[] =
    "Enable/Disable gesture typing option in the settings page for the "
    "virtual keyboard.";

const char kGestureEditingName[] = "Gesture editing for the virtual keyboard.";

const char kGestureEditingDescription[] =
    "Enable/Disable gesture editing option in the settings page for the "
    "virtual keyboard.";

const char kCaptivePortalBypassProxyName[] =
    "Bypass proxy for Captive Portal Authorization";

const char kCaptivePortalBypassProxyDescription[] =
    "If proxy is configured, it usually prevents from authorization on "
    "different captive portals. This enables opening captive portal "
    "authorization dialog in a separate window, which ignores proxy "
    "settings.";

const char kTouchscreenCalibrationName[] =
    "Enable/disable touchscreen calibration option in material design "
    "settings";

const char kTouchscreenCalibrationDescription[] =
    "If enabled, the user can calibrate the touch screen displays in "
    "chrome://md-settings/display.";

const char kTeamDrivesName[] = "Enable Team Drives Integration";
const char kTeamDrivesDescription[] =
    "If enabled, files under Team Drives will appear in the Files app.";

#endif  // defined(OS_CHROMEOS)

//  Strings for controlling credit card assist feature in about:flags.

const char kCreditCardAssistName[] = "Credit Card Assisted Filling";

const char kCreditCardAssistDescription[] =
    "Enable assisted credit card filling on certain sites.";

//  Strings for controlling credit card scanning feature in about:flags.

//  Simple Cache Backend experiment.

const char kSimpleCacheBackendName[] = "Simple Cache for HTTP";

const char kSimpleCacheBackendDescription[] =
    "The Simple Cache for HTTP is a new cache. It relies on the filesystem "
    "for disk space allocation.";

//  Spelling feedback field trial.

const char kSpellingFeedbackFieldTrialName[] = "Spelling Feedback Field Trial";

const char kSpellingFeedbackFieldTrialDescription[] =
    "Enable the field trial for sending user feedback to spelling service.";

//  Web MIDI API.

const char kWebMidiName[] = "Web MIDI API";

const char kWebMidiDescription[] = "Enable Web MIDI API experimental support.";

//  Site per process mode

const char kSitePerProcessName[] = "Strict site isolation";

const char kSitePerProcessDescription[] =
    "Highly experimental security mode that ensures each renderer process "
    "contains pages from at most one site. In this mode, out-of-process "
    "iframes will be used whenever an iframe is cross-site.";

//  Top document isolation mode

const char kTopDocumentIsolationName[] = "Top document isolation";

const char kTopDocumentIsolationDescription[] =
    "Highly experimental performance mode where cross-site iframes are kept "
    "in a separate process from the top document. In this mode, iframes "
    "from different third-party sites will be allowed to share a process.";

//  Cross process guest frames isolation mode

const char kCrossProcessGuestViewIsolationName[] =
    "Cross process frames for guests";

const char kCrossProcessGuestViewIsolationDescription[] =
    "Highly experimental where guests such as &lt;webview> are implemented "
    "on the out-of-process iframe infrastructure.";

//  Task Scheduler

const char kBrowserTaskSchedulerName[] = "Task Scheduler";

const char kBrowserTaskSchedulerDescription[] =
    "Enables redirection of some task posting APIs to the task scheduler.";

//  Arc authorization

#if defined(OS_CHROMEOS)

const char kArcUseAuthEndpointName[] = "Android apps authorization point";

const char kArcUseAuthEndpointDescription[] =
    "Enable Android apps authorization point to automatic sign-in in OptIn "
    "flow.";

#endif  // defined(OS_CHROMEOS)

//  Autofill experiment flags

const char kSingleClickAutofillName[] = "Single-click autofill";

const char kSingleClickAutofillDescription[] =
    "Make autofill suggestions on initial mouse click on a form element.";

#if defined(OS_ANDROID)

const char kAutofillAccessoryViewName[] =
    "Autofill suggestions as keyboard accessory view";

const char kAutofillAccessoryViewDescription[] =
    "Shows Autofill suggestions on top of the keyboard rather than in a "
    "dropdown.";

#endif  // defined(OS_ANDROID)

//  Reader mode experiment flags

#if defined(OS_ANDROID)

const char kReaderModeHeuristicsName[] = "Reader Mode triggering";

const char kReaderModeHeuristicsDescription[] =
    "Determines what pages the Reader Mode button is shown on.";

const char kReaderModeHeuristicsMarkup[] = "With article structured markup";

const char kReaderModeHeuristicsAdaboost[] = "Appears to be an article";

const char kReaderModeHeuristicsAlwaysOff[] = "Never";

const char kReaderModeHeuristicsAlwaysOn[] = "Always";

#endif  // defined(OS_ANDROID)

//  Chrome home flags

#if defined(OS_ANDROID)

const char kChromeHomeName[] = "Chrome Home";

const char kChromeHomeDescription[] = "Enables Chrome Home on Android.";

const char kChromeHomeExpandButtonName[] = "Chrome Home Expand Button";

const char kChromeHomeExpandButtonDescription[] =
    "Enables the expand button for Chrome Home.";

#endif  // defined(OS_ANDROID)

//  In-Product Help flags

#if defined(OS_ANDROID)

const char kEnableIphDemoMode[] = "In-Product Help Demo Mode";

const char kEnableIphDemoModeDescription[] =
    "Enables In-Product Help demo mode on Android.";

#endif  // defined(OS_ANDROID)

//  Settings window flags

const char kSettingsWindowName[] = "Show settings in a window";

const char kSettingsWindowDescription[] =
    "Settings will be shown in a dedicated window instead of as a browser "
    "tab.";

//  Mixed content issue workaround flags

#if defined(OS_ANDROID)

//  Flag strings for seccomp-bpf sandbox flag.

const char kSeccompFilterSandboxAndroidName[] = "Seccomp-bpf renderer sandbox";

const char kSeccompFilterSandboxAndroidDescription[] =
    "Renderers will have a second-layer sandbox provided by seccomp-bpf. "
    "This requires kernel features only available on select Android "
    "versions.";

#endif  // defined(OS_ANDROID)

//  Extension Content Verification

const char kExtensionContentVerificationName[] =
    "Extension Content Verification";

const char kExtensionContentVerificationDescription[] =
    "This flag can be used to turn on verification that the contents of the "
    "files on disk for extensions from the webstore match what they're "
    "expected to be. This can be used to turn on this feature if it would "
    "not otherwise have been turned on, but cannot be used to turn it off "
    "(because this setting can be tampered with by malware).";

const char kExtensionContentVerificationBootstrap[] =
    "Bootstrap (get expected hashes, but do not enforce them)";

const char kExtensionContentVerificationEnforce[] =
    "Enforce (try to get hashes, and enforce them if successful)";

const char kExtensionContentVerificationEnforceStrict[] =
    "Enforce strict (hard fail if we can't get hashes)";

//  Built-in hotword detection display strings

const char kExperimentalHotwordHardwareName[] =
    "Simulated hardware 'Ok Google' features";

const char kExperimentalHotwordHardwareDescription[] =
    "Enables an experimental version of 'Ok Google' hotword detection "
    "features that have a hardware dependency.";

//  Message center strings

const char kMessageCenterAlwaysScrollUpUponRemovalName[] =
    "Experiments that message center always scroll up upon notification "
    "removal";

const char kMessageCenterAlwaysScrollUpUponRemovalDescription[] =
    "Enables experiment that message center always scroll up when a "
    "notification is removed.";

const char kCastStreamingHwEncodingName[] =
    "Cast Streaming hardware video encoding";

const char kCastStreamingHwEncodingDescription[] =
    "This option enables support in Cast Streaming for encoding video "
    "streams using platform hardware.";

const char kAllowInsecureLocalhost[] =
    "Allow invalid certificates for resources loaded from localhost.";

const char kAllowInsecureLocalhostDescription[] =
    "Allows requests to localhost over HTTPS even when an invalid "
    "certificate is presented.";

#if defined(OS_WIN) || defined(OS_MACOSX)

//  Tab discarding

const char kAutomaticTabDiscardingName[] = "Automatic tab discarding";

const char kAutomaticTabDiscardingDescription[] =
    "If enabled, tabs get automatically discarded from memory when the "
    "system memory is low. Discarded tabs are still visible on the tab "
    "strip and get reloaded when clicked on. Info about discarded tabs can "
    "be found at chrome://discards.";

#endif  // defined(OS_WIN) || defined(OS_MACOSX)

#if defined(OS_ANDROID)

const char kOfflineBookmarksName[] = "Enable offline bookmarks";

const char kOfflineBookmarksDescription[] =
    "Enable saving bookmarked pages for offline viewing.";

const char kNtpOfflinePagesName[] = "Enable NTP offline pages";

const char kNtpOfflinePagesDescription[] =
    "Enables badging of offline pages on the New Tab page. Only relevant if "
    "offline pages are enabled.";

const char kOfflinePagesAsyncDownloadName[] =
    R"*(Enables showing "DOWNLOAD PAGE LATER" button in error pages.)*";

const char kOfflinePagesAsyncDownloadDescription[] =
    R"*(Enables showing "DOWNLOAD PAGE LATER" button in error pages such )*"
    R"*(that the user can click on it to download the page later.)*";

const char kOfflinePagesSvelteConcurrentLoadingName[] =
    "Enables concurrent background loading on svelte.";

const char kOfflinePagesSvelteConcurrentLoadingDescription[] =
    "Enables concurrent background loading (or downloading) of pages on "
    "Android svelte (512MB RAM) devices. Otherwise, background loading will "
    "happen when the svelte device is idle.";

const char kOfflinePagesLoadSignalCollectingName[] =
    "Enables collecting load timing data for offline page snapshots.";

const char kOfflinePagesLoadSignalCollectingDescription[] =
    "Enables loading completeness data collection while writing an offline "
    "page.  This data is collected in the snapshotted offline page to allow "
    "data analysis to improve deciding when to make the offline snapshot.";

const char kOfflinePagesPrefetchingName[] =
    "Enables suggested offline pages to be prefetched.";

const char kOfflinePagesPrefetchingDescription[] =
    "Enables suggested offline pages to be prefetched, so useful content is "
    "available while offline.";

const char kOfflinePagesSharingName[] = "Enables offline pages to be shared.";

const char kOfflinePagesSharingDescription[] =
    "Enables the saved offline pages to be shared via other applications.";

const char kBackgroundLoaderForDownloadsName[] =
    "Enables background downloading of pages.";

const char kBackgroundLoaderForDownloadsDescription[] =
    "Enables downloading pages in the background in case page is not yet "
    "loaded in current tab.";

const char kNewBackgroundLoaderName[] =
    "Use background loader instead of prerenderer to load pages.";

const char kNewBackgroundLoaderDescription[] =
    "Use background loader instead of prerenderer to asynchronously "
    "download pages.";

const char kNtpPopularSitesName[] = "Show popular sites on the New Tab page";

const char kNtpPopularSitesDescription[] =
    "Pre-populate the New Tab page with popular sites.";

const char kNtpSwitchToExistingTabName[] =
    "Switch to an existing tab for New Tab Page suggestions.";

const char kNtpSwitchToExistingTabDescription[] =
    "When opening a suggested webpage from the New Tab Page, if a tab is "
    "already open for the suggestion, switch to that one instead of loading "
    "the suggestion in the new tab.";

const char kNtpSwitchToExistingTabMatchUrl[] = "Match by URL";

const char kNtpSwitchToExistingTabMatchHost[] = "Match by Hostname";

const char kUseAndroidMidiApiName[] = "Use Android Midi API";

const char kUseAndroidMidiApiDescription[] =
    "Use Android Midi API for WebMIDI (effective only with Android M+ "
    "devices).";

const char kWebPaymentsModifiersName[] = "Enable web payment modifiers";

const char kWebPaymentsModifiersDescription[] =
    "If the website provides modifiers in the payment request, show the "
    "custom total for each payment instrument, update the shopping cart "
    "when instruments are switched, and send modified payment method "
    "specific data to the payment app.";

#endif  // defined(OS_ANDROID)

#if defined(OS_WIN)

//  Exporting tracing events to ETW

const char kTraceExportEventsToEtwName[] =
    "Enable exporting of tracing events to ETW.";

const char kTraceExportEventsToEtwDesription[] =
    "If enabled, trace events will be exported to the Event Tracing for "
    "Windows (ETW) and can then be captured by tools such as UIForETW or "
    "Xperf.";

const char kMergeKeyCharEventsName[] =
    "Enable or disable merging merging the key event (WM_KEY*) with char "
    "event (WM_CHAR).";

const char kMergeKeyCharEventsDescription[] =
    "If disabled, Chrome will handle WM_KEY* and WM_CHAR separatedly.";

const char kUseWinrtMidiApiName[] = "Use Windows Runtime MIDI API";

const char kUseWinrtMidiApiDescription[] =
    "Use Windows Runtime MIDI API for WebMIDI (effective only on Windows 10 "
    "or later).";

#endif  // defined(OS_WIN)

#if defined(OS_ANDROID)

//  Data Use

//  Update Menu Item Flags

const char kUpdateMenuItemName[] = "Force show update menu item";

const char kUpdateMenuItemDescription[] =
    R"*(When enabled, an "Update Chrome" item will be shown in the app )*"
    R"*(menu.)*";

const char kUpdateMenuItemCustomSummaryDescription[] =
    "When this flag and the force show update menu item flag are enabled, a "
    "custom summary string will be displayed below the update menu item.";

const char kUpdateMenuItemCustomSummaryName[] =
    "Update menu item custom summary";

const char kUpdateMenuBadgeName[] = "Force show update menu badge";

const char kUpdateMenuBadgeDescription[] =
    "When enabled, an update badge will be shown on the app menu button.";

const char kSetMarketUrlForTestingName[] = "Set market URL for testing";

const char kSetMarketUrlForTestingDescription[] =
    "When enabled, sets the market URL for use in testing the update menu "
    "item.";

#endif  // defined(OS_ANDROID)

#if defined(OS_ANDROID)

const char kHerbPrototypeChoicesName[] = "Switch preferred flavor of Herb";

const char kHerbPrototypeChoicesDescription[] =
    "Switching this option changes which tab management prototype is being "
    "tested.";

const char kHerbPrototypeFlavorElderberry[] =
    "ELDERBERRY: All View Intents in CCT v2";

const char kEnableSpecialLocaleName[] =
    "Enable custom logic for special locales.";

const char kEnableSpecialLocaleDescription[] =
    "Enable custom logic for special locales. In this mode, Chrome might "
    "behave differently in some locales.";

//  WebApks

const char kEnableWebapk[] = "Enable improved add to Home screen";

const char kEnableWebapkDescription[] =
    R"*(Packages "Progressive Web Apps" so that they can integrate more )*"
    R"*(deeply with Android. A Chrome server is used to package sites. In )*"
    R"*(Chrome Canary and Chrome Dev, this requires “Untrusted )*"
    R"*(sources” to be enabled in Android security settings.)*";

#endif  // defined(OS_ANDROID)

const char kEnableBrotliName[] = "Brotli Content-Encoding.";

const char kEnableBrotliDescription[] =
    "Enable Brotli Content-Encoding support.";

const char kEnableWebfontsInterventionName[] =
    "New version of User Agent Intervention for WebFonts loading.";

const char kEnableWebfontsInterventionDescription[] =
    "Enable New version of User Agent Intervention for WebFonts loading.";

const char kEnableWebfontsInterventionV2ChoiceDefault[] = "Default";

const char kEnableWebfontsInterventionV2ChoiceEnabledWith2g[] = "Enabled: 2G";

const char kEnableWebfontsInterventionV2ChoiceEnabledWith3g[] = "Enabled: 3G";

const char kEnableWebfontsInterventionV2ChoiceEnabledWithSlow2g[] =
    "Enabled: Slow 2G";

const char kEnableWebfontsInterventionV2ChoiceDisabled[] = "Disabled";

const char kEnableWebfontsInterventionTriggerName[] =
    "Trigger User Agent Intervention for WebFonts loading always.";

const char kEnableWebfontsInterventionTriggerDescription[] =
    "Enable to trigger User Agent Intervention for WebFonts loading always. "
    "This flag affects only when the intervention is enabled.";

const char kEnableScrollAnchoringName[] = "Scroll Anchoring";

const char kEnableScrollAnchoringDescription[] =
    "Adjusts scroll position to prevent visible jumps when offscreen "
    "content changes.";

#if defined(OS_CHROMEOS)

const char kDisableNativeCupsName[] = "Native CUPS";

const char kDisableNativeCupsDescription[] =
    "Disable the use of the native CUPS printing backend.";

const char kEnableAndroidWallpapersAppName[] = "Android Wallpapers App";

const char kEnableAndroidWallpapersAppDescription[] =
    "Enables the Android Wallpapers App as the default Wallpaper App on "
    "Chrome OS.";

const char kEnableTouchSupportForScreenMagnifierName[] =
    "Touch support for screen magnifier";

const char kEnableTouchSupportForScreenMagnifierDescription[] =
    "Enables touch support for screen magnifier";

const char kEnableZipArchiverOnFileManagerName[] =
    "ZIP archiver for Drive";

const char kEnableZipArchiverOnFileManagerDescription[] =
    "Enable the ability to archive and unpack files on Drive in the Files app";

const char kCrOSComponentName[] = "Chrome OS Component";

const char kCrOSComponentDescription[] =
    "Enable the use of Chrome OS Component to download Chrome OS features "
    "on-demand as components.";

#endif  // defined(OS_CHROMEOS)

#if defined(OS_ANDROID)

const char kContentSuggestionsCategoryOrderName[] =
    "Default content suggestions category order (e.g. on NTP)";

const char kContentSuggestionsCategoryOrderDescription[] =
    "Set default order of content suggestion categories (e.g. on the NTP).";

const char kContentSuggestionsCategoryRankerName[] =
    "Content suggestions category ranker (e.g. on NTP)";

const char kContentSuggestionsCategoryRankerDescription[] =
    "Set category ranker to order categories of content suggestions (e.g. "
    "on the NTP).";

const char kEnableNtpSnippetsVisibilityName[] =
    "Make New Tab Page Snippets more visible.";

const char kEnableNtpSnippetsVisibilityDescription[] =
    "If enabled, the NTP snippets will become more discoverable with a "
    "larger portion of the first card above the fold.";

const char kEnableContentSuggestionsNewFaviconServerName[] =
    "Get favicons for content suggestions from a new server.";

const char kEnableContentSuggestionsNewFaviconServerDescription[] =
    "If enabled, the content suggestions (on the NTP) will get favicons from a "
    "new favicon server.";

const char kEnableNtpMostLikelyFaviconsFromServerName[] =
    "Download favicons for NTP tiles from Google.";

const char kEnableNtpMostLikelyFaviconsFromServerDescription[] =
    "If enabled, missing favicons for NTP tiles get downloaded from Google. "
    "This only applies to tiles that originate from synced history.";

const char kEnableContentSuggestionsSettingsName[] =
    "Show content suggestions settings.";

const char kEnableContentSuggestionsSettingsDescription[] =
    "If enabled, the content suggestions settings will be available from the "
    "main settings menu.";

const char kEnableContentSuggestionsShowSummaryName[] =
    "Show content suggestions summaries.";

const char kEnableContentSuggestionsShowSummaryDescription[] =
    "If enabled, the content suggestions summaries will be shown.";

const char kEnableNtpRemoteSuggestionsName[] =
    "Show server-side suggestions on the New Tab page";

const char kEnableNtpRemoteSuggestionsDescription[] =
    "If enabled, the list of content suggestions on the New Tab page (see "
    "#enable-ntp-snippets) will contain server-side suggestions (e.g., "
    "Articles for you). Furthermore, it allows to override the source used "
    "to retrieve these server-side suggestions.";

const char kEnableNtpRecentOfflineTabSuggestionsName[] =
    "Show recent offline tabs on the New Tab page";

const char kEnableNtpRecentOfflineTabSuggestionsDescription[] =
    "If enabled, the list of content suggestions on the New Tab page (see "
    "#enable-ntp-snippets) will contain pages that were captured offline "
    "during browsing (see #offlining-recent-pages)";

const char kEnableNtpAssetDownloadSuggestionsName[] =
    "Show asset downloads on the New Tab page";

const char kEnableNtpAssetDownloadSuggestionsDescription[] =
    "If enabled, the list of content suggestions on the New Tab page (see "
    "#enable-ntp-snippets) will contain assets (e.g. books, pictures, "
    "audio) that the user downloaded for later use.";

const char kEnableNtpOfflinePageDownloadSuggestionsName[] =
    "Show offline page downloads on the New Tab page";

const char kEnableNtpOfflinePageDownloadSuggestionsDescription[] =
    "If enabled, the list of content suggestions on the New Tab page (see "
    "#enable-ntp-snippets) will contain pages that the user downloaded for "
    "later use.";

const char kEnableNtpBookmarkSuggestionsName[] =
    "Show recently visited bookmarks on the New Tab page";

const char kEnableNtpBookmarkSuggestionsDescription[] =
    "If enabled, the list of content suggestions on the New Tab page (see "
    "#enable-ntp-snippets) will contain recently visited bookmarks.";

const char kEnableNtpPhysicalWebPageSuggestionsName[] =
    "Show Physical Web pages on the New Tab page";

const char kEnableNtpPhysicalWebPageSuggestionsDescription[] =
    "If enabled, the list of content suggestions on the New Tab page (see "
    "#enable-ntp-snippets) will contain pages that are available through "
    "Physical Web (see #enable-physical-web)";

const char kEnableNtpForeignSessionsSuggestionsName[] =
    "Show recent foreign tabs on the New Tab page";

const char kEnableNtpForeignSessionsSuggestionsDescription[] =
    "If enabled, the list of content suggestions on the New Tab page (see "
    "#enable-ntp-snippets) will contain recent foreign tabs.";

const char kEnableNtpSuggestionsNotificationsName[] =
    "Notify about new content suggestions available at the New Tab page";

const char kEnableNtpSuggestionsNotificationsDescription[] =
    "If enabled, notifications will inform about new content suggestions on "
    "the New Tab page (see #enable-ntp-snippets).";

const char kNtpCondensedLayoutName[] = "Condensed NTP layout";

const char kNtpCondensedLayoutDescription[] =
    "Show a condensed layout on the New Tab Page.";

const char kNtpCondensedTileLayoutName[] = "Condensed NTP tile layout";

const char kNtpCondensedTileLayoutDescription[] =
    "Show a condensed tile layout on the New Tab Page.";

const char kNtpGoogleGInOmniboxName[] = "Google G in New Tab Page omnibox";

const char kNtpGoogleGInOmniboxDescription[] =
    "Show a Google G in the omnibox on the New Tab Page.";

#endif  // defined(OS_ANDROID)

#if defined(OS_ANDROID)

const char kOffliningRecentPagesName[] =
    "Enable offlining of recently visited pages";

const char kOffliningRecentPagesDescription[] =
    "Enable storing recently visited pages locally for offline use. "
    "Requires Offline Pages to be enabled.";

const char kOfflinePagesCtName[] = "Enable Offline Pages CT features.";

const char kOfflinePagesCtDescription[] = "Enable Offline Pages CT features.";

#endif  // defined(OS_ANDROID)

#if defined(OS_ANDROID)

const char kEnableExpandedAutofillCreditCardPopupLayout[] =
    "Use expanded autofill credit card popup layout.";

const char kEnableExpandedAutofillCreditCardPopupLayoutDescription[] =
    "If enabled, displays autofill credit card popup using expanded "
    "layout.";

#endif  // defined(OS_ANDROID)

const char kEnableAutofillCreditCardLastUsedDateDisplay[] =
    "Display the last used date of a credit card in autofill.";

const char kEnableAutofillCreditCardLastUsedDateDisplayDescription[] =
    "If enabled, display the last used date of a credit card in autofill.";

const char kEnableAutofillCreditCardUploadCvcPrompt[] =
    "Enable requesting missing CVC during Autofill credit card upload";

const char kEnableAutofillCreditCardUploadCvcPromptDescription[] =
    "If enabled, requests missing CVC when offering to upload credit cards to "
    "Google Payments.";

#if !defined(OS_ANDROID) && defined(GOOGLE_CHROME_BUILD)

const char kGoogleBrandedContextMenuName[] =
    "Google branding in the context menu";

const char kGoogleBrandedContextMenuDescription[] =
    "Shows a Google icon next to context menu items powered by Google "
    "services.";

#endif  // !defined(OS_ANDROID) && defined(GOOGLE_CHROME_BUILD)

const char kEnableWebUsbName[] = "WebUSB";

const char kEnableWebUsbDescription[] = "Enable WebUSB support.";

const char kEnableGenericSensorName[] = "Generic Sensor";

const char kEnableGenericSensorDescription[] =
    "Enable sensor APIs based on Generic Sensor API.";

const char kFontCacheScalingName[] = "FontCache scaling";

const char kFontCacheScalingDescription[] =
    "Reuse a cached font in the renderer to serve different sizes of font "
    "for faster layout.";

const char kFramebustingName[] =
    "Framebusting requires same-origin or a user gesture";

const char kFramebustingDescription[] =
    "Don't permit an iframe to navigate the top level browsing context "
    "unless they are same-origin or the iframe is processing a user "
    "gesture.";

const char kVibrateRequiresUserGestureName[] =
    "Requiring user gesture for the Vibration API";

const char kVibrateRequiresUserGestureDescription[] =
    "Block the Vibration API if no user gesture has been received on "
    "the frame or any embedded frame.";

#if defined(OS_ANDROID)

const char kEnableVrShellName[] = "Enable Chrome VR.";

const char kEnableVrShellDescription[] =
    "Allow browsing with a VR headset if available for this device.";

#endif  // defined(OS_ANDROID)

//  Web payments

const char kWebPaymentsName[] = "Web Payments";

const char kWebPaymentsDescription[] =
    "Enable Web Payments API integration, a JavaScript API for merchants.";

#if defined(OS_ANDROID)

const char kEnableAndroidPayIntegrationV1Name[] = "Enable Android Pay v1";

const char kEnableAndroidPayIntegrationV1Description[] =
    "Enable integration with Android Pay using the first version of the "
    "API";

const char kEnableAndroidPayIntegrationV2Name[] = "Enable Android Pay v2";

const char kEnableAndroidPayIntegrationV2Description[] =
    "Enable integration with Android Pay using the second version of the "
    "API";

const char kEnableWebPaymentsSingleAppUiSkipName[] =
    "Enable Web Payments single app UI skip";

const char kEnableWebPaymentsSingleAppUiSkipDescription[] =
    "Enable Web Payments to skip showing its UI if the developer specifies "
    "a single app.";

const char kAndroidPaymentAppsName[] = "Android payment apps";

const char kAndroidPaymentAppsDescription[] =
    "Enable third party Android apps to integrate as payment apps";

const char kServiceWorkerPaymentAppsName[] = "Service Worker payment apps";

const char kServiceWorkerPaymentAppsDescription[] =
    "Enable Service Worker applications to integrate as payment apps";

#endif  // defined(OS_ANDROID)

const char kFeaturePolicyName[] = "Feature Policy";

const char kFeaturePolicyDescription[] =
    "Enables granting and removing access to features through the "
    "Feature-Policy HTTP header.";

//  Audio rendering mixing experiment strings.

const char kNewAudioRenderingMixingStrategyName[] =
    "New audio rendering mixing strategy";

const char kNewAudioRenderingMixingStrategyDescription[] =
    "Use the new audio rendering mixing strategy.";

//  Background video track disabling experiment strings.

const char kBackgroundVideoTrackOptimizationName[] =
    "Optimize background video playback.";

const char kBackgroundVideoTrackOptimizationDescription[] =
    "Disable video tracks when the video is played in the background to "
    "optimize performance.";

//  New remote playback pipeline experiment strings.

const char kNewRemotePlaybackPipelineName[] =
    "Enable the new remote playback pipeline.";

const char kNewRemotePlaybackPipelineDescription[] =
    "Enable the new pipeline for playing media element remotely via "
    "RemotePlayback API or native controls.";

//  Video fullscreen with orientation lock experiment strings.

const char kVideoFullscreenOrientationLockName[] =
    "Lock screen orientation when playing a video fullscreen.";

const char kVideoFullscreenOrientationLockDescription[] =
    "Lock the screen orientation of the device to match video orientation "
    "when a video goes fullscreen. Only on phones.";

//  Video rotate-to-fullscreen experiment strings.

const char kVideoRotateToFullscreenName[] =
    "Rotate-to-fullscreen gesture for videos.";

const char kVideoRotateToFullscreenDescription[] =
    "Enter/exit fullscreen when device is rotated to/from the orientation of "
    "the video. Only on phones.";

//  Expensive background timer throttling flag

const char kExpensiveBackgroundTimerThrottlingName[] =
    "Throttle expensive background timers";

const char kExpensiveBackgroundTimerThrottlingDescription[] =
    "Enables intervention to limit CPU usage of background timers to 1%.";

//  Enable default MediaSession flag

#if !defined(OS_ANDROID)

const char kEnableAudioFocusName[] = "Manage audio focus across tabs";

const char kEnableAudioFocusDescription[] =
    "Manage audio focus across tabs to improve the audio mixing.";

const char kEnableAudioFocusDisabled[] = "Disabled";

const char kEnableAudioFocusEnabled[] = "Enabled";

const char kEnableAudioFocusEnabledDuckFlash[] =
    "Enabled (Flash lowers volume when interrupted by other sound, "
    "experimental)";

#endif  // !defined(OS_ANDROID)

#if defined(OS_WIN)

const char kGdiTextPrinting[] = "GDI Text Printing";

const char kGdiTextPrintingDescription[] =
    "Use GDI to print text as simply text";

#endif  // defined(OS_WIN)

#if defined(OS_ANDROID)

const char kModalPermissionPromptsName[] = "Modal Permission Prompts";

const char kModalPermissionPromptsDescription[] =
    "Whether to use permission dialogs in place of permission infobars.";

#endif  // defined(OS_ANDROID)

#if !defined(OS_MACOSX)

const char kPermissionPromptPersistenceToggleName[] =
    "Persistence Toggle in Permission Prompts";

const char kPermissionPromptPersistenceToggleDescription[] =
    "Whether to display a persistence toggle in permission prompts.";

#endif  // !defined(OS_MACOSX)

#if defined(OS_ANDROID)

const char kNoCreditCardAbort[] = "No Credit Card Abort";

const char kNoCreditCardAbortDescription[] =
    "Whether or not the No Credit Card Abort is enabled.";

#endif  // defined(OS_ANDROID)

//  Consistent omnibox geolocation

#if defined(OS_ANDROID)

const char kEnableConsistentOmniboxGeolocationName[] =
    "Have consistent omnibox geolocation access.";

const char kEnableConsistentOmniboxGeolocationDescription[] =
    "Have consistent geolocation access between the omnibox and default "
    "search engine.";

#endif  // defined(OS_ANDROID)

//  Media Remoting chrome://flags strings

const char kMediaRemotingName[] = "Media Remoting during Cast Tab Mirroring";

const char kMediaRemotingDescription[] =
    "When Casting a tab to a remote device, enabling this turns on an "
    "optimization that forwards the content bitstream directly to the "
    "remote device when a video is fullscreened.";

//  Chrome OS component updates chrome://flags strings

const char kCrosCompUpdatesName[] = "Chrome OS Flash Component Updates";

const char kCrosCompUpdatesDescription[] =
    "Enable Flash component updates for Chrome OS.";

//  Play Services LSD permission prompt chrome://flags strings

#if defined(OS_ANDROID)

const char kLsdPermissionPromptName[] =
    "Location Settings Dialog Permission Prompt";

const char kLsdPermissionPromptDescription[] =
    "Whether to use the Google Play Services Location Settings Dialog "
    "permission dialog.";

#endif  // defined(OS_ANDROID)

#if defined(OS_WIN)

//  Custom draw the Windows 10 titlebar. crbug.com/505013

const char kWindows10CustomTitlebarName[] = "Custom-drawn Windows 10 Titlebar";

const char kWindows10CustomTitlebarDescription[] =
    "If enabled, Chrome will draw the titlebar and caption buttons instead "
    "of deferring to Windows.";

#endif  // defined(OS_WIN)

#if defined(OS_WIN)

const char kDisablePostscriptPrinting[] = "Disable PostScript Printing";

const char kDisablePostscriptPrintingDescription[] =
    "Disables PostScript generation when printing to PostScript capable "
    "printers, and uses EMF generation in its place.";

#endif  // defined(OS_WIN)

#if defined(OS_ANDROID)

const char kAiaFetchingName[] = "Intermediate Certificate Fetching";

const char kAiaFetchingDescription[] =
    "Enable intermediate certificate fetching when a server does not "
    "provide sufficient certificates to build a chain to a trusted root.";

#endif  // defined(OS_ANDROID)

//  Web MIDI supports MIDIManager dynamic instantiation chrome://flags strings

const char kEnableMidiManagerDynamicInstantiationName[] =
    "MIDIManager dynamic instantiation for Web MIDI.";

const char kEnableMidiManagerDynamicInstantiationDescription[] =
    "Enable MIDIManager dynamic instantiation for Web MIDI.";

//  Desktop iOS promotion chrome://flags strings

#if defined(OS_WIN)

const char kEnableDesktopIosPromotionsName[] = "Desktop to iOS promotions.";

const char kEnableDesktopIosPromotionsDescription[] =
    "Enable Desktop to iOS promotions, and allow users to see them if they "
    "are eligible.";

#endif  // defined(OS_WIN)

#if defined(OS_ANDROID)

const char kEnableCustomFeedbackUiName[] = "Enable Custom Feedback UI";

const char kEnableCustomFeedbackUiDescription[] =
    "Enables a custom feedback UI when submitting feedback through Google "
    "Feedback. Works with Google Play Services v10.2+";

#endif  // defined(OS_ANDROID)

#if defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_MACOSX) || \
    defined(OS_WIN)

const char kOmniboxEntitySuggestionsName[] = "Omnibox entity suggestions";

const char kOmniboxEntitySuggestionsDescription[] =
    "Enable receiving entity suggestions in Omnibox.";

const char kPauseBackgroundTabsName[] = "Pause background tabs";
const char kPauseBackgroundTabsDescription[] =
    "Pause timers in background tabs after 5 minutes on desktop.";

const char kEnableNewAppMenuIconName[] = "Enable the New App Menu Icon";
const char kEnableNewAppMenuIconDescription[] =
    "Use the new app menu icon with update notification animations.";

#endif  // defined(OS_CHROMEOS) || defined(OS_LINUX) || defined(OS_MACOSX) ||
        // defined(OS_WIN)

#if defined(OS_CHROMEOS)

const char kEnableChromevoxArcSupportName[] = "ChromeVox ARC support";

const char kEnableChromevoxArcSupportDescription[] =
    "Enable ChromeVox screen reader features in ARC";

#endif  // defined(OS_CHROMEOS)

const char kMojoLoadingName[] = "Use Mojo IPC for resource loading";

const char kMojoLoadingDescription[] =
    "Use Mojo IPC instead of traditional Chrome IPC for resource loading.";

#if defined(OS_ANDROID)

const char kUseNewDoodleApiName[] = "Use new Doodle API";

const char kUseNewDoodleApiDescription[] =
    "Enables the new API to fetch Doodles for the NTP.";

#endif  // defined(OS_ANDROID)

const char kDebugShortcutsDescription[] =
    "Enables additional keyboard shortcuts that are useful for debugging "
    "Ash.";

const char kMemoryAblationName[] = "Memory ablation experiment";
const char kMemoryAblationDescription[] =
    "Allocates extra memory in the browser process.";

#if defined(OS_ANDROID)

const char kEnableCustomContextMenuName[] = "Enable custom context menu";

const char kEnableCustomContextMenuDescription[] =
    "Enables a new context menu when a link, image, or video is pressed within "
    "Chrome.";

#endif  // defined(OS_ANDROID)

#if defined(OS_CHROMEOS)

//  File Manager

const char kVideoPlayerChromecastSupportName[] =
    "Experimental Chromecast support for Video Player";

const char kVideoPlayerChromecastSupportDescription[] =
    "This option enables experimental Chromecast support for Video Player "
    "app on ChromeOS.";

const char kNewZipUnpackerName[] = "New ZIP unpacker";

const char kNewZipUnpackerDescription[] =
    "New ZIP unpacker flow, based on the File System Provider API.";

const char kShowArcFilesAppName[] = "Show Android Files app";

const char kShowArcFilesAppDescription[] =
    "Show Android Files app in Chrome OS launcher. This is only effective "
    "on a device with access to Play Store.";

const char kOfficeEditingComponentAppName[] =
    "Office Editing for Docs, Sheets & Slides";

const char kOfficeEditingComponentAppDescription[] =
    "Office Editing for Docs, Sheets & Slides for testing purposes.";

const char kDisplayColorCalibrationName[] = "Color calibration of the display";

const char kDisplayColorCalibrationDescription[] =
    "Allow color calibration of the display if the display supports the "
    "feature.";

const char kMemoryPressureThresholdName[] =
    "Memory discard strategy for advanced pressure handling";

const char kMemoryPressureThresholdDescription[] =
    "Memory discarding strategy to use";

const char kConservativeThresholds[] =
    "Conservative memory pressure release strategy";

const char kAggressiveCacheDiscardThresholds[] =
    "Aggressive cache release strategy";

const char kAggressiveTabDiscardThresholds[] =
    "Aggressive tab release strategy";

const char kAggressiveThresholds[] =
    "Aggressive tab and cache release strategy";

const char kWakeOnPacketsName[] = "Wake On Packets";

const char kWakeOnPacketsDescription[] =
    "Enables waking the device based on the receipt of some network "
    "packets.";

const char kQuickUnlockPin[] = "Quick Unlock (PIN)";

const char kQuickUnlockPinDescription[] =
    "Enabling PIN quick unlock allows you to use a PIN to unlock your ChromeOS "
    "device on the lock screen after you have signed into your device.";

const char kQuickUnlockPinSignin[] = "Enable PIN when logging in.";

const char kQuickUnlockPinSigninDescription[] =
    "Enabling PIN allows you to use a PIN to sign in and unlock your ChromeOS "
    "device. After changing this flag PIN needs to be set up again.";

const char kQuickUnlockFingerprint[] = "Quick Unlock (Fingerprint)";

const char kQuickUnlockFingerprintDescription[] =
    "Enabling fingerprint quick unlock allows you to setup and use a "
    "fingerprint to unlock your Chromebook on the lock screen after you "
    "have signed into your device.";

const char kExperimentalAccessibilityFeaturesName[] =
    "Experimental accessibility features";

const char kExperimentalAccessibilityFeaturesDescription[] =
    "Enable additional accessibility features in the Settings page.";

const char kDisableSystemTimezoneAutomaticDetectionName[] =
    "SystemTimezoneAutomaticDetection policy support";

const char kDisableSystemTimezoneAutomaticDetectionDescription[] =
    "Disable system timezone automatic detection device policy.";

const char kEolNotificationName[] = "Disable Device End of Life notification.";

const char kEolNotificationDescription[] =
    "Disable Notifcation when Device is End of Life.";

//  Stylus strings

const char kForceEnableStylusToolsName[] = "Force enable stylus features";

const char kForceEnableStylusToolsDescription[] =
    "Forces display of the stylus tools menu in the shelf and the stylus "
    "section in settings, even if there is no attached stylus device.";

//  Network portal notification

const char kNetworkPortalNotificationName[] =
    "Notifications about captive portals";

const char kNetworkPortalNotificationDescription[] =
    "If enabled, notification is displayed when device is connected to a "
    "network behind captive portal.";

const char kMtpWriteSupportName[] = "MTP write support";

const char kMtpWriteSupportDescription[] =
    "MTP write support in File System API (and file manager). In-place "
    "editing operations are not supported.";

const char kCrosRegionsModeName[] = "Cros-regions load mode";

const char kCrosRegionsModeDescription[] =
    "This flag controls cros-regions load mode";

const char kCrosRegionsModeDefault[] = "Default";

const char kCrosRegionsModeOverride[] = "Override VPD values.";

const char kCrosRegionsModeHide[] = "Hide VPD values.";

const char kPrinterProviderSearchAppName[] =
    "Chrome Web Store Gallery app for printer drivers";

const char kPrinterProviderSearchAppDescription[] =
    "Enables Chrome Web Store Gallery app for printer drivers. The app "
    "searches Chrome Web Store for extensions that support printing to a "
    "USB printer with specific USB ID.";

const char kArcBootCompleted[] = "Load Android apps automatically";

const char kArcBootCompletedDescription[] =
    "Allow Android apps to start automatically after signing in.";

const char kEnableImeMenuName[] = "Enable opt-in IME menu";

const char kEnableImeMenuDescription[] =
    "Enable access to the new IME menu in the Language Settings page.";

const char kEnableEhvInputName[] =
    "Emoji, handwriting and voice input on opt-in IME menu";

const char kEnableEhvInputDescription[] =
    "Enable access to emoji, handwriting and voice input form opt-in IME "
    "menu.";

const char kEnableEncryptionMigrationName[] =
    "Enable encryption migration of user data";

const char kEnableEncryptionMigrationDescription[] =
    "If enabled and the device supports ARC, the user will be asked to update "
    "the encryption of user data when the user signs in.";

#endif  // #if defined(OS_CHROMEOS)

#if defined(OS_ANDROID)

const char kEnableCopylessPasteName[] = "App Indexing (Copyless Paste)";

const char kEnableCopylessPasteDescription[] =
    "Provide suggestions for text input, based on your recent context. For "
    "example, if you looked at a restaurant website and switched to the Maps "
    "app, the keyboard would offer the name of that restaurant as a suggestion "
    "to enter into the search bar. The data is indexed locally, and never sent "
    "to the server. It's disabled in incognito mode.";

const char kEnableWebNfcName[] = "WebNFC";

const char kEnableWebNfcDescription[] = "Enable WebNFC support.";

#endif  // defined(OS_ANDROID)

const char kEnableIdleTimeSpellCheckingName[] =
    "Enable idle time spell checker";

const char kEnableIdleTimeSpellCheckingDescription[] =
    "Make spell-checking code run only when the browser is idle, so that input "
    "latency is reduced, especially when editing long articles, emails, etc.";

#if defined(OS_ANDROID)

const char kEnableOmniboxClipboardProviderName[] =
    "Omnibox clipboard URL suggestions";

const char kEnableOmniboxClipboardProviderDescription[] =
    "Provide a suggestion of the URL stored in the clipboard (if any) upon "
    "focus in the omnibox.";

#endif  // defined(OS_ANDROID)

const char kAutoplayPolicyName[] = "Autoplay policy";

const char kAutoplayPolicyDescription[] =
    "Policy used when deciding if audio or video is allowed to autoplay.";

const char kAutoplayPolicyNoUserGestureRequired[] =
    "No user gesture is required.";

const char kAutoplayPolicyUserGestureRequired[] = "User gesture is required.";

const char kAutoplayPolicyUserGestureRequiredForCrossOrigin[] =
    "User gesture is required for cross-origin iframes.";

const char kOmniboxDisplayTitleForCurrentUrlName[] =
    "Include title for the current URL in the omnibox";

const char kOmniboxDisplayTitleForCurrentUrlDescription[] =
    "In the event that the omnibox provides suggestions on-focus, the URL of "
    "the current page is provided as the first suggestion without a title. "
    "Enabling this flag causes the title to be displayed.";

const char kOmniboxUIVerticalMarginName[] = "Omnibox UI Vertical Margin";

const char kOmniboxUIVerticalMarginDescription[] =
    "Changes the vertical margin in the Omnibox UI.";

const char kForceEffectiveConnectionTypeName[] =
    "Override effective connection type";

const char kForceEffectiveConnectionTypeDescription[] =
    "Overrides the effective connection type of the current connection "
    "returned by the network quality estimator.";

const char kEffectiveConnectionTypeUnknownDescription[] = "Unknown";
const char kEffectiveConnectionTypeOfflineDescription[] = "Offline";
const char kEffectiveConnectionTypeSlow2GDescription[] = "Slow 2G";
const char kEffectiveConnectionType2GDescription[] = "2G";
const char kEffectiveConnectionType3GDescription[] = "3G";
const char kEffectiveConnectionType4GDescription[] = "4G";

const char kEnableHeapProfilingName[] = "Heap profiling";

const char kEnableHeapProfilingDescription[] = "Enables heap profiling.";

const char kEnableHeapProfilingModePseudo[] = "Enabled (pseudo mode)";

const char kEnableHeapProfilingModeNative[] = "Enabled (native mode)";

const char kEnableHeapProfilingTaskProfiler[] = "Enabled (task mode)";

const char kUseSuggestionsEvenIfFewFeatureName[] =
    "Disable minimum for server-side tile suggestions on NTP.";

const char kUseSuggestionsEvenIfFewFeatureDescription[] =
    "Request server-side suggestions even if there are only very few of them "
    "and use them for tiles on the New Tab Page.";

const char kLocationHardReloadName[] =
    "Experimental change for Location.reload() to trigger a hard-reload.";

const char kLocationHardReloadDescription[] =
    "Enable an experimental change for Location.reload() to trigger a "
    "hard-reload.";

const char kCaptureThumbnailOnLoadFinishedName[] =
    "Capture page thumbnail on load finished";

const char kCaptureThumbnailOnLoadFinishedDescription[] =
    "Capture a page thumbnail (for use on the New Tab page) when the page load "
    "finishes, in addition to other times a thumbnail may be captured.";

#if defined(OS_WIN)

// Name and description of the flag that enables D3D v-sync.
const char kEnableD3DVsync[] = "D3D v-sync";
const char kEnableD3DVsyncDescription[] =
    "Produces v-sync signal by having D3D wait for vertical blanking interval "
    "to occur.";

#endif  // defined(OS_WIN)

#if !defined(OS_ANDROID) && !defined(OS_IOS)

const char kUseGoogleLocalNtpName[] = "Enable using the Google local NTP";
const char kUseGoogleLocalNtpDescription[] =
    "Use the local New Tab page if Google is the default search engine.";

const char kOneGoogleBarOnLocalNtpName[] =
    "Enable the OneGoogleBar on the local NTP";
const char kOneGoogleBarOnLocalNtpDescription[] =
    "Show a OneGoogleBar on the local New Tab page if Google is the default "
    "search engine.";

#endif  // !defined(OS_ANDROID) && !defined(OS_IOS)

#if defined(OS_MACOSX)
extern const char kMacRTLName[] = "Enable RTL";
extern const char kMacRTLDescription[] =
    "Mirrors the UI for RTL language users";
#endif

}  // namespace flag_descriptions
