blob: 58e3d0650297053b30c07f1685896b43d3bca2b3 [file] [log] [blame]
// Copyright 2018 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 "ash/constants/ash_features.h"
#include "ash/constants/ash_switches.h"
#include "base/command_line.h"
#include "base/feature_list.h"
#include "base/metrics/field_trial_params.h"
#include "base/system/sys_info.h"
#include "build/build_config.h"
#include "chromeos/constants/chromeos_features.h"
namespace ash {
namespace features {
namespace {
// Controls whether Instant Tethering supports hosts which use the background
// advertisement model.
const base::Feature kInstantTetheringBackgroundAdvertisementSupport{
"InstantTetheringBackgroundAdvertisementSupport",
base::FEATURE_ENABLED_BY_DEFAULT};
} // namespace
// Enables the UI and logic that minimizes the amount of time the device spends
// at full battery. This preserves battery lifetime.
const base::Feature kAdaptiveCharging{"AdaptiveCharging",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enable the logic to show the notifications for Adaptive Charging features.
// This is intended to be used by developers to test the UI aspect of the
// feature.
const base::Feature kAdaptiveChargingForTesting{
"AdaptiveChargingForTesting", base::FEATURE_DISABLED_BY_DEFAULT};
// Adjusts portrait mode split view to avoid the input field in the bottom
// window being occluded by the virtual keyboard.
const base::Feature kAdjustSplitViewForVK{"AdjustSplitViewForVK",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables the UI to support Ambient EQ if the device supports it.
// See https://crbug.com/1021193 for more details.
const base::Feature kAllowAmbientEQ{"AllowAmbientEQ",
base::FEATURE_DISABLED_BY_DEFAULT};
// Allows pairing to Bluetooth devices created by Poly. See b/228118615.
const base::Feature kAllowPolyDevicePairing{"AllowPolyDevicePairing",
base::FEATURE_ENABLED_BY_DEFAULT};
// Controls whether devices are updated before reboot after the first update.
const base::Feature kAllowRepeatedUpdates{"AllowRepeatedUpdates",
base::FEATURE_ENABLED_BY_DEFAULT};
// Always reinstall system web apps, instead of only doing so after version
// upgrade or locale changes.
const base::Feature kAlwaysReinstallSystemWebApps{
"ReinstallSystemWebApps", base::FEATURE_DISABLED_BY_DEFAULT};
// Shows settings for adjusting scroll acceleration/sensitivity for
// mouse/touchpad.
const base::Feature kAllowScrollSettings{"AllowScrollSettings",
base::FEATURE_DISABLED_BY_DEFAULT};
// Controls whether to enable Ambient mode feature.
const base::Feature kAmbientModeFeature{"ChromeOSAmbientMode",
base::FEATURE_ENABLED_BY_DEFAULT};
constexpr base::FeatureParam<bool> kAmbientModeCapturedOnPixelAlbumEnabled{
&kAmbientModeFeature, "CapturedOnPixelAlbumEnabled", false};
constexpr base::FeatureParam<bool> kAmbientModeCapturedOnPixelPhotosEnabled{
&kAmbientModeFeature, "CapturedOnPixelPhotosEnabled", false};
constexpr base::FeatureParam<bool> kAmbientModeCulturalInstitutePhotosEnabled{
&kAmbientModeFeature, "CulturalInstitutePhotosEnabled", false};
constexpr base::FeatureParam<bool> kAmbientModeDefaultFeedEnabled{
&kAmbientModeFeature, "DefaultFeedEnabled", false};
constexpr base::FeatureParam<bool> kAmbientModeEarthAndSpaceAlbumEnabled{
&kAmbientModeFeature, "EarthAndSpaceAlbumEnabled", true};
constexpr base::FeatureParam<bool> kAmbientModeFeaturedPhotoAlbumEnabled{
&kAmbientModeFeature, "FeaturedPhotoAlbumEnabled", true};
constexpr base::FeatureParam<bool> kAmbientModeFeaturedPhotosEnabled{
&kAmbientModeFeature, "FeaturedPhotosEnabled", true};
constexpr base::FeatureParam<bool> kAmbientModeFineArtAlbumEnabled{
&kAmbientModeFeature, "FineArtAlbumEnabled", false};
constexpr base::FeatureParam<bool> kAmbientModeGeoPhotosEnabled{
&kAmbientModeFeature, "GeoPhotosEnabled", true};
constexpr base::FeatureParam<bool> kAmbientModePersonalPhotosEnabled{
&kAmbientModeFeature, "PersonalPhotosEnabled", true};
constexpr base::FeatureParam<bool> kAmbientModeRssPhotosEnabled{
&kAmbientModeFeature, "RssPhotosEnabled", false};
constexpr base::FeatureParam<bool> kAmbientModeStreetArtAlbumEnabled{
&kAmbientModeFeature, "StreetArtAlbumEnabled", false};
// The "slideshow" theme is intentionally omitted here. For that, the developer
// can just disable |kAmbientModeAnimationFeature| entirely.
const base::FeatureParam<AmbientAnimationTheme>::Option
kAmbientModeAnimationThemeOptions[] = {
{AmbientAnimationTheme::kFeelTheBreeze, "feel_the_breeze"},
{AmbientAnimationTheme::kFloatOnBy, "float_on_by"}};
// When |kAmbientModeAnimationFeature| is enabled, specifies which animation
// theme to load. If |kAmbientModeAnimationFeature| is disabled, this is
// unused.
const base::FeatureParam<AmbientAnimationTheme> kAmbientModeAnimationThemeParam{
&kAmbientModeAnimationFeature, "animation_theme",
AmbientAnimationTheme::kFeelTheBreeze, &kAmbientModeAnimationThemeOptions};
// Controls whether to launch the animated screensaver (as opposed to the
// existing photo slideshow) when entering ambient mode.
const base::Feature kAmbientModeAnimationFeature{
"ChromeOSAmbientModeAnimation", base::FEATURE_ENABLED_BY_DEFAULT};
// Controls whether to allow Dev channel to use Prod server feature.
const base::Feature kAmbientModeDevUseProdFeature{
"ChromeOSAmbientModeDevChannelUseProdServer",
base::FEATURE_DISABLED_BY_DEFAULT};
// Controls whether to enable Ambient mode album selection with photo previews.
const base::Feature kAmbientModePhotoPreviewFeature{
"ChromeOSAmbientModePhotoPreview", base::FEATURE_ENABLED_BY_DEFAULT};
// Controls whether to enable ARC ADB sideloading support.
const base::Feature kArcAdbSideloadingFeature{
"ArcAdbSideloading", base::FEATURE_DISABLED_BY_DEFAULT};
// Controls whether files shared from ARC apps to Web Apps should be shared
// through the FuseBox service.
const base::Feature kArcFuseBoxFileSharing{"ArcFuseBoxFileSharing",
base::FEATURE_ENABLED_BY_DEFAULT};
// Controls whether to enable support for ARC Input Overlay Alpha.
const base::Feature kArcInputOverlay{"ArcInputOverlay",
base::FEATURE_ENABLED_BY_DEFAULT};
// Controls whether to enable support for ARC Input Overlay Beta.
const base::Feature kArcInputOverlayBeta{"ArcInputOverlayBeta",
base::FEATURE_DISABLED_BY_DEFAULT};
// Controls whether to enable support for ARC ADB sideloading for managed
// accounts and/or devices.
const base::Feature kArcManagedAdbSideloadingSupport{
"ArcManagedAdbSideloadingSupport", base::FEATURE_DISABLED_BY_DEFAULT};
// Controls whether to enable enhanced assistive emoji suggestions.
const base::Feature kAssistEmojiEnhanced{"AssistEmojiEnhanced",
base::FEATURE_DISABLED_BY_DEFAULT};
// Controls whether to enable assistive multi word suggestions.
const base::Feature kAssistMultiWord{"AssistMultiWord",
base::FEATURE_DISABLED_BY_DEFAULT};
// Controls whether to enable assistive multi word suggestions on an expanded
// list of surfaces.
const base::Feature kAssistMultiWordExpanded{"AssistMultiWordExpanded",
base::FEATURE_DISABLED_BY_DEFAULT};
// Controls whether to enable assistive personal information.
const base::Feature kAssistPersonalInfo{"AssistPersonalInfo",
base::FEATURE_DISABLED_BY_DEFAULT};
// Controls whether to suggest addresses in assistive personal information. This
// is only effective when AssistPersonalInfo flag is enabled.
const base::Feature kAssistPersonalInfoAddress{
"AssistPersonalInfoAddress", base::FEATURE_ENABLED_BY_DEFAULT};
// Controls whether to suggest emails in assistive personal information. This is
// only effective when AssistPersonalInfo flag is enabled.
const base::Feature kAssistPersonalInfoEmail{"AssistPersonalInfoEmail",
base::FEATURE_ENABLED_BY_DEFAULT};
// Controls whether to suggest names in assistive personal information. This is
// only effective when AssistPersonalInfo flag is enabled.
const base::Feature kAssistPersonalInfoName{"AssistPersonalInfoName",
base::FEATURE_ENABLED_BY_DEFAULT};
// Controls whether to suggest phone numbers in assistive personal information.
// This is only effective when AssistPersonalInfo flag is enabled.
const base::Feature kAssistPersonalInfoPhoneNumber{
"AssistPersonalInfoPhoneNumber", base::FEATURE_ENABLED_BY_DEFAULT};
const base::Feature kAssistantNativeIcons{"AssistantNativeIcons",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables the Audio Settings Page in System Settings, which allows
// audio configuration. crbug.com/1092970.
const base::Feature kAudioSettingsPage{"AudioSettingsPage",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables the Audio URL that is designed to help user debug or troubleshoot
// common issues on ChromeOS.
const base::Feature kAudioUrl{"AudioUrl", base::FEATURE_DISABLED_BY_DEFAULT};
// Enables the Auto Night Light feature which sets the default schedule type to
// sunset-to-sunrise until the user changes it to something else. This feature
// is not exposed to the end user, and is enabled only via cros_config for
// certain devices.
const base::Feature kAutoNightLight{"AutoNightLight",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables or disables auto screen-brightness adjustment when ambient light
// changes.
const base::Feature kAutoScreenBrightness{"AutoScreenBrightness",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables or disables extended autocomplete results.
const base::Feature kAutocompleteExtendedSuggestions{
"AutocompleteExtendedSuggestions", base::FEATURE_DISABLED_BY_DEFAULT};
// Enables params tuning experiment for autocorrect on ChromeOS.
const base::Feature kAutocorrectParamsTuning{"AutocorrectParamsTuning",
base::FEATURE_DISABLED_BY_DEFAULT};
// If enabled, the autozoom nudge shown prefs will be reset at the start of
// each new user session.
const base::Feature kAutozoomNudgeSessionReset{
"AutozoomNudgeSessionReset", base::FEATURE_DISABLED_BY_DEFAULT};
// Enables loading avatar images from the cloud on ChromeOS.
const base::Feature kAvatarsCloudMigration{"AvatarsCloudMigration",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables the persistent desks bar at the top of the screen in clamshell mode
// when there are more than one desk.
const base::Feature kBentoBar{"BentoBar", base::FEATURE_DISABLED_BY_DEFAULT};
// Enables or disables the usage of fixed Bluetooth A2DP packet size to improve
// audio performance in noisy environment.
const base::Feature kBluetoothFixA2dpPacketSize{
"BluetoothFixA2dpPacketSize", base::FEATURE_DISABLED_BY_DEFAULT};
// Enables or disables the Bluetooth Quality Report feature.
const base::Feature kBluetoothQualityReport{"BluetoothQualityReport",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables or disables the ChromeOS Bluetooth Revamp, which updates Bluetooth
// system UI and related infrastructure. See https://crbug.com/1010321.
const base::Feature kBluetoothRevamp{"BluetoothRevamp",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables or disables Bluetooth WBS microphone be selected as default
// audio input option.
const base::Feature kBluetoothWbsDogfood{"BluetoothWbsDogfood",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enable Big GL when using Borealis.
const base::Feature kBorealisBigGl{"BorealisBigGl",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enable experimental disk management changes for Borealis.
const base::Feature kBorealisDiskManagement{"BorealisDiskManagement",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enable borealis on this device. This won't necessarily allow it, since you
// might fail subsequent checks.
const base::Feature kBorealisPermitted{"BorealisPermitted",
base::FEATURE_DISABLED_BY_DEFAULT};
// Force the client to be on its beta version. If not set, the client will be on
// its stable version.
const base::Feature kBorealisForceBetaClient{"BorealisForceBetaClient",
base::FEATURE_DISABLED_BY_DEFAULT};
// Prevent Borealis' client from exercising ChromeOS integrations, in this mode
// it functions more like the linux client.
const base::Feature kBorealisLinuxMode{"BorealisLinuxMode",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enable storage ballooning for Borealis. This takes precedence over
// kBorealisDiskManagement.
const base::Feature kBorealisStorageBallooning{
"BorealisStorageBallooning", base::FEATURE_DISABLED_BY_DEFAULT};
// Enable TermsOfServiceURL policy for managed users.
// https://crbug.com/1221342
const base::Feature kManagedTermsOfService{"ManagedTermsOfService",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enable or disable calendar view from the system tray. Also enables the system
// tray to show date in the shelf when the screen is sufficiently large.
const base::Feature kCalendarView{"CalendarView",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enable or disable debug mode for CalendarModel.
const base::Feature kCalendarModelDebugMode{"CalendarModelDebugMode",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables to allow using document scanning feature via DLC in the camera app.
const base::Feature kCameraAppDocScanDlc{"CameraAppDocScanDlc",
base::FEATURE_DISABLED_BY_DEFAULT};
// Controls whether the camera privacy switch toasts and notification should be
// displayed.
const base::Feature kCameraPrivacySwitchNotifications{
"CameraPrivacySwitchNotifications", base::FEATURE_ENABLED_BY_DEFAULT};
// If enabled, allow eSIM installation bypass the non-cellular internet
// connectivity check.
const base::Feature kCellularBypassESimInstallationConnectivityCheck{
"CellularBypassESimInstallationConnectivityCheck",
base::FEATURE_DISABLED_BY_DEFAULT};
const base::Feature kCellularCustomAPNProfiles{
"CellularCustomAPNProfiles", base::FEATURE_DISABLED_BY_DEFAULT};
// If enabled, the value of |kCellularUseAttachApn| should have no effect and
// and the LTE attach APN configuration will not be sent to the modem. This
// flag exists because the |kCellularUseAttachApn| flag can be enabled
// by command-line arguments via board overlays which takes precedence over
// server-side field trial config, which may be needed to turn off the Attach
// APN feature.
const base::Feature kCellularForbidAttachApn{"CellularForbidAttachApn",
base::FEATURE_DISABLED_BY_DEFAULT};
// If enabled, send the LTE attach APN configuration to the modem.
const base::Feature kCellularUseAttachApn{"CellularUseAttachApn",
base::FEATURE_ENABLED_BY_DEFAULT};
// If enabled, use second the Euicc that is exposed by Hermes in Cellular Setup
// and Settings.
const base::Feature kCellularUseSecondEuicc{"CellularUseSecondEuicc",
base::FEATURE_DISABLED_BY_DEFAULT};
// If enabled, Multiple scraped passwords should be checked against password in
// cryptohome.
const base::Feature kCheckPasswordsAgainstCryptohomeHelper{
"CheckPasswordsAgainstCryptohomeHelper", base::FEATURE_DISABLED_BY_DEFAULT};
// If enabled, a blue new nudge will show on the context menu option for
// clipboard history.
const base::Feature kClipboardHistoryContextMenuNudge{
"ClipboardHistoryContextMenuNudge", base::FEATURE_DISABLED_BY_DEFAULT};
// If enabled, the clipboard nudge shown prefs will be reset at the start of
// each new user session.
const base::Feature kClipboardHistoryNudgeSessionReset{
"ClipboardHistoryNudgeSessionReset", base::FEATURE_DISABLED_BY_DEFAULT};
// If enabled, pasting a clipboard history item will cause that item to move to
// the top of the history list.
const base::Feature kClipboardHistoryReorder{"ClipboardHistoryReorder",
base::FEATURE_DISABLED_BY_DEFAULT};
// If enabled and account falls under the new deal, will be allowed to toggle
// auto updates.
const base::Feature kConsumerAutoUpdateToggleAllowed{
"ConsumerAutoUpdateToggleAllowed", base::FEATURE_DISABLED_BY_DEFAULT};
// Enable or disable the changes of WMP features for CrosNext project.
const base::Feature kCrosNextWMP{"CrosNextWMP",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables Privacy Hub for ChromeOS.
const base::Feature kCrosPrivacyHub{"CrosPrivacyHub",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables future features for Privacy Hub for ChromeOS.
const base::Feature kCrosPrivacyHubFuture{"CrosPrivacyHubFuture",
base::FEATURE_DISABLED_BY_DEFAULT};
// If enabled, replaces the `DeskMiniView` legacy desk close button and behavior
// with a button to close desk and windows and a button to combine desks (the
// legacy behavior).
const base::Feature kDesksCloseAll{"DesksCloseAll",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables contextual nudges for gesture education.
const base::Feature kContextualNudges{"ContextualNudges",
base::FEATURE_ENABLED_BY_DEFAULT};
const base::Feature kCrosLanguageSettingsUpdateJapanese{
"CrosLanguageSettingsUpdateJapanese", base::FEATURE_DISABLED_BY_DEFAULT};
// Enables or disables Crosh System Web App. When enabled, crosh (ChromeOS
// Shell) will run as a tabbed System Web App rather than a normal browser tab.
const base::Feature kCroshSWA{"CroshSWA", base::FEATURE_ENABLED_BY_DEFAULT};
// Enables upgrading the crostini container to debian bullseye.
const base::Feature kCrostiniBullseyeUpgrade{"CrostiniBullseyeUpgrade",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables or disables Crostini Disk Resizing.
const base::Feature kCrostiniDiskResizing{"CrostiniDiskResizing",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables or disables Crostini GPU support.
// Note that this feature can be overridden by login_manager based on
// whether a per-board build sets the USE virtio_gpu flag.
// Refer to: chromiumos/src/platform2/login_manager/chrome_setup.cc
const base::Feature kCrostiniGpuSupport{"CrostiniGpuSupport",
base::FEATURE_DISABLED_BY_DEFAULT};
// Force enable recreating the LXD DB at LXD launch.
const base::Feature kCrostiniResetLxdDb{"CrostiniResetLxdDb",
base::FEATURE_DISABLED_BY_DEFAULT};
// Do we use the default LXD version or try LXD 4?
const base::Feature kCrostiniUseLxd4{"CrostiniUseLxd4",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables experimental UI creating and managing multiple Crostini containers.
const base::Feature kCrostiniMultiContainer{"CrostiniMultiContainer",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables or disables Crostini IME support.
const base::Feature kCrostiniImeSupport{"CrostiniImeSupport",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables or disables Crostini Virtual Keyboard support.
const base::Feature kCrostiniVirtualKeyboardSupport{
"CrostiniVirtualKeyboardSupport", base::FEATURE_DISABLED_BY_DEFAULT};
// Enables or disables generic guest OS installer infrastructure.
const base::Feature kGuestOSGenericInstaller{"GuestOSGenericInstaller",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables or disables support for third party VMs.
const base::Feature kBruschetta{"Bruschetta",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables or disables always using device-activity-status data to filter
// eligible host phones.
const base::Feature kCryptAuthV2AlwaysUseActiveEligibleHosts{
"kCryptAuthV2AlwaysUseActiveEligibleHosts",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables or disables using Cryptauth's GetDevicesActivityStatus API.
const base::Feature kCryptAuthV2DeviceActivityStatus{
"CryptAuthV2DeviceActivityStatus", base::FEATURE_ENABLED_BY_DEFAULT};
// Enables or disables use of the connectivity status from Cryptauth's
// GetDevicesActivityStatus API to sort devices.
const base::Feature kCryptAuthV2DeviceActivityStatusUseConnectivity{
"CryptAuthV2DeviceActivityStatusUseConnectivity",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables or disables use of last activity time to deduplicate eligible host
// phones in multidevice setup dropdown list. We assume that different copies
// of same device share the same last activity time but different last update
// time.
const base::Feature kCryptAuthV2DedupDeviceLastActivityTime{
"CryptAuthV2DedupDeviceLastActivityTime", base::FEATURE_ENABLED_BY_DEFAULT};
// Enables or disables the CryptAuth v2 DeviceSync flow. Regardless of this
// flag, v1 DeviceSync will continue to operate until it is disabled via the
// feature flag kDisableCryptAuthV1DeviceSync.
const base::Feature kCryptAuthV2DeviceSync{"CryptAuthV2DeviceSync",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables or disables the CryptAuth v2 Enrollment flow.
const base::Feature kCryptAuthV2Enrollment{"CryptAuthV2Enrollment",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables the Cryptohome recovery feature, which allows users to recover access
// to their profile and Cryptohome after performing an online authentication.
const base::Feature kCryptohomeRecoveryFlow{"CryptohomeRecoveryFlow",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables the UI for the cryptohome recovery feature:
// - New UI for Gaia password changed screen.
// - Adds a "forgot password" button to the error bubble that opens when the
// user fails to enter their correct password.
const base::Feature kCryptohomeRecoveryFlowUI{
"CryptohomeRecoveryFlowUI", base::FEATURE_DISABLED_BY_DEFAULT};
// Enables the UI to enable or disable cryptohome recovery in the settings
// page. Also guards the wiring of cryptohome recovery settings to the
// cryptohome backend.
const base::Feature kCryptohomeRecoverySetup{"CryptohomeRecoverySetup",
base::FEATURE_DISABLED_BY_DEFAULT};
const base::Feature kDemoModeSWA{"DemoModeSWA",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables or disables Assistant stylus features, including the
// Assistant option in the stylus palette tool and the Assistant screen
// selection flow triggered by the stylus long press action.
const base::Feature kDeprecateAssistantStylusFeatures{
"DeprecateAssistantStylusFeatures", base::FEATURE_DISABLED_BY_DEFAULT};
// Enables or disables Sync for desk templates on ChromeOS.
const base::Feature kDeskTemplateSync{"DeskTemplateSync",
base::FEATURE_ENABLED_BY_DEFAULT};
const base::Feature kDesksTemplates{"DesksTemplates",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables diacritics on longpress on the physical keyboard.
const base::Feature kDiacriticsOnPhysicalKeyboardLongpress{
"DiacriticsOnPhysicalKeyboardLongpress", base::FEATURE_DISABLED_BY_DEFAULT};
// Disables the CryptAuth v1 DeviceSync flow. Note: During the first phase
// of the v2 DeviceSync rollout, v1 and v2 DeviceSync run in parallel. This flag
// is needed to disable the v1 service during the second phase of the rollout.
// kCryptAuthV2DeviceSync should be enabled before this flag is flipped.
const base::Feature kDisableCryptAuthV1DeviceSync{
"DisableCryptAuthV1DeviceSync", base::FEATURE_ENABLED_BY_DEFAULT};
// Feature flag for disable/enable Lacros TTS support.
// The flag is enabled by default so that the feature is disabled before it is
// completedly implemented.
const base::Feature kDisableLacrosTtsSupport{"DisableLacrosTtsSupport",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables indicators to hint where displays are connected.
const base::Feature kDisplayAlignAssist{"DisplayAlignAssist",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables the docked (a.k.a. picture-in-picture) magnifier.
// TODO(afakhry): Remove this after the feature is fully launched.
// https://crbug.com/709824.
const base::Feature kDockedMagnifier{"DockedMagnifier",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables dragging an unpinned open app to pinned app side to pin.
const base::Feature kDragUnpinnedAppToPin{"DragUnpinnedAppToPin",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables dragging and dropping an existing window to new desk in overview.
const base::Feature kDragWindowToNewDesk{"DragWindowToNewDesk",
base::FEATURE_ENABLED_BY_DEFAULT};
// If enabled, DriveFS will be used for Drive sync.
const base::Feature kDriveFs{"DriveFS", base::FEATURE_ENABLED_BY_DEFAULT};
// Enables duplex native messaging between DriveFS and extensions.
const base::Feature kDriveFsBidirectionalNativeMessaging{
"DriveFsBidirectionalNativeMessaging", base::FEATURE_DISABLED_BY_DEFAULT};
// Enables DriveFS' experimental local files mirroring functionality.
const base::Feature kDriveFsMirroring{"DriveFsMirroring",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables access to Chrome's Network Service for DriveFS.
const base::Feature kDriveFsChromeNetworking{"DriveFsChromeNetworking",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables authenticating to Wi-Fi networks using EAP-GTC.
const base::Feature kEapGtcWifiAuthentication{
"EapGtcWifiAuthentication", base::FEATURE_DISABLED_BY_DEFAULT};
// Enables the System Web App (SWA) version of Eche.
const base::Feature kEcheSWA{"EcheSWA", base::FEATURE_DISABLED_BY_DEFAULT};
// Enables the Debug Mode of Eche.
const base::Feature kEcheSWADebugMode{"EcheSWADebugMode",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables background blur for the app list, shelf, unified system tray,
// autoclick menu, etc. Also enables the AppsGridView mask layer, slower devices
// may have choppier app list animations while in this mode. crbug.com/765292.
const base::Feature kEnableBackgroundBlur{"EnableBackgroundBlur",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables some trials aimed at improving user experiencing when using the
// trackpad to switch desks.
// TODO(https://crbug.com/1191545): Remove this after the feature is launched.
const base::Feature kEnableDesksTrackpadSwipeImprovements{
"EnableDesksTrackpadSwipeImprovements", base::FEATURE_ENABLED_BY_DEFAULT};
// Enables the DNS proxy service providing support split and secure DNS
// for ChromeOS.
const base::Feature kEnableDnsProxy{"EnableDnsProxy",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables external keyboard testers in the diagnostics app.
const base::Feature kEnableExternalKeyboardsInDiagnostics{
"EnableExternalKeyboardsInDiagnosticsApp",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables setting the device hostname.
const base::Feature kEnableHostnameSetting{"EnableHostnameSetting",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables selecting IKEv2 as the VPN provider type when creating a VPN network.
// This will only take effect when running a compatible kernel, see
// crbug/1275421.
const base::Feature kEnableIkev2Vpn{"EnableIkev2Vpn",
base::FEATURE_ENABLED_BY_DEFAULT};
// If enabled, the input device cards will be shown in the diagnostics app.
const base::Feature kEnableInputInDiagnosticsApp{
"EnableInputInDiagnosticsApp", base::FEATURE_DISABLED_BY_DEFAULT};
// Enables or disables keyboard backlight toggle.
const base::Feature kEnableKeyboardBacklightToggle{
"EnableKeyboardBacklightToggle", base::FEATURE_ENABLED_BY_DEFAULT};
// Login WebUI was always loaded for legacy reasons even when it was not needed.
// When enabled, it will make login WebUI loaded only before showing it.
const base::Feature kEnableLazyLoginWebUILoading{
"EnableLazyLoginWebUILoading", base::FEATURE_DISABLED_BY_DEFAULT};
// Enables LocalSearchService to be initialized.
const base::Feature kEnableLocalSearchService{"EnableLocalSearchService",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables using DiagnosticsLogController to manage lifetime of logs for the
// diagnostics app routines, network events, and system snapshot.
// TODO(ashleydp): Remove this after the feature is launched.
const base::Feature kEnableLogControllerForDiagnosticsApp{
"EnableLogControllerForDiagnosticsApp", base::FEATURE_ENABLED_BY_DEFAULT};
// If enabled, the networking cards will be shown in the diagnostics app.
const base::Feature kEnableNetworkingInDiagnosticsApp{
"EnableNetworkingInDiagnosticsApp", base::FEATURE_ENABLED_BY_DEFAULT};
// Enables OAuth support when printing via the IPP protocol.
const base::Feature kEnableOAuthIpp{"EnableOAuthIpp",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables the OOBE ChromeVox hint dialog and announcement feature.
const base::Feature kEnableOobeChromeVoxHint{"EnableOobeChromeVoxHint",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables Kiosk enrollment option in OOBE.
const base::Feature kEnableKioskEnrollmentInOobe{
"EnableKioskEnrollmentInOobe", base::FEATURE_ENABLED_BY_DEFAULT};
// Enables Kiosk UI in Login screen.
const base::Feature kEnableKioskLoginScreen{"EnableKioskLoginScreen",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables skipping of network screen.
const base::Feature kEnableOobeNetworkScreenSkip{
"EnableOobeNetworkScreenSkip", base::FEATURE_ENABLED_BY_DEFAULT};
// Enables skipping of network screen.
const base::Feature kEnableOobeThemeSelection{"EnableOobeThemeSelection",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables showing notification after the password change for SAML users.
const base::Feature kEnableSamlNotificationOnPasswordChangeSuccess{
"EnableSamlNotificationOnPasswordChangeSuccess",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables SAML re-authentication on the lock screen once the sign-in time
// limit expires.
const base::Feature kEnableSamlReauthenticationOnLockscreen{
"EnableSamlReauthenticationOnLockScreen", base::FEATURE_ENABLED_BY_DEFAULT};
const base::Feature kEnableSavedDesks{"EnableSavedDesks",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables all registered system web apps, regardless of their respective
// feature flags.
const base::Feature kEnableAllSystemWebApps{"EnableAllSystemWebApps",
base::FEATURE_DISABLED_BY_DEFAULT};
// If enabled, touchpad cards will be shown in the diagnostics app's input
// section.
const base::Feature kEnableTouchpadsInDiagnosticsApp{
"EnableTouchpadsInDiagnosticsApp", base::FEATURE_DISABLED_BY_DEFAULT};
// If enabled, touchscreen cards will be shown in the diagnostics app's input
// section.
const base::Feature kEnableTouchscreensInDiagnosticsApp{
"EnableTouchscreensInDiagnosticsApp", base::FEATURE_DISABLED_BY_DEFAULT};
// Enforces Ash extension keep-list. Only the extensions/Chrome apps in the
// keep-list are enabled in Ash.
const base::Feature kEnforceAshExtensionKeeplist{
"EnforceAshExtensionKeeplist", base::FEATURE_ENABLED_BY_DEFAULT};
// Enables Device End Of Lifetime warning notifications.
const base::Feature kEolWarningNotifications{"EolWarningNotifications",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enable or disable support for touchpad with haptic feedback.
const base::Feature kExoHapticFeedbackSupport("ExoHapticFeedbackSupport",
base::FEATURE_ENABLED_BY_DEFAULT);
// Enable or disable bubble showing when an application gains any UI lock.
const base::Feature kExoLockNotification{"ExoLockNotification",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enable or disable use of ordinal (unaccelerated) motion by Exo clients.
const base::Feature kExoOrdinalMotion{"ExoOrdinalMotion",
base::FEATURE_DISABLED_BY_DEFAULT};
// Allows RGB Keyboard to test new animations/patterns.
const base::Feature kExperimentalRgbKeyboardPatterns{
"ExperimentalRgbKeyboardPatterns", base::FEATURE_DISABLED_BY_DEFAULT};
// Enables policy that controls feature to allow Family Link accounts on school
// owned devices.
const base::Feature kFamilyLinkOnSchoolDevice{"FamilyLinkOnSchoolDevice",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables the Fast Pair feature.
const base::Feature kFastPair{"FastPair", base::FEATURE_DISABLED_BY_DEFAULT};
// Sets Fast Pair scanning to low power mode.
const base::Feature kFastPairLowPower{"FastPairLowPower",
base::FEATURE_DISABLED_BY_DEFAULT};
// The amount of seconds we should scan while in low power mode before stopping.
const base::FeatureParam<double> kFastPairLowPowerActiveSeconds{
&kFastPairLowPower, "active-seconds", 2};
// The amount of seconds we should pause scanning while in low power mode.
const base::FeatureParam<double> kFastPairLowPowerInactiveSeconds{
&kFastPairLowPower, "inactive-seconds", 3};
// Allows Fast Pair to use software scanning on devices which don't support
// hardware offloading of BLE scans.
const base::Feature kFastPairSoftwareScanning{
"FastPairSoftwareScanning", base::FEATURE_DISABLED_BY_DEFAULT};
// Enables the "Subsequent Pairing" Fast Pair scenario in Bluetooth Settings
// and Quick Settings.
const base::Feature kFastPairSubsequentPairingUX{
"FastPairSubsequentPairingUX", base::FEATURE_DISABLED_BY_DEFAULT};
// Enables the "Saved Devices" Fast Pair page in scenario in Bluetooth Settings.
const base::Feature kFastPairSavedDevices{"FastPairSavedDevices",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables the "Saved Devices" Fast Pair strict interpretation of opt-in status,
// meaning that a user's preferences determine if retroactive pairing and
// subsequent pairing scenarios are enabled.
const base::Feature kFastPairSavedDevicesStrictOptIn{
"FastPairSavedDevicesStrictOptIn", base::FEATURE_DISABLED_BY_DEFAULT};
// Enables experimental UI features in Files app.
const base::Feature kFilesAppExperimental{"FilesAppExperimental",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enable the simple archive extraction.
// https://crbug.com/953256
const base::Feature kFilesExtractArchive{"FilesExtractArchive",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables the System Web App (SWA) version of file manager.
const base::Feature kFilesSWA{"FilesSWA", base::FEATURE_ENABLED_BY_DEFAULT};
// Enables partitioning of removable disks in file manager.
const base::Feature kFilesSinglePartitionFormat{
"FilesSinglePartitionFormat", base::FEATURE_DISABLED_BY_DEFAULT};
// Enable files app trash.
const base::Feature kFilesTrash{"FilesTrash",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables opening Office files located in Files app Drive in Web Drive.
const base::Feature kFilesWebDriveOffice{"FilesWebDriveOffice",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables filters in Files app Recents view.
const base::Feature kFiltersInRecents{"FiltersInRecents",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables filters in Files app Recents view V2.
const base::Feature kFiltersInRecentsV2{"FiltersInRecentsV2",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables the firmware updater app.
const base::Feature kFirmwareUpdaterApp = {"FirmwareUpdaterApp",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables or disables Floating Workspace feature on ChromeOS
const base::Feature kFloatingWorkspace{"FloatingWorkspace",
base::FEATURE_DISABLED_BY_DEFAULT};
// Controls whether to allow keeping full screen mode after unlock.
const base::Feature kFullscreenAfterUnlockAllowed = {
"FullscreenAfterUnlockAllowed", base::FEATURE_ENABLED_BY_DEFAULT};
// When enabled, there will be an alert bubble showing up when the device
// returns from low brightness (e.g., sleep, closed cover) without a lock screen
// and the active window is in fullscreen.
// TODO(https://crbug.com/1107185): Remove this after the feature is launched.
const base::Feature kFullscreenAlertBubble{"EnableFullscreenBubble",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enable ChromeOS FuseBox service.
const base::Feature kFuseBox{"FuseBox", base::FEATURE_ENABLED_BY_DEFAULT};
// Debugging UI for ChromeOS FuseBox service.
const base::Feature kFuseBoxDebug{"FuseBoxDebug",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enable GuestOS integration with the files app.
const base::Feature kGuestOsFiles{"GuestOsFiles",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables the Gaia reauth endpoint with deleted user customization page.
const base::Feature kGaiaReauthEndpoint{"GaiaReauthEndpoint",
base::FEATURE_ENABLED_BY_DEFAULT};
// Controls gamepad vibration in Exo.
const base::Feature kGamepadVibration{"ExoGamepadVibration",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enable a D-Bus service for accessing gesture properties.
const base::Feature kGesturePropertiesDBusService{
"GesturePropertiesDBusService", base::FEATURE_DISABLED_BY_DEFAULT};
// Enables editing with handwriting gestures within the virtual keyboard.
const base::Feature kHandwritingGestureEditing{
"HandwritingGestureEditing", base::FEATURE_DISABLED_BY_DEFAULT};
// Enables new on-device recognition for legacy handwriting input.
const base::Feature kHandwritingLegacyRecognition{
"HandwritingLegacyRecognition", base::FEATURE_DISABLED_BY_DEFAULT};
// Enables new on-device recognition for legacy handwriting input in all
// supported languages.
const base::Feature kHandwritingLegacyRecognitionAllLang{
"HandwritingLegacyRecognitionAllLang", base::FEATURE_DISABLED_BY_DEFAULT};
// Enables the Background Page in the help app.
const base::Feature kHelpAppBackgroundPage{"HelpAppBackgroundPage",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables the Discover Tab in the help app.
const base::Feature kHelpAppDiscoverTab{"HelpAppDiscoverTab",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables or disables the Help App Discover tab notifications on non-stable
// ChromeOS channels. Used for testing.
const base::Feature kHelpAppDiscoverTabNotificationAllChannels{
"HelpAppDiscoverTabNotificationAllChannels",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enable showing search results from the help app in the launcher.
const base::Feature kHelpAppLauncherSearch{"HelpAppLauncherSearch",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enable ChromeOS hibernation features.
const base::Feature kHibernate{"Hibernate", base::FEATURE_DISABLED_BY_DEFAULT};
// Enables or disables the flag to synchronize launcher item colors. It is
// in effect only when kLauncherAppSort is enabled.
const base::Feature kLauncherItemColorSync{"LauncherItemColorSync",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables a privacy improvement that removes wrongly configured hidden
// networks and mitigates the creation of these networks. crbug/1327803.
const base::Feature kHiddenNetworkMigration{"HiddenNetworkMigration",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables a warning about connecting to hidden WiFi networks.
// https://crbug.com/903908
const base::Feature kHiddenNetworkWarning{"HiddenNetworkWarning",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables hiding of ARC media notifications. If this is enabled, all ARC
// notifications that are of the media type will not be shown. This
// is because they will be replaced by native media session notifications.
// TODO(beccahughes): Remove after launch. (https://crbug.com/897836)
const base::Feature kHideArcMediaNotifications{
"HideArcMediaNotifications", base::FEATURE_ENABLED_BY_DEFAULT};
// When enabled, shelf navigation controls and the overview tray item will be
// removed from the shelf in tablet mode (unless otherwise specified by user
// preferences, or policy).
const base::Feature kHideShelfControlsInTabletMode{
"HideShelfControlsInTabletMode", base::FEATURE_ENABLED_BY_DEFAULT};
// Enables in-progress downloads notification suppression with the productivity
// feature that aims to reduce context switching by enabling users to collect
// content and transfer or access it later.
const base::Feature kHoldingSpaceInProgressDownloadsNotificationSuppression{
"HoldingSpaceInProgressNotificationSuppression",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables rebranding of holding space to convey the relationship with
// Files to simplify feature comprehension.
const base::Feature kHoldingSpaceRebrand{"HoldingSpaceRebrand",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables suggestions in the pinned files section of Holding Space.
const base::Feature kHoldingSpaceSuggestions{"HoldingSpaceSuggestions",
base::FEATURE_DISABLED_BY_DEFAULT};
// Control whether the hotspot tethering is enabled. When enabled, it will allow
// the Chromebook to share its cellular internet connection to other devices.
const base::Feature kHotspot{"Hotspot", base::FEATURE_DISABLED_BY_DEFAULT};
// Controls whether the snooping protection prototype is enabled.
const base::Feature kSnoopingProtection{"SnoopingProtection",
base::FEATURE_DISABLED_BY_DEFAULT};
// Controls whether to start AssistantAudioDecoder service on demand (at query
// response time).
const base::Feature kStartAssistantAudioDecoderOnDemand(
"StartAssistantAudioDecoderOnDemand",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enable or disable a new header bar for the ChromeOS virtual keyboard.
const base::Feature kVirtualKeyboardNewHeader{
"VirtualKeyboardNewHeader", base::FEATURE_DISABLED_BY_DEFAULT};
// If enabled, used to configure the heuristic rules for some advanced IME
// features (e.g. auto-correct).
const base::Feature kImeRuleConfig{"ImeRuleConfig",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enable or disable system emoji picker falling back to clipboard.
const base::Feature kImeSystemEmojiPickerClipboard{
"SystemEmojiPickerClipboard", base::FEATURE_DISABLED_BY_DEFAULT};
// Enable or disable system emoji picker extension
const base::Feature kImeSystemEmojiPickerExtension{
"SystemEmojiPickerExtension", base::FEATURE_DISABLED_BY_DEFAULT};
// Enable or disable system emoji picker search extension
const base::Feature kImeSystemEmojiPickerSearchExtension{
"SystemEmojiPickerSearchExtension", base::FEATURE_DISABLED_BY_DEFAULT};
// Enable or disable a new UI for stylus writing on the virtual keyboard
const base::Feature kImeStylusHandwriting{"StylusHandwriting",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables improved keyboard shortcuts for activating desks at specified indices
// and toggling whether a window is assigned to all desks.
const base::Feature kImprovedDesksKeyboardShortcuts{
"ImprovedDesksKeyboardShortcuts", base::FEATURE_ENABLED_BY_DEFAULT};
// Controls whether to show new improved UI for cryptohome errors that happened
// during login. UI contains links to help center and might provide actions
// that can be taken to resolve the problem.
const base::Feature kImprovedLoginErrorHandling{
"ImprovedLoginErrorHandling", base::FEATURE_DISABLED_BY_DEFAULT};
// Enables or disables Instant Tethering on ChromeOS.
const base::Feature kInstantTethering{"InstantTethering",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables Jelly features.
const base::Feature kJelly{"Jelly", base::FEATURE_DISABLED_BY_DEFAULT};
// Enables Jellyroll features.
const base::Feature kJellyroll{"Jellyroll", base::FEATURE_DISABLED_BY_DEFAULT};
// Enables IME button in the floating accessibility menu for the Kiosk session.
const base::Feature kKioskEnableImeButton{"KioskEnableImeButton",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables to use lacros-chrome as the only web browser on ChromeOS.
// This works only when both LacrosSupport and LacrosPrimary below are enabled.
// NOTE: Use crosapi::browser_util::IsAshWebBrowserEnabled() instead of checking
// the feature directly. Similar to LacrosSupport and LacrosPrimary,
// this may not be allowed depending on user types and/or policies.
const base::Feature kLacrosOnly{"LacrosOnly",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables to use lacros-chrome as a primary web browser on ChromeOS.
// This works only when LacrosSupport below is enabled.
// NOTE: Use crosapi::browser_util::IsLacrosPrimary() instead of checking
// the feature directly. Similar to LacrosSupport, this may not be allowed
// depending on user types and/or policies.
const base::Feature kLacrosPrimary{"LacrosPrimary",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables "Linux and ChromeOS" support. Allows a Linux version of Chrome
// ("lacros-chrome") to run as a Wayland client with this instance of Chrome
// ("ash-chrome") acting as the Wayland server and window manager.
// NOTE: Use crosapi::browser_util::IsLacrosEnabled() instead of checking the
// feature directly. Lacros is not allowed for certain user types and can be
// disabled by policy. These restrictions will be lifted when Lacros development
// is complete.
const base::Feature kLacrosSupport{"LacrosSupport",
base::FEATURE_DISABLED_BY_DEFAULT};
// Emergency switch to turn off profile migration.
const base::Feature kLacrosProfileMigrationForceOff{
"LacrosProfileMigrationForceOff", base::FEATURE_DISABLED_BY_DEFAULT};
// Enable this to turn on profile migration for non-googlers. Currently the
// feature is only limited to googlers only.
const base::Feature kLacrosProfileMigrationForAnyUser{
"LacrosProfileMigrationForAnyUser", base::FEATURE_DISABLED_BY_DEFAULT};
// If enabled, use `MoveMigrator` instead of `CopyMigrator` to migrate data.
// `MoveMigrator` moves data from ash to lacros instead of copying them.
const base::Feature kLacrosMoveProfileMigration{
"LacrosMoveProfileMigration", base::FEATURE_DISABLED_BY_DEFAULT};
// Enables or disables sorting app icons shown on the launcher.
const base::Feature kLauncherAppSort{"LauncherAppSort",
base::FEATURE_ENABLED_BY_DEFAULT};
// When enabled, app list folders will be moved so app list remains sorted when
// they get renamed, or created.
const base::Feature kLauncherFolderRenameKeepsSortOrder{
"LauncherFolderRenameKeepsSortOrder", base::FEATURE_ENABLED_BY_DEFAULT};
// When enabled, the app list sort nudge and toast will have additional
// buttons for dismissal.
const base::Feature kLauncherDismissButtonsOnSortNudgeAndToast{
"LauncherDismissButtonsOnSortNudgeAndToast",
base::FEATURE_ENABLED_BY_DEFAULT};
// When enabled, adds UI to the launcher that allows the user to hide the
// continue tasks and recent apps.
const base::Feature kLauncherHideContinueSection{
"LauncherHideContinueSection", base::FEATURE_ENABLED_BY_DEFAULT};
// Uses short intervals for launcher nudge for testing if enabled.
const base::Feature kLauncherNudgeShortInterval{
"LauncherNudgeShortInterval", base::FEATURE_DISABLED_BY_DEFAULT};
// If enabled, the launcher nudge prefs will be reset at the start of each new
// user session.
const base::Feature kLauncherNudgeSessionReset{
"LauncherNudgeSessionReset", base::FEATURE_DISABLED_BY_DEFAULT};
// Enables new flow for license packaged devices with enterprise license.
const base::Feature kLicensePackagedOobeFlow{"LicensePackagedOobeFlow",
base::FEATURE_ENABLED_BY_DEFAULT};
// Supports the feature to hide sensitive content in notifications on the lock
// screen. This option is effective when |kLockScreenNotification| is enabled.
const base::Feature kLockScreenHideSensitiveNotificationsSupport{
"LockScreenHideSensitiveNotificationsSupport",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables inline reply on notifications on the lock screen.
// This option is effective when |kLockScreenNotification| is enabled.
const base::Feature kLockScreenInlineReply{"LockScreenInlineReply",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables notifications on the lock screen.
const base::Feature kLockScreenNotifications{"LockScreenNotifications",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables lock screen media controls UI and use of media keys on the lock
// screen.
const base::Feature kLockScreenMediaControls{"LockScreenMediaControls",
base::FEATURE_ENABLED_BY_DEFAULT};
// Feature to allow MAC address randomization to be enabled for WiFi networks.
const base::Feature kMacAddressRandomization{"MacAddressRandomization",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables the redesigned managed device info UI in the system tray.
const base::Feature kManagedDeviceUIRedesign{"ManagedDeviceUIRedesign",
base::FEATURE_ENABLED_BY_DEFAULT};
// Whether PDF files are opened by default in the ChromeOS media app.
const base::Feature kMediaAppHandlesPdf{"MediaAppHandlesPdf",
base::FEATURE_ENABLED_BY_DEFAULT};
// Within the ChromeOS media app, reveals the button to edit the current image
// in Photos.
const base::Feature kMediaAppPhotosIntegrationImage{
"MediaAppPhotosIntegrationImage", base::FEATURE_DISABLED_BY_DEFAULT};
// Within the ChromeOS media app, reveals the button to edit the current video
// in Photos.
const base::Feature kMediaAppPhotosIntegrationVideo{
"MediaAppPhotosIntegrationVideo", base::FEATURE_DISABLED_BY_DEFAULT};
// Feature to continuously log PSI memory pressure data to UMA.
const base::Feature kMemoryPressureMetricsDetail{
"MemoryPressureMetricsDetail", base::FEATURE_ENABLED_BY_DEFAULT};
// Controls how frequently memory pressure is logged
const base::FeatureParam<int> kMemoryPressureMetricsDetailLogPeriod{
&kMemoryPressureMetricsDetail, "period", 10};
// Enables notification of when a microphone-using app is launched while the
// microphone is muted.
const base::Feature kMicMuteNotifications{"MicMuteNotifications",
base::FEATURE_ENABLED_BY_DEFAULT};
// Disables the deprecated Messages cross-device integration, to be used
// along side the flag preinstall-by-default (kMessagesPreinstall).
const base::Feature kDisableMessagesCrossDeviceIntegration{
"DisableMessagesCrossDeviceIntegration", base::FEATURE_ENABLED_BY_DEFAULT};
// Controls whether to enable the requirement of a minimum chrome version on the
// device through the policy DeviceMinimumVersion. If the requirement is
// not met and the warning time in the policy has expired, the user is
// restricted from using the session.
const base::Feature kMinimumChromeVersion{"MinimumChromeVersion",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables the use of Mojo by Chrome-process code to communicate with Power
// Manager. In order to use mojo, this feature must be turned on and a callsite
// must use PowerManagerMojoClient::Get().
const base::Feature kMojoDBusRelay{"MojoDBusRelay",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables support for multilingual assistive typing on ChromeOS.
const base::Feature kMultilingualTyping{"MultilingualTyping",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables Nearby Connections to specificy KeepAlive interval and timeout while
// also making the Nearby Connections WebRTC defaults longer.
const base::Feature kNearbyKeepAliveFix{"NearbyKeepAliveFix",
base::FEATURE_ENABLED_BY_DEFAULT};
// Controls whether new Lockscreen reauth layout is shown or not.
const base::Feature kNewLockScreenReauthLayout{
"NewLockScreenReauthLayout", base::FEATURE_ENABLED_BY_DEFAULT};
// Enables the Night Light feature.
const base::Feature kNightLight{"NightLight", base::FEATURE_ENABLED_BY_DEFAULT};
// Enabled notification expansion animation.
const base::Feature kNotificationExpansionAnimation{
"NotificationExpansionAnimation", base::FEATURE_DISABLED_BY_DEFAULT};
// Shorten notification timeouts to 6 seconds.
const base::Feature kNotificationExperimentalShortTimeouts{
"NotificationExperimentalShortTimeouts", base::FEATURE_ENABLED_BY_DEFAULT};
// Enables notification scroll bar in UnifiedSystemTray.
const base::Feature kNotificationScrollBar{"NotificationScrollBar",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables notifications to be shown within context menus.
const base::Feature kNotificationsInContextMenu{
"NotificationsInContextMenu", base::FEATURE_DISABLED_BY_DEFAULT};
// Enables new notifications UI and grouped notifications.
const base::Feature kNotificationsRefresh{"NotificationsRefresh",
base::FEATURE_ENABLED_BY_DEFAULT};
// Controls whether to enable on-device grammar check service.
const base::Feature kOnDeviceGrammarCheck{"OnDeviceGrammarCheck",
base::FEATURE_ENABLED_BY_DEFAULT};
// Whether the device supports on-device speech recognition.
// Forwarded to LaCrOS as BrowserInitParams::is_ondevice_speech_supported.
const base::Feature kOnDeviceSpeechRecognition{
"OnDeviceSpeechRecognition", base::FEATURE_DISABLED_BY_DEFAULT};
// If enabled, EULA and ARC Terms of Service screens are skipped and merged
// into Consolidated Consent Screen.
const base::Feature kOobeConsolidatedConsent{"OobeConsolidatedConsent",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables or disables the ChromeOS OOBE HID Detection Revamp, which updates
// the OOBE HID detection screen UI and related infrastructure. See
// https://crbug.com/1299099.
const base::Feature kOobeHidDetectionRevamp{"OobeHidDetectionRevamp",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables or disables the Oobe quick start flow.
const base::Feature kOobeQuickStart{"OobeQuickStart",
base::FEATURE_DISABLED_BY_DEFAULT};
// If enabled, the new recommend apps screen is shown.
const base::Feature kOobeNewRecommendApps{"OobeNewRecommendApps",
base::FEATURE_ENABLED_BY_DEFAULT};
// Removes "Shut down" button from OOBE, except first login screen and
// successful enrollment step.
const base::Feature kOobeRemoveShutdownButton{"OobeRemoveShutdownButton",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables StartDemoModeSetupForTesting call.
const base::Feature kOobeStartDemoModeForTesting{
"OobeStartDemoModeForTesting", base::FEATURE_DISABLED_BY_DEFAULT};
// Enables or disables the feedback tool new UX on ChromeOS.
// This tool under development will be rolled out via Finch.
// Enabling this flag will use the new feedback tool instead of the current
// tool on CrOS.
const base::Feature kOsFeedback{"OsFeedback",
base::FEATURE_DISABLED_BY_DEFAULT};
// If enabled, a new App Notifications subpage will appear in CrOS Apps section.
const base::Feature kOsSettingsAppNotificationsPage{
"OsSettingsAppNotificationsPage", base::FEATURE_ENABLED_BY_DEFAULT};
const base::Feature kOverviewButton{"OverviewButton",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables the option to snap windows by thirds for split view.
const base::Feature kPartialSplit{"PartialSplit",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables a notification warning users that their Thunderbolt device is not
// supported on their CrOS device.
const base::Feature kPcieBillboardNotification{
"PcieBillboardNotification", base::FEATURE_DISABLED_BY_DEFAULT};
// Limits the items on the shelf to the ones associated with windows the
// currently active desk.
const base::Feature kPerDeskShelf{"PerDeskShelf",
base::FEATURE_DISABLED_BY_DEFAULT};
// Allows tablet mode split screen to resize by moving windows instead of
// resizing. This reduces jank on low end devices.
const base::Feature kPerformantSplitViewResizing{
"PerformantSplitViewResizing", base::FEATURE_ENABLED_BY_DEFAULT};
// Provides a UI for users to customize their wallpapers, screensaver and
// avatars.
const base::Feature kPersonalizationHub{"PersonalizationHub",
base::FEATURE_ENABLED_BY_DEFAULT};
// Provides a UI for users to view information about their Android phone
// and perform phone-side actions within ChromeOS.
const base::Feature kPhoneHub{"PhoneHub", base::FEATURE_ENABLED_BY_DEFAULT};
// Enables the Camera Roll feature in Phone Hub, which allows users to access
// recent photos and videos taken on a connected Android device
const base::Feature kPhoneHubCameraRoll{"PhoneHubCameraRoll",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enable PhoneHub features setup error handling, which handles different
// setup response from remote phone device.
const base::Feature kPhoneHubFeatureSetupErrorHandling{
"PhoneHubFeatureSetupErrorHandling", base::FEATURE_ENABLED_BY_DEFAULT};
// Enables the incoming/ongoing call notification feature in Phone Hub.
const base::Feature kPhoneHubCallNotification{
"PhoneHubCallNotification", base::FEATURE_DISABLED_BY_DEFAULT};
const base::Feature kPhoneHubMonochromeNotificationIcons{
"PhoneHubMonochromeNotificationIcons", base::FEATURE_ENABLED_BY_DEFAULT};
// Enables rounded corners for the Picture-in-picture window.
const base::Feature kPipRoundedCorners{"PipRoundedCorners",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables or disables the preference of using constant frame rate for camera
// when streaming.
const base::Feature kPreferConstantFrameRate{"PreferConstantFrameRate",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables to allocate more video capture buffers.
const base::Feature kMoreVideoCaptureBuffers{"MoreVideoCaptureBuffers",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables showing notification and status area indicators when an app is
// using camera/microphone.
const base::Feature kPrivacyIndicators{"PrivacyIndicators",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables a bubble-based launcher in clamshell mode. Changes the suggestions
// that appear in the launcher in both clamshell and tablet modes. Removes pages
// from the apps grid. This feature was previously named "AppListBubble".
// https://crbug.com/1204551
const base::Feature kProductivityLauncher{"ProductivityLauncher",
base::FEATURE_ENABLED_BY_DEFAULT};
// Controls whether to enable Projector.
const base::Feature kProjector{"Projector", base::FEATURE_ENABLED_BY_DEFAULT};
// Controls whether to enable Projector for managed users.
const base::Feature kProjectorManagedUser{"ProjectorManagedUser",
base::FEATURE_ENABLED_BY_DEFAULT};
// Controls whether to enable Projector annotator tools.
// The annotator tools are based on the ink library.
const base::Feature kProjectorAnnotator{"ProjectorAnnotator",
base::FEATURE_ENABLED_BY_DEFAULT};
// Controls whether the Projector app launches in debug mode, with more detailed
// error messages.
const base::Feature kProjectorAppDebug{"ProjectorAppDebug",
base::FEATURE_DISABLED_BY_DEFAULT};
// Controls whether the Projector exclude transcript feature is enabled.
const base::Feature kProjectorExcludeTranscript{
"ProjectorExcludeTranscript", base::FEATURE_ENABLED_BY_DEFAULT};
// Controls whether Projector's tutorial videos are displayed.
const base::Feature kProjectorTutorialVideoView(
"ProjectorTutorialVideoView",
base::FEATURE_ENABLED_BY_DEFAULT);
// Controls whether Projector use custom thumbnail in gallery page.
const base::Feature kProjectorCustomThumbnail("kProjectorCustomThumbnail",
base::FEATURE_ENABLED_BY_DEFAULT);
// Controls whether to ignore policy setting for enabling Projector for managed
// users.
const base::Feature kProjectorManagedUserIgnorePolicy(
"ProjectorManagedUserIgnorePolicy",
base::FEATURE_DISABLED_BY_DEFAULT);
// Controls whether to show pseduo transcript that is shorter than the
// threshold.
const base::Feature kProjectorShowShortPseudoTranscript(
"ProjectorShowShortPseudoTranscript",
base::FEATURE_ENABLED_BY_DEFAULT);
// Controls whether to update the indexable text when metadata file gets
// uploaded.
const base::Feature kProjectorUpdateIndexableText(
"ProjectorUpdateIndexableText",
base::FEATURE_ENABLED_BY_DEFAULT);
// Controls whether to use OAuth token for getting streaming URL from
// get_video_info endpoint.
const base::Feature kProjectorUseOAuthForGetVideoInfo(
"ProjectorUseOAuthForGetVideoInfo",
base::FEATURE_ENABLED_BY_DEFAULT);
// Controls whether to allow viewing screencast with local playback URL when
// screencast is being transcoded.
const base::Feature kProjectorLocalPlayback("ProjectorLocalPlayback",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enable or disable quick settings revamped view.
const base::Feature kQsRevamp{"QsRevamp", base::FEATURE_DISABLED_BY_DEFAULT};
// Controls whether the quick dim prototype is enabled.
const base::Feature kQuickDim{"QuickDim", base::FEATURE_ENABLED_BY_DEFAULT};
// Enables or disables the Quick Settings Network revamp, which updates Network
// Quick Settings UI and related infrastructure. See https://crbug.com/1169479.
const base::Feature kQuickSettingsNetworkRevamp{
"QuickSettingsNetworkRevamp", base::FEATURE_DISABLED_BY_DEFAULT};
// Enables or disables fingerprint quick unlock.
const base::Feature kQuickUnlockFingerprint{"QuickUnlockFingerprint",
base::FEATURE_DISABLED_BY_DEFAULT};
// Controls whether the PIN auto submit feature is enabled.
const base::Feature kQuickUnlockPinAutosubmit{"QuickUnlockPinAutosubmit",
base::FEATURE_ENABLED_BY_DEFAULT};
// TODO(crbug.com/1104164) - Remove this once most
// users have their preferences backfilled.
// Controls whether the PIN auto submit backfill operation should be performed.
const base::Feature kQuickUnlockPinAutosubmitBackfill{
"QuickUnlockPinAutosubmitBackfill", base::FEATURE_ENABLED_BY_DEFAULT};
// Enables redirect to default IdP without interstitial step.
const base::Feature kRedirectToDefaultIdP{"RedirectToDefaultIdP",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables or disables Release Notes notifications on non-stable ChromeOS
// channels. Used for testing.
const base::Feature kReleaseNotesNotificationAllChannels{
"ReleaseNotesNotificationAllChannels", base::FEATURE_DISABLED_BY_DEFAULT};
// Enables or disables Release Notes suggestion chip on ChromeOS.
const base::Feature kReleaseNotesSuggestionChip{
"ReleaseNotesSuggestionChip", base::FEATURE_ENABLED_BY_DEFAULT};
// Enables or disables display of the release track in the system tray and quick
// settings, for devices running on channels other than "stable."
const base::Feature kReleaseTrackUi{"ReleaseTrackUi",
base::FEATURE_DISABLED_BY_DEFAULT};
// When enabled, the overivew and desk reverse scrolling behaviors are changed
// and if the user performs the old gestures, a notification or toast will show
// up.
// TODO(https://crbug.com/1107183): Remove this after the feature is launched.
const base::Feature kReverseScrollGestures{"EnableReverseScrollGestures",
base::FEATURE_ENABLED_BY_DEFAULT};
const base::Feature kRgbKeyboard = {"RgbKeyboard",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables the system tray to show more information in larger screen.
const base::Feature kScalableStatusArea{"ScalableStatusArea",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables the system tray to show more information in larger screen.
const base::Feature kSeamlessRefreshRateSwitching{
"SeamlessRefreshRateSwitching", base::FEATURE_DISABLED_BY_DEFAULT};
// Controls whether to enable kSecondaryGoogleAccountUsage policy.
const base::Feature kSecondaryGoogleAccountUsage{
"SecondaryGoogleAccountUsage", base::FEATURE_ENABLED_BY_DEFAULT};
// Overrides semantic colors in ChromeOS for easier debugging.
const base::Feature kSemanticColorsDebugOverride{
"SemanticColorDebugOverride", base::FEATURE_DISABLED_BY_DEFAULT};
// Enables displaying separate network icons for different networks types.
// https://crbug.com/902409
const base::Feature kSeparateNetworkIcons{"SeparateNetworkIcons",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables or disables long kill timeout for session manager daemon. When
// enabled, session manager daemon waits for a longer time (e.g. 12s) for chrome
// to exit before sending SIGABRT. Otherwise, it uses the default time out
// (currently 3s).
const base::Feature kSessionManagerLongKillTimeout{
"SessionManagerLongKillTimeout", base::FEATURE_DISABLED_BY_DEFAULT};
// If enabled, the session manager daemon will abort the browser if its
// liveness checker detects a hang, i.e. the browser fails to acknowledge and
// respond sufficiently to periodic pings. IMPORTANT NOTE: the feature name
// here must match exactly the name of the feature in the open-source ChromeOS
// file session_manager_service.cc.
const base::Feature kSessionManagerLivenessCheck{
"SessionManagerLivenessCheck", base::FEATURE_ENABLED_BY_DEFAULT};
// Removes notifier settings from quick settings view.
const base::Feature kSettingsAppNotificationSettings{
"SettingsAppNotificationSettings", base::FEATURE_DISABLED_BY_DEFAULT};
// Whether theme changes should be animated for the Settings app.
const base::Feature kSettingsAppThemeChangeAnimation{
"SettingsAppThemeChangeAnimation", base::FEATURE_DISABLED_BY_DEFAULT};
// Whether we should track auto-hide preferences separately between clamshell
// and tablet.
const base::Feature kShelfAutoHideSeparation{"ShelfAutoHideSeparation",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables shelf gestures (swipe to show hotseat, swipe to go home or overview)
// in tablet mode when virtual keyboard is shown.
const base::Feature kShelfGesturesWithVirtualKeyboard{
"ShelfGesturesWithVirtualKeyboard", base::FEATURE_ENABLED_BY_DEFAULT};
// Enables launcher nudge that animates the home button to guide users to open
// the launcher.
const base::Feature kShelfLauncherNudge{"ShelfLauncherNudge",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables the shelf party.
const base::Feature kShelfParty{"ShelfParty",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables Shelf Palm Rejection in tablet mode by defining a pixel offset for
// the swipe gesture to show the extended hotseat. Limited to certain apps.
const base::Feature kShelfPalmRejectionSwipeOffset{
"ShelfPalmRejectionSwipeOffset", base::FEATURE_ENABLED_BY_DEFAULT};
// Enables or disables the new shimless rma flow.
const base::Feature kShimlessRMAFlow{"ShimlessRMAFlow",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables or disables launching Shimless RMA as a standalone app.
const base::Feature kShimlessRMAEnableStandalone{
"ShimlessRMAEnableStandalone", base::FEATURE_DISABLED_BY_DEFAULT};
// Enables or disables the OS update page in the shimless RMA flow.
const base::Feature kShimlessRMAOsUpdate{"ShimlessRMAOsUpdate",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables or disables the dark mode in the shimless RMA flow.
const base::Feature kShimlessRMADisableDarkMode{
"ShimlessRMADisableDarkMode", base::FEATURE_ENABLED_BY_DEFAULT};
// Enables or disables a toggle to enable Bluetooth debug logs.
const base::Feature kShowBluetoothDebugLogToggle{
"ShowBluetoothDebugLogToggle", base::FEATURE_ENABLED_BY_DEFAULT};
// Shows the Play Store icon in Demo Mode.
const base::Feature kShowPlayInDemoMode{"ShowPlayInDemoMode",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables the shutdown confirmation bubble from the login shelf view.
const base::Feature kShutdownConfirmationBubble{
"ShutdownConfirmationBubble", base::FEATURE_DISABLED_BY_DEFAULT};
// Enables or disables enterprise policy control for SIM PIN Lock.
const base::Feature kSimLockPolicy{"SimLockPolicy",
base::FEATURE_DISABLED_BY_DEFAULT};
// Uses experimental component version for smart dim.
const base::Feature kSmartDimExperimentalComponent{
"SmartDimExperimentalComponent", base::FEATURE_DISABLED_BY_DEFAULT};
// Backs off connection attempt before retrying after a timeout occurs.
const base::Feature kSmartLockBluetoothScanningBackoff{
"SmartLockBluetoothScanningBackoff", base::FEATURE_DISABLED_BY_DEFAULT};
// Disconnects bluetooth connection when screen turns off.
const base::Feature kSmartLockBluetoothScreenOffFix{
"SmartLockBluetoothScreenOffFix", base::FEATURE_DISABLED_BY_DEFAULT};
// Deprecates Sign in with Smart Lock feature. Hides Smart Lock at the sign in
// screen, removes the Smart Lock subpage in settings, and shows a one-time
// notification for users who previously had this feature enabled.
const base::Feature kSmartLockSignInRemoved{"SmartLockSignInRemoved",
base::FEATURE_ENABLED_BY_DEFAULT};
// Replaces Smart Lock UI in lock screen password box with new UI similar to
// fingerprint auth. Adds Smart Lock to "Lock screen and sign-in" section of
// settings.
const base::Feature kSmartLockUIRevamp{"SmartLockUIRevamp",
base::FEATURE_DISABLED_BY_DEFAULT};
// This feature:
// - Categorizes all sync data types into two large categories:
// - OS-related sync data types (WiFi passwords and OS preferences, etc.).
// Can be configured from OS Sync Settings.
// - Browser-related sync data types (bookmarks, browser preferences, etc.).
// Can be configured from Browser Sync Settings.
// - Changes a bunch of UIs to accommodate for this categorization.
const base::Feature kSyncSettingsCategorization{
"SyncSettingsCategorization", base::FEATURE_ENABLED_BY_DEFAULT};
// Enables battery indicator for styluses in the palette tray
const base::Feature kStylusBatteryStatus{"StylusBatteryStatus",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables or disables using the system input engine for physical typing in
// Chinese.
const base::Feature kSystemChinesePhysicalTyping{
"SystemChinesePhysicalTyping", base::FEATURE_ENABLED_BY_DEFAULT};
// Enables or disables the System Extensions platform.
const base::Feature kSystemExtensions{"SystemExtensions",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables or disables using the system input engine for physical typing in
// Japanese.
const base::Feature kSystemJapanesePhysicalTyping{
"SystemJapanesePhysicalTyping", base::FEATURE_DISABLED_BY_DEFAULT};
// Enables or disables using the system input engine for physical typing in
// transliteration input methods.
const base::Feature kSystemTransliterationPhysicalTyping{
"SystemTransliterationPhysicalTyping", base::FEATURE_ENABLED_BY_DEFAULT};
// Enables the ChromeOS system-proxy daemon, only for system services. This
// means that system services like tlsdate, update engine etc. can opt to be
// authenticated to a remote HTTP web proxy via system-proxy.
const base::Feature kSystemProxyForSystemServices{
"SystemProxyForSystemServices", base::FEATURE_DISABLED_BY_DEFAULT};
// Enables the UI to show tab cluster info.
const base::Feature kTabClusterUI{"TabClusterUI",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables ChromeOS Telemetry Extension.
const base::Feature kTelemetryExtension{"TelemetryExtension",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables the alternative emulator for the Terminal app.
const base::Feature kTerminalAlternativeEmulator{
"TerminalAlternativeEmulator", base::FEATURE_DISABLED_BY_DEFAULT};
//
// Enables Terminal System App to load from Downloads for developer testing.
// Only works in dev and canary channels.
const base::Feature kTerminalDev{"TerminalDev",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables multi-profile theme support for Terminal..
const base::Feature kTerminalMultiProfile{"TerminalMultiProfile",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables tmux integration in the Terminal System App.
const base::Feature kTerminalTmuxIntegration{"TerminalTmuxIntegration",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables the TrafficCountersHandler class to auto-reset traffic counters
// and shows Data Usage in the Celluar Settings UI.
const base::Feature kTrafficCountersEnabled{"TrafficCountersEnabled",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables trilinear filtering.
const base::Feature kTrilinearFiltering{"TrilinearFiltering",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables the Office files upload workflow to improve Office files support.
const base::Feature kUploadOfficeToCloud("UploadOfficeToCloud",
base::FEATURE_DISABLED_BY_DEFAULT);
// Uses new AuthSession-based API in cryptohome to authenticate users during
// sign-in.
const base::Feature kUseAuthsessionAuthentication{
"UseAuthsessionAuthentication", base::FEATURE_ENABLED_BY_DEFAULT};
// Uses new AuthFactor-based API when communicating with cryptohome.
const base::Feature kUseAuthFactors{"UseAuthFactors",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables using the BluetoothSystem Mojo interface for Bluetooth operations.
const base::Feature kUseBluetoothSystemInAsh{"UseBluetoothSystemInAsh",
base::FEATURE_DISABLED_BY_DEFAULT};
// When enabled, the login shelf view is placed in its own widget instead of
// sharing the shelf widget with other components.
const base::Feature kUseLoginShelfWidget{"UseLoginShelfWidget",
base::FEATURE_ENABLED_BY_DEFAULT};
// Use the staging URL as part of the "Messages" feature under "Connected
// Devices" settings.
const base::Feature kUseMessagesStagingUrl{"UseMessagesStagingUrl",
base::FEATURE_DISABLED_BY_DEFAULT};
// Remap search+click to right click instead of the legacy alt+click on
// ChromeOS.
const base::Feature kUseSearchClickForRightClick{
"UseSearchClickForRightClick", base::FEATURE_DISABLED_BY_DEFAULT};
// Use the Stork Production SM-DS address to fetch pending ESim profiles
const base::Feature kUseStorkSmdsServerAddress{
"UseStorkSmdsServerAddress", base::FEATURE_DISABLED_BY_DEFAULT};
// Use the staging server as part of the Wallpaper App to verify
// additions/removals of wallpapers.
const base::Feature kUseWallpaperStagingUrl{"UseWallpaperStagingUrl",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables or disables user activity prediction for power management on
// ChromeOS.
// Defined here rather than in //chrome alongside other related features so that
// PowerPolicyController can check it.
const base::Feature kUserActivityPrediction{"UserActivityPrediction",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enable or disable bordered key for virtual keyboard on ChromeOS.
const base::Feature kVirtualKeyboardBorderedKey{
"VirtualKeyboardBorderedKey", base::FEATURE_ENABLED_BY_DEFAULT};
// Enable or disable multitouch for virtual keyboard on ChromeOS.
const base::Feature kVirtualKeyboardMultitouch{
"VirtualKeyboardMultitouch", base::FEATURE_DISABLED_BY_DEFAULT};
// Enable or disable round corners for virtual keyboard on ChromeOS.
const base::Feature kVirtualKeyboardRoundCorners{
"VirtualKeyboardRoundCorners", base::FEATURE_DISABLED_BY_DEFAULT};
// Controls whether to allow enabling wake on WiFi features in shill.
const base::Feature kWakeOnWifiAllowed{"WakeOnWifiAllowed",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enable "daily" refresh wallpaper to refresh every ten seconds for testing.
const base::Feature kWallpaperFastRefresh{"WallpaperFastRefresh",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enable full screen wallpaper preview in new wallpaper experience.
const base::Feature kWallpaperFullScreenPreview{
"WallpaperFullScreenPreview", base::FEATURE_ENABLED_BY_DEFAULT};
// Enable Google Photos integration in the new wallpaper experience.
const base::Feature kWallpaperGooglePhotosIntegration{
"WallpaperGooglePhotosIntegration", base::FEATURE_ENABLED_BY_DEFAULT};
// Enable different wallpapers per desk.
const base::Feature kWallpaperPerDesk{"WallpaperPerDesk",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables special handling of Chrome tab drags from a WebUI tab strip.
// These will be treated similarly to a window drag, showing split view
// indicators in tablet mode, etc. The functionality is behind a flag right now
// since it is under development.
const base::Feature kWebUITabStripTabDragIntegration{
"WebUITabStripTabDragIntegration", base::FEATURE_ENABLED_BY_DEFAULT};
// Controls whether to enable MAC Address Randomization on WiFi connection.
const base::Feature kWifiConnectMacAddressRandomization{
"WifiConnectMacAddressRandomization", base::FEATURE_DISABLED_BY_DEFAULT};
// Controls whether to enable the syncing of deletes of Wi-Fi configurations.
// This only controls sending delete events to the Chrome Sync server.
const base::Feature kWifiSyncAllowDeletes{"WifiSyncAllowDeletes",
base::FEATURE_ENABLED_BY_DEFAULT};
// Controls whether to enable syncing of Wi-Fi configurations between
// ChromeOS and a connected Android phone.
const base::Feature kWifiSyncAndroid{"WifiSyncAndroid",
base::FEATURE_ENABLED_BY_DEFAULT};
// Controls whether to apply incoming Wi-Fi configuration delete events from
// the Chrome Sync server.
const base::Feature kWifiSyncApplyDeletes{"WifiSyncApplyDeletes",
base::FEATURE_DISABLED_BY_DEFAULT};
// Change window creation to be based on cursor position when there are multiple
// displays.
const base::Feature kWindowsFollowCursor{"WindowsFollowCursor",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables or disables Fresnel Device Active reporting on ChromeOS.
const base::Feature kDeviceActiveClient{"DeviceActiveClient",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables or disables PSM CheckMembership for daily device active pings
// on ChromeOS.
const base::Feature kDeviceActiveClientDailyCheckMembership{
"DeviceActiveClientDailyCheckMembership", base::FEATURE_ENABLED_BY_DEFAULT};
// Enables or disables PSM CheckIn for the monthly device active pings
// on ChromeOS.
const base::Feature kDeviceActiveClientMonthlyCheckIn{
"DeviceActiveClientMonthlyCheckIn", base::FEATURE_ENABLED_BY_DEFAULT};
// Enables or disables PSM CheckMembership for monthly device active pings
// on ChromeOS.
const base::Feature kDeviceActiveClientMonthlyCheckMembership{
"DeviceActiveClientMonthlyCheckMembership",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables or disables forced reboots when DeviceScheduledReboot policy is set.
const base::Feature kDeviceForceScheduledReboot{
"DeviceForceScheduledReboot", base::FEATURE_ENABLED_BY_DEFAULT};
// Maximum delay added to reboot time when DeviceScheduledReboot policy is set.
const base::FeatureParam<int> kDeviceForceScheduledRebootMaxDelay{
&kDeviceForceScheduledReboot, "max-delay-in-seconds", 120};
// Enables or disables whether to store UMA logs per-user and whether metrics
// consent is per-user.
const base::Feature kPerUserMetrics{"PerUserMetricsConsent",
base::FEATURE_ENABLED_BY_DEFAULT};
// Allows Files App to find and execute tasks using App Service for Arc and
// Guest OS apps.
const base::Feature kArcAndGuestOsFileTasksUseAppService{
"ArcAndGuestOsFileTasksUseAppService", base::FEATURE_DISABLED_BY_DEFAULT};
////////////////////////////////////////////////////////////////////////////////
bool AreContextualNudgesEnabled() {
if (!IsHideShelfControlsInTabletModeEnabled())
return false;
return base::FeatureList::IsEnabled(kContextualNudges);
}
bool AreDesksTemplatesEnabled() {
return base::FeatureList::IsEnabled(kDesksTemplates);
}
bool AreDesksTrackpadSwipeImprovementsEnabled() {
return base::FeatureList::IsEnabled(kEnableDesksTrackpadSwipeImprovements);
}
bool IsAutocompleteExtendedSuggestionsEnabled() {
return base::FeatureList::IsEnabled(kAutocompleteExtendedSuggestions);
}
bool DoWindowsFollowCursor() {
return base::FeatureList::IsEnabled(kWindowsFollowCursor);
}
bool IsAdaptiveChargingEnabled() {
return base::FeatureList::IsEnabled(kAdaptiveCharging);
}
bool IsAdaptiveChargingForTestingEnabled() {
return base::FeatureList::IsEnabled(kAdaptiveChargingForTesting);
}
bool IsAdjustSplitViewForVKEnabled() {
return base::FeatureList::IsEnabled(kAdjustSplitViewForVK);
}
bool IsAllowAmbientEQEnabled() {
return base::FeatureList::IsEnabled(kAllowAmbientEQ);
}
bool IsAmbientModeAnimationEnabled() {
return base::FeatureList::IsEnabled(kAmbientModeAnimationFeature) &&
IsPersonalizationHubEnabled();
}
bool IsAmbientModeDevUseProdEnabled() {
return base::FeatureList::IsEnabled(kAmbientModeDevUseProdFeature);
}
bool IsAmbientModeEnabled() {
return base::FeatureList::IsEnabled(kAmbientModeFeature);
}
bool IsAmbientModePhotoPreviewEnabled() {
return base::FeatureList::IsEnabled(kAmbientModePhotoPreviewFeature);
}
bool IsAppNotificationsPageEnabled() {
return base::FeatureList::IsEnabled(kOsSettingsAppNotificationsPage);
}
bool IsArcFuseBoxFileSharingEnabled() {
return IsFileManagerFuseBoxEnabled() &&
base::FeatureList::IsEnabled(kArcFuseBoxFileSharing);
}
bool IsArcInputOverlayEnabled() {
return base::FeatureList::IsEnabled(kArcInputOverlay);
}
bool IsArcInputOverlayBetaEnabled() {
return base::FeatureList::IsEnabled(kArcInputOverlayBeta);
}
bool IsArcNetworkDiagnosticsButtonEnabled() {
return IsNetworkingInDiagnosticsAppEnabled();
}
bool IsAssistantNativeIconsEnabled() {
return base::FeatureList::IsEnabled(kAssistantNativeIcons);
}
bool IsAssistiveMultiWordEnabled() {
return base::FeatureList::IsEnabled(kAssistMultiWord);
}
bool IsAudioSettingsPageEnabled() {
return base::FeatureList::IsEnabled(kAudioSettingsPage);
}
bool IsAutoNightLightEnabled() {
return base::FeatureList::IsEnabled(kAutoNightLight);
}
bool IsBackgroundBlurEnabled() {
bool enabled_by_feature_flag =
base::FeatureList::IsEnabled(kEnableBackgroundBlur);
#if defined(ARCH_CPU_ARM_FAMILY)
// Enable background blur on Mali when GPU rasterization is enabled.
// See crbug.com/996858 for the condition.
return enabled_by_feature_flag &&
base::CommandLine::ForCurrentProcess()->HasSwitch(
switches::kAshEnableTabletMode);
#else
return enabled_by_feature_flag;
#endif
}
bool IsBentoBarEnabled() {
return base::FeatureList::IsEnabled(kBentoBar);
}
bool IsBluetoothQualityReportEnabled() {
return base::FeatureList::IsEnabled(kBluetoothQualityReport);
}
bool IsBluetoothRevampEnabled() {
return base::FeatureList::IsEnabled(kBluetoothRevamp);
}
bool IsCalendarViewEnabled() {
return base::FeatureList::IsEnabled(kCalendarView);
}
bool IsCalendarModelDebugModeEnabled() {
return base::FeatureList::IsEnabled(kCalendarModelDebugMode);
}
bool IsCheckPasswordsAgainstCryptohomeHelperEnabled() {
return base::FeatureList::IsEnabled(kCheckPasswordsAgainstCryptohomeHelper);
}
bool IsClipboardHistoryContextMenuNudgeEnabled() {
return base::FeatureList::IsEnabled(kClipboardHistoryContextMenuNudge);
}
bool IsClipboardHistoryNudgeSessionResetEnabled() {
return base::FeatureList::IsEnabled(kClipboardHistoryNudgeSessionReset);
}
bool IsClipboardHistoryReorderEnabled() {
return base::FeatureList::IsEnabled(kClipboardHistoryReorder);
}
bool IsDesksCloseAllEnabled() {
return base::FeatureList::IsEnabled(kDesksCloseAll);
}
bool IsLauncherItemColorSyncEnabled() {
return IsLauncherAppSortEnabled() &&
base::FeatureList::IsEnabled(kLauncherItemColorSync);
}
bool IsConsumerAutoUpdateToggleAllowed() {
return base::FeatureList::IsEnabled(kConsumerAutoUpdateToggleAllowed);
}
bool IsCrosPrivacyHubEnabled() {
return base::FeatureList::IsEnabled(kCrosPrivacyHub) ||
IsCrosPrivacyHubFutureEnabled();
}
bool IsCrosPrivacyHubFutureEnabled() {
return base::FeatureList::IsEnabled(kCrosPrivacyHubFuture);
}
bool IsCrosNextWMPEnabled() {
return base::FeatureList::IsEnabled(kCrosNextWMP);
}
bool IsCryptohomeRecoveryFlowEnabled() {
return base::FeatureList::IsEnabled(kCryptohomeRecoveryFlow);
}
bool IsCryptohomeRecoveryFlowUIEnabled() {
return base::FeatureList::IsEnabled(kCryptohomeRecoveryFlowUI);
}
bool IsCryptohomeRecoverySetupEnabled() {
return base::FeatureList::IsEnabled(kCryptohomeRecoverySetup);
}
bool IsDarkLightModeEnabled() {
return chromeos::features::IsDarkLightModeEnabled();
}
bool IsDemoModeSWAEnabled() {
return base::FeatureList::IsEnabled(kDemoModeSWA);
}
bool IsDeprecateAssistantStylusFeaturesEnabled() {
return base::FeatureList::IsEnabled(kDeprecateAssistantStylusFeatures);
}
bool IsDeskTemplateSyncEnabled() {
return base::FeatureList::IsEnabled(kDeskTemplateSync);
}
bool IsDisplayAlignmentAssistanceEnabled() {
return base::FeatureList::IsEnabled(kDisplayAlignAssist);
}
bool IsDragUnpinnedAppToPinEnabled() {
return base::FeatureList::IsEnabled(kDragUnpinnedAppToPin);
}
bool IsDragWindowToNewDeskEnabled() {
return base::FeatureList::IsEnabled(kDragWindowToNewDesk);
}
bool IsDriveFsMirroringEnabled() {
return base::FeatureList::IsEnabled(kDriveFsMirroring);
}
bool IsEapGtcWifiAuthenticationEnabled() {
return base::FeatureList::IsEnabled(kEapGtcWifiAuthentication);
}
bool IsEcheSWAEnabled() {
return base::FeatureList::IsEnabled(kEcheSWA);
}
bool IsEcheSWADebugModeEnabled() {
return base::FeatureList::IsEnabled(kEcheSWADebugMode);
}
bool IsExperimentalRgbKeyboardPatternsEnabled() {
return base::FeatureList::IsEnabled(kExperimentalRgbKeyboardPatterns);
}
bool IsExternalKeyboardInDiagnosticsAppEnabled() {
return base::FeatureList::IsEnabled(kEnableExternalKeyboardsInDiagnostics);
}
bool IsFamilyLinkOnSchoolDeviceEnabled() {
return base::FeatureList::IsEnabled(kFamilyLinkOnSchoolDevice);
}
bool IsFastPairEnabled() {
return base::FeatureList::IsEnabled(kFastPair);
}
bool IsFastPairLowPowerEnabled() {
return base::FeatureList::IsEnabled(kFastPairLowPower);
}
bool IsFastPairSoftwareScanningEnabled() {
return base::FeatureList::IsEnabled(kFastPairSoftwareScanning);
}
bool IsFastPairSubsequentPairingUXEnabled() {
return base::FeatureList::IsEnabled(kFastPairSubsequentPairingUX);
}
bool IsFastPairSavedDevicesEnabled() {
return base::FeatureList::IsEnabled(kFastPairSavedDevices);
}
bool IsFastPairSavedDevicesStrictOptInEnabled() {
return base::FeatureList::IsEnabled(kFastPairSavedDevicesStrictOptIn);
}
bool IsFileManagerFuseBoxEnabled() {
return base::FeatureList::IsEnabled(kFuseBox);
}
bool IsFileManagerFuseBoxDebugEnabled() {
return base::FeatureList::IsEnabled(kFuseBoxDebug);
}
bool IsFileManagerSwaEnabled() {
return base::FeatureList::IsEnabled(kFilesSWA);
}
bool IsFilesWebDriveOfficeEnabled() {
return base::FeatureList::IsEnabled(kFilesWebDriveOffice);
}
bool IsFirmwareUpdaterAppEnabled() {
return base::FeatureList::IsEnabled(kFirmwareUpdaterApp);
}
bool IsFloatingWorkspaceEnabled() {
return base::FeatureList::IsEnabled(kFloatingWorkspace);
}
bool IsFullscreenAfterUnlockAllowed() {
return base::FeatureList::IsEnabled(kFullscreenAfterUnlockAllowed);
}
bool IsFullscreenAlertBubbleEnabled() {
return base::FeatureList::IsEnabled(kFullscreenAlertBubble);
}
bool IsGaiaReauthEndpointEnabled() {
return base::FeatureList::IsEnabled(kGaiaReauthEndpoint);
}
bool IsGuestOsFilesEnabled() {
return base::FeatureList::IsEnabled(kGuestOsFiles);
}
bool IsHibernateEnabled() {
return base::FeatureList::IsEnabled(kHibernate);
}
bool IsHideArcMediaNotificationsEnabled() {
return base::FeatureList::IsEnabled(kHideArcMediaNotifications);
}
bool IsHideShelfControlsInTabletModeEnabled() {
return base::FeatureList::IsEnabled(kHideShelfControlsInTabletMode);
}
bool IsHoldingSpaceInProgressDownloadsNotificationSuppressionEnabled() {
return base::FeatureList::IsEnabled(
kHoldingSpaceInProgressDownloadsNotificationSuppression);
}
bool IsHoldingSpaceRebrandEnabled() {
return base::FeatureList::IsEnabled(kHoldingSpaceRebrand);
}
bool IsHoldingSpaceSuggestionsEnabled() {
return base::FeatureList::IsEnabled(kHoldingSpaceSuggestions);
}
bool IsHostnameSettingEnabled() {
return base::FeatureList::IsEnabled(kEnableHostnameSetting);
}
bool IsHotspotEnabled() {
return base::FeatureList::IsEnabled(kHotspot);
}
bool IsSnoopingProtectionEnabled() {
return base::FeatureList::IsEnabled(kSnoopingProtection) &&
ash::switches::HasHps();
}
bool IsStartAssistantAudioDecoderOnDemandEnabled() {
return base::FeatureList::IsEnabled(kStartAssistantAudioDecoderOnDemand);
}
bool IsImprovedDesksKeyboardShortcutsEnabled() {
return base::FeatureList::IsEnabled(kImprovedDesksKeyboardShortcuts);
}
bool IsInputInDiagnosticsAppEnabled() {
return base::FeatureList::IsEnabled(kEnableInputInDiagnosticsApp);
}
bool IsInstantTetheringBackgroundAdvertisingSupported() {
return base::FeatureList::IsEnabled(
kInstantTetheringBackgroundAdvertisementSupport);
}
bool IsJellyEnabled() {
return base::FeatureList::IsEnabled(kJelly);
}
bool IsJellyrollEnabled() {
return base::FeatureList::IsEnabled(kJellyroll);
}
bool IsKeyboardBacklightToggleEnabled() {
return base::FeatureList::IsEnabled(kEnableKeyboardBacklightToggle);
}
bool IsLanguagePacksEnabled() {
return base::FeatureList::IsEnabled(kHandwritingLegacyRecognition) ||
base::FeatureList::IsEnabled(kHandwritingLegacyRecognitionAllLang);
}
bool IsLauncherAppSortEnabled() {
return IsProductivityLauncherEnabled() &&
base::FeatureList::IsEnabled(kLauncherAppSort);
}
bool IsLauncherFolderRenameKeepsSortOrderEnabled() {
return IsLauncherAppSortEnabled() &&
base::FeatureList::IsEnabled(kLauncherFolderRenameKeepsSortOrder);
}
bool IsLauncherDismissButtonsOnSortNudgeAndToastEnabled() {
return IsLauncherAppSortEnabled() &&
base::FeatureList::IsEnabled(
kLauncherDismissButtonsOnSortNudgeAndToast);
}
bool IsLauncherHideContinueSectionEnabled() {
return IsProductivityLauncherEnabled() &&
base::FeatureList::IsEnabled(kLauncherHideContinueSection);
}
bool IsLauncherNudgeShortIntervalEnabled() {
return IsProductivityLauncherEnabled() &&
base::FeatureList::IsEnabled(kLauncherNudgeShortInterval);
}
bool IsLauncherNudgeSessionResetEnabled() {
return IsProductivityLauncherEnabled() &&
base::FeatureList::IsEnabled(kLauncherNudgeSessionReset);
}
bool IsLicensePackagedOobeFlowEnabled() {
return base::FeatureList::IsEnabled(kLicensePackagedOobeFlow);
}
bool IsLockScreenHideSensitiveNotificationsSupported() {
return base::FeatureList::IsEnabled(
kLockScreenHideSensitiveNotificationsSupport);
}
bool IsLogControllerForDiagnosticsAppEnabled() {
return base::FeatureList::IsEnabled(kEnableLogControllerForDiagnosticsApp);
}
bool IsLockScreenInlineReplyEnabled() {
return base::FeatureList::IsEnabled(kLockScreenInlineReply);
}
bool IsLockScreenNotificationsEnabled() {
return base::FeatureList::IsEnabled(kLockScreenNotifications);
}
bool IsMacAddressRandomizationEnabled() {
return base::FeatureList::IsEnabled(kMacAddressRandomization);
}
bool IsManagedDeviceUIRedesignEnabled() {
return base::FeatureList::IsEnabled(kManagedDeviceUIRedesign);
}
bool IsManagedTermsOfServiceEnabled() {
return base::FeatureList::IsEnabled(kManagedTermsOfService);
}
bool IsMicMuteNotificationsEnabled() {
return base::FeatureList::IsEnabled(kMicMuteNotifications);
}
bool IsMinimumChromeVersionEnabled() {
return base::FeatureList::IsEnabled(kMinimumChromeVersion);
}
bool IsNearbyKeepAliveFixEnabled() {
return base::FeatureList::IsEnabled(kNearbyKeepAliveFix);
}
bool IsNetworkingInDiagnosticsAppEnabled() {
return base::FeatureList::IsEnabled(kEnableNetworkingInDiagnosticsApp);
}
bool IsOAuthIppEnabled() {
return base::FeatureList::IsEnabled(kEnableOAuthIpp);
}
bool IsNewLockScreenReauthLayoutEnabled() {
return base::FeatureList::IsEnabled(kNewLockScreenReauthLayout);
}
bool IsNotificationExpansionAnimationEnabled() {
return base::FeatureList::IsEnabled(kNotificationExpansionAnimation);
}
bool IsNotificationExperimentalShortTimeoutsEnabled() {
return base::FeatureList::IsEnabled(kNotificationExperimentalShortTimeouts);
}
bool IsNotificationScrollBarEnabled() {
return base::FeatureList::IsEnabled(kNotificationScrollBar);
}
bool IsNotificationsInContextMenuEnabled() {
return base::FeatureList::IsEnabled(kNotificationsInContextMenu);
}
bool IsNotificationsRefreshEnabled() {
return base::FeatureList::IsEnabled(kNotificationsRefresh);
}
bool IsOobeChromeVoxHintEnabled() {
return base::FeatureList::IsEnabled(kEnableOobeChromeVoxHint);
}
bool IsOobeHidDetectionRevampEnabled() {
return base::FeatureList::IsEnabled(kOobeHidDetectionRevamp) &&
base::FeatureList::IsEnabled(kBluetoothRevamp);
}
bool IsKioskEnrollmentInOobeEnabled() {
return base::FeatureList::IsEnabled(kEnableKioskEnrollmentInOobe);
}
bool IsKioskLoginScreenEnabled() {
return base::FeatureList::IsEnabled(kEnableKioskLoginScreen);
}
bool IsOobeNetworkScreenSkipEnabled() {
return base::FeatureList::IsEnabled(kEnableOobeNetworkScreenSkip);
}
bool IsOobeConsolidatedConsentEnabled() {
return base::FeatureList::IsEnabled(kOobeConsolidatedConsent);
}
bool IsOobeQuickStartEnabled() {
return base::FeatureList::IsEnabled(kOobeQuickStart);
}
bool IsOobeNewRecommendAppsEnabled() {
return base::FeatureList::IsEnabled(kOobeNewRecommendApps);
}
bool IsOobeRemoveShutdownButtonEnabled() {
return base::FeatureList::IsEnabled(kOobeRemoveShutdownButton);
}
bool IsOobeThemeSelectionEnabled() {
return base::FeatureList::IsEnabled(kEnableOobeThemeSelection);
}
bool IsPartialSplitEnabled() {
return base::FeatureList::IsEnabled(kPartialSplit);
}
bool IsPcieBillboardNotificationEnabled() {
return base::FeatureList::IsEnabled(kPcieBillboardNotification);
}
bool IsPerDeskShelfEnabled() {
return base::FeatureList::IsEnabled(kPerDeskShelf);
}
bool IsPhoneHubCameraRollEnabled() {
return base::FeatureList::IsEnabled(kPhoneHubCameraRoll);
}
bool IsPhoneHubMonochromeNotificationIconsEnabled() {
return base::FeatureList::IsEnabled(kPhoneHubMonochromeNotificationIcons);
}
bool IsPhoneHubFeatureSetupErrorHandlingEnabled() {
return base::FeatureList::IsEnabled(kPhoneHubFeatureSetupErrorHandling);
}
bool IsPerformantSplitViewResizingEnabled() {
return base::FeatureList::IsEnabled(kPerformantSplitViewResizing);
}
bool IsPersonalizationHubEnabled() {
return base::FeatureList::IsEnabled(kPersonalizationHub);
}
bool IsPhoneHubEnabled() {
return base::FeatureList::IsEnabled(kPhoneHub);
}
bool IsPhoneHubCallNotificationEnabled() {
return base::FeatureList::IsEnabled(kPhoneHubCallNotification);
}
bool IsPinAutosubmitBackfillFeatureEnabled() {
return base::FeatureList::IsEnabled(kQuickUnlockPinAutosubmitBackfill);
}
bool IsPinAutosubmitFeatureEnabled() {
return base::FeatureList::IsEnabled(kQuickUnlockPinAutosubmit);
}
bool IsPipRoundedCornersEnabled() {
return base::FeatureList::IsEnabled(kPipRoundedCorners);
}
bool IsPolyDevicePairingAllowed() {
return base::FeatureList::IsEnabled(kAllowPolyDevicePairing);
}
bool IsPrivacyIndicatorsEnabled() {
return base::FeatureList::IsEnabled(kPrivacyIndicators);
}
bool IsProductivityLauncherEnabled() {
return base::FeatureList::IsEnabled(kProductivityLauncher);
}
bool IsProjectorEnabled() {
return IsProjectorAllUserEnabled() || IsProjectorManagedUserEnabled();
}
bool IsProjectorAllUserEnabled() {
return base::FeatureList::IsEnabled(kProjector);
}
bool IsProjectorManagedUserEnabled() {
return base::FeatureList::IsEnabled(kProjectorManagedUser);
}
bool IsProjectorAnnotatorEnabled() {
return IsProjectorEnabled() &&
base::FeatureList::IsEnabled(kProjectorAnnotator);
}
bool IsProjectorAppDebugMode() {
return base::FeatureList::IsEnabled(kProjectorAppDebug);
}
bool IsProjectorExcludeTranscriptEnabled() {
return base::FeatureList::IsEnabled(kProjectorExcludeTranscript);
}
bool IsProjectorTutorialVideoViewEnabled() {
return base::FeatureList::IsEnabled(kProjectorTutorialVideoView);
}
bool IsProjectorCustomThumbnailEnabled() {
return base::FeatureList::IsEnabled(kProjectorCustomThumbnail);
}
bool IsProjectorManagedUserIgnorePolicyEnabled() {
return base::FeatureList::IsEnabled(kProjectorManagedUserIgnorePolicy);
}
bool IsProjectorShowShortPseudoTranscript() {
return base::FeatureList::IsEnabled(kProjectorShowShortPseudoTranscript);
}
bool IsProjectorUpdateIndexableTextEnabled() {
return base::FeatureList::IsEnabled(kProjectorUpdateIndexableText);
}
bool IsProjectorUseOAuthForGetVideoInfoEnabled() {
return base::FeatureList::IsEnabled(kProjectorUseOAuthForGetVideoInfo);
}
bool IsProjectorLocalPlaybackEnabled() {
return base::FeatureList::IsEnabled(kProjectorLocalPlayback);
}
bool IsQsRevampEnabled() {
return base::FeatureList::IsEnabled(kQsRevamp);
}
bool IsQuickDimEnabled() {
return base::FeatureList::IsEnabled(kQuickDim) && ash::switches::HasHps();
}
bool IsQuickSettingsNetworkRevampEnabled() {
return base::FeatureList::IsEnabled(kQuickSettingsNetworkRevamp);
}
bool IsRedirectToDefaultIdPEnabled() {
return base::FeatureList::IsEnabled(kRedirectToDefaultIdP);
}
bool IsReleaseTrackUiEnabled() {
return base::FeatureList::IsEnabled(kReleaseTrackUi);
}
bool IsReverseScrollGesturesEnabled() {
return base::FeatureList::IsEnabled(kReverseScrollGestures);
}
bool IsRgbKeyboardEnabled() {
return base::FeatureList::IsEnabled(kRgbKeyboard);
}
bool IsSamlNotificationOnPasswordChangeSuccessEnabled() {
return base::FeatureList::IsEnabled(
kEnableSamlNotificationOnPasswordChangeSuccess);
}
bool IsSamlReauthenticationOnLockscreenEnabled() {
return base::FeatureList::IsEnabled(kEnableSamlReauthenticationOnLockscreen);
}
bool IsSavedDesksEnabled() {
return base::FeatureList::IsEnabled(kEnableSavedDesks);
}
bool IsScalableStatusAreaEnabled() {
return base::FeatureList::IsEnabled(kScalableStatusArea);
}
bool IsSeparateNetworkIconsEnabled() {
return base::FeatureList::IsEnabled(kSeparateNetworkIcons);
}
bool IsSettingsAppNotificationSettingsEnabled() {
return base::FeatureList::IsEnabled(kSettingsAppNotificationSettings);
}
bool IsSettingsAppThemeChangeAnimationEnabled() {
return IsDarkLightModeEnabled() &&
base::FeatureList::IsEnabled(kSettingsAppThemeChangeAnimation);
}
bool IsShelfLauncherNudgeEnabled() {
return IsProductivityLauncherEnabled() &&
base::FeatureList::IsEnabled(kShelfLauncherNudge);
}
bool IsShelfPalmRejectionSwipeOffsetEnabled() {
return base::FeatureList::IsEnabled(kShelfPalmRejectionSwipeOffset);
}
bool IsShimlessRMAFlowEnabled() {
return base::FeatureList::IsEnabled(kShimlessRMAFlow);
}
bool IsShimlessRMAStandaloneAppEnabled() {
return base::FeatureList::IsEnabled(kShimlessRMAEnableStandalone) &&
IsShimlessRMAFlowEnabled();
}
bool IsShimlessRMAOsUpdateEnabled() {
return base::FeatureList::IsEnabled(kShimlessRMAOsUpdate);
}
bool IsShimlessRMADarkModeDisabled() {
return base::FeatureList::IsEnabled(kShimlessRMADisableDarkMode);
}
bool IsSimLockPolicyEnabled() {
return base::FeatureList::IsEnabled(kSimLockPolicy);
}
bool IsSyncSettingsCategorizationEnabled() {
return base::FeatureList::IsEnabled(kSyncSettingsCategorization);
}
bool IsStylusBatteryStatusEnabled() {
return base::FeatureList::IsEnabled(kStylusBatteryStatus);
}
bool IsTabClusterUIEnabled() {
return base::FeatureList::IsEnabled(kTabClusterUI);
}
bool IsTouchpadInDiagnosticsAppEnabled() {
return base::FeatureList::IsEnabled(kEnableTouchpadsInDiagnosticsApp);
}
bool IsTouchscreenInDiagnosticsAppEnabled() {
return base::FeatureList::IsEnabled(kEnableTouchscreensInDiagnosticsApp);
}
bool IsTrafficCountersEnabled() {
return base::FeatureList::IsEnabled(kTrafficCountersEnabled);
}
bool IsTrilinearFilteringEnabled() {
static bool use_trilinear_filtering =
base::FeatureList::IsEnabled(kTrilinearFiltering);
return use_trilinear_filtering;
}
bool IsUploadOfficeToCloudEnabled() {
return base::FeatureList::IsEnabled(kUploadOfficeToCloud);
}
bool IsUseAuthFactorsEnabled() {
return base::FeatureList::IsEnabled(kUseAuthFactors);
}
bool IsUseLoginShelfWidgetEnabled() {
return base::FeatureList::IsEnabled(kUseLoginShelfWidget);
}
bool IsUseStorkSmdsServerAddressEnabled() {
return base::FeatureList::IsEnabled(kUseStorkSmdsServerAddress);
}
bool IsWallpaperFastRefreshEnabled() {
return base::FeatureList::IsEnabled(kWallpaperFastRefresh);
}
bool IsWallpaperFullScreenPreviewEnabled() {
return base::FeatureList::IsEnabled(kWallpaperFullScreenPreview);
}
bool IsWallpaperGooglePhotosIntegrationEnabled() {
return base::FeatureList::IsEnabled(kWallpaperGooglePhotosIntegration);
}
bool IsWallpaperPerDeskEnabled() {
return base::FeatureList::IsEnabled(kWallpaperPerDesk);
}
bool IsWebUITabStripTabDragIntegrationEnabled() {
return base::FeatureList::IsEnabled(kWebUITabStripTabDragIntegration);
}
bool IsWifiSyncAndroidEnabled() {
return base::FeatureList::IsEnabled(kWifiSyncAndroid);
}
bool ShouldArcAndGuestOsFileTasksUseAppService() {
return base::FeatureList::IsEnabled(kArcAndGuestOsFileTasksUseAppService);
}
bool ShouldShowPlayStoreInDemoMode() {
return base::FeatureList::IsEnabled(kShowPlayInDemoMode);
}
bool ShouldUseAttachApn() {
// See comment on |kCellularForbidAttachApn| for details.
return !base::FeatureList::IsEnabled(kCellularForbidAttachApn) &&
base::FeatureList::IsEnabled(kCellularUseAttachApn);
}
bool ShouldUseV1DeviceSync() {
return !ShouldUseV2DeviceSync() ||
!base::FeatureList::IsEnabled(kDisableCryptAuthV1DeviceSync);
}
bool ShouldUseV2DeviceSync() {
return base::FeatureList::IsEnabled(kCryptAuthV2Enrollment) &&
base::FeatureList::IsEnabled(kCryptAuthV2DeviceSync);
}
namespace {
// The boolean flag indicating if "WebUITabStrip" feature is enabled in Chrome.
bool g_webui_tab_strip_enabled = false;
} // namespace
void SetWebUITabStripEnabled(bool enabled) {
g_webui_tab_strip_enabled = enabled;
}
bool IsWebUITabStripEnabled() {
return g_webui_tab_strip_enabled;
}
} // namespace features
} // namespace ash