blob: c4d75e9588a98a2858dafd915b1e428266a767fe [file] [log] [blame]
// Copyright 2018 The Chromium Authors
// 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/branding_buildflags.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.
BASE_FEATURE(kInstantTetheringBackgroundAdvertisementSupport,
"InstantTetheringBackgroundAdvertisementSupport",
base::FEATURE_ENABLED_BY_DEFAULT);
constexpr char kChromeOSReleaseTrack[] = "CHROMEOS_RELEASE_TRACK";
constexpr char kTestImageRelease[] = "testimage-channel";
} // namespace
// Enables the UI and logic that minimizes the amount of time the device spends
// at full battery. This preserves battery lifetime.
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.
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.
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.
BASE_FEATURE(kAllowAmbientEQ,
"AllowAmbientEQ",
base::FEATURE_DISABLED_BY_DEFAULT);
// Allows network connections which use EAP methods that validate the
// server certificate to use the default server CA certificate without
// verifying the servers identity.
BASE_FEATURE(kAllowEapDefaultCasWithoutSubjectVerification,
"AllowEapDefaultCasWithoutSubjectVerification",
base::FEATURE_DISABLED_BY_DEFAULT);
// Controls whether devices are updated before reboot after the first update.
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.
BASE_FEATURE(kAlwaysReinstallSystemWebApps,
"ReinstallSystemWebApps",
base::FEATURE_DISABLED_BY_DEFAULT);
// Shows settings for adjusting scroll acceleration/sensitivity for
// mouse/touchpad.
BASE_FEATURE(kAllowScrollSettings,
"AllowScrollSettings",
base::FEATURE_DISABLED_BY_DEFAULT);
BASE_FEATURE(kAltClickAndSixPackCustomization,
"AltClickAndSixPackCustomization",
base::FEATURE_DISABLED_BY_DEFAULT);
// Controls whether to enable AutoEnrollment for Kiosk in OOBE
BASE_FEATURE(kAutoEnrollmentKioskInOobe,
"AutoEnrollmentKioskInOobe",
base::FEATURE_ENABLED_BY_DEFAULT);
// Controls whether to allow Dev channel to use Prod server feature.
BASE_FEATURE(kAmbientModeDevUseProdFeature,
"ChromeOSAmbientModeDevChannelUseProdServer",
base::FEATURE_DISABLED_BY_DEFAULT);
// Controls whether to enable Ambient mode album selection with photo previews.
BASE_FEATURE(kAmbientModePhotoPreviewFeature,
"ChromeOSAmbientModePhotoPreview",
base::FEATURE_ENABLED_BY_DEFAULT);
// Controls whether to throttle the frame rate of Lottie animations in ambient
// mode. The slower frame rate may lead to power consumption savings, but also
// may decrease the animation's smoothness if not done properly.
BASE_FEATURE(kAmbientModeThrottleAnimation,
"ChromeOSAmbientModeThrottleAnimation",
base::FEATURE_DISABLED_BY_DEFAULT);
// Controls whether the logic for managed screensaver is enabled or not.
BASE_FEATURE(kAmbientModeManagedScreensaver,
"ChromeOSAmbientModeManagedScreensaver",
base::FEATURE_DISABLED_BY_DEFAULT);
BASE_FEATURE(kApnRevamp, "ApnRevamp", base::FEATURE_DISABLED_BY_DEFAULT);
BASE_FEATURE(kAppCollectionFolderRefresh,
"AppCollectionFolderRefresh",
base::FEATURE_ENABLED_BY_DEFAULT);
BASE_FEATURE(kAppLaunchAutomation,
"AppLaunchAutomation",
base::FEATURE_DISABLED_BY_DEFAULT);
// Controls whether to enable ARC ADB sideloading support.
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.
BASE_FEATURE(kArcFuseBoxFileSharing,
"ArcFuseBoxFileSharing",
base::FEATURE_ENABLED_BY_DEFAULT);
// Controls whether to enable support for ARC Input Overlay Beta.
BASE_FEATURE(kArcInputOverlayBeta,
"ArcInputOverlayBeta",
base::FEATURE_DISABLED_BY_DEFAULT);
// Controls whether to enable support for ARC Input Overlay Alpha v2.
BASE_FEATURE(kArcInputOverlayAlphaV2,
"ArcInputOverlayAlphaV2",
base::FEATURE_ENABLED_BY_DEFAULT);
// Controls whether to enable support for ARC ADB sideloading for managed
// accounts and/or devices.
BASE_FEATURE(kArcManagedAdbSideloadingSupport,
"ArcManagedAdbSideloadingSupport",
base::FEATURE_DISABLED_BY_DEFAULT);
// Controls whether to enable enhanced assistive emoji suggestions.
BASE_FEATURE(kAssistEmojiEnhanced,
"AssistEmojiEnhanced",
base::FEATURE_DISABLED_BY_DEFAULT);
// Controls whether to enable assistive multi word suggestions.
BASE_FEATURE(kAssistMultiWord,
"AssistMultiWord",
base::FEATURE_DISABLED_BY_DEFAULT);
// Controls whether to enable assistive multi word suggestions on an expanded
// list of surfaces.
BASE_FEATURE(kAssistMultiWordExpanded,
"AssistMultiWordExpanded",
base::FEATURE_DISABLED_BY_DEFAULT);
BASE_FEATURE(kAssistantNativeIcons,
"AssistantNativeIcons",
base::FEATURE_ENABLED_BY_DEFAULT);
// Enables Peripheral volume change by hardware reported steps
BASE_FEATURE(kAudioPeripheralVolumeGranularity,
"AudioPeripheralVolumeGranularity",
base::FEATURE_ENABLED_BY_DEFAULT);
// Controls whether the AudioSourceFetcher resamples the audio for speech
// recongnition.
BASE_FEATURE(kAudioSourceFetcherResampling,
"AudioSourceFetcherResampling",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables the Audio Settings Page in System Settings, which allows
// audio configuration. crbug.com/1092970.
BASE_FEATURE(kAudioSettingsPage,
"AudioSettingsPage",
base::FEATURE_ENABLED_BY_DEFAULT);
// Enables the Audio URL that is designed to help user debug or troubleshoot
// common issues on ChromeOS.
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.
BASE_FEATURE(kAutoNightLight,
"AutoNightLight",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables or disables auto screen-brightness adjustment when ambient light
// changes.
BASE_FEATURE(kAutoScreenBrightness,
"AutoScreenBrightness",
base::FEATURE_ENABLED_BY_DEFAULT);
// Enables or disables extended autocomplete results.
BASE_FEATURE(kAutocompleteExtendedSuggestions,
"AutocompleteExtendedSuggestions",
base::FEATURE_ENABLED_BY_DEFAULT);
// Enables params tuning experiment for autocorrect on ChromeOS.
BASE_FEATURE(kAutocorrectParamsTuning,
"AutocorrectParamsTuning",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables using a toggle for enabling autocorrect on ChromeOS.
BASE_FEATURE(kAutocorrectToggle,
"AutocorrectToggle",
base::FEATURE_ENABLED_BY_DEFAULT);
// Enables using a toggle for enabling autocorrect on ChromeOS.
BASE_FEATURE(kAutocorrectByDefault,
"AutocorrectByDefault",
base::FEATURE_DISABLED_BY_DEFAULT);
// If enabled, the autozoom nudge shown prefs will be reset at the start of
// each new user session.
BASE_FEATURE(kAutozoomNudgeSessionReset,
"AutozoomNudgeSessionReset",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables loading avatar images from the cloud on ChromeOS.
BASE_FEATURE(kAvatarsCloudMigration,
"AvatarsCloudMigration",
base::FEATURE_ENABLED_BY_DEFAULT);
// Enables or disables the usage of fixed Bluetooth A2DP packet size to improve
// audio performance in noisy environment.
BASE_FEATURE(kBluetoothFixA2dpPacketSize,
"BluetoothFixA2dpPacketSize",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables or disables the Bluetooth Quality Report feature.
BASE_FEATURE(kBluetoothQualityReport,
"BluetoothQualityReport",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables or disables Bluetooth WBS microphone be selected as default
// audio input option.
BASE_FEATURE(kBluetoothWbsDogfood,
"BluetoothWbsDogfood",
base::FEATURE_DISABLED_BY_DEFAULT);
BASE_FEATURE(kRobustAudioDeviceSelectLogic,
"RobustAudioDeviceSelectLogic",
base::FEATURE_ENABLED_BY_DEFAULT);
// Enable Big GL when using Borealis.
BASE_FEATURE(kBorealisBigGl, "BorealisBigGl", base::FEATURE_ENABLED_BY_DEFAULT);
// Enable dGPU when using Borealis.
BASE_FEATURE(kBorealisDGPU, "BorealisDGPU", base::FEATURE_ENABLED_BY_DEFAULT);
// Enable experimental disk management changes for Borealis.
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.
BASE_FEATURE(kBorealisPermitted,
"BorealisPermitted",
base::FEATURE_DISABLED_BY_DEFAULT);
// Force the steam client to be on its beta version. If not set, the client will
// be on its stable version.
BASE_FEATURE(kBorealisForceBetaClient,
"BorealisForceBetaClient",
base::FEATURE_DISABLED_BY_DEFAULT);
// Force the steam client to render in 2x size (using GDK_SCALE as discussed in
// b/171935238#comment4).
BASE_FEATURE(kBorealisForceDoubleScale,
"BorealisForceDoubleScale",
base::FEATURE_DISABLED_BY_DEFAULT);
// Prevent the steam client from exercising ChromeOS integrations, in this mode
// it functions more like the linux client.
BASE_FEATURE(kBorealisLinuxMode,
"BorealisLinuxMode",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enable storage ballooning for Borealis. This takes precedence over
// kBorealisDiskManagement.
BASE_FEATURE(kBorealisStorageBallooning,
"BorealisStorageBallooning",
base::FEATURE_ENABLED_BY_DEFAULT);
// Enable or disable calendar jelly.
BASE_FEATURE(kCalendarJelly,
"CalendarJelly",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables to allow time-lapse video recording in the camera app.
BASE_FEATURE(kCameraAppTimeLapse,
"CameraAppTimeLapse",
base::FEATURE_DISABLED_BY_DEFAULT);
// Controls whether the camera privacy switch toasts and notification should be
// displayed.
BASE_FEATURE(kCameraPrivacySwitchNotifications,
"CameraPrivacySwitchNotifications",
base::FEATURE_ENABLED_BY_DEFAULT);
// Controls whether the capture mode advanced audio settings are enabled.
BASE_FEATURE(kCaptureModeAudioMixing,
"CaptureModeAudioMixing",
base::FEATURE_DISABLED_BY_DEFAULT);
// Controls whether the capture mode demo tools feature is enabled for Capture
// Mode.
BASE_FEATURE(kCaptureModeDemoTools,
"CaptureModeDemoTools",
base::FEATURE_ENABLED_BY_DEFAULT);
// Enables the tour that walks new users through the Capture Mode feature.
BASE_FEATURE(kCaptureModeTour,
"CaptureModeTour",
base::FEATURE_DISABLED_BY_DEFAULT);
// If enabled, allow eSIM installation bypass the non-cellular internet
// connectivity check.
BASE_FEATURE(kCellularBypassESimInstallationConnectivityCheck,
"CellularBypassESimInstallationConnectivityCheck",
base::FEATURE_DISABLED_BY_DEFAULT);
// If enabled, use second the Euicc that is exposed by Hermes in Cellular Setup
// and Settings.
BASE_FEATURE(kCellularUseSecondEuicc,
"CellularUseSecondEuicc",
base::FEATURE_DISABLED_BY_DEFAULT);
// If enabled, Multiple scraped passwords should be checked against password in
// cryptohome.
BASE_FEATURE(kCheckPasswordsAgainstCryptohomeHelper,
"CheckPasswordsAgainstCryptohomeHelper",
base::FEATURE_DISABLED_BY_DEFAULT);
// When enabled alongside the keyboard auto-repeat setting, holding down Ctrl+V
// will cause the clipboard history menu to show. From there, the user can
// select a clipboard history item to replace the initially pasted content.
BASE_FEATURE(kClipboardHistoryLongpress,
"ClipboardHistoryLongpress",
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.
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.
BASE_FEATURE(kConsumerAutoUpdateToggleAllowed,
"ConsumerAutoUpdateToggleAllowed",
base::FEATURE_ENABLED_BY_DEFAULT);
// Enables Privacy Hub for ChromeOS.
BASE_FEATURE(kCrosPrivacyHub,
"CrosPrivacyHub",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables Privacy Hub features selected for dogfooding.
BASE_FEATURE(kCrosPrivacyHubV0,
"CrosPrivacyHubV0",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables future features for Privacy Hub for ChromeOS.
BASE_FEATURE(kCrosPrivacyHubV2,
"CrosPrivacyHubV2",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables syncing attestation certificates to cryptauth for use by Cross Device
// features, including Eche and Phone Hub.
BASE_FEATURE(kCryptauthAttestationSyncing,
"CryptauthAttestationSyncing",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables contextual nudges for gesture education.
BASE_FEATURE(kContextualNudges,
"ContextualNudges",
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
BASE_FEATURE(kCrostiniGpuSupport,
"CrostiniGpuSupport",
base::FEATURE_DISABLED_BY_DEFAULT);
// Force enable recreating the LXD DB at LXD launch.
BASE_FEATURE(kCrostiniResetLxdDb,
"CrostiniResetLxdDb",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables experimental UI creating and managing multiple Crostini containers.
BASE_FEATURE(kCrostiniMultiContainer,
"CrostiniMultiContainer",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables or disables Crostini IME support.
BASE_FEATURE(kCrostiniImeSupport,
"CrostiniImeSupport",
base::FEATURE_ENABLED_BY_DEFAULT);
// Enables or disables Crostini Virtual Keyboard support.
BASE_FEATURE(kCrostiniVirtualKeyboardSupport,
"CrostiniVirtualKeyboardSupport",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables or disables support for third party VMs.
BASE_FEATURE(kBruschetta, "Bruschetta", base::FEATURE_DISABLED_BY_DEFAULT);
// Enables or disables migration for third party VMs installed during alpha.
BASE_FEATURE(kBruschettaAlphaMigrate,
"BruschettaAlphaMigrate",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables the Captive Portal Error Page changes, which shows a suggestion in
// the Chrome error page on ChromeOS when behind a captive portal.
BASE_FEATURE(kCaptivePortalErrorPage,
"CaptivePortalErrorPage",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables or disables always using device-activity-status data to filter
// eligible host phones.
BASE_FEATURE(kCryptAuthV2AlwaysUseActiveEligibleHosts,
"kCryptAuthV2AlwaysUseActiveEligibleHosts",
base::FEATURE_ENABLED_BY_DEFAULT);
// Enables or disables using Cryptauth's GetDevicesActivityStatus API.
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.
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.
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.
BASE_FEATURE(kCryptAuthV2DeviceSync,
"CryptAuthV2DeviceSync",
base::FEATURE_ENABLED_BY_DEFAULT);
// Enables or disables the CryptAuth v2 Enrollment flow.
BASE_FEATURE(kCryptAuthV2Enrollment,
"CryptAuthV2Enrollment",
base::FEATURE_ENABLED_BY_DEFAULT);
// Enables the cryptohome recovery feature:
// - Enable recovery via the recovery service.
// - New UI for Cryptohome recovery and Gaia password changed screen.
// - Adds a "recover user" button to the error bubble that opens when the
// user fails to enter their correct password.
// - 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.
BASE_FEATURE(kCryptohomeRecovery,
"CryptohomeRecovery",
base::FEATURE_DISABLED_BY_DEFAULT);
// Deprecates Ctrl+Alt+/ as shortcut to open Keyboard shortcuts app, shows
// a notification if that shortcut is pressed, and replaces that shortcut with
// Ctrl+Search+S to open the app.
BASE_FEATURE(kDeprecateOldKeyboardShortcutsAccelerator,
"DeprecateOldKeyboardShortcutsAccelerator",
base::FEATURE_DISABLED_BY_DEFAULT);
// Adds a desk button to the shelf that the user can use to navigate between
// desks.
BASE_FEATURE(kDeskButton, "DeskButton", base::FEATURE_DISABLED_BY_DEFAULT);
// Enables or disables Sync for desk templates on ChromeOS.
BASE_FEATURE(kDeskTemplateSync,
"DeskTemplateSync",
base::FEATURE_ENABLED_BY_DEFAULT);
BASE_FEATURE(kDesksTemplates,
"DesksTemplates",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables diacritics on longpress on the physical keyboard.
BASE_FEATURE(kDiacriticsOnPhysicalKeyboardLongpress,
"DiacriticsOnPhysicalKeyboardLongpress",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables diacritics on longpress on the physical keyboard by default.
BASE_FEATURE(kDiacriticsOnPhysicalKeyboardLongpressDefaultOn,
"DiacriticsOnPhysicalKeyboardLongpressDefaultOn",
base::FEATURE_DISABLED_BY_DEFAULT);
// When enabled, diacritics on longpress will use |ReplaceSurroundingText| API,
// which is atomic and compatible with more apps.
BASE_FEATURE(kDiacriticsUseReplaceSurroundingText,
"DiacriticsUseReplaceSurroundingText",
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.
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.
BASE_FEATURE(kDisableLacrosTtsSupport,
"DisableLacrosTtsSupport",
base::FEATURE_ENABLED_BY_DEFAULT);
// Disables the DNS proxy service for ChromeOS.
BASE_FEATURE(kDisableDnsProxy,
"DisableDnsProxy",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables indicators to hint where displays are connected.
BASE_FEATURE(kDisplayAlignAssist,
"DisplayAlignAssist",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enable DNS over HTTPS(DoH) with identifiers.Only available on ChromeOS.
BASE_FEATURE(kDnsOverHttpsWithIdentifiers,
"DnsOverHttpsWithIdentifiers",
base::FEATURE_ENABLED_BY_DEFAULT);
// Enable experiment to support identifiers in the existing policy
// DnsOverHttpsTemplates. When this option is enabled, a hard-coded salt value
// is used for hashing the identifiers in the template URI. Only available on
// ChromeOS.
// TODO(acostinas, srad, b/233845305) Remove when policy is added to DPanel.
BASE_FEATURE(kDnsOverHttpsWithIdentifiersReuseOldPolicy,
"DnsOverHttpsWithIdentifiersReuseOldPolicy",
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.
BASE_FEATURE(kDockedMagnifier,
"DockedMagnifier",
base::FEATURE_ENABLED_BY_DEFAULT);
// If enabled, DriveFS will be used for Drive sync.
BASE_FEATURE(kDriveFs, "DriveFS", base::FEATURE_ENABLED_BY_DEFAULT);
// Enables DriveFS' experimental local files mirroring functionality.
BASE_FEATURE(kDriveFsMirroring,
"DriveFsMirroring",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables access to Chrome's Network Service for DriveFS.
BASE_FEATURE(kDriveFsChromeNetworking,
"DriveFsChromeNetworking",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables DriveFS' bulk pinning functionality.
BASE_FEATURE(kDriveFsBulkPinning,
"DriveFsBulkPinning",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables DriveFS' bulk pinning functionality. This flag is to be enabled by
// the feature management module.
BASE_FEATURE(kFeatureManagementDriveFsBulkPinning,
"FeatureManagementDriveFsBulkPinning",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables partial support of CSE files on ChromeOS: users will be able to see
// the files and open in web apps, but not to open/read/write CSE files locally.
BASE_FEATURE(kDriveFsShowCSEFiles,
"DriveFsShowCSEFiles",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables authenticating to Wi-Fi networks using EAP-GTC.
BASE_FEATURE(kEapGtcWifiAuthentication,
"EapGtcWifiAuthentication",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables the System Web App (SWA) version of Eche.
BASE_FEATURE(kEcheSWA, "EcheSWA", base::FEATURE_ENABLED_BY_DEFAULT);
// Enables the Debug Mode of Eche.
BASE_FEATURE(kEcheSWADebugMode,
"EcheSWADebugMode",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables the E2E latecny measurement of Eche.
BASE_FEATURE(kEcheSWAMeasureLatency,
"EcheSWAMeasureLatency",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables sending start signaling to establish Eche's WebRTC connection.
BASE_FEATURE(kEcheSWASendStartSignaling,
"EcheSWASendStartSignaling",
base::FEATURE_ENABLED_BY_DEFAULT);
// Allows disabling the stun servers when establishing a WebRTC connection to
// Eche.
BASE_FEATURE(kEcheSWADisableStunServer,
"EcheSWADisableStunServer",
base::FEATURE_DISABLED_BY_DEFAULT);
// Allows CrOS to analyze Android
// network information to provide more context on connection errors.
BASE_FEATURE(kEcheSWACheckAndroidNetworkInfo,
"EcheSWACheckAndroidNetworkInfo",
base::FEATURE_ENABLED_BY_DEFAULT);
// Allows CrOS to process Android
// accessibility tree information.
BASE_FEATURE(kEcheSWAProcessAndroidAccessibilityTree,
"EcheSWAProcessAndroidAccessibilityTree",
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.
BASE_FEATURE(kEnableBackgroundBlur,
"EnableBackgroundBlur",
base::FEATURE_ENABLED_BY_DEFAULT);
// Enables external keyboard testers in the diagnostics app.
BASE_FEATURE(kEnableExternalKeyboardsInDiagnostics,
"EnableExternalKeyboardsInDiagnosticsApp",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables loading debug daemon logs for feedback in parallel to reduce client
// side wait time.
BASE_FEATURE(kEnableGetDebugdLogsInParallel,
"EnableGetDebugdLogsInParallel",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables setting the device hostname.
BASE_FEATURE(kEnableHostnameSetting,
"EnableHostnameSetting",
base::FEATURE_DISABLED_BY_DEFAULT);
// If enabled, the input device cards will be shown in the diagnostics app.
BASE_FEATURE(kEnableInputInDiagnosticsApp,
"EnableInputInDiagnosticsApp",
base::FEATURE_ENABLED_BY_DEFAULT);
// If enabled, the jelly colors will be used in the diagnostics app. Requires
// jelly-colors flag to also be enabled.
BASE_FEATURE(kDiagnosticsAppJelly,
"kDiagnosticsAppJelly",
base::FEATURE_ENABLED_BY_DEFAULT);
// Enables or disables keyboard backlight toggle.
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.
BASE_FEATURE(kEnableLazyLoginWebUILoading,
"EnableLazyLoginWebUILoading",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables LocalSearchService to be initialized.
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.
BASE_FEATURE(kEnableLogControllerForDiagnosticsApp,
"EnableLogControllerForDiagnosticsApp",
base::FEATURE_ENABLED_BY_DEFAULT);
// Enables OAuth support when printing via the IPP protocol.
BASE_FEATURE(kEnableOAuthIpp,
"EnableOAuthIpp",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables the OOBE ChromeVox hint dialog and announcement feature.
BASE_FEATURE(kEnableOobeChromeVoxHint,
"EnableOobeChromeVoxHint",
base::FEATURE_ENABLED_BY_DEFAULT);
// Enables Kiosk enrollment option in OOBE.
BASE_FEATURE(kEnableKioskEnrollmentInOobe,
"EnableKioskEnrollmentInOobe",
base::FEATURE_ENABLED_BY_DEFAULT);
// Enables Kiosk UI in Login screen.
BASE_FEATURE(kEnableKioskLoginScreen,
"EnableKioskLoginScreen",
base::FEATURE_ENABLED_BY_DEFAULT);
// Enables skipping of network screen.
BASE_FEATURE(kEnableOobeNetworkScreenSkip,
"EnableOobeNetworkScreenSkip",
base::FEATURE_ENABLED_BY_DEFAULT);
// Enables showing notification after the password change for SAML users.
BASE_FEATURE(kEnableSamlNotificationOnPasswordChangeSuccess,
"EnableSamlNotificationOnPasswordChangeSuccess",
base::FEATURE_ENABLED_BY_DEFAULT);
// Enables all registered system web apps, regardless of their respective
// feature flags.
BASE_FEATURE(kEnableAllSystemWebApps,
"EnableAllSystemWebApps",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables per-desk Z order for all-desk windows.
BASE_FEATURE(kEnablePerDeskZOrder,
"EnablePerDeskZOrder",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables RFC8925 (prefer IPv6-only on an IPv6-only-capable network).
BASE_FEATURE(kEnableRFC8925,
"EnableRFC8925",
base::FEATURE_DISABLED_BY_DEFAULT);
// If enabled, touchpad cards will be shown in the diagnostics app's input
// section.
BASE_FEATURE(kEnableTouchpadsInDiagnosticsApp,
"EnableTouchpadsInDiagnosticsApp",
base::FEATURE_DISABLED_BY_DEFAULT);
// If enabled, touchscreen cards will be shown in the diagnostics app's input
// section.
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.
BASE_FEATURE(kEnforceAshExtensionKeeplist,
"EnforceAshExtensionKeeplist",
base::FEATURE_ENABLED_BY_DEFAULT);
// Enforces enrollment nudging for managed users during OOBE. This is a
// temporary flag for WIP feature to until we implement required DM server
// controls.
BASE_FEATURE(kEnrollmentNudgingForTesting,
"EnrollmentNudgingForTesting",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables access to the chrome://enterprise-reporting WebUI.
BASE_FEATURE(kEnterpriseReportingUI,
"EnterpriseReportingUI",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables Device End Of Lifetime warning notifications.
BASE_FEATURE(kEolWarningNotifications,
"EolWarningNotifications",
base::FEATURE_ENABLED_BY_DEFAULT);
// Enables Device End Of Lifetime incentive notifications.
BASE_FEATURE(kEolIncentive, "EolIncentive", base::FEATURE_DISABLED_BY_DEFAULT);
const base::FeatureParam<EolIncentiveParam>::Option eol_incentive_options[] = {
{EolIncentiveParam::kNoOffer, "no_offer"},
{EolIncentiveParam::kOffer, "offer"},
{EolIncentiveParam::kOfferWithWarning, "offer_with_warning"}};
const base::FeatureParam<EolIncentiveParam> kEolIncentiveParam{
&kEolIncentive, "incentive_type", EolIncentiveParam::kNoOffer,
&eol_incentive_options};
BASE_FEATURE(kEolIncentiveSettings,
"EolIncentiveSettings",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enable or disable support for touchpad with haptic feedback.
BASE_FEATURE(kExoHapticFeedbackSupport,
"ExoHapticFeedbackSupport",
base::FEATURE_ENABLED_BY_DEFAULT);
// Enables version 3 of the zwp_linux_dmabuf_v1 Wayland protocol.
// This version adds support for DRM modifiers and is required by Mesas Vulkan
// WSI, which otherwise falls back to software rendering.
BASE_FEATURE(kExoLinuxDmabufV3,
"ExoLinuxDmabufV3",
base::FEATURE_ENABLED_BY_DEFAULT);
// Enables version 4 of the zwp_linux_dmabuf_v1 Wayland protocol.
// This version adds support for dynamic feedback, allowing the compositor to
// give clients hints about more optimal DRM formats and modifiers depending on
// e.g. available KMS hardware planes.
BASE_FEATURE(kExoLinuxDmabufV4,
"ExoLinuxDmabufV4",
base::FEATURE_ENABLED_BY_DEFAULT);
// Enables sending explicit modifiers for the zwp_linux_dmabuf_v1 Wayland
// protocol. This option only has an effect with version 3 or 4 of the protocol.
// If disabled only the DRM_FORMAT_MOD_INVALID modifier will be send,
// effectively matching version 2 behavior more closely.
BASE_FEATURE(kExoLinuxDmabufModifiers,
"ExoLinuxDmabufModifiers",
base::FEATURE_ENABLED_BY_DEFAULT);
// Enable or disable use of ordinal (unaccelerated) motion by Exo clients.
BASE_FEATURE(kExoOrdinalMotion,
"ExoOrdinalMotion",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables to check KeyEvent flag to see if the event is consumed by IME
// or not (=decides using heuristics based on key code etc.).
BASE_FEATURE(kExoConsumedByImeByFlag,
"ExoConsumedByImeByFlag",
base::FEATURE_ENABLED_BY_DEFAULT);
// Allows RGB Keyboard to test new animations/patterns.
BASE_FEATURE(kExperimentalRgbKeyboardPatterns,
"ExperimentalRgbKeyboardPatterns",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables the System Web App (SWA) of Face ML.
// This app needs both CrOS and hardware support (Face Auth Camera and System
// Face Auth Service), therefore we only enable it on these eligible devices.
BASE_FEATURE(kFaceMLApp, "FaceMLApp", base::FEATURE_DISABLED_BY_DEFAULT);
// Enables policy that controls feature to allow Family Link accounts on school
// owned devices.
BASE_FEATURE(kFamilyLinkOnSchoolDevice,
"FamilyLinkOnSchoolDevice",
base::FEATURE_ENABLED_BY_DEFAULT);
// Enables the Fast Pair feature.
BASE_FEATURE(kFastPair, "FastPair", base::FEATURE_ENABLED_BY_DEFAULT);
// Enables logic for handling BLE address rotations during retroactive pair
// scenarios.
BASE_FEATURE(kFastPairBleRotation,
"FastPairBleRotation",
base::FEATURE_ENABLED_BY_DEFAULT);
// Sets mode to DEBUG when fetching metadata from the Nearby server, allowing
// debug devices to trigger Fast Pair notifications.
BASE_FEATURE(kFastPairDebugMetadata,
"FastPairDebugMetadata",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables using new Handshake retry logic for Fast Pair.
BASE_FEATURE(kFastPairHandshakeRefactor,
"FastPairHandshakeRefactor",
base::FEATURE_ENABLED_BY_DEFAULT);
// Enables prototype support for Fast Pair HID.
BASE_FEATURE(kFastPairHID, "FastPairHID", base::FEATURE_DISABLED_BY_DEFAULT);
// Enables Saved Devices nicknames logic for Fast Pair.
BASE_FEATURE(kFastPairSavedDevicesNicknames,
"FastPairSavedDevicesNicknames",
base::FEATURE_ENABLED_BY_DEFAULT);
// The amount of minutes we should wait before allowing notifications for a
// recently lost device.
const base::FeatureParam<double> kFastPairDeviceLostNotificationTimeoutMinutes{
&kFastPair, "fast-pair-device-lost-notification-timeout-minutes", 5};
// Enabled Fast Pair sub feature to prevent notifications for recently lost
// devices for |kFastPairDeviceLostNotificationTimeout|.
BASE_FEATURE(kFastPairPreventNotificationsForRecentlyLostDevice,
"FastPairPreventNotificationsForRecentlyLostDevice",
base::FEATURE_ENABLED_BY_DEFAULT);
// Sets Fast Pair scanning to low power mode.
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.
BASE_FEATURE(kFastPairSoftwareScanning,
"FastPairSoftwareScanning",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables the "Saved Devices" Fast Pair page in scenario in Bluetooth Settings.
BASE_FEATURE(kFastPairSavedDevices,
"FastPairSavedDevices",
base::FEATURE_ENABLED_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.
BASE_FEATURE(kFastPairSavedDevicesStrictOptIn,
"FastPairSavedDevicesStrictOptIn",
base::FEATURE_DISABLED_BY_DEFAULT);
// If enabled, allows the creation of up to 16 desks (default is 8). This flag
// is intended to be controlled by the feature management module.
BASE_FEATURE(kFeatureManagement16Desks,
"FeatureManagement16Desks",
base::FEATURE_DISABLED_BY_DEFAULT);
// Restricts the time-of-day wallpaper/screensaver features to the intended
// target population, whereas the `kTimeOfDayScreenSaver|Wallpaper` flags
// control the feature's rollout within said target population. These flags are
// only intended to be modified by the feature_management module.
BASE_FEATURE(kFeatureManagementTimeOfDayScreenSaver,
"FeatureManagementTimeOfDayScreenSaver",
base::FEATURE_DISABLED_BY_DEFAULT);
BASE_FEATURE(kFeatureManagementTimeOfDayWallpaper,
"FeatureManagementTimeOfDayWallpaper",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables the federated service. If enabled, launches federated service when
// user first login.
BASE_FEATURE(kFederatedService,
"FederatedService",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables the federated service to schedule tasks. If disabled, federated
// service works as a simple example receiver and storage.
// This is useful when we want to disable the federated tasks only and allow the
// customers to report examples, because e.g. the tensorflow graphs cost too
// much resources while example storage is supposed to be cheap and safe.
BASE_FEATURE(kFederatedServiceScheduleTasks,
"FederatedServiceScheduleTasks",
base::FEATURE_DISABLED_BY_DEFAULT);
BASE_FEATURE(kFederatedTimezoneCodePhh,
"FederatedTimezoneCodePhh",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables scheduling of launcher query federated analytics tasks.
BASE_FEATURE(kFederatedLauncherQueryAnalyticsTask,
"FederatedLauncherQueryAnalyticsTask",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables experimental UI features in Files app.
BASE_FEATURE(kFilesAppExperimental,
"FilesAppExperimental",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables the files transfer conflict dialog in Files app.
BASE_FEATURE(kFilesConflictDialog,
"FilesConflictDialog",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables shortcut icons to be shown in Google Drive when an item is a
// shortcut.
BASE_FEATURE(kFilesDriveShortcuts,
"FilesDriveShortcuts",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enable inline sync status in Files app.
BASE_FEATURE(kFilesInlineSyncStatus,
"FilesInlineSyncStatus",
base::FEATURE_ENABLED_BY_DEFAULT);
// Enables V2 of search functionality in files.
BASE_FEATURE(kFilesSearchV2,
"FilesSearchV2",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables partitioning of removable disks in file manager.
BASE_FEATURE(kFilesSinglePartitionFormat,
"FilesSinglePartitionFormat",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enable files app trash for Drive.
BASE_FEATURE(kFilesTrashDrive,
"FilesTrashDrive",
base::FEATURE_DISABLED_BY_DEFAULT);
// If enabled, the jelly colors will be used in the firmware update app.
// Requires jelly-colors flag to also be enabled.
BASE_FEATURE(kFirmwareUpdateJelly,
"FirmwareUpdateJelly",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables first party Vietnamese input method.
BASE_FEATURE(kFirstPartyVietnameseInput,
"FirstPartyVietnameseInput",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables or disables Floating Workspace feature on ChromeOS
BASE_FEATURE(kFloatingWorkspace,
"FloatingWorkspace",
base::FEATURE_DISABLED_BY_DEFAULT);
// Maximum delay to wait for restoring Floating Workspace after login.
constexpr base::FeatureParam<base::TimeDelta>
kFloatingWorkspaceMaxTimeAvailableForRestoreAfterLogin{
&kFloatingWorkspace, "MaxTimeAvailableForRestoreAfterLogin",
base::Seconds(3)};
// Enables or disables Floating Workspace V2 feature on ChromeOS
BASE_FEATURE(kFloatingWorkspaceV2,
"FloatingWorkspaceV2",
base::FEATURE_DISABLED_BY_DEFAULT);
// Maximum delay to wait for restoring Floating Workspace V2 after login.
constexpr base::FeatureParam<base::TimeDelta>
kFloatingWorkspaceV2MaxTimeAvailableForRestoreAfterLogin{
&kFloatingWorkspaceV2, "MaxTimeAvailableForRestoreAfterLoginV2",
base::Seconds(15)};
// Time interval to capture current desk as desk template and upload template to
// server.
constexpr base::FeatureParam<base::TimeDelta>
kFloatingWorkspaceV2PeriodicJobIntervalInSeconds{
&kFloatingWorkspaceV2, "PeriodicJobIntervalInSeconds",
base::Seconds(30)};
// If enabled, makes the Projector app use server side speech
// recognition instead of on-device speech recognition.
BASE_FEATURE(kForceEnableServerSideSpeechRecognitionForDev,
"ForceEnableServerSideSpeechRecognitionForDev",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables Drive to forcibly resync office files. Operations such as copy,
// move, ZIP on MS Office files call on the Drive to resync the files.
BASE_FEATURE(kForceReSyncDrive,
"ForceReSyncDrive",
base::FEATURE_DISABLED_BY_DEFAULT);
// Controls whether to allow keeping full screen mode after unlock.
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.
BASE_FEATURE(kFullscreenAlertBubble,
"EnableFullscreenBubble",
base::FEATURE_DISABLED_BY_DEFAULT);
// Debugging UI for ChromeOS FuseBox service.
BASE_FEATURE(kFuseBoxDebug, "FuseBoxDebug", base::FEATURE_DISABLED_BY_DEFAULT);
// Enable a notification to provide an option to open Gallery app for a
// downloaded pdf file.
BASE_FEATURE(kGalleryAppPdfEditNotification,
"GalleryAppPdfEditNotification",
base::FEATURE_DISABLED_BY_DEFAULT);
// Button label text used for the above kGalleryAppPdfEditNotification.
const base::FeatureParam<std::string> kGalleryAppPdfEditNotificationText{
&kGalleryAppPdfEditNotification, "text", ""};
// Enable glanceables on login.
BASE_FEATURE(kGlanceables, "Glanceables", base::FEATURE_DISABLED_BY_DEFAULT);
// Enables glanceables on time management surface.
BASE_FEATURE(kGlanceablesV2,
"GlanceablesV2",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables the Gaia reauth endpoint.
BASE_FEATURE(kGaiaReauthEndpoint,
"GaiaReauthEndpoint",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enable the Game Dashboard.
BASE_FEATURE(kGameDashboard,
"GameDashboard",
base::FEATURE_DISABLED_BY_DEFAULT);
// Controls gamepad vibration in Exo.
BASE_FEATURE(kGamepadVibration,
"ExoGamepadVibration",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enable a D-Bus service for accessing gesture properties.
BASE_FEATURE(kGesturePropertiesDBusService,
"GesturePropertiesDBusService",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables the ability to record the screen into an animated GIF image from the
// native screen capture tool.
BASE_FEATURE(kGifRecording, "GifRecording", base::FEATURE_DISABLED_BY_DEFAULT);
// Enables the displaying of animated gifs in ash.
BASE_FEATURE(kGifRendering, "GifRendering", base::FEATURE_DISABLED_BY_DEFAULT);
// Enables a Files banner about Google One offer.
BASE_FEATURE(kGoogleOneOfferFilesBanner,
"GoogleOneOfferFilesBanner",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables editing with handwriting gestures within the virtual keyboard.
BASE_FEATURE(kHandwritingGestureEditing,
"HandwritingGestureEditing",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables new on-device recognition for legacy handwriting input.
BASE_FEATURE(kHandwritingLegacyRecognition,
"HandwritingLegacyRecognition",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables downloading the handwriting libraries via DLC.
BASE_FEATURE(kHandwritingLibraryDlc,
"HandwritingLibraryDlc",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables the ChromeOS Apps Discovery experience in the Help App.
BASE_FEATURE(kHelpAppAppsDiscovery,
"HelpAppAppsDiscovery",
base::FEATURE_ENABLED_BY_DEFAULT);
// Enables the logic that auto triggers the install dialog during the web app
// install flow initiated from the Help App.
BASE_FEATURE(kHelpAppAutoTriggerInstallDialog,
"HelpAppAutoTriggerInstallDialog",
base::FEATURE_ENABLED_BY_DEFAULT);
// Enables or disables the Help App Discover tab notifications on non-stable
// ChromeOS channels. Used for testing.
BASE_FEATURE(kHelpAppDiscoverTabNotificationAllChannels,
"HelpAppDiscoverTabNotificationAllChannels",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enable showing search results from the help app in the launcher.
BASE_FEATURE(kHelpAppLauncherSearch,
"HelpAppLauncherSearch",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enable ChromeOS hibernation features.
BASE_FEATURE(kHibernate, "Hibernate", base::FEATURE_DISABLED_BY_DEFAULT);
// Enables image search for productivity launcher.
BASE_FEATURE(kProductivityLauncherImageSearch,
"ProductivityLauncherImageSearch",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables a privacy improvement that removes wrongly configured hidden
// networks and mitigates the creation of these networks. crbug/1327803.
BASE_FEATURE(kHiddenNetworkMigration,
"HiddenNetworkMigration",
base::FEATURE_ENABLED_BY_DEFAULT);
// Enables a warning about connecting to hidden WiFi networks.
// https://crbug.com/903908
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)
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).
BASE_FEATURE(kHideShelfControlsInTabletMode,
"HideShelfControlsInTabletMode",
base::FEATURE_ENABLED_BY_DEFAULT);
// If enabled, add Hindi Inscript keyboard layout.
BASE_FEATURE(kHindiInscriptLayout,
"HindiInscriptLayout",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables Camera app integration with holding space.
BASE_FEATURE(kHoldingSpaceCameraAppIntegration,
"HoldingSpaceCameraAppIntegration",
base::FEATURE_DISABLED_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.
BASE_FEATURE(kHoldingSpaceInProgressDownloadsNotificationSuppression,
"HoldingSpaceInProgressNotificationSuppression",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables holding space icon to be permanently displayed with extended file
// expiration to increase predictability of the feature.
BASE_FEATURE(kHoldingSpacePredictability,
"HoldingSpacePredictability",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables refresh of holding space UI to better convey the relationship with
// the Files app to simplify feature comprehension.
BASE_FEATURE(kHoldingSpaceRefresh,
"HoldingSpaceRefresh",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables suggestions in the pinned files section of Holding Space.
BASE_FEATURE(kHoldingSpaceSuggestions,
"HoldingSpaceSuggestions",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables the tour that walks new users through the Holding Space feature.
BASE_FEATURE(kHoldingSpaceTour,
"HoldingSpaceTour",
base::FEATURE_DISABLED_BY_DEFAULT);
BASE_FEATURE(kHomeButtonQuickAppAccess,
"HomeButtonQuickAppAccess",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables a call-to-action label beside the home button.
BASE_FEATURE(kHomeButtonWithText,
"HomeButtonWithText",
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.
BASE_FEATURE(kHotspot, "Hotspot", base::FEATURE_DISABLED_BY_DEFAULT);
// If enabled, allows the user to cycle between windows of an app using Alt + `.
BASE_FEATURE(kSameAppWindowCycle,
"SameAppWindowCycle",
base::FEATURE_DISABLED_BY_DEFAULT);
// Controls whether the snooping protection prototype is enabled.
BASE_FEATURE(kSnoopingProtection,
"SnoopingProtection",
base::FEATURE_ENABLED_BY_DEFAULT);
// Controls whether to start AssistantAudioDecoder service on demand (at query
// response time).
BASE_FEATURE(kStartAssistantAudioDecoderOnDemand,
"StartAssistantAudioDecoderOnDemand",
base::FEATURE_ENABLED_BY_DEFAULT);
// Enable or disable a new header bar for the ChromeOS virtual keyboard.
BASE_FEATURE(kVirtualKeyboardNewHeader,
"VirtualKeyboardNewHeader",
base::FEATURE_ENABLED_BY_DEFAULT);
// If enabled, used to configure the heuristic rules for some advanced IME
// features (e.g. auto-correct).
BASE_FEATURE(kImeRuleConfig, "ImeRuleConfig", base::FEATURE_ENABLED_BY_DEFAULT);
// If enabled, use the updated logic for downloading IME artifacts.
BASE_FEATURE(kImeDownloaderUpdate,
"ImeDownloaderUpdate",
base::FEATURE_ENABLED_BY_DEFAULT);
// If enabled, use the updated parameters for the decoder.
BASE_FEATURE(kImeFstDecoderParamsUpdate,
"ImeFstDecoderParamsUpdate",
base::FEATURE_DISABLED_BY_DEFAULT);
// If enabled use the updated US English IME language models.
BASE_FEATURE(kImeUsEnglishModelUpdate,
"ImeUsEnglishModelUpdate",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enable or disable system emoji picker falling back to clipboard.
BASE_FEATURE(kImeSystemEmojiPickerClipboard,
"SystemEmojiPickerClipboard",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enable or disable system emoji picker extension
BASE_FEATURE(kImeSystemEmojiPickerExtension,
"SystemEmojiPickerExtension",
base::FEATURE_ENABLED_BY_DEFAULT);
// Enable or disable system emoji picker GIF support
BASE_FEATURE(kImeSystemEmojiPickerGIFSupport,
"SystemEmojiPickerGIFSupport",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enable or disable system emoji picker search extension
BASE_FEATURE(kImeSystemEmojiPickerSearchExtension,
"SystemEmojiPickerSearchExtension",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enable or disable a new UI for stylus writing on the virtual keyboard
BASE_FEATURE(kImeStylusHandwriting,
"StylusHandwriting",
base::FEATURE_DISABLED_BY_DEFAULT);
// Controls whether to hide voice button in IME tray if accessibility mic icon
// is already shown in the shelf.
BASE_FEATURE(kImeTrayHideVoiceButton,
"ImeTrayHideVoiceButton",
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.
BASE_FEATURE(kImprovedLoginErrorHandling,
"ImprovedLoginErrorHandling",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables or disables Instant Tethering on ChromeOS.
BASE_FEATURE(kInstantTethering,
"InstantTethering",
base::FEATURE_ENABLED_BY_DEFAULT);
// Enables or disables the internal server side speech recognition on ChromeOS.
BASE_FEATURE(kInternalServerSideSpeechRecognition,
"InternalServerSideSpeechRecognition",
base::FEATURE_DISABLED_BY_DEFAULT);
// Feature overrides the `InternalServerSideSpeechRecognition` flag if disabled.
BASE_FEATURE(kInternalServerSideSpeechRecognitionControl,
"InternalServerSideSpeechRecognitionControl",
base::FEATURE_ENABLED_BY_DEFAULT);
// Enables sending `client-info` values to IPP printers on ChromeOS.
BASE_FEATURE(kIppClientInfo, "IppClientInfo", base::FEATURE_ENABLED_BY_DEFAULT);
// Enables correct handling of the function key row in Japanese.
BASE_FEATURE(kJapaneseFunctionRow,
"JapaneseFunctionRow",
base::FEATURE_ENABLED_BY_DEFAULT);
// Enables IME button in the floating accessibility menu for the Kiosk session.
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.
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.
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.
BASE_FEATURE(kLacrosSupport,
"LacrosSupport",
base::FEATURE_DISABLED_BY_DEFAULT);
// When this feature is enabled, wayland logging is enabled for Lacros.
BASE_FEATURE(kLacrosWaylandLogging,
"LacrosWaylandLogging",
base::FEATURE_DISABLED_BY_DEFAULT);
// Emergency switch to turn off profile migration.
BASE_FEATURE(kLacrosProfileMigrationForceOff,
"LacrosProfileMigrationForceOff",
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.
BASE_FEATURE(kLacrosMoveProfileMigration,
"LacrosMoveProfileMigration",
base::FEATURE_DISABLED_BY_DEFAULT);
// If enabled, it is allowed to migrate data from lacros back to ash, provided
// that other conditions are also met (e.g. the policy is enabled, or the
// command line flag is passed).
BASE_FEATURE(kLacrosProfileBackwardMigration,
"LacrosProfileBackwardMigration",
base::FEATURE_DISABLED_BY_DEFAULT);
// If enabled, the Language Pack corresponding to the application locale is
// downloaded and installed during OOBE. This pre-fetching is aimed at improving
// user experience so that they have language resources available as early as
// possible.
BASE_FEATURE(kLanguagePacksInOobe,
"LanguagePacksInOobe",
base::FEATURE_DISABLED_BY_DEFAULT);
// Uses short intervals for launcher nudge for testing if enabled.
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.
BASE_FEATURE(kLauncherNudgeSessionReset,
"LauncherNudgeSessionReset",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables new flow for license packaged devices with enterprise license.
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.
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.
BASE_FEATURE(kLockScreenInlineReply,
"LockScreenInlineReply",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables new flow for Education license packaged devices.
BASE_FEATURE(kEducationEnrollmentOobeFlow,
"EducationEnrollmentOobeFlow",
base::FEATURE_ENABLED_BY_DEFAULT);
// Enables notifications on the lock screen.
BASE_FEATURE(kLockScreenNotifications,
"LockScreenNotifications",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables lock screen media controls UI and use of media keys on the lock
// screen.
BASE_FEATURE(kLockScreenMediaControls,
"LockScreenMediaControls",
base::FEATURE_ENABLED_BY_DEFAULT);
// Enables the Device Trust connector client code is enabled on the login
// screen.
BASE_FEATURE(kLoginScreenDeviceTrustConnectorEnabled,
"LoginScreenDeviceTrustConnectorEnabled",
base::FEATURE_ENABLED_BY_DEFAULT);
// Feature to allow MAC address randomization to be enabled for WiFi networks.
BASE_FEATURE(kMacAddressRandomization,
"MacAddressRandomization",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables PDF signature saving and a selection tool in the media app.
BASE_FEATURE(kMediaAppPdfSignature,
"MediaAppPdfSignature",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables notification of when a microphone-using app is launched while the
// microphone is muted.
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).
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.
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().
BASE_FEATURE(kMojoDBusRelay,
"MojoDBusRelay",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables the full apps list in Phone Hub bubble.
BASE_FEATURE(kEcheLauncher, "EcheLauncher", base::FEATURE_ENABLED_BY_DEFAULT);
// Switch full apps list in Phone Hub from grid view to list view.
BASE_FEATURE(kEcheLauncherListView,
"EcheLauncherListView",
base::FEATURE_ENABLED_BY_DEFAULT);
// Switch the "More Apps" button in eche launcher to show small app icons
BASE_FEATURE(kEcheLauncherIconsInMoreAppsButton,
"EcheLauncherIconsInMoreAppsButton",
base::FEATURE_ENABLED_BY_DEFAULT);
// Enables the Phone Hub recent apps loading and error views based on the
// connection status with the phone.
BASE_FEATURE(kEcheNetworkConnectionState,
"EcheNetworkConnectionState",
base::FEATURE_ENABLED_BY_DEFAULT);
// Time limit before re-attempting a background connection to check if the
// network is suitable.
const base::FeatureParam<base::TimeDelta>
kEcheBackgroundConnectionAttemptThrottleTimeout{
&kEcheNetworkConnectionState,
"EcheBackgroundConnectionAttemptThrottleTimeout", base::Seconds(10)};
// Time limit before requiring a new connection check to show apps UI.
const base::FeatureParam<base::TimeDelta> kEcheConnectionStatusResetTimeout{
&kEcheNetworkConnectionState, "EcheConnectionStatusResetTimeout",
base::Minutes(10)};
// Enables multi-zone rgb keyboard customization.
BASE_FEATURE(kMultiZoneRgbKeyboard,
"MultiZoneRgbKeyboard",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables support for multilingual assistive typing on ChromeOS.
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.
BASE_FEATURE(kNearbyKeepAliveFix,
"NearbyKeepAliveFix",
base::FEATURE_ENABLED_BY_DEFAULT);
// Controls whether new Lockscreen reauth layout is shown or not.
BASE_FEATURE(kNewLockScreenReauthLayout,
"NewLockScreenReauthLayout",
base::FEATURE_ENABLED_BY_DEFAULT);
// Enables the Night Light feature.
BASE_FEATURE(kNightLight, "NightLight", base::FEATURE_ENABLED_BY_DEFAULT);
// Enabled notification expansion animation.
BASE_FEATURE(kNotificationExpansionAnimation,
"NotificationExpansionAnimation",
base::FEATURE_DISABLED_BY_DEFAULT);
// Shorten notification timeouts to 6 seconds.
BASE_FEATURE(kNotificationExperimentalShortTimeouts,
"NotificationExperimentalShortTimeouts",
base::FEATURE_ENABLED_BY_DEFAULT);
// Enables dragging the image from a notification by mouse or gesture.
BASE_FEATURE(kNotificationImageDrag,
"NotificationImageDrag",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables notification scroll bar in UnifiedSystemTray.
BASE_FEATURE(kNotificationScrollBar,
"NotificationScrollBar",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables notifications to be shown within context menus.
BASE_FEATURE(kNotificationsInContextMenu,
"NotificationsInContextMenu",
base::FEATURE_DISABLED_BY_DEFAULT);
// Controls whether to enable on-device grammar check service.
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.
BASE_FEATURE(kOnDeviceSpeechRecognition,
"OnDeviceSpeechRecognition",
base::FEATURE_DISABLED_BY_DEFAULT);
// If enabled, CHOBOE Screen will be shown during the new user onboarding flow.
BASE_FEATURE(kOobeChoobe, "OobeChoobe", base::FEATURE_DISABLED_BY_DEFAULT);
// If enabled, Drive Pinning Screen will be shown during
// the new user onboarding flow.
BASE_FEATURE(kOobeDrivePinning,
"OobeDrivePinning",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables the Gaia info screen in OOBE.
BASE_FEATURE(kOobeGaiaInfoScreen,
"OobeGaiaInfoScreen",
base::FEATURE_DISABLED_BY_DEFAULT);
// If enabled, TouchPadScreen will be shown in CHOOBE.
// enabling this without enabling OobeChoobe flag will have no effect
BASE_FEATURE(kOobeTouchpadScroll,
"OobeTouchpadScrollDirection",
base::FEATURE_DISABLED_BY_DEFAULT);
BASE_FEATURE(kOobeDisplaySize,
"OobeDisplaySize",
base::FEATURE_DISABLED_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.
BASE_FEATURE(kOobeHidDetectionRevamp,
"OobeHidDetectionRevamp",
base::FEATURE_ENABLED_BY_DEFAULT);
// Enables OOBE Jelly features.
BASE_FEATURE(kOobeJelly, "OobeJelly", base::FEATURE_DISABLED_BY_DEFAULT);
// Enables OOBE Simon features.
BASE_FEATURE(kFeatureManagementOobeSimon,
"FeatureManagementOobeSimon",
base::FEATURE_DISABLED_BY_DEFAULT);
BASE_FEATURE(kOobeSimon, "OobeSimon", base::FEATURE_DISABLED_BY_DEFAULT);
// Enables Skipping the assistant setup screen in OOBE.
BASE_FEATURE(kOobeSkipAssistant,
"OobeSkipAssistant",
base::FEATURE_ENABLED_BY_DEFAULT);
// Enables or disables the Oobe quick start flow.
BASE_FEATURE(kOobeQuickStart,
"OobeQuickStart",
base::FEATURE_DISABLED_BY_DEFAULT);
BASE_FEATURE(kOnlyShowNewShortcutsApp,
"OnlyShowNewShortcutsApp",
base::FEATURE_ENABLED_BY_DEFAULT);
BASE_FEATURE(kSearchInShortcutsApp,
"SearchInShortcutsApp",
base::FEATURE_ENABLED_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.
BASE_FEATURE(kOsFeedback, "OsFeedback", base::FEATURE_ENABLED_BY_DEFAULT);
// If enabled, a new App Notifications subpage will appear in CrOS Apps section.
BASE_FEATURE(kOsSettingsAppNotificationsPage,
"OsSettingsAppNotificationsPage",
base::FEATURE_ENABLED_BY_DEFAULT);
// If enabled, OsSyncConsent Revamp will be shown.
// enabling this without enabling Lacros flag will have no effect
BASE_FEATURE(kOsSyncConsentRevamp,
"OsSyncConsentRevamp",
base::FEATURE_DISABLED_BY_DEFAULT);
// If enabled, the jelly colors will be used in the os feedback app. Requires
// jelly-colors flag to also be enabled.
BASE_FEATURE(kOsFeedbackJelly,
"OsFeedbackJelly",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables app badging toggle to be displayed in app notification page in
// ChromeOS Settings.
BASE_FEATURE(kOsSettingsAppBadgingToggle,
"OsSettingsAppBadgingToggle",
base::FEATURE_ENABLED_BY_DEFAULT);
// Enables search result feedback in ChromeOS Settings when no search results
// are returned.
BASE_FEATURE(kOsSettingsSearchFeedback,
"OsSettingsSearchFeedback",
base::FEATURE_ENABLED_BY_DEFAULT);
BASE_FEATURE(kOverviewButton,
"OverviewButton",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables staying in overview when navigating between desks using a swipe
// gesture or keyboard shortcut.
BASE_FEATURE(kOverviewDeskNavigation,
"OverviewDeskNavigation",
base::FEATURE_ENABLED_BY_DEFAULT);
// Enables user to provision PasspointARCSupport credentials.
BASE_FEATURE(kPasspointARCSupport,
"PasspointARCSupport",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables user to display Passpoint credentials in the UI.
BASE_FEATURE(kPasspointSettings,
"PasspointSettings",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables a notification warning users that their Thunderbolt device is not
// supported on their CrOS device.
// TODO(crbug/1254930): Revisit this flag when there is a way to query billboard
// devices correctly.
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.
BASE_FEATURE(kPerDeskShelf, "PerDeskShelf", base::FEATURE_DISABLED_BY_DEFAULT);
// Enables Jelly features in Personalization App.
BASE_FEATURE(kPersonalizationJelly,
"PersonalizationJelly",
base::FEATURE_DISABLED_BY_DEFAULT);
// Provides a UI for users to view information about their Android phone
// and perform phone-side actions within ChromeOS.
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
BASE_FEATURE(kPhoneHubCameraRoll,
"PhoneHubCameraRoll",
base::FEATURE_ENABLED_BY_DEFAULT);
// Enable PhoneHub features setup error handling, which handles different
// setup response from remote phone device.
BASE_FEATURE(kPhoneHubFeatureSetupErrorHandling,
"PhoneHubFeatureSetupErrorHandling",
base::FEATURE_ENABLED_BY_DEFAULT);
// Determine should we display Beta badge for Eche.
BASE_FEATURE(kPhoneHubAppStreamingBetaBadge,
"kPhoneHubAppStreamingBetaBadge",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables the incoming/ongoing call notification feature in Phone Hub.
BASE_FEATURE(kPhoneHubCallNotification,
"PhoneHubCallNotification",
base::FEATURE_DISABLED_BY_DEFAULT);
BASE_FEATURE(kPhoneHubMonochromeNotificationIcons,
"PhoneHubMonochromeNotificationIcons",
base::FEATURE_ENABLED_BY_DEFAULT);
// Determine whether system nudge will be shown on user eligible for Phone Hub
// instead of multidevice notification.
BASE_FEATURE(kPhoneHubNudge,
"PhoneHubNudge",
base::FEATURE_DISABLED_BY_DEFAULT);
BASE_FEATURE(kPhoneHubPingOnBubbleOpen,
"PhoneHubPingOnBubbleOpen",
base::FEATURE_ENABLED_BY_DEFAULT);
// Maximum number of seconds to wait for ping response before disconnecting
const base::FeatureParam<base::TimeDelta> kPhoneHubPingTimeout{
&kPhoneHubPingOnBubbleOpen, "PhoneHubPingTimeout", base::Seconds(60)};
// Controls whether policy provided trust anchors are allowed at the lock
// screen.
BASE_FEATURE(kPolicyProvidedTrustAnchorsAllowedAtLockScreen,
"PolicyProvidedTrustAnchorsAllowedAtLockScreen",
base::FEATURE_ENABLED_BY_DEFAULT);
// Enables or disables the preference of using constant frame rate for camera
// when streaming.
BASE_FEATURE(kPreferConstantFrameRate,
"PreferConstantFrameRate",
base::FEATURE_DISABLED_BY_DEFAULT);
// If enabled, the jelly colors will be used in the print management app.
// Requires jelly-colors flag to also be enabled.
BASE_FEATURE(kPrintManagementJelly,
"PrintManagementJelly",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables the new OS Printer Settings UI.
BASE_FEATURE(kPrinterSettingsRevamp,
"PrinterSettingsRevamp",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables showing printer status on the OS Printer Settings UI.
BASE_FEATURE(kPrinterSettingsPrinterStatus,
"PrinterSettingsPrinterStatus",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables to allocate more video capture buffers.
BASE_FEATURE(kMoreVideoCaptureBuffers,
"MoreVideoCaptureBuffers",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables showing notification and status area indicators when an app is
// using camera/microphone.
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
BASE_FEATURE(kProductivityLauncher,
"ProductivityLauncher",
base::FEATURE_ENABLED_BY_DEFAULT);
// Controls whether to enable Projector.
BASE_FEATURE(kProjector, "Projector", base::FEATURE_ENABLED_BY_DEFAULT);
// Controls whether to enable Projector for managed users.
BASE_FEATURE(kProjectorManagedUser,
"ProjectorManagedUser",
base::FEATURE_ENABLED_BY_DEFAULT);
// Controls whether the Projector app launches in debug mode, with more detailed
// error messages.
BASE_FEATURE(kProjectorAppDebug,
"ProjectorAppDebug",
base::FEATURE_DISABLED_BY_DEFAULT);
// Controls whether to fold short gap between transcript into the previous
// transcript.
BASE_FEATURE(kProjectorFoldShortGapIntoPreviousTranscript,
"ProjectorFoldShortGapIntoPreviousTranscript",
base::FEATURE_ENABLED_BY_DEFAULT);
// Controls whether Projector's tutorial videos are displayed.
BASE_FEATURE(kProjectorTutorialVideoView,
"ProjectorTutorialVideoView",
base::FEATURE_ENABLED_BY_DEFAULT);
// Controls whether Projector use custom thumbnail in gallery page.
BASE_FEATURE(kProjectorCustomThumbnail,
"kProjectorCustomThumbnail",
base::FEATURE_ENABLED_BY_DEFAULT);
// Controls whether to ignore policy setting for enabling Projector for managed
// users.
BASE_FEATURE(kProjectorManagedUserIgnorePolicy,
"ProjectorManagedUserIgnorePolicy",
base::FEATURE_DISABLED_BY_DEFAULT);
// Controls whether to show pseduo transcript that is shorter than the
// threshold.
BASE_FEATURE(kProjectorShowShortPseudoTranscript,
"ProjectorShowShortPseudoTranscript",
base::FEATURE_ENABLED_BY_DEFAULT);
// Controls whether to update the indexable text when metadata file gets
// uploaded.
BASE_FEATURE(kProjectorUpdateIndexableText,
"ProjectorUpdateIndexableText",
base::FEATURE_ENABLED_BY_DEFAULT);
// Controls whether to use OAuth token for getting streaming URL from
// get_video_info endpoint.
BASE_FEATURE(kProjectorUseOAuthForGetVideoInfo,
"ProjectorUseOAuthForGetVideoInfo",
base::FEATURE_ENABLED_BY_DEFAULT);
// Controls whether to allow viewing screencast with local playback URL when
// screencast is being transcoded.
BASE_FEATURE(kProjectorLocalPlayback,
"ProjectorLocalPlayback",
base::FEATURE_ENABLED_BY_DEFAULT);
// Controls whether to enable features that are not ready to enable by
// default but ready for internal testing.
BASE_FEATURE(kProjectorBleedingEdgeExperience,
"ProjectorBleedingEdgeExperience",
base::FEATURE_DISABLED_BY_DEFAULT);
// Controls whether to enable crash report from the Projector web component.
BASE_FEATURE(kProjectorWebReportCrash,
"ProjectorWebReportCrash",
base::FEATURE_ENABLED_BY_DEFAULT);
// Controls whether to use API key instead of OAuth token for translation
// requests.
BASE_FEATURE(kProjectorUseApiKeyForTranslation,
"ProjectorUseApiKeyForTranslation",
base::FEATURE_ENABLED_BY_DEFAULT);
// Enable or disable quick settings revamped view (go/qsrevamp).
BASE_FEATURE(kQsRevamp, "QsRevamp", base::FEATURE_DISABLED_BY_DEFAULT);
// Controls whether the Projector Viewer supports the user experience for
// secondary account.
BASE_FEATURE(kProjectorViewerUseSecondaryAccount,
"ProjectorViewerUseSecondaryAccount",
base::FEATURE_ENABLED_BY_DEFAULT);
// Controls whether to show toast notification when account switches.
BASE_FEATURE(kProjectorAccountSwitchNotification,
"ProjectorAccountSwitchNotification",
base::FEATURE_ENABLED_BY_DEFAULT);
// Controls whether to show promise icons during app installations.
BASE_FEATURE(kPromiseIcons, "PromiseIcons", base::FEATURE_DISABLED_BY_DEFAULT);
// Controls whether the quick dim prototype is enabled.
BASE_FEATURE(kQuickDim, "QuickDim", base::FEATURE_ENABLED_BY_DEFAULT);
// Controls whether the smart reader feature is enabled.
BASE_FEATURE(kSmartReader, "SmartReader", base::FEATURE_DISABLED_BY_DEFAULT);
BASE_FEATURE(kQuickAppAccessTestUI,
"QuickAppAccessTestUI",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables or disables fingerprint quick unlock.
BASE_FEATURE(kQuickUnlockFingerprint,
"QuickUnlockFingerprint",
base::FEATURE_DISABLED_BY_DEFAULT);
// Controls whether the PIN auto submit feature is enabled.
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.
BASE_FEATURE(kQuickUnlockPinAutosubmitBackfill,
"QuickUnlockPinAutosubmitBackfill",
base::FEATURE_ENABLED_BY_DEFAULT);
// Enables or disables Release Notes notifications on non-stable ChromeOS
// channels. Used for testing.
BASE_FEATURE(kReleaseNotesNotificationAllChannels,
"ReleaseNotesNotificationAllChannels",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables or disables Release Notes suggestion chip on ChromeOS.
BASE_FEATURE(kReleaseNotesSuggestionChip,
"ReleaseNotesSuggestionChip",
base::FEATURE_ENABLED_BY_DEFAULT);
// Enables rendering ARC notifications using ChromeOS notification framework
BASE_FEATURE(kRenderArcNotificationsByChrome,
"RenderArcNotificationsByChrome",
base::FEATURE_DISABLED_BY_DEFAULT);
// When enabled, the overview 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.
BASE_FEATURE(kReverseScrollGestures,
"EnableReverseScrollGestures",
base::FEATURE_ENABLED_BY_DEFAULT);
BASE_FEATURE(kRgbKeyboard, "RgbKeyboard", base::FEATURE_ENABLED_BY_DEFAULT);
// If enabled, the jelly colors will be used in the scanning app. Requires
// jelly-colors flag to also be enabled.
BASE_FEATURE(kScanningAppJelly,
"ScanningAppJelly",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables screensaver customized running time.
BASE_FEATURE(kScreenSaverDuration,
"ScreenSaverDuration",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables the "Preview" button for screensaver.
BASE_FEATURE(kScreenSaverPreview,
"ScreenSaverPreview",
base::FEATURE_ENABLED_BY_DEFAULT);
// Enables the system tray to show more information in larger screen.
BASE_FEATURE(kSeamlessRefreshRateSwitching,
"SeamlessRefreshRateSwitching",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables displaying separate network icons for different networks types.
// https://crbug.com/902409
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).
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.
BASE_FEATURE(kSessionManagerLivenessCheck,
"SessionManagerLivenessCheck",
base::FEATURE_ENABLED_BY_DEFAULT);
// Removes notifier settings from quick settings view.
BASE_FEATURE(kSettingsAppNotificationSettings,
"SettingsAppNotificationSettings",
base::FEATURE_DISABLED_BY_DEFAULT);
// Whether theme changes should be animated for the Settings app.
BASE_FEATURE(kSettingsAppThemeChangeAnimation,
"SettingsAppThemeChangeAnimation",
base::FEATURE_DISABLED_BY_DEFAULT);
// Whether we should track auto-hide preferences separately between clamshell
// and tablet.
BASE_FEATURE(kShelfAutoHideSeparation,
"ShelfAutoHideSeparation",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables launcher nudge that animates the home button to guide users to open
// the launcher.
BASE_FEATURE(kShelfLauncherNudge,
"ShelfLauncherNudge",
base::FEATURE_ENABLED_BY_DEFAULT);
// Enables the shelf party.
BASE_FEATURE(kShelfParty, "ShelfParty", base::FEATURE_DISABLED_BY_DEFAULT);
// Enables the shelf party.
BASE_FEATURE(kShelfStackedHotseat,
"ShelfStackedHotseat",
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.
BASE_FEATURE(kShelfPalmRejectionSwipeOffset,
"ShelfPalmRejectionSwipeOffset",
base::FEATURE_ENABLED_BY_DEFAULT);
// Enables or disables the OS update page in the shimless RMA flow.
BASE_FEATURE(kShimlessRMAOsUpdate,
"ShimlessRMAOsUpdate",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables or disables the dark mode in the shimless RMA flow.
BASE_FEATURE(kShimlessRMADisableDarkMode,
"ShimlessRMADisableDarkMode",
base::FEATURE_ENABLED_BY_DEFAULT);
// Enables or disables the diagnostic page in the Shimless RMA flow.
BASE_FEATURE(kShimlessRMADiagnosticPage,
"ShimlessRMADiagnosticPage",
base::FEATURE_DISABLED_BY_DEFAULT);
// If enabled, the jelly colors will be used in the shortcut customization app.
// Requires jelly-colors flag to also be enabled.
BASE_FEATURE(kShortcutCustomizationJelly,
"ShortcutCustomizationJelly",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables or disables a toggle to enable Bluetooth debug logs.
BASE_FEATURE(kShowBluetoothDebugLogToggle,
"ShowBluetoothDebugLogToggle",
base::FEATURE_ENABLED_BY_DEFAULT);
// Shows the Play Store icon in Demo Mode.
BASE_FEATURE(kShowPlayInDemoMode,
"ShowPlayInDemoMode",
base::FEATURE_ENABLED_BY_DEFAULT);
// Enables custom Demo Mode behavior on feature-aware devices, as controlled by
// the feature management module.
BASE_FEATURE(kFeatureManagementFeatureAwareDeviceDemoMode,
"FeatureManagementFeatureAwareDeviceDemoMode",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables the shutdown confirmation bubble from the login shelf view.
BASE_FEATURE(kShutdownConfirmationBubble,
"ShutdownConfirmationBubble",
base::FEATURE_ENABLED_BY_DEFAULT);
// Moves toasts to the bottom-side corner where the status area is instead of
// the center when enabled.
BASE_FEATURE(kSideAlignedToasts,
"SideAlignedToasts",
base::FEATURE_DISABLED_BY_DEFAULT);
// Uses experimental component version for smart dim.
BASE_FEATURE(kSmartDimExperimentalComponent,
"SmartDimExperimentalComponent",
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.
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.
BASE_FEATURE(kSmartLockUIRevamp,
"SmartLockUIRevamp",
base::FEATURE_ENABLED_BY_DEFAULT);
BASE_FEATURE(kSmdsSupport, "SmdsSupport", base::FEATURE_DISABLED_BY_DEFAULT);
BASE_FEATURE(kSmdsSupportEuiccUpload,
"SmdsSupportEuiccUpload",
base::FEATURE_DISABLED_BY_DEFAULT);
BASE_FEATURE(kSmdsDbusMigration,
"SmdsDbusMigration",
base::FEATURE_DISABLED_BY_DEFAULT);
// Controls whether the snap group feature is enabled or not.
BASE_FEATURE(kSnapGroup, "SnapGroup", base::FEATURE_DISABLED_BY_DEFAULT);
// Controls whether to create the snap group automatically when two windows are
// snapped if true. Otherwise, the user has to explicitly lock the two windows
// when both are snapped via cliking on the lock button when hovering the mouse
// over the shared edge of the two snapped windows.
constexpr base::FeatureParam<bool> kAutomaticallyLockGroup{
&kSnapGroup, "AutomaticLockGroup", true};
// Controls whether the speak-on-mute detection feature is enabled or not.
BASE_FEATURE(kSpeakOnMuteEnabled,
"SpeakOnMuteEnabled",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables battery indicator for styluses in the palette tray
BASE_FEATURE(kStylusBatteryStatus,
"StylusBatteryStatus",
base::FEATURE_ENABLED_BY_DEFAULT);
// Enables or disables the System Extensions platform.
BASE_FEATURE(kSystemExtensions,
"SystemExtensions",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables or disables the managed device health service System Extensions type.
BASE_FEATURE(kSystemExtensionsManagedDeviceHealthServices,
"SystemExtensionsManagedDeviceHealthServices",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables or disables using the system input engine for physical typing in
// Japanese.
BASE_FEATURE(kSystemJapanesePhysicalTyping,
"SystemJapanesePhysicalTyping",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables live captions for sounds produced outside of the browser (e.g. by
// Android or linux apps).
BASE_FEATURE(kSystemLiveCaption,
"SystemLiveCaption",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables the ability to play sounds for system services.
BASE_FEATURE(kSystemSounds, "SystemSounds", base::FEATURE_DISABLED_BY_DEFAULT);
// Enables or disables the shadows of system tray bubbles.
BASE_FEATURE(kSystemTrayShadow,
"SystemTrayShadow",
base::FEATURE_DISABLED_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.
BASE_FEATURE(kSystemProxyForSystemServices,
"SystemProxyForSystemServices",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables the UI to show tab cluster info.
BASE_FEATURE(kTabClusterUI, "TabClusterUI", base::FEATURE_DISABLED_BY_DEFAULT);
// Enables ChromeOS Telemetry Extension.
BASE_FEATURE(kTelemetryExtension,
"TelemetryExtension",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables the alternative emulator for the Terminal app.
BASE_FEATURE(kTerminalAlternativeEmulator,
"TerminalAlternativeEmulator",
base::FEATURE_ENABLED_BY_DEFAULT);
//
// Enables Terminal System App to load from Downloads for developer testing.
// Only works in dev and canary channels.
BASE_FEATURE(kTerminalDev, "TerminalDev", base::FEATURE_DISABLED_BY_DEFAULT);
// Enables time of day screen saver.
BASE_FEATURE(kTimeOfDayScreenSaver,
"TimeOfDayScreenSaver",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables time of day wallpaper.
BASE_FEATURE(kTimeOfDayWallpaper,
"TimeOfDayWallpaper",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables the TrafficCountersHandler class to auto-reset traffic counters
// and shows Data Usage in the Celluar Settings UI.
BASE_FEATURE(kTrafficCountersEnabled,
"TrafficCountersEnabled",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables trilinear filtering.
BASE_FEATURE(kTrilinearFiltering,
"TrilinearFiltering",
base::FEATURE_DISABLED_BY_DEFAULT);
// Uses new AuthFactor-based API when communicating with cryptohome.
// This feature flag also affects usage of AuthSessions in QuickUnlock, but
// only in case when cryptohome is used as backend.
// This feature flag also affects usage of AuthSession on lock screen.
BASE_FEATURE(kUseAuthFactors,
"UseAuthFactors",
base::FEATURE_ENABLED_BY_DEFAULT);
// When enabled, the login shelf view is placed in its own widget instead of
// sharing the shelf widget with other components.
BASE_FEATURE(kUseLoginShelfWidget,
"UseLoginShelfWidget",
base::FEATURE_ENABLED_BY_DEFAULT);
// Use the staging URL as part of the "Messages" feature under "Connected
// Devices" settings.
BASE_FEATURE(kUseMessagesStagingUrl,
"UseMessagesStagingUrl",
base::FEATURE_DISABLED_BY_DEFAULT);
// Remap search+click to right click instead of the legacy alt+click on
// ChromeOS.
BASE_FEATURE(kUseSearchClickForRightClick,
"UseSearchClickForRightClick",
base::FEATURE_DISABLED_BY_DEFAULT);
// Use the Stork Production SM-DS address to fetch pending ESim profiles
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.
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.
BASE_FEATURE(kUserActivityPrediction,
"UserActivityPrediction",
base::FEATURE_ENABLED_BY_DEFAULT);
// Controls whether the video conference feature is enabled.
BASE_FEATURE(kVideoConference,
"VideoConference",
base::FEATURE_DISABLED_BY_DEFAULT);
// Controls whether the vc background replace is enabled.
BASE_FEATURE(kVcBackgroundReplace,
"VCBackgroundReplace",
base::FEATURE_DISABLED_BY_DEFAULT);
// This is only used as a way to disable portrait relighting.
BASE_FEATURE(kVcPortraitRelight,
"VcPortraitRelight",
base::FEATURE_ENABLED_BY_DEFAULT);
// Enable or disable the fake effects for ChromeOS video conferencing controls
// UI. Only meaningful in the emulator.
BASE_FEATURE(kVcControlsUiFakeEffects,
"VcControlsUiFakeEffects",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables or disables alternative segmentation models for ChromeOS video
// conferencing blur or relighting.
BASE_FEATURE(kVcSegmentationModel,
"VCSegmentationModel",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enable or disable multitouch for virtual keyboard on ChromeOS.
BASE_FEATURE(kVirtualKeyboardMultitouch,
"VirtualKeyboardMultitouch",
base::FEATURE_ENABLED_BY_DEFAULT);
// Enable or disable round corners for virtual keyboard on ChromeOS.
BASE_FEATURE(kVirtualKeyboardRoundCorners,
"VirtualKeyboardRoundCorners",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables a per-boot host GPU cache generation for VMs. On default, the cache
// is generated per OS version.
BASE_FEATURE(kVmPerBootShaderCache,
"VmPerBootShaderCache",
base::FEATURE_DISABLED_BY_DEFAULT);
// Controls whether to allow enabling wake on WiFi features in shill.
BASE_FEATURE(kWakeOnWifiAllowed,
"WakeOnWifiAllowed",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enable "daily" refresh wallpaper to refresh every ten seconds for testing.
BASE_FEATURE(kWallpaperFastRefresh,
"WallpaperFastRefresh",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enable using google photos shared albums for wallpaper.
BASE_FEATURE(kWallpaperGooglePhotosSharedAlbums,
"WallpaperGooglePhotosSharedAlbums",
base::FEATURE_ENABLED_BY_DEFAULT);
// Enable different wallpapers per desk.
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.
BASE_FEATURE(kWebUITabStripTabDragIntegration,
"WebUITabStripTabDragIntegration",
base::FEATURE_ENABLED_BY_DEFAULT);
// Enables the Welcome Tour that walks new users through ChromeOS System UI.
BASE_FEATURE(kWelcomeTour, "WelcomeTour", base::FEATURE_DISABLED_BY_DEFAULT);
// Controls whether to enable MAC Address Randomization on WiFi connection.
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.
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.
BASE_FEATURE(kWifiSyncAndroid,
"WifiSyncAndroid",
base::FEATURE_ENABLED_BY_DEFAULT);
// Controls whether to apply incoming Wi-Fi configuration delete events from
// the Chrome Sync server.
BASE_FEATURE(kWifiSyncApplyDeletes,
"WifiSyncApplyDeletes",
base::FEATURE_DISABLED_BY_DEFAULT);
// Change window creation to be based on cursor position when there are multiple
// displays.
BASE_FEATURE(kWindowsFollowCursor,
"WindowsFollowCursor",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables an experimental feature that lets users easily layout, resize and
// position their windows using only mouse and touch gestures.
BASE_FEATURE(kWmMode, "WmMode", base::FEATURE_DISABLED_BY_DEFAULT);
// Enables or disables Fresnel Device Active reporting on ChromeOS.
BASE_FEATURE(kDeviceActiveClient,
"DeviceActiveClient",
base::FEATURE_ENABLED_BY_DEFAULT);
// Enables or disables PSM CheckIn for the 28 day active device active pings
// on ChromeOS.
BASE_FEATURE(kDeviceActiveClient28DayActiveCheckIn,
"DeviceActiveClient28DayActiveCheckIn",
base::FEATURE_ENABLED_BY_DEFAULT);
// Enables or disables PSM CheckMembership for 28 day device active pings
// on ChromeOS.
BASE_FEATURE(kDeviceActiveClient28DayActiveCheckMembership,
"DeviceActiveClient28DayActiveCheckMembership",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables or disables PSM CheckMembership for daily device active pings
// on ChromeOS.
BASE_FEATURE(kDeviceActiveClientDailyCheckMembership,
"DeviceActiveClientDailyCheckMembership",
base::FEATURE_ENABLED_BY_DEFAULT);
// Enables or disables PSM CheckIn for the churn cohort device active pings
// on ChromeOS.
BASE_FEATURE(kDeviceActiveClientChurnCohortCheckIn,
"DeviceActiveClientChurnCohortCheckIn",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables or disables PSM CheckMembership for the churn cohort device active
// pings on ChromeOS.
BASE_FEATURE(kDeviceActiveClientChurnCohortCheckMembership,
"DeviceActiveClientChurnCohortCheckMembership",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables or disables PSM CheckIn for the churn observation device active
// pings on ChromeOS.
BASE_FEATURE(kDeviceActiveClientChurnObservationCheckIn,
"DeviceActiveClientChurnObservationCheckIn",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables or disables PSM CheckMembership for the churn observation
// device active pings on ChromeOS.
BASE_FEATURE(kDeviceActiveClientChurnObservationCheckMembership,
"DeviceActiveClientChurnObservationCheckMembership",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables or disables forced reboots when DeviceScheduledReboot policy is set.
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 settings to be split per device.
BASE_FEATURE(kInputDeviceSettingsSplit,
"InputDeviceSettingsSplit",
base::FEATURE_DISABLED_BY_DEFAULT);
// Enables or disables whether to store UMA logs per-user and whether metrics
// consent is per-user.
BASE_FEATURE(kPerUserMetrics,
"PerUserMetricsConsent",
base::FEATURE_ENABLED_BY_DEFAULT);
// Allows Files App to find and execute tasks using App Service for ARC apps.
BASE_FEATURE(kArcFileTasksUseAppService,
"ArcFileTasksUseAppService",
base::FEATURE_DISABLED_BY_DEFAULT);
////////////////////////////////////////////////////////////////////////////////
bool AreCaptureModeDemoToolsEnabled() {
return base::FeatureList::IsEnabled(kCaptureModeDemoTools);
}
bool AreContextualNudgesEnabled() {
if (!IsHideShelfControlsInTabletModeEnabled()) {
return false;
}
return base::FeatureList::IsEnabled(kContextualNudges);
}
bool AreDesksTemplatesEnabled() {
return base::FeatureList::IsEnabled(kDesksTemplates);
}
bool ArePolicyProvidedTrustAnchorsAllowedAtLockScreen() {
return base::FeatureList::IsEnabled(
kPolicyProvidedTrustAnchorsAllowedAtLockScreen);
}
bool ArePromiseIconsEnabled() {
return base::FeatureList::IsEnabled(kPromiseIcons);
}
bool AreSideAlignedToastsEnabled() {
return base::FeatureList::IsEnabled(kSideAlignedToasts);
}
bool AreSystemSoundsEnabled() {
return base::FeatureList::IsEnabled(kSystemSounds);
}
bool IsAutocompleteExtendedSuggestionsEnabled() {
return base::FeatureList::IsEnabled(kAutocompleteExtendedSuggestions);
}
bool IsAutoEnrollmentKioskInOobeEnabled() {
return base::FeatureList::IsEnabled(kAutoEnrollmentKioskInOobe);
}
bool DoWindowsFollowCursor() {
return base::FeatureList::IsEnabled(kWindowsFollowCursor);
}
bool Is16DesksEnabled() {
return base::FeatureList::IsEnabled(kFeatureManagement16Desks);
}
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 IsEapDefaultCasWithoutSubjectVerificationAllowed() {
return base::FeatureList::IsEnabled(
kAllowEapDefaultCasWithoutSubjectVerification);
}
bool IsAltClickAndSixPackCustomizationEnabled() {
return base::FeatureList::IsEnabled(kAltClickAndSixPackCustomization);
}
bool IsAmbientModeDevUseProdEnabled() {
return base::FeatureList::IsEnabled(kAmbientModeDevUseProdFeature);
}
bool IsAmbientModeManagedScreensaverEnabled() {
return base::FeatureList::IsEnabled(kAmbientModeManagedScreensaver);
}
bool IsAmbientModePhotoPreviewEnabled() {
return base::FeatureList::IsEnabled(kAmbientModePhotoPreviewFeature);
}
bool IsAmbientModeThrottleAnimationEnabled() {
return base::FeatureList::IsEnabled(kAmbientModeThrottleAnimation);
}
bool IsApnRevampEnabled() {
return base::FeatureList::IsEnabled(kApnRevamp);
}
bool IsAppNotificationsPageEnabled() {
return base::FeatureList::IsEnabled(kOsSettingsAppNotificationsPage);
}
bool IsAppCollectionFolderRefreshEnabled() {
return base::FeatureList::IsEnabled(kAppCollectionFolderRefresh);
}
bool IsArcFuseBoxFileSharingEnabled() {
return base::FeatureList::IsEnabled(kArcFuseBoxFileSharing);
}
bool IsArcInputOverlayBetaEnabled() {
return base::FeatureList::IsEnabled(kArcInputOverlayBeta);
}
bool IsArcInputOverlayAlphaV2Enabled() {
return base::FeatureList::IsEnabled(kArcInputOverlayAlphaV2);
}
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 IsBluetoothQualityReportEnabled() {
return base::FeatureList::IsEnabled(kBluetoothQualityReport);
}
bool IsCalendarJellyEnabled() {
return base::FeatureList::IsEnabled(kCalendarJelly);
}
bool IsCaptureModeAudioMixingEnabled() {
return base::FeatureList::IsEnabled(kCaptureModeAudioMixing);
}
bool IsCaptivePortalErrorPageEnabled() {
return base::FeatureList::IsEnabled(kCaptivePortalErrorPage);
}
bool IsCaptureModeTourEnabled() {
return base::FeatureList::IsEnabled(kCaptureModeTour);
}
bool IsCheckPasswordsAgainstCryptohomeHelperEnabled() {
return base::FeatureList::IsEnabled(kCheckPasswordsAgainstCryptohomeHelper);
}
bool IsClipboardHistoryLongpressEnabled() {
return base::FeatureList::IsEnabled(kClipboardHistoryLongpress);
}
bool IsClipboardHistoryReorderEnabled() {
return base::FeatureList::IsEnabled(kClipboardHistoryReorder);
}
bool IsCryptauthAttestationSyncingEnabled() {
return base::FeatureList::IsEnabled(kCryptauthAttestationSyncing);
}
bool IsDeprecateOldKeyboardShortcutsAcceleratorEnabled() {
return base::FeatureList::IsEnabled(
kDeprecateOldKeyboardShortcutsAccelerator);
}
bool IsDnsOverHttpsWithIdentifiersReuseOldPolicyEnabled() {
return base::FeatureList::IsEnabled(
kDnsOverHttpsWithIdentifiersReuseOldPolicy);
}
bool IsDnsOverHttpsWithIdentifiersEnabled() {
return base::FeatureList::IsEnabled(kDnsOverHttpsWithIdentifiers);
}
bool IsConsumerAutoUpdateToggleAllowed() {
return base::FeatureList::IsEnabled(kConsumerAutoUpdateToggleAllowed);
}
bool IsCrosPrivacyHubEnabled() {
return IsCrosPrivacyHubV0Enabled() || IsCrosPrivacyHubV1Enabled() ||
IsCrosPrivacyHubV2Enabled();
}
bool IsCrosPrivacyHubV0Enabled() {
return base::FeatureList::IsEnabled(kCrosPrivacyHubV0) ||
IsCrosPrivacyHubV1Enabled();
}
bool IsCrosPrivacyHubV2Enabled() {
return base::FeatureList::IsEnabled(kCrosPrivacyHubV2);
}
bool IsCrosPrivacyHubV1Enabled() {
return base::FeatureList::IsEnabled(kCrosPrivacyHub) ||
IsCrosPrivacyHubV2Enabled();
}
bool IsCryptohomeRecoveryEnabled() {
return base::FeatureList::IsEnabled(kCryptohomeRecovery);
}
bool IsDeskButtonEnabled() {
return base::FeatureList::IsEnabled(kDeskButton);
}
bool IsDeskTemplateSyncEnabled() {
return base::FeatureList::IsEnabled(kDeskTemplateSync);
}
bool IsInputDeviceSettingsSplitEnabled() {
return base::FeatureList::IsEnabled(kInputDeviceSettingsSplit);
}
bool IsDisplayAlignmentAssistanceEnabled() {
return base::FeatureList::IsEnabled(kDisplayAlignAssist);
}
bool IsDriveFsMirroringEnabled() {
return base::FeatureList::IsEnabled(kDriveFsMirroring);
}
bool IsDriveFsBulkPinningEnabled() {
return base::FeatureList::IsEnabled(kFeatureManagementDriveFsBulkPinning) &&
base::FeatureList::IsEnabled(kDriveFsBulkPinning);
}
bool IsInlineSyncStatusEnabled() {
return base::FeatureList::IsEnabled(kFilesInlineSyncStatus);
}
bool IsEapGtcWifiAuthenticationEnabled() {
return base::FeatureList::IsEnabled(kEapGtcWifiAuthentication);
}
bool IsAudioPeripheralVolumeGranularityEnabled() {
return base::FeatureList::IsEnabled(kAudioPeripheralVolumeGranularity);
}
bool IsAudioSourceFetcherResamplingEnabled() {
// TODO(b/245617354): Once ready, enable this feature under
// kProjectorBleedingEdgeExperience flag as well.
return base::FeatureList::IsEnabled(kAudioSourceFetcherResampling);
}
bool IsEcheSWAEnabled() {
return base::FeatureList::IsEnabled(kEcheSWA);
}
bool IsEcheSWADebugModeEnabled() {
return base::FeatureList::IsEnabled(kEcheSWADebugMode);
}
bool IsEcheSWAMeasureLatencyEnabled() {
return base::FeatureList::IsEnabled(kEcheSWAMeasureLatency);
}
bool IsEOLIncentiveEnabled() {
return base::FeatureList::IsEnabled(kEolIncentive);
}
bool IsExperimentalRgbKeyboardPatternsEnabled() {
return base::FeatureList::IsEnabled(kExperimentalRgbKeyboardPatterns);
}
bool IsExternalKeyboardInDiagnosticsAppEnabled() {
return base::FeatureList::IsEnabled(kEnableExternalKeyboardsInDiagnostics);
}
bool IsFaceMLSwaEnabled() {
return base::FeatureList::IsEnabled(kFaceMLApp);
}
bool IsFamilyLinkOnSchoolDeviceEnabled() {
return base::FeatureList::IsEnabled(kFamilyLinkOnSchoolDevice);
}
bool IsFastPairEnabled() {
return base::FeatureList::IsEnabled(kFastPair);
}
bool IsFastPairBleRotationEnabled() {
return base::FeatureList::IsEnabled(kFastPairBleRotation);
}
bool IsFastPairDebugMetadataEnabled() {
return base::FeatureList::IsEnabled(kFastPairDebugMetadata);
}
bool IsFastPairHandshakeRefactorEnabled() {
return base::FeatureList::IsEnabled(kFastPairHandshakeRefactor);
}
bool IsFastPairHIDEnabled() {
return base::FeatureList::IsEnabled(kFastPairHID);
}
bool IsFastPairSavedDevicesNicknamesEnabled() {
return base::FeatureList::IsEnabled(kFastPairSavedDevicesNicknames);
}
bool IsFastPairLowPowerEnabled() {
return base::FeatureList::IsEnabled(kFastPairLowPower);
}
bool IsFastPairPreventNotificationsForRecentlyLostDeviceEnabled() {
return base::FeatureList::IsEnabled(
kFastPairPreventNotificationsForRecentlyLostDevice);
}
bool IsFastPairSoftwareScanningEnabled() {
return base::FeatureList::IsEnabled(kFastPairSoftwareScanning);
}
bool IsFastPairSavedDevicesEnabled() {
return base::FeatureList::IsEnabled(kFastPairSavedDevices);
}
bool IsFastPairSavedDevicesStrictOptInEnabled() {
return base::FeatureList::IsEnabled(kFastPairSavedDevicesStrictOptIn);
}
bool IsFederatedServiceEnabled() {
return base::FeatureList::IsEnabled(kFederatedService);
}
bool IsFederatedServiceScheduleTasksEnabled() {
return IsFederatedServiceEnabled() &&
base::FeatureList::IsEnabled(kFederatedServiceScheduleTasks);
}
bool IsFileManagerFuseBoxDebugEnabled() {
return base::FeatureList::IsEnabled(kFuseBoxDebug);
}
bool IsFilesConflictDialogEnabled() {
return base::FeatureList::IsEnabled(kFilesConflictDialog);
}
bool IsFilesSearchV2Enabled() {
return base::FeatureList::IsEnabled(kFilesSearchV2);
}
bool IsFloatingWorkspaceEnabled() {
return base::FeatureList::IsEnabled(kFloatingWorkspace);
}
bool IsFloatingWorkspaceV2Enabled() {
return base::FeatureList::IsEnabled(kFloatingWorkspaceV2);
}
bool ShouldForceEnableServerSideSpeechRecognitionForDev() {
#if BUILDFLAG(GOOGLE_CHROME_BRANDING)
return base::FeatureList::IsEnabled(
kForceEnableServerSideSpeechRecognitionForDev);
#else
return false;
#endif // BUILDFLAG(GOOGLE_CHROME_BRANDING);
}
bool IsForceReSyncDriveEnabled() {
return base::FeatureList::IsEnabled(kForceReSyncDrive);
}
bool IsFullscreenAfterUnlockAllowed() {
return base::FeatureList::IsEnabled(kFullscreenAfterUnlockAllowed);
}
bool IsFullscreenAlertBubbleEnabled() {
return base::FeatureList::IsEnabled(kFullscreenAlertBubble);
}
bool IsGaiaReauthEndpointEnabled() {
return base::FeatureList::IsEnabled(kGaiaReauthEndpoint);
}
bool IsGalleryAppPdfEditNotificationEnabled() {
return base::FeatureList::IsEnabled(kGalleryAppPdfEditNotification);
}
bool IsGifRecordingEnabled() {
return base::FeatureList::IsEnabled(kGifRecording);
}
bool IsGifRenderingEnabled() {
return base::FeatureList::IsEnabled(kGifRendering);
}
bool AreGlanceablesEnabled() {
return base::FeatureList::IsEnabled(kGlanceables);
}
bool AreGlanceablesV2Enabled() {
return base::FeatureList::IsEnabled(kGlanceablesV2);
}
bool IsHibernateEnabled() {
return base::FeatureList::IsEnabled(kHibernate);
}
bool IsHideArcMediaNotificationsEnabled() {
return base::FeatureList::IsEnabled(kHideArcMediaNotifications);
}
bool IsHideShelfControlsInTabletModeEnabled() {
return base::FeatureList::IsEnabled(kHideShelfControlsInTabletMode);
}
bool IsHoldingSpaceCameraAppIntegrationEnabled() {
return base::FeatureList::IsEnabled(kHoldingSpaceCameraAppIntegration);
}
bool IsHoldingSpaceInProgressDownloadsNotificationSuppressionEnabled() {
return base::FeatureList::IsEnabled(
kHoldingSpaceInProgressDownloadsNotificationSuppression);
}
bool IsHoldingSpacePredictabilityEnabled() {
return base::FeatureList::IsEnabled(kHoldingSpacePredictability);
}
bool IsHoldingSpaceRefreshEnabled() {
return base::FeatureList::IsEnabled(kHoldingSpaceRefresh);
}
bool IsHoldingSpaceSuggestionsEnabled() {
return base::FeatureList::IsEnabled(kHoldingSpaceSuggestions);
}
bool IsHoldingSpaceTourEnabled() {
return base::FeatureList::IsEnabled(kHoldingSpaceTour);
}
bool IsHomeButtonQuickAppAccessEnabled() {
return base::FeatureList::IsEnabled(kHomeButtonQuickAppAccess) ||
base::FeatureList::IsEnabled(kQuickAppAccessTestUI);
}
bool IsHomeButtonWithTextEnabled() {
return base::FeatureList::IsEnabled(kHomeButtonWithText);
}
bool IsHostnameSettingEnabled() {
return base::FeatureList::IsEnabled(kEnableHostnameSetting);
}
bool IsHotspotEnabled() {
return base::FeatureList::IsEnabled(kHotspot);
}
bool IsScreenSaverDurationEnabled() {
return base::FeatureList::IsEnabled(kScreenSaverDuration);
}
bool IsScreenSaverPreviewEnabled() {
return base::FeatureList::IsEnabled(kScreenSaverPreview);
}
bool IsSnoopingProtectionEnabled() {
return base::FeatureList::IsEnabled(kSnoopingProtection) &&
switches::HasHps();
}
bool IsStartAssistantAudioDecoderOnDemandEnabled() {
return base::FeatureList::IsEnabled(kStartAssistantAudioDecoderOnDemand);
}
bool IsImeTrayHideVoiceButtonEnabled() {
return base::FeatureList::IsEnabled(kImeTrayHideVoiceButton);
}
bool IsInputInDiagnosticsAppEnabled() {
return base::FeatureList::IsEnabled(kEnableInputInDiagnosticsApp);
}
bool IsInstantTetheringBackgroundAdvertisingSupported() {
return base::FeatureList::IsEnabled(
kInstantTetheringBackgroundAdvertisementSupport);
}
bool IsInternalServerSideSpeechRecognitionEnabled() {
#if BUILDFLAG(GOOGLE_CHROME_BRANDING)
// TODO(b/245614967): Once ready, enable this feature under
// kProjectorBleedingEdgeExperience flag as well.
return IsInternalServerSideSpeechRecognitionControlEnabled() &&
(ShouldForceEnableServerSideSpeechRecognitionForDev() ||
base::FeatureList::IsEnabled(kInternalServerSideSpeechRecognition));
#else
return false;
#endif // BUILDFLAG(GOOGLE_CHROME_BRANDING)
}
bool IsInternalServerSideSpeechRecognitionControlEnabled() {
#if BUILDFLAG(GOOGLE_CHROME_BRANDING)
return base::FeatureList::IsEnabled(
kInternalServerSideSpeechRecognitionControl);
#else
return false;
#endif // BUILDFLAG(GOOGLE_CHROME_BRANDING)
}
bool IsIppClientInfoEnabled() {
return base::FeatureList::IsEnabled(kIppClientInfo);
}
bool IsJellyEnabledForDiagnosticsApp() {
return chromeos::features::IsJellyEnabled() &&
base::FeatureList::IsEnabled(kDiagnosticsAppJelly);
}
bool IsJellyEnabledForFirmwareUpdate() {
return chromeos::features::IsJellyEnabled() &&
base::FeatureList::IsEnabled(kFirmwareUpdateJelly);
}
bool IsJellyEnabledForOsFeedback() {
return chromeos::features::IsJellyEnabled() &&
base::FeatureList::IsEnabled(kOsFeedbackJelly);
}
bool IsJellyEnabledForPrintManagement() {
return chromeos::features::IsJellyEnabled() &&
base::FeatureList::IsEnabled(kPrintManagementJelly);
}
bool IsJellyEnabledForScanningApp() {
return chromeos::features::IsJellyEnabled() &&
base::FeatureList::IsEnabled(kScanningAppJelly);
}
bool IsJellyEnabledForShortcutCustomization() {
return chromeos::features::IsJellyEnabled() &&
base::FeatureList::IsEnabled(kShortcutCustomizationJelly);
}
bool IsKeyboardBacklightToggleEnabled() {
return base::FeatureList::IsEnabled(kEnableKeyboardBacklightToggle);
}
bool IsLanguagePacksEnabled() {
return base::FeatureList::IsEnabled(kHandwritingLegacyRecognition);
}
bool IsLauncherNudgeShortIntervalEnabled() {
return base::FeatureList::IsEnabled(kLauncherNudgeShortInterval);
}
bool IsLauncherNudgeSessionResetEnabled() {
return 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 IsEducationEnrollmentOobeFlowEnabled() {
return base::FeatureList::IsEnabled(kEducationEnrollmentOobeFlow);
}
bool IsEnrollmentNudgingForTestingEnabled() {
return base::FeatureList::IsEnabled(kEnrollmentNudgingForTesting);
}
bool IsGameDashboardEnabled() {
if (!base::FeatureList::IsEnabled(kGameDashboard)) {
return false;
}
// Only allow the dashboard on test images until further in development.
std::string track;
return base::SysInfo::GetLsbReleaseValue(kChromeOSReleaseTrack, &track) &&
track.find(kTestImageRelease) != std::string::npos;
}
bool IsLockScreenInlineReplyEnabled() {
return base::FeatureList::IsEnabled(kLockScreenInlineReply);
}
bool IsLockScreenNotificationsEnabled() {
return base::FeatureList::IsEnabled(kLockScreenNotifications);
}
bool IsLoginScreenDeviceTrustConnectorFeatureEnabled() {
return base::FeatureList::IsEnabled(kLoginScreenDeviceTrustConnectorEnabled);
}
bool IsProductivityLauncherImageSearchEnabled() {
return base::FeatureList::IsEnabled(kProductivityLauncherImageSearch);
}
bool IsMacAddressRandomizationEnabled() {
return base::FeatureList::IsEnabled(kMacAddressRandomization);
}
bool IsMicMuteNotificationsEnabled() {
return base::FeatureList::IsEnabled(kMicMuteNotifications);
}
bool IsMinimumChromeVersionEnabled() {
return base::FeatureList::IsEnabled(kMinimumChromeVersion);
}
bool IsMultiZoneRgbKeyboardEnabled() {
return base::FeatureList::IsEnabled(kMultiZoneRgbKeyboard);
}
bool IsEcheLauncherEnabled() {
return base::FeatureList::IsEnabled(kEcheLauncher) &&
base::FeatureList::IsEnabled(kEcheSWA);
}
bool IsEcheLauncherIconsInMoreAppsButtonEnabled() {
return base::FeatureList::IsEnabled(kEcheLauncherIconsInMoreAppsButton);
}
bool IsEcheLauncherListViewEnabled() {
return IsEcheLauncherEnabled() &&
base::FeatureList::IsEnabled(kEcheLauncherListView);
}
bool IsEcheNetworkConnectionStateEnabled() {
return base::FeatureList::IsEnabled(kEcheNetworkConnectionState) &&
base::FeatureList::IsEnabled(kEcheSWA);
}
bool IsNearbyKeepAliveFixEnabled() {
return base::FeatureList::IsEnabled(kNearbyKeepAliveFix);
}
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 IsNotificationImageDragEnabled() {
return base::FeatureList::IsEnabled(kNotificationImageDrag);
}
bool IsNotificationScrollBarEnabled() {
return base::FeatureList::IsEnabled(kNotificationScrollBar);
}
bool IsNotificationsInContextMenuEnabled() {
return base::FeatureList::IsEnabled(kNotificationsInContextMenu);
}
bool IsOobeChromeVoxHintEnabled() {
return base::FeatureList::IsEnabled(kEnableOobeChromeVoxHint);
}
bool IsOobeGaiaInfoScreenEnabled() {
return base::FeatureList::IsEnabled(kOobeGaiaInfoScreen);
}
bool IsOobeHidDetectionRevampEnabled() {
return base::FeatureList::IsEnabled(kOobeHidDetectionRevamp);
}
bool IsKioskEnrollmentInOobeEnabled() {
return base::FeatureList::IsEnabled(kEnableKioskEnrollmentInOobe);
}
bool IsKioskLoginScreenEnabled() {
return base::FeatureList::IsEnabled(kEnableKioskLoginScreen);
}
bool IsOobeJellyEnabled() {
return chromeos::features::IsJellyEnabled() &&
base::FeatureList::IsEnabled(kOobeJelly);
}
bool IsOobeSimonEnabled() {
return base::FeatureList::IsEnabled(kFeatureManagementOobeSimon) &&
base::FeatureList::IsEnabled(kOobeSimon);
}
bool IsOobeSkipAssistantEnabled() {
return base::FeatureList::IsEnabled(kOobeSkipAssistant);
}
bool IsOobeNetworkScreenSkipEnabled() {
return base::FeatureList::IsEnabled(kEnableOobeNetworkScreenSkip);
}
bool IsOobeChoobeEnabled() {
return base::FeatureList::IsEnabled(kOobeChoobe);
}
bool IsOobeDrivePinningEnabled() {
return base::FeatureList::IsEnabled(kOobeDrivePinning) &&
IsOobeChoobeEnabled() && IsDriveFsBulkPinningEnabled();
}
bool IsOobeQuickStartEnabled() {
return base::FeatureList::IsEnabled(kOobeQuickStart);
}
bool IsOobeTouchpadScrollEnabled() {
return IsOobeChoobeEnabled() &&
base::FeatureList::IsEnabled(kOobeTouchpadScroll);
}
bool IsOobeDisplaySizeEnabled() {
return IsOobeChoobeEnabled() &&
base::FeatureList::IsEnabled(kOobeDisplaySize);
}
bool IsOsSettingsAppBadgingToggleEnabled() {
return base::FeatureList::IsEnabled(kOsSettingsAppBadgingToggle);
}
bool IsOsSettingsSearchFeedbackEnabled() {
return base::FeatureList::IsEnabled(kOsSettingsSearchFeedback);
}
bool IsOsSyncConsentRevampEnabled() {
return base::FeatureList::IsEnabled(kOsSyncConsentRevamp);
}
bool IsOverviewDeskNavigationEnabled() {
return base::FeatureList::IsEnabled(kOverviewDeskNavigation);
}
bool IsPasspointARCSupportEnabled() {
return base::FeatureList::IsEnabled(kPasspointARCSupport);
}
bool IsPasspointSettingsEnabled() {
return base::FeatureList::IsEnabled(kPasspointSettings) &&
base::FeatureList::IsEnabled(kPasspointARCSupport);
}
bool IsPcieBillboardNotificationEnabled() {
return base::FeatureList::IsEnabled(kPcieBillboardNotification);
}
bool IsPerDeskShelfEnabled() {
return base::FeatureList::IsEnabled(kPerDeskShelf);
}
bool IsPersonalizationJellyEnabled() {
return base::FeatureList::IsEnabled(kPersonalizationJelly) &&
chromeos::features::IsJellyEnabled();
}
bool IsPhoneHubCameraRollEnabled() {
return base::FeatureList::IsEnabled(kPhoneHubCameraRoll);
}
bool IsPhoneHubMonochromeNotificationIconsEnabled() {
return base::FeatureList::IsEnabled(kPhoneHubMonochromeNotificationIcons);
}
bool IsPhoneHubNudgeEnabled() {
return base::FeatureList::IsEnabled(kPhoneHubNudge);
}
bool IsPhoneHubFeatureSetupErrorHandlingEnabled() {
return base::FeatureList::IsEnabled(kPhoneHubFeatureSetupErrorHandling);
}
bool IsPhoneHubPingOnBubbleOpenEnabled() {
return base::FeatureList::IsEnabled(kPhoneHubPingOnBubbleOpen);
}
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 IsPrinterSettingsPrinterStatusEnabled() {
return base::FeatureList::IsEnabled(kPrinterSettingsPrinterStatus);
}
bool IsPrinterSettingsRevampEnabled() {
return base::FeatureList::IsEnabled(kPrinterSettingsRevamp);
}
bool IsPrivacyIndicatorsEnabled() {
// Privacy indicators should not be enabled when video conference is enabled.
return base::FeatureList::IsEnabled(kPrivacyIndicators) &&
!IsVideoConferenceEnabled();
}
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 IsProjectorAppDebugMode() {
return base::FeatureList::IsEnabled(kProjectorAppDebug);
}
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) ||
base::FeatureList::IsEnabled(kProjectorBleedingEdgeExperience);
}
bool IsProjectorWebReportCrashEnabled() {
return base::FeatureList::IsEnabled(kProjectorWebReportCrash);
}
bool IsProjectorUseApiKeyForTranslationEnabled() {
return base::FeatureList::IsEnabled(kProjectorUseApiKeyForTranslation);
}
bool IsQsRevampEnabled() {
return base::FeatureList::IsEnabled(kQsRevamp);
}
bool IsProjectorViewerUseSecondaryAccountEnabled() {
return base::FeatureList::IsEnabled(kProjectorViewerUseSecondaryAccount);
}
bool IsProjectorAccountSwitchNotificationEnabled() {
return base::FeatureList::IsEnabled(kProjectorAccountSwitchNotification);
}
bool IsProjectorFoldShortGapIntoPreviousTranscriptEnabled() {
return base::FeatureList::IsEnabled(
kProjectorFoldShortGapIntoPreviousTranscript);
}
bool IsQuickDimEnabled() {
return base::FeatureList::IsEnabled(kQuickDim) && switches::HasHps();
}
bool IsPerDeskZOrderEnabled() {
return base::FeatureList::IsEnabled(kEnablePerDeskZOrder);
}
bool IsRenderArcNotificationsByChromeEnabled() {
return base::FeatureList::IsEnabled(kRenderArcNotificationsByChrome);
}
bool IsReverseScrollGesturesEnabled() {
return base::FeatureList::IsEnabled(kReverseScrollGestures);
}
bool IsRgbKeyboardEnabled() {
return base::FeatureList::IsEnabled(kRgbKeyboard);
}
bool IsSameAppWindowCycleEnabled() {
return base::FeatureList::IsEnabled(kSameAppWindowCycle);
}
bool IsSamlNotificationOnPasswordChangeSuccessEnabled() {
return base::FeatureList::IsEnabled(
kEnableSamlNotificationOnPasswordChangeSuccess);
}
bool IsSeparateNetworkIconsEnabled() {
return base::FeatureList::IsEnabled(kSeparateNetworkIcons);
}
bool IsSettingsAppNotificationSettingsEnabled() {
return base::FeatureList::IsEnabled(kSettingsAppNotificationSettings);
}
bool IsSettingsAppThemeChangeAnimationEnabled() {
return base::FeatureList::IsEnabled(kSettingsAppThemeChangeAnimation);
}
bool IsShelfLauncherNudgeEnabled() {
return base::FeatureList::IsEnabled(kShelfLauncherNudge);
}
bool IsShelfPalmRejectionSwipeOffsetEnabled() {
return base::FeatureList::IsEnabled(kShelfPalmRejectionSwipeOffset);
}
bool IsShelfStackedHotseatEnabled() {
return base::FeatureList::IsEnabled(kShelfStackedHotseat);
}
bool IsShimlessRMAOsUpdateEnabled() {
return base::FeatureList::IsEnabled(kShimlessRMAOsUpdate);
}
bool IsShimlessRMADarkModeDisabled() {
return base::FeatureList::IsEnabled(kShimlessRMADisableDarkMode);
}
bool IsShimlessRMADiagnosticPageEnabled() {
return base::FeatureList::IsEnabled(kShimlessRMADiagnosticPage);
}
bool IsSmdsSupportEnabled() {
return base::FeatureList::IsEnabled(kSmdsDbusMigration) &&
base::FeatureList::IsEnabled(kSmdsSupport);
}
bool IsSmdsSupportEuiccUploadEnabled() {
return base::FeatureList::IsEnabled(kSmdsDbusMigration) &&
base::FeatureList::IsEnabled(kSmdsSupport) &&
base::FeatureList::IsEnabled(kSmdsSupportEuiccUpload);
}
bool IsSmdsDbusMigrationEnabled() {
return base::FeatureList::IsEnabled(kSmdsDbusMigration);
}
bool IsSmartReaderEnabled() {
return base::FeatureList::IsEnabled(kSmartReader);
}
bool IsSnapGroupEnabled() {
return base::FeatureList::IsEnabled(kSnapGroup);
}
bool IsSpeakOnMuteEnabled() {
return base::FeatureList::IsEnabled(kSpeakOnMuteEnabled);
}
bool IsSystemTrayShadowEnabled() {
return base::FeatureList::IsEnabled(kSystemTrayShadow);
}
bool IsStylusBatteryStatusEnabled() {
return base::FeatureList::IsEnabled(kStylusBatteryStatus);
}
bool IsTimeOfDayScreenSaverEnabled() {
// TODO(b/270597524): Check `kFeatureManagementTimeOfDayScreenSaver` flag as
// well when feature management team has completed their design.
return base::FeatureList::IsEnabled(kTimeOfDayScreenSaver) &&
IsTimeOfDayWallpaperEnabled();
}
bool IsTimeOfDayWallpaperEnabled() {
// TODO(b/270597524): Check `kFeatureManagementTimeOfDayWallpaper` flag as
// well when feature management team has completed their design.
return base::FeatureList::IsEnabled(kTimeOfDayWallpaper);
}
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 IsUseLoginShelfWidgetEnabled() {
return base::FeatureList::IsEnabled(kUseLoginShelfWidget);
}
bool IsUseStorkSmdsServerAddressEnabled() {
return base::FeatureList::IsEnabled(kUseStorkSmdsServerAddress);
}
bool IsUserEducationEnabled() {
return IsCaptureModeTourEnabled() || IsHoldingSpaceTourEnabled() ||
IsWelcomeTourEnabled();
}
bool IsVideoConferenceEnabled() {
return base::FeatureList::IsEnabled(kVideoConference) &&
switches::IsCameraEffectsSupportedByHardware();
}
bool IsVcBackgroundReplaceEnabled() {
return base::FeatureList::IsEnabled(kVcBackgroundReplace) &&
IsVideoConferenceEnabled();
}
bool IsVcPortraitRelightEnabled() {
return base::FeatureList::IsEnabled(kVcPortraitRelight) &&
IsVideoConferenceEnabled();
}
bool IsVcControlsUiFakeEffectsEnabled() {
return base::FeatureList::IsEnabled(kVcControlsUiFakeEffects);
}
bool IsWallpaperFastRefreshEnabled() {
return base::FeatureList::IsEnabled(kWallpaperFastRefresh);
}
bool IsWallpaperGooglePhotosSharedAlbumsEnabled() {
return base::FeatureList::IsEnabled(kWallpaperGooglePhotosSharedAlbums);
}
bool IsWallpaperPerDeskEnabled() {
return base::FeatureList::IsEnabled(kWallpaperPerDesk);
}
bool IsWebUITabStripTabDragIntegrationEnabled() {
return base::FeatureList::IsEnabled(kWebUITabStripTabDragIntegration);
}
bool IsWelcomeTourEnabled() {
return base::FeatureList::IsEnabled(kWelcomeTour);
}
bool IsWifiSyncAndroidEnabled() {
return base::FeatureList::IsEnabled(kWifiSyncAndroid);
}
bool IsWmModeEnabled() {
return base::FeatureList::IsEnabled(kWmMode);
}
bool ShouldArcFileTasksUseAppService() {
return base::FeatureList::IsEnabled(kArcFileTasksUseAppService);
}
bool ShouldOnlyShowNewShortcutApp() {
return base::FeatureList::IsEnabled(kOnlyShowNewShortcutsApp);
}
bool IsSearchInShortcutsAppEnabled() {
return base::FeatureList::IsEnabled(kSearchInShortcutsApp);
}
bool ShouldShowPlayStoreInDemoMode() {
return base::FeatureList::IsEnabled(kShowPlayInDemoMode);
}
bool IsFeatureAwareDeviceDemoModeEnabled() {
return base::FeatureList::IsEnabled(
kFeatureManagementFeatureAwareDeviceDemoMode);
}
bool ShouldUseV1DeviceSync() {
return !ShouldUseV2DeviceSync() ||
!base::FeatureList::IsEnabled(kDisableCryptAuthV1DeviceSync);
}
bool ShouldUseV2DeviceSync() {
return base::FeatureList::IsEnabled(kCryptAuthV2Enrollment) &&
base::FeatureList::IsEnabled(kCryptAuthV2DeviceSync);
}
} // namespace features
} // namespace ash