blob: db44b094798af5650fc636f6d35ed462bd0b1edb [file] [log] [blame]
// Copyright 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "ash/constants/ash_features.h"
#include "ash/constants/ash_switches.h"
#include "base/command_line.h"
#include "base/feature_list.h"
#include "base/metrics/field_trial_params.h"
#include "base/system/sys_info.h"
#include "build/build_config.h"
#include "chromeos/constants/chromeos_features.h"
namespace ash {
namespace features {
namespace {
// Controls whether Instant Tethering supports hosts which use the background
// advertisement model.
const base::Feature kInstantTetheringBackgroundAdvertisementSupport{
"InstantTetheringBackgroundAdvertisementSupport",
base::FEATURE_ENABLED_BY_DEFAULT};
} // namespace
// Adjusts portrait mode split view to avoid the input field in the bottom
// window being occluded by the virtual keyboard.
const base::Feature kAdjustSplitViewForVK{"AdjustSplitViewForVK",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables the UI to support Ambient EQ if the device supports it.
// See https://crbug.com/1021193 for more details.
const base::Feature kAllowAmbientEQ{"AllowAmbientEQ",
base::FEATURE_DISABLED_BY_DEFAULT};
// Controls whether devices are updated before reboot after the first update.
const base::Feature kAllowRepeatedUpdates{"AllowRepeatedUpdates",
base::FEATURE_ENABLED_BY_DEFAULT};
// Shows settings for adjusting scroll acceleration/sensitivity for
// mouse/touchpad.
const base::Feature kAllowScrollSettings{"AllowScrollSettings",
base::FEATURE_DISABLED_BY_DEFAULT};
// Controls whether to enable Ambient mode feature.
const base::Feature kAmbientModeFeature{"ChromeOSAmbientMode",
base::FEATURE_ENABLED_BY_DEFAULT};
constexpr base::FeatureParam<bool> kAmbientModeCapturedOnPixelAlbumEnabled{
&kAmbientModeFeature, "CapturedOnPixelAlbumEnabled", false};
constexpr base::FeatureParam<bool> kAmbientModeCapturedOnPixelPhotosEnabled{
&kAmbientModeFeature, "CapturedOnPixelPhotosEnabled", false};
constexpr base::FeatureParam<bool> kAmbientModeCulturalInstitutePhotosEnabled{
&kAmbientModeFeature, "CulturalInstitutePhotosEnabled", false};
constexpr base::FeatureParam<bool> kAmbientModeDefaultFeedEnabled{
&kAmbientModeFeature, "DefaultFeedEnabled", false};
constexpr base::FeatureParam<bool> kAmbientModeEarthAndSpaceAlbumEnabled{
&kAmbientModeFeature, "EarthAndSpaceAlbumEnabled", true};
constexpr base::FeatureParam<bool> kAmbientModeFeaturedPhotoAlbumEnabled{
&kAmbientModeFeature, "FeaturedPhotoAlbumEnabled", true};
constexpr base::FeatureParam<bool> kAmbientModeFeaturedPhotosEnabled{
&kAmbientModeFeature, "FeaturedPhotosEnabled", true};
constexpr base::FeatureParam<bool> kAmbientModeFineArtAlbumEnabled{
&kAmbientModeFeature, "FineArtAlbumEnabled", false};
constexpr base::FeatureParam<bool> kAmbientModeGeoPhotosEnabled{
&kAmbientModeFeature, "GeoPhotosEnabled", true};
constexpr base::FeatureParam<bool> kAmbientModePersonalPhotosEnabled{
&kAmbientModeFeature, "PersonalPhotosEnabled", true};
constexpr base::FeatureParam<bool> kAmbientModeRssPhotosEnabled{
&kAmbientModeFeature, "RssPhotosEnabled", false};
constexpr base::FeatureParam<bool> kAmbientModeStreetArtAlbumEnabled{
&kAmbientModeFeature, "StreetArtAlbumEnabled", false};
// Controls whether to launch the animated screensaver (as opposed to the
// existing photo slideshow) when entering ambient mode. Currently, there is
// only one animation theme available ("feel the breeze"), but a FeatureParam
// will be introduced that allows the user to select a specific theme when more
// become available.
const base::Feature kAmbientModeAnimationFeature{
"ChromeOSAmbientModeAnimation", base::FEATURE_DISABLED_BY_DEFAULT};
// Controls whether to allow Dev channel to use Prod server feature.
const base::Feature kAmbientModeDevUseProdFeature{
"ChromeOSAmbientModeDevChannelUseProdServer",
base::FEATURE_DISABLED_BY_DEFAULT};
// Controls whether to enable Ambient mode album selection with photo previews.
const base::Feature kAmbientModePhotoPreviewFeature{
"ChromeOSAmbientModePhotoPreview", base::FEATURE_ENABLED_BY_DEFAULT};
// Controls whether to fetch ambient mode images using new url format.
const base::Feature kAmbientModeNewUrl{"ChromeOSAmbientModeNewUrl",
base::FEATURE_ENABLED_BY_DEFAULT};
// Controls whether to enable ARC account restrictions.
const base::Feature kArcAccountRestrictions{"ArcAccountRestrictions",
base::FEATURE_DISABLED_BY_DEFAULT};
// Controls whether to enable ARC ADB sideloading support.
const base::Feature kArcAdbSideloadingFeature{
"ArcAdbSideloading", base::FEATURE_DISABLED_BY_DEFAULT};
// Controls whether to enable support for ARC Input Overlay.
const base::Feature kArcInputOverlay{"ArcInputOverlay",
base::FEATURE_DISABLED_BY_DEFAULT};
// Controls whether to enable support for ARC ADB sideloading for managed
// accounts and/or devices.
const base::Feature kArcManagedAdbSideloadingSupport{
"ArcManagedAdbSideloadingSupport", base::FEATURE_DISABLED_BY_DEFAULT};
// Controls whether to enable assistive autocorrect.
const base::Feature kAssistAutoCorrect{"AssistAutoCorrect",
base::FEATURE_ENABLED_BY_DEFAULT};
// Controls whether to enable enhanced assistive emoji suggestions.
const base::Feature kAssistEmojiEnhanced{"AssistEmojiEnhanced",
base::FEATURE_DISABLED_BY_DEFAULT};
// Controls whether to enable assistive multi word suggestions.
const base::Feature kAssistMultiWord{"AssistMultiWord",
base::FEATURE_DISABLED_BY_DEFAULT};
// Controls whether to enable assistive multi word suggestions on an expanded
// list of surfaces.
const base::Feature kAssistMultiWordExpanded{"AssistMultiWordExpanded",
base::FEATURE_DISABLED_BY_DEFAULT};
// Controls whether to enable lacros support for the assistive multi word
// suggestions feature.
const base::Feature kAssistMultiWordLacrosSupport{
"AssistMultiWordLacrosSupport", base::FEATURE_DISABLED_BY_DEFAULT};
// Controls whether to enable assistive personal information.
const base::Feature kAssistPersonalInfo{"AssistPersonalInfo",
base::FEATURE_DISABLED_BY_DEFAULT};
// Controls whether to suggest addresses in assistive personal information. This
// is only effective when AssistPersonalInfo flag is enabled.
const base::Feature kAssistPersonalInfoAddress{
"AssistPersonalInfoAddress", base::FEATURE_ENABLED_BY_DEFAULT};
// Controls whether to suggest emails in assistive personal information. This is
// only effective when AssistPersonalInfo flag is enabled.
const base::Feature kAssistPersonalInfoEmail{"AssistPersonalInfoEmail",
base::FEATURE_ENABLED_BY_DEFAULT};
// Controls whether to suggest names in assistive personal information. This is
// only effective when AssistPersonalInfo flag is enabled.
const base::Feature kAssistPersonalInfoName{"AssistPersonalInfoName",
base::FEATURE_ENABLED_BY_DEFAULT};
// Controls whether to suggest phone numbers in assistive personal information.
// This is only effective when AssistPersonalInfo flag is enabled.
const base::Feature kAssistPersonalInfoPhoneNumber{
"AssistPersonalInfoPhoneNumber", base::FEATURE_ENABLED_BY_DEFAULT};
// Enables the Audio URL that is designed to help user debug or troubleshoot
// common issues on ChromeOS.
const base::Feature kAudioUrl{"AudioUrl", base::FEATURE_DISABLED_BY_DEFAULT};
// Enables the Auto Night Light feature which sets the default schedule type to
// sunset-to-sunrise until the user changes it to something else. This feature
// is not exposed to the end user, and is enabled only via cros_config for
// certain devices.
const base::Feature kAutoNightLight{"AutoNightLight",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables or disables auto screen-brightness adjustment when ambient light
// changes.
const base::Feature kAutoScreenBrightness{"AutoScreenBrightness",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables the persistent desks bar at the top of the screen in clamshell mode
// when there are more than one desk.
const base::Feature kBentoBar{"BentoBar", base::FEATURE_DISABLED_BY_DEFAULT};
// Enables or disables the usage of fixed Bluetooth A2DP packet size to improve
// audio performance in noisy environment.
const base::Feature kBluetoothFixA2dpPacketSize{
"BluetoothFixA2dpPacketSize", base::FEATURE_DISABLED_BY_DEFAULT};
// Enables or disables the Chrome OS Bluetooth Revamp, which updates Bluetooth
// system UI and related infrastructure. See https://crbug.com/1010321.
const base::Feature kBluetoothRevamp{"BluetoothRevamp",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables or disables Bluetooth WBS microphone be selected as default
// audio input option.
const base::Feature kBluetoothWbsDogfood{"BluetoothWbsDogfood",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enable Big GL when using Borealis.
const base::Feature kBorealisBigGl{"BorealisBigGl",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enable experimental disk management changes for Borealis.
const base::Feature kBorealisDiskManagement{"BorealisDiskManagement",
base::FEATURE_DISABLED_BY_DEFAULT};
// Force the client to be on its beta version. If not set, the client will be on
// its stable version.
const base::Feature kBorealisForceBetaClient{"BorealisForceBetaClient",
base::FEATURE_DISABLED_BY_DEFAULT};
// Prevent Borealis' client from exercising ChromeOS integrations, in this mode
// it functions more like the linux client.
const base::Feature kBorealisLinuxMode{"BorealisLinuxMode",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enable TermsOfServiceURL policy for managed users.
// https://crbug.com/1221342
const base::Feature kManagedTermsOfService{"ManagedTermsOfService",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enable display of button on Arc provisioning failure dialog for network
// tests.
const base::Feature kButtonARCNetworkDiagnostics{
"ButtonARCNetworkDiagnostics", base::FEATURE_ENABLED_BY_DEFAULT};
// Enable or disable calendar view from the system tray. Also enables the system
// tray to show date in the shelf when the screen is sufficiently large.
const base::Feature kCalendarView{"CalendarView",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enable or disable manual crop document page to ChromeOS camera app. The flag
// will be deprecated after feature is fully launched: crbug.com/1259731.
const base::Feature kCameraAppDocumentManualCrop{
"CameraAppDocumentManualCrop", base::FEATURE_ENABLED_BY_DEFAULT};
// Controls whether the camera privacy switch toasts and notification should be
// displayed.
const base::Feature kCameraPrivacySwitchNotifications{
"CameraPrivacySwitchNotifications", base::FEATURE_ENABLED_BY_DEFAULT};
// If enabled, allow eSIM installation bypass the non-cellular internet
// connectivity check.
const base::Feature kCellularBypassESimInstallationConnectivityCheck{
"CellularBypassESimInstallationConnectivityCheck",
base::FEATURE_DISABLED_BY_DEFAULT};
// If enabled, the value of |kCellularUseAttachApn| should have no effect and
// and the LTE attach APN configuration will not be sent to the modem. This
// flag exists because the |kCellularUseAttachApn| flag can be enabled
// by command-line arguments via board overlays which takes precedence over
// server-side field trial config, which may be needed to turn off the Attach
// APN feature.
const base::Feature kCellularForbidAttachApn{"CellularForbidAttachApn",
base::FEATURE_DISABLED_BY_DEFAULT};
// If enabled, send the LTE attach APN configuration to the modem.
const base::Feature kCellularUseAttachApn{"CellularUseAttachApn",
base::FEATURE_ENABLED_BY_DEFAULT};
// If enabled, use external euicc in Cellular Setup and Settings.
const base::Feature kCellularUseExternalEuicc{
"CellularUseExternalEuicc", base::FEATURE_DISABLED_BY_DEFAULT};
// Enables pasting a few recently copied items in a menu when pressing search +
// v.
const base::Feature kClipboardHistory{"ClipboardHistory",
base::FEATURE_ENABLED_BY_DEFAULT};
// If enabled, a blue new nudge will show on the context menu option for
// clipboard history.
const base::Feature kClipboardHistoryContextMenuNudge{
"ClipboardHistoryContextMenuNudge", base::FEATURE_DISABLED_BY_DEFAULT};
// If enabled, the clipboard nudge shown prefs will be reset at the start of
// each new user session.
const base::Feature kClipboardHistoryNudgeSessionReset{
"ClipboardHistoryNudgeSessionReset", base::FEATURE_DISABLED_BY_DEFAULT};
// If enabled, the clipboard history shortcut will appear in screenshot
// notifications.
const base::Feature kClipboardHistoryScreenshotNudge{
"ClipboardHistoryScreenshotNudge", base::FEATURE_DISABLED_BY_DEFAULT};
// Enables compositing-based throttling to throttle appropriate frame sinks that
// do not need to be refreshed at high fps.
const base::Feature kCompositingBasedThrottling{
"CompositingBasedThrottling", base::FEATURE_ENABLED_BY_DEFAULT};
// Enables contextual nudges for gesture education.
const base::Feature kContextualNudges{"ContextualNudges",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables or disables Crosh System Web App. When enabled, crosh (Chrome OS
// Shell) will run as a tabbed System Web App rather than a normal browser tab.
const base::Feature kCroshSWA{"CroshSWA", base::FEATURE_DISABLED_BY_DEFAULT};
// Enables upgrading the crostini container to debian bullseye.
const base::Feature kCrostiniBullseyeUpgrade{"CrostiniBullseyeUpgrade",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables or disables Crostini Disk Resizing.
const base::Feature kCrostiniDiskResizing{"CrostiniDiskResizing",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables or disables Crostini GPU support.
// Note that this feature can be overridden by login_manager based on
// whether a per-board build sets the USE virtio_gpu flag.
// Refer to: chromiumos/src/platform2/login_manager/chrome_setup.cc
const base::Feature kCrostiniGpuSupport{"CrostiniGpuSupport",
base::FEATURE_DISABLED_BY_DEFAULT};
// Force enable recreating the LXD DB at LXD launch.
const base::Feature kCrostiniResetLxdDb{"CrostiniResetLxdDb",
base::FEATURE_DISABLED_BY_DEFAULT};
// Do we use the default LXD version or try LXD 4?
const base::Feature kCrostiniUseLxd4{"CrostiniUseLxd4",
base::FEATURE_DISABLED_BY_DEFAULT};
// Use DLC instead of component updater for managing the Termina image if set
// (and component updater instead of DLC if not).
const base::Feature kCrostiniUseDlc{"CrostiniUseDlc",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables experimental UI creating and managing multiple Crostini containers.
const base::Feature kCrostiniMultiContainer{"CrostiniMultiContainer",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables or disables Crostini IME support.
const base::Feature kCrostiniImeSupport{"CrostiniImeSupport",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables or disables Crostini Virtual Keyboard support.
const base::Feature kCrostiniVirtualKeyboardSupport{
"CrostiniVirtualKeyboardSupport", base::FEATURE_DISABLED_BY_DEFAULT};
// Enables or disables always using device-activity-status data to filter
// eligible host phones.
const base::Feature kCryptAuthV2AlwaysUseActiveEligibleHosts{
"kCryptAuthV2AlwaysUseActiveEligibleHosts",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables or disables using Cryptauth's GetDevicesActivityStatus API.
const base::Feature kCryptAuthV2DeviceActivityStatus{
"CryptAuthV2DeviceActivityStatus", base::FEATURE_ENABLED_BY_DEFAULT};
// Enables or disables use of the connectivity status from Cryptauth's
// GetDevicesActivityStatus API to sort devices.
const base::Feature kCryptAuthV2DeviceActivityStatusUseConnectivity{
"CryptAuthV2DeviceActivityStatusUseConnectivity",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables or disables use of last activity time to deduplicate eligible host
// phones in multidevice setup dropdown list. We assume that different copies
// of same device share the same last activity time but different last update
// time.
const base::Feature kCryptAuthV2DedupDeviceLastActivityTime{
"CryptAuthV2DedupDeviceLastActivityTime", base::FEATURE_ENABLED_BY_DEFAULT};
// Enables or disables the CryptAuth v2 DeviceSync flow. Regardless of this
// flag, v1 DeviceSync will continue to operate until it is disabled via the
// feature flag kDisableCryptAuthV1DeviceSync.
const base::Feature kCryptAuthV2DeviceSync{"CryptAuthV2DeviceSync",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables or disables the CryptAuth v2 Enrollment flow.
const base::Feature kCryptAuthV2Enrollment{"CryptAuthV2Enrollment",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables the Cryptohome recovery feature, which allows users to recover access
// to their profile and Cryptohome after performing an online authentication.
const base::Feature kCryptohomeRecoveryFlow{"CryptohomeRecoveryFlow",
base::FEATURE_DISABLED_BY_DEFAULT};
const base::Feature kDemoModeSWA{"DemoModeSWA",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables or disables Sync for desk templates on Chrome OS.
const base::Feature kDeskTemplateSync{"DeskTemplateSync",
base::FEATURE_ENABLED_BY_DEFAULT};
const base::Feature kDesksTemplates{"DesksTemplates",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables or disables the Diagnostics app.
const base::Feature kDiagnosticsApp{"DiagnosticsApp",
base::FEATURE_ENABLED_BY_DEFAULT};
// If enabled, the navigation panel will be shown in the diagnostics app.
const base::Feature kDiagnosticsAppNavigation{"DiagnosticsAppNavigation",
base::FEATURE_ENABLED_BY_DEFAULT};
// Disables the CryptAuth v1 DeviceSync flow. Note: During the first phase
// of the v2 DeviceSync rollout, v1 and v2 DeviceSync run in parallel. This flag
// is needed to disable the v1 service during the second phase of the rollout.
// kCryptAuthV2DeviceSync should be enabled before this flag is flipped.
const base::Feature kDisableCryptAuthV1DeviceSync{
"DisableCryptAuthV1DeviceSync", base::FEATURE_ENABLED_BY_DEFAULT};
// Disable idle sockets closing on memory pressure for NetworkContexts that
// belong to Profiles. It only applies to Profiles because the goal is to
// improve perceived performance of web browsing within the Chrome OS user
// session by avoiding re-estabshing TLS connections that require client
// certificates.
const base::Feature kDisableIdleSocketsCloseOnMemoryPressure{
"disable_idle_sockets_close_on_memory_pressure",
base::FEATURE_DISABLED_BY_DEFAULT};
// Disables "Office Editing for Docs, Sheets & Slides" component app so handlers
// won't be registered, making it possible to install another version for
// testing.
const base::Feature kDisableOfficeEditingComponentApp{
"DisableOfficeEditingComponentApp", base::FEATURE_DISABLED_BY_DEFAULT};
// Enables indicators to hint where displays are connected.
const base::Feature kDisplayAlignAssist{"DisplayAlignAssist",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables the docked (a.k.a. picture-in-picture) magnifier.
// TODO(afakhry): Remove this after the feature is fully launched.
// https://crbug.com/709824.
const base::Feature kDockedMagnifier{"DockedMagnifier",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables dragging an unpinned open app to pinned app side to pin.
const base::Feature kDragUnpinnedAppToPin{"DragUnpinnedAppToPin",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables dragging and dropping an existing window to new desk in overview.
const base::Feature kDragWindowToNewDesk{"DragWindowToNewDesk",
base::FEATURE_DISABLED_BY_DEFAULT};
// If enabled, DriveFS will be used for Drive sync.
const base::Feature kDriveFs{"DriveFS", base::FEATURE_ENABLED_BY_DEFAULT};
// Enables duplex native messaging between DriveFS and extensions.
const base::Feature kDriveFsBidirectionalNativeMessaging{
"DriveFsBidirectionalNativeMessaging", base::FEATURE_DISABLED_BY_DEFAULT};
// Enables DriveFS' experimental local files mirroring functionality.
const base::Feature kDriveFsMirroring{"DriveFsMirroring",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables the Eche Phone Hub permission onboarding.
const base::Feature kEchePhoneHubPermissionsOnboarding{
"EchePhoneHubPermissionsOnboarding", base::FEATURE_DISABLED_BY_DEFAULT};
// Enables the System Web App (SWA) version of Eche.
const base::Feature kEcheSWA{"EcheSWA", base::FEATURE_DISABLED_BY_DEFAULT};
// Enables the naive resize for the Eche window.
const base::Feature kEcheSWAResizing{"EcheSWAResizing",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables the Debug Mode of Eche.
const base::Feature kEcheSWADebugMode{"EcheSWADebugMode",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables background blur for the app list, shelf, unified system tray,
// autoclick menu, etc. Also enables the AppsGridView mask layer, slower devices
// may have choppier app list animations while in this mode. crbug.com/765292.
const base::Feature kEnableBackgroundBlur{"EnableBackgroundBlur",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables some trials aimed at improving user experiencing when using the
// trackpad to switch desks.
// TODO(https://crbug.com/1191545): Remove this after the feature is launched.
const base::Feature kEnableDesksTrackpadSwipeImprovements{
"EnableDesksTrackpadSwipeImprovements", base::FEATURE_DISABLED_BY_DEFAULT};
// Enables the DNS proxy service providing support split and secure DNS
// for Chrome OS.
const base::Feature kEnableDnsProxy{"EnableDnsProxy",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables setting the device hostname.
const base::Feature kEnableHostnameSetting{"EnableHostnameSetting",
base::FEATURE_DISABLED_BY_DEFAULT};
// Controls whether the Wayland idle-inhibit-unstable-v1 protocol is enabled.
// On Ash, it determines whether the idle inhibit manager is bound by the exo
// Wayland server. On Lacros, it determines whether the power save blocker is
// invoked via Ozone Wayland (if enabled) or via crosapi (if disabled).
const base::Feature kEnableIdleInhibit{"EnableIdleInhibit",
base::FEATURE_DISABLED_BY_DEFAULT};
// If enabled, the input device cards will be shown in the diagnostics app.
const base::Feature kEnableInputInDiagnosticsApp{
"EnableInputInDiagnosticsApp", base::FEATURE_DISABLED_BY_DEFAULT};
// Enables or disables noise cancellation UI toggle.
const base::Feature kEnableInputNoiseCancellationUi{
"EnableInputNoiseCancellationUi", base::FEATURE_ENABLED_BY_DEFAULT};
// Enables or disables keyboard backlight toggle.
const base::Feature kEnableKeyboardBacklightToggle{
"EnableKeyboardBacklightToggle", base::FEATURE_ENABLED_BY_DEFAULT};
// Login WebUI was always loaded for legacy reasons even when it was not needed.
// When enabled, it will make login WebUI loaded only before showing it.
const base::Feature kEnableLazyLoginWebUILoading{
"EnableLazyLoginWebUILoading", base::FEATURE_DISABLED_BY_DEFAULT};
// Enables LocalSearchService to be initialized.
const base::Feature kEnableLocalSearchService{"EnableLocalSearchService",
base::FEATURE_ENABLED_BY_DEFAULT};
// If enabled, the networking cards will be shown in the diagnostics app.
const base::Feature kEnableNetworkingInDiagnosticsApp{
"EnableNetworkingInDiagnosticsApp", base::FEATURE_ENABLED_BY_DEFAULT};
// Enables OAuth support when printing via the IPP protocol.
const base::Feature kEnableOAuthIpp{"EnableOAuthIpp",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables the OOBE ChromeVox hint dialog and announcement feature.
const base::Feature kEnableOobeChromeVoxHint{"EnableOobeChromeVoxHint",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables Polymer3 for OOBE
const base::Feature kEnableOobePolymer3{"EnableOobePolymer3",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables skipping of network screen.
const base::Feature kEnableOobeNetworkScreenSkip{
"EnableOobeNetworkScreenSkip", base::FEATURE_DISABLED_BY_DEFAULT};
// Enables toggling Pciguard settings through Settings UI.
const base::Feature kEnablePciguardUi{"EnablePciguardUi",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables showing notification after the password change for SAML users.
const base::Feature kEnableSamlNotificationOnPasswordChangeSuccess{
"EnableSamlNotificationOnPasswordChangeSuccess",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables SAML re-authentication on the lock screen once the sign-in time
// limit expires.
const base::Feature kEnableSamlReauthenticationOnLockscreen{
"EnableSamlReauthenticationOnLockScreen", base::FEATURE_ENABLED_BY_DEFAULT};
// Enables WireGuard VPN, if running a compatible kernel.
const base::Feature kEnableWireGuard{"EnableWireGuard",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enforces Ash extension keep-list. Only the extensions/Chrome apps in the
// keep-list are enabled in Ash.
const base::Feature kEnforceAshExtensionKeeplist{
"EnforceAshExtensionKeeplist", base::FEATURE_ENABLED_BY_DEFAULT};
// Enables Device End Of Lifetime warning notifications.
const base::Feature kEolWarningNotifications{"EolWarningNotifications",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables or disables enterprise policy control for eSIM cellular networks.
// See https://crbug.com/1231305.
const base::Feature kESimPolicy{"ESimPolicy",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enable or disable bubble showing when an application gains any UI lock.
const base::Feature kExoLockNotification{"ExoLockNotification",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enable or disable use of ordinal (unaccelerated) motion by Exo clients.
const base::Feature kExoOrdinalMotion{"ExoOrdinalMotion",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enable or disable pointer lock for Crostini windows.
const base::Feature kExoPointerLock{"ExoPointerLock",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables policy that controls feature to allow Family Link accounts on school
// owned devices.
const base::Feature kFamilyLinkOnSchoolDevice{"FamilyLinkOnSchoolDevice",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables the Fast Pair feature.
const base::Feature kFastPair{"FastPair", base::FEATURE_DISABLED_BY_DEFAULT};
// Enables mounting various archive formats (in two tiers) in Files App. This
// flag controls the first tier, whose support is very good.
// https://crbug.com/1216245
const base::Feature kFilesArchivemount{"FilesArchivemount",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables mounting various archive formats (in two tiers) in Files App. This
// flag controls the second tier, whose support is more experimental.
// https://crbug.com/1216245
const base::Feature kFilesArchivemount2{"FilesArchivemount2",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enable the updated banner framework.
// https://crbug.com/1228128
const base::Feature kFilesBannerFramework{"FilesBannerFramework",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enable the simple archive extraction.
// https://crbug.com/953256
const base::Feature kFilesExtractArchive{"FilesExtractArchive",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables the System Web App (SWA) version of file manager.
const base::Feature kFilesSWA{"FilesSWA", base::FEATURE_DISABLED_BY_DEFAULT};
// Enables partitioning of removable disks in file manager.
const base::Feature kFilesSinglePartitionFormat{
"FilesSinglePartitionFormat", base::FEATURE_DISABLED_BY_DEFAULT};
// Enable files app trash.
const base::Feature kFilesTrash{"FilesTrash",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables filters in Files app Recents view.
const base::Feature kFiltersInRecents{"FiltersInRecents",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables the firmware updater app.
const base::Feature kFirmwareUpdaterApp = {"FirmwareUpdaterApp",
base::FEATURE_DISABLED_BY_DEFAULT};
// Controls whether to allow keeping full screen mode after unlock.
const base::Feature kFullscreenAfterUnlockAllowed = {
"FullscreenAfterUnlockAllowed", base::FEATURE_ENABLED_BY_DEFAULT};
// When enabled, there will be an alert bubble showing up when the device
// returns from low brightness (e.g., sleep, closed cover) without a lock screen
// and the active window is in fullscreen.
// TODO(https://crbug.com/1107185): Remove this after the feature is launched.
const base::Feature kFullscreenAlertBubble{"EnableFullscreenBubble",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enable ChromeOS FuseBox service.
const base::Feature kFuseBox{"FuseBox", base::FEATURE_DISABLED_BY_DEFAULT};
// Enables or disables handle of `closeView` message from Gaia. The message is
// supposed to end the flow.
const base::Feature kGaiaCloseViewMessage{"GaiaCloseViewMessage",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables the Gaia reauth endpoint with deleted user customization page.
const base::Feature kGaiaReauthEndpoint{"GaiaReauthEndpoint",
base::FEATURE_ENABLED_BY_DEFAULT};
// Controls gamepad vibration in Exo.
const base::Feature kGamepadVibration{"ExoGamepadVibration",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enable a D-Bus service for accessing gesture properties.
const base::Feature kGesturePropertiesDBusService{
"GesturePropertiesDBusService", base::FEATURE_DISABLED_BY_DEFAULT};
// Enables editing with handwriting gestures within the virtual keyboard.
const base::Feature kHandwritingGestureEditing{
"HandwritingGestureEditing", base::FEATURE_DISABLED_BY_DEFAULT};
// Enables new on-device recognition for legacy handwriting input.
const base::Feature kHandwritingLegacyRecognition{
"HandwritingLegacyRecognition", base::FEATURE_DISABLED_BY_DEFAULT};
// Enables new on-device recognition for legacy handwriting input in all
// supported languages.
const base::Feature kHandwritingLegacyRecognitionAllLang{
"HandwritingLegacyRecognitionAllLang", base::FEATURE_DISABLED_BY_DEFAULT};
// Enables the Background Page in the help app.
const base::Feature kHelpAppBackgroundPage{"HelpAppBackgroundPage",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables the Discover Tab in the help app.
const base::Feature kHelpAppDiscoverTab{"HelpAppDiscoverTab",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables or disables the Help App Discover tab notifications on non-stable
// Chrome OS channels. Used for testing.
const base::Feature kHelpAppDiscoverTabNotificationAllChannels{
"HelpAppDiscoverTabNotificationAllChannels",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enable showing search results from the help app in the launcher.
const base::Feature kHelpAppLauncherSearch{"HelpAppLauncherSearch",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables or disables the flag to synchronize launcher item colors. It is
// in effect only when kLauncherAppSort is enabled.
const base::Feature kLauncherItemColorSync{"LauncherItemColorSync",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enable the search service integration in the Help app.
const base::Feature kHelpAppSearchServiceIntegration{
"HelpAppSearchServiceIntegration", base::FEATURE_ENABLED_BY_DEFAULT};
// Enables a warning about connecting to hidden WiFi networks.
// https://crbug.com/903908
const base::Feature kHiddenNetworkWarning{"HiddenNetworkWarning",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables hiding of ARC media notifications. If this is enabled, all ARC
// notifications that are of the media type will not be shown. This
// is because they will be replaced by native media session notifications.
// TODO(beccahughes): Remove after launch. (https://crbug.com/897836)
const base::Feature kHideArcMediaNotifications{
"HideArcMediaNotifications", base::FEATURE_ENABLED_BY_DEFAULT};
// When enabled, shelf navigation controls and the overview tray item will be
// removed from the shelf in tablet mode (unless otherwise specified by user
// preferences, or policy).
const base::Feature kHideShelfControlsInTabletMode{
"HideShelfControlsInTabletMode", base::FEATURE_ENABLED_BY_DEFAULT};
// Enables V2 implementation for visual representation of in-progress items in
// Tote, the productivity feature that aims to reduce context switching by
// enabling users to collect content and transfer or access it later.
const base::Feature kHoldingSpaceInProgressAnimationV2{
"HoldingSpaceInProgressAnimationV2", base::FEATURE_DISABLED_BY_DEFAULT};
// Enables in-progress downloads integration with the productivity feature that
// aims to reduce context switching by enabling users to collect content and
// transfer or access it later.
const base::Feature kHoldingSpaceInProgressDownloadsIntegration{
"HoldingSpaceInProgressDownloadsIntegration",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables in-progress downloads notification suppression with the productivity
// feature that aims to reduce context switching by enabling users to collect
// content and transfer or access it later.
const base::Feature kHoldingSpaceInProgressDownloadsNotificationSuppression{
"HoldingSpaceInProgressNotificationSuppression",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables incognito profile integration with the productivity feature that
// aims to reduce context switching by enabling users to collect content and
// transfer or access it later.
const base::Feature kHoldingSpaceIncognitoProfileIntegration{
"HoldingSpaceIncognitoProfileIntegration",
base::FEATURE_ENABLED_BY_DEFAULT};
// Controls whether the snooping protection prototype is enabled.
const base::Feature kSnoopingProtection{"SnoopingProtection",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enable or disable dark mode support for the Chrome OS virtual keyboard.
const base::Feature kVirtualKeyboardDarkMode{"VirtualKeyboardDarkMode",
base::FEATURE_DISABLED_BY_DEFAULT};
// If enabled, options page for each input method will be opened in ChromeOS
// settings. Otherwise it will be opened in a new web page in Chrome browser.
const base::Feature kImeOptionsInSettings{"ImeOptionsInSettings",
base::FEATURE_ENABLED_BY_DEFAULT};
// If enabled, used to configure the heuristic rules for some advanced IME
// features (e.g. auto-correct).
const base::Feature kImeRuleConfig{"ImeRuleConfig",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enable or disable system emoji picker.
const base::Feature kImeSystemEmojiPicker{"SystemEmojiPicker",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enable or disable system emoji picker falling back to clipboard.
const base::Feature kImeSystemEmojiPickerClipboard{
"SystemEmojiPickerClipboard", base::FEATURE_DISABLED_BY_DEFAULT};
// Enable or disable system emoji picker extension
const base::Feature kImeSystemEmojiPickerExtension{
"SystemEmojiPickerExtension", base::FEATURE_DISABLED_BY_DEFAULT};
// Enable or disable a new UI for stylus writing on the virtual keyboard
const base::Feature kImeStylusHandwriting{"StylusHandwriting",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables improved keyboard shortcuts for activating desks at specified indices
// and toggling whether a window is assigned to all desks.
const base::Feature kImprovedDesksKeyboardShortcuts{
"ImprovedDesksKeyboardShortcuts", base::FEATURE_ENABLED_BY_DEFAULT};
// Enables or disables Instant Tethering on Chrome OS.
const base::Feature kInstantTethering{"InstantTethering",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables using arrow keys for display arrangement in display settings page.
const base::Feature kKeyboardBasedDisplayArrangementInSettings{
"KeyboardBasedDisplayArrangementInSettings",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables to use lacros-chrome as a primary web browser on Chrome OS.
// This works only when LacrosSupport below is enabled.
// NOTE: Use crosapi::browser_util::IsLacrosPrimary() instead of checking
// the feature directly. Similar to LacrosSupport, this may not be allowed
// depending on user types and/or policies.
const base::Feature kLacrosPrimary{"LacrosPrimary",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables "Linux and Chrome OS" support. Allows a Linux version of Chrome
// ("lacros-chrome") to run as a Wayland client with this instance of Chrome
// ("ash-chrome") acting as the Wayland server and window manager.
// NOTE: Use crosapi::browser_util::IsLacrosEnabled() instead of checking the
// feature directly. Lacros is not allowed for certain user types and can be
// disabled by policy. These restrictions will be lifted when Lacros development
// is complete.
const base::Feature kLacrosSupport{"LacrosSupport",
base::FEATURE_DISABLED_BY_DEFAULT};
// Pretend that profile migration has been completed regardless of the actual
// state. Enabling this will allow users to use lacros without completing
// profile mgiration.
const base::Feature kForceProfileMigrationCompletion{
"ForceProfileMigrationCompletion", base::FEATURE_DISABLED_BY_DEFAULT};
// Emergency switch to turn off profile migration.
const base::Feature kLacrosProfileMigrationForceOff{
"LacrosProfileMigrationForceOff", base::FEATURE_DISABLED_BY_DEFAULT};
// Enable this to turn on profile migration for non-googlers. Currently the
// feature is only limited to googlers only.
const base::Feature kLacrosProfileMigrationForAnyUser{
"LacrosProfileMigrationForAnyUser", base::FEATURE_DISABLED_BY_DEFAULT};
// Enables or disables Language Packs for Handwriting Recognition.
// This feature turns on the download of language-specific Handwriting models
// via DLC.
const base::Feature kLanguagePacksHandwriting{
"LanguagePacksHandwriting", base::FEATURE_DISABLED_BY_DEFAULT};
// Enables or disables the second language settings update.
const base::Feature kLanguageSettingsUpdate2{"LanguageSettingsUpdate2",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables or disables sorting app icons shown on the launcher.
const base::Feature kLauncherAppSort{"LauncherAppSort",
base::FEATURE_DISABLED_BY_DEFAULT};
// Uses short intervals for launcher nudge for testing if enabled.
const base::Feature kLauncherNudgeShortInterval{
"LauncherNudgeShortInterval", base::FEATURE_DISABLED_BY_DEFAULT};
// Enables new flow for license packaged devices with enterprise license.
const base::Feature kLicensePackagedOobeFlow{"LicensePackagedOobeFlow",
base::FEATURE_ENABLED_BY_DEFAULT};
// Supports the feature to hide sensitive content in notifications on the lock
// screen. This option is effective when |kLockScreenNotification| is enabled.
const base::Feature kLockScreenHideSensitiveNotificationsSupport{
"LockScreenHideSensitiveNotificationsSupport",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables inline reply on notifications on the lock screen.
// This option is effective when |kLockScreenNotification| is enabled.
const base::Feature kLockScreenInlineReply{"LockScreenInlineReply",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables notifications on the lock screen.
const base::Feature kLockScreenNotifications{"LockScreenNotifications",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables lock screen media controls UI and use of media keys on the lock
// screen.
const base::Feature kLockScreenMediaControls{"LockScreenMediaControls",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables the redesigned managed device info UI in the system tray.
const base::Feature kManagedDeviceUIRedesign{"ManagedDeviceUIRedesign",
base::FEATURE_ENABLED_BY_DEFAULT};
// Whether audio files are opened by default in the ChromeOS media app.
const base::Feature kMediaAppHandlesAudio{"MediaAppHandlesAudio",
base::FEATURE_ENABLED_BY_DEFAULT};
// Whether PDF files are opened by default in the ChromeOS media app.
const base::Feature kMediaAppHandlesPdf{"MediaAppHandlesPdf",
base::FEATURE_DISABLED_BY_DEFAULT};
// Feature to continuously log PSI memory pressure data to UMA.
const base::Feature kMemoryPressureMetricsDetail{
"MemoryPressureMetricsDetail", base::FEATURE_ENABLED_BY_DEFAULT};
// Controls how frequently memory pressure is logged
const base::FeatureParam<int> kMemoryPressureMetricsDetailLogPeriod{
&kMemoryPressureMetricsDetail, "period", 10};
// Enables notification of when a microphone-using app is launched while the
// microphone is muted.
const base::Feature kMicMuteNotifications{"MicMuteNotifications",
base::FEATURE_ENABLED_BY_DEFAULT};
// Controls whether to enable the requirement of a minimum chrome version on the
// device through the policy DeviceMinimumVersion. If the requirement is
// not met and the warning time in the policy has expired, the user is
// restricted from using the session.
const base::Feature kMinimumChromeVersion{"MinimumChromeVersion",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables support for AADC regulation requirement and avoid nudging users in
// minor mode(e.g. under the age of 18) to provide unnecessary consents to share
// personal data.
const base::Feature kMinorModeRestriction{"MinorModeRestriction",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables the use of Mojo by Chrome-process code to communicate with Power
// Manager. In order to use mojo, this feature must be turned on and a callsite
// must use PowerManagerMojoClient::Get().
const base::Feature kMojoDBusRelay{"MojoDBusRelay",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables support for multilingual assistive typing on Chrome OS.
const base::Feature kMultilingualTyping{"MultilingualTyping",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables Nearby Connections to specificy KeepAlive interval and timeout while
// also making the Nearby Connections WebRTC defaults longer.
const base::Feature kNearbyKeepAliveFix{"NearbyKeepAliveFix",
base::FEATURE_ENABLED_BY_DEFAULT};
// Controls whether new Lockscreen reauth layout is shown or not.
const base::Feature kNewLockScreenReauthLayout{
"NewLockScreenReauthLayout", base::FEATURE_ENABLED_BY_DEFAULT};
// Enables the Night Light feature.
const base::Feature kNightLight{"NightLight", base::FEATURE_ENABLED_BY_DEFAULT};
// Enabled notification expansion animation.
const base::Feature kNotificationExpansionAnimation{
"NotificationExpansionAnimation", base::FEATURE_DISABLED_BY_DEFAULT};
// Shorten notification timeouts to 6 seconds.
const base::Feature kNotificationExperimentalShortTimeouts{
"NotificationExperimentalShortTimeouts", base::FEATURE_ENABLED_BY_DEFAULT};
// Enables notification scroll bar in UnifiedSystemTray.
const base::Feature kNotificationScrollBar{"NotificationScrollBar",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables notifications to be shown within context menus.
const base::Feature kNotificationsInContextMenu{
"NotificationsInContextMenu", base::FEATURE_DISABLED_BY_DEFAULT};
// Enables new notifications UI and grouped notifications.
const base::Feature kNotificationsRefresh{"NotificationsRefresh",
base::FEATURE_DISABLED_BY_DEFAULT};
// Controls whether to enable on-device grammar check service.
const base::Feature kOnDeviceGrammarCheck{"OnDeviceGrammarCheck",
base::FEATURE_DISABLED_BY_DEFAULT};
// Whether the device supports on-device speech recognition.
const base::Feature kOnDeviceSpeechRecognition{
"OnDeviceSpeechRecognition", base::FEATURE_DISABLED_BY_DEFAULT};
// If enabled, EULA and ARC Terms of Service screens are skipped and merged
// into Consolidated Consent Screen.
const base::Feature kOobeConsolidatedConsent{"OobeConsolidatedConsent",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables or disables the Oobe quick start flow.
const base::Feature kOobeQuickStart{"OobeQuickStart",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables or disables the feedback tool new UX on Chrome OS.
// This tool under development will be rolled out via Finch.
// Enabling this flag will use the new feedback tool instead of the current
// tool on CrOS.
const base::Feature kOsFeedback{"OsFeedback",
base::FEATURE_DISABLED_BY_DEFAULT};
// If enabled, a new App Notifications subpage will appear in CrOS Apps section.
const base::Feature kOsSettingsAppNotificationsPage{
"OsSettingsAppNotificationsPage", base::FEATURE_ENABLED_BY_DEFAULT};
const base::Feature kOverviewButton{"OverviewButton",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables a notification warning users that their Thunderbolt device is not
// supported on their CrOS device.
const base::Feature kPcieBillboardNotification{
"PcieBillboardNotification", base::FEATURE_DISABLED_BY_DEFAULT};
// Limits the items on the shelf to the ones associated with windows the
// currently active desk.
const base::Feature kPerDeskShelf{"PerDeskShelf",
base::FEATURE_DISABLED_BY_DEFAULT};
// Allows tablet mode split screen to resize by moving windows instead of
// resizing. This reduces jank on low end devices.
const base::Feature kPerformantSplitViewResizing{
"PerformantSplitViewResizing", base::FEATURE_DISABLED_BY_DEFAULT};
// Provides a UI for users to customize their wallpapers, screensaver and
// avatars.
const base::Feature kPersonalizationHub{"PersonalizationHub",
base::FEATURE_DISABLED_BY_DEFAULT};
// Provides a UI for users to view information about their Android phone
// and perform phone-side actions within Chrome OS.
const base::Feature kPhoneHub{"PhoneHub", base::FEATURE_ENABLED_BY_DEFAULT};
// Enables the Camera Roll feature in Phone Hub, which allows users to access
// recent photos and videos taken on a connected Android device
const base::Feature kPhoneHubCameraRoll{"PhoneHubCameraRoll",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables the incoming/ongoing call notification feature in Phone Hub.
const base::Feature kPhoneHubCallNotification{
"PhoneHubCallNotification", base::FEATURE_DISABLED_BY_DEFAULT};
// Enables the Recent Apps feature in Phone Hub, which allows users to relaunch
// the streamed app.
const base::Feature kPhoneHubRecentApps{"PhoneHubRecentApps",
base::FEATURE_DISABLED_BY_DEFAULT};
const base::Feature kPinSetupForManagedUsers{"PinSetupForManagedUsers",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables rounded corners for the Picture-in-picture window.
const base::Feature kPipRoundedCorners{"PipRoundedCorners",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables or disables the preference of using constant frame rate for camera
// when streaming.
const base::Feature kPreferConstantFrameRate{"PreferConstantFrameRate",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables a bubble-based launcher in clamshell mode. Changes the suggestions
// that appear in the launcher in both clamshell and tablet modes. Removes pages
// from the apps grid. This feature was previously named "AppListBubble".
// https://crbug.com/1204551
const base::Feature kProductivityLauncher{"ProductivityLauncher",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables animation in the productivity launcher.
const base::Feature kProductivityLauncherAnimation{
"ProductivityLauncherAnimation", base::FEATURE_ENABLED_BY_DEFAULT};
// Controls whether to enable Projector.
const base::Feature kProjector{"Projector", base::FEATURE_DISABLED_BY_DEFAULT};
// Controls whether to enable Projector for managed users.
const base::Feature kProjectorManagedUser{"ProjectorManagedUser",
base::FEATURE_DISABLED_BY_DEFAULT};
// Controls whether to enable Projector in status tray.
const base::Feature kProjectorFeaturePod{"ProjectorFeaturePod",
base::FEATURE_DISABLED_BY_DEFAULT};
// Controls whether to enable Projector annotator or marker tools.
// The annotator tools are newer and based on the ink library.
// The marker tools are older and based on fast ink.
// We are deprecating the old marker tools in favor of the annotator tools.
const base::Feature kProjectorAnnotator{"ProjectorAnnotator",
base::FEATURE_ENABLED_BY_DEFAULT};
// Controls whether the quick dim prototype is enabled.
const base::Feature kQuickDim{"QuickDim", base::FEATURE_DISABLED_BY_DEFAULT};
// Enables or disables the Quick Settings Network revamp, which updates Network
// Quick Settings UI and related infrastructure. See https://crbug.com/1169479.
const base::Feature kQuickSettingsNetworkRevamp{
"QuickSettingsNetworkRevamp", base::FEATURE_DISABLED_BY_DEFAULT};
// Enables or disables fingerprint quick unlock.
const base::Feature kQuickUnlockFingerprint{"QuickUnlockFingerprint",
base::FEATURE_DISABLED_BY_DEFAULT};
// Controls whether the PIN auto submit feature is enabled.
const base::Feature kQuickUnlockPinAutosubmit{"QuickUnlockPinAutosubmit",
base::FEATURE_ENABLED_BY_DEFAULT};
// TODO(crbug.com/1104164) - Remove this once most
// users have their preferences backfilled.
// Controls whether the PIN auto submit backfill operation should be performed.
const base::Feature kQuickUnlockPinAutosubmitBackfill{
"QuickUnlockPinAutosubmitBackfill", base::FEATURE_ENABLED_BY_DEFAULT};
// Enables redirect to default IdP without interstitial step.
const base::Feature kRedirectToDefaultIdP{"RedirectToDefaultIdP",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables suppression of Displays notifications other than resolution change.
const base::Feature kReduceDisplayNotifications{
"ReduceDisplayNotifications", base::FEATURE_ENABLED_BY_DEFAULT};
// Enables or disables Release Notes notifications on non-stable Chrome OS
// channels. Used for testing.
const base::Feature kReleaseNotesNotificationAllChannels{
"ReleaseNotesNotificationAllChannels", base::FEATURE_DISABLED_BY_DEFAULT};
// Enables or disables Release Notes suggestion chip on Chrome OS.
const base::Feature kReleaseNotesSuggestionChip{
"ReleaseNotesSuggestionChip", base::FEATURE_ENABLED_BY_DEFAULT};
// Enables or disables Reven Log Source on Chrome OS. This adds hardware
// information to Feedback reports and chrome://system on CloudReady systems.
const base::Feature kRevenLogSource{"RevenLogSource",
base::FEATURE_ENABLED_BY_DEFAULT};
// When enabled, the overivew and desk reverse scrolling behaviors are changed
// and if the user performs the old gestures, a notification or toast will show
// up.
// TODO(https://crbug.com/1107183): Remove this after the feature is launched.
const base::Feature kReverseScrollGestures{"EnableReverseScrollGestures",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables the system tray to show more information in larger screen.
const base::Feature kScalableStatusArea{"ScalableStatusArea",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables or disables flatbed multi-page scanning.
const base::Feature kScanAppMultiPageScan{"ScanAppMultiPageScan",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables or disables use of Searchable PDF file type in the Scan app.
const base::Feature kScanAppSearchablePdf{"ScanAppSearchablePdf",
base::FEATURE_DISABLED_BY_DEFAULT};
// Overrides semantic colors in Chrome OS for easier debugging.
const base::Feature kSemanticColorsDebugOverride{
"SemanticColorDebugOverride", base::FEATURE_DISABLED_BY_DEFAULT};
// Enables displaying separate network icons for different networks types.
// https://crbug.com/902409
const base::Feature kSeparateNetworkIcons{"SeparateNetworkIcons",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables or disables long kill timeout for session manager daemon. When
// enabled, session manager daemon waits for a longer time (e.g. 12s) for chrome
// to exit before sending SIGABRT. Otherwise, it uses the default time out
// (currently 3s).
const base::Feature kSessionManagerLongKillTimeout{
"SessionManagerLongKillTimeout", base::FEATURE_DISABLED_BY_DEFAULT};
// If enabled, the session manager daemon will abort the browser if its
// liveness checker detects a hang, i.e. the browser fails to acknowledge and
// respond sufficiently to periodic pings. IMPORTANT NOTE: the feature name
// here must match exactly the name of the feature in the open-source ChromeOS
// file session_manager_service.cc.
const base::Feature kSessionManagerLivenessCheck{
"SessionManagerLivenessCheck", base::FEATURE_ENABLED_BY_DEFAULT};
// Removes notifier settings from quick settings view.
const base::Feature kSettingsAppNotificationSettings{
"SettingsAppNotificationSettings", base::FEATURE_DISABLED_BY_DEFAULT};
// Enables launcher nudge that animates the home button to guide users to open
// the launcher.
const base::Feature kShelfLauncherNudge{"ShelfLauncherNudge",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables the shelf party.
const base::Feature kShelfParty{"ShelfParty",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables or disables the new shimless rma flow.
const base::Feature kShimlessRMAFlow{"ShimlessRMAFlow",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables or disables a toggle to enable Bluetooth debug logs.
const base::Feature kShowBluetoothDebugLogToggle{
"ShowBluetoothDebugLogToggle", base::FEATURE_ENABLED_BY_DEFAULT};
// Shows the Play Store icon in Demo Mode.
const base::Feature kShowPlayInDemoMode{"ShowPlayInDemoMode",
base::FEATURE_ENABLED_BY_DEFAULT};
// Uses experimental component version for smart dim.
const base::Feature kSmartDimExperimentalComponent{
"SmartDimExperimentalComponent", base::FEATURE_DISABLED_BY_DEFAULT};
// Replaces Smart Lock UI in lock screen password box with new UI similar to
// fingerprint auth. Adds Smart Lock to "Lock screen and sign-in" section of
// settings.
const base::Feature kSmartLockUIRevamp{"SmartLockUIRevamp",
base::FEATURE_DISABLED_BY_DEFAULT};
// This feature:
// - Creates a new "Sync your settings" section in Chrome OS settings
// - Moves app, wallpaper and Wi-Fi sync to OS settings
// - Provides a separate toggle for OS preferences, distinct from browser
// preferences
// - Makes the OS ModelTypes run in sync transport mode, controlled by a single
// pref for the entire OS sync feature
const base::Feature kSyncSettingsCategorization{
"SyncSettingsCategorization", base::FEATURE_DISABLED_BY_DEFAULT};
// Enables battery indicator for styluses in the palette tray
const base::Feature kStylusBatteryStatus{"StylusBatteryStatus",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables or disables using the system input engine for physical typing in
// Chinese.
const base::Feature kSystemChinesePhysicalTyping{
"SystemChinesePhysicalTyping", base::FEATURE_DISABLED_BY_DEFAULT};
// Enables or disables the System Extensions platform.
const base::Feature kSystemExtensions{"SystemExtensions",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables or disables using the system input engine for physical typing in
// Japanese.
const base::Feature kSystemJapanesePhysicalTyping{
"SystemJapanesePhysicalTyping", base::FEATURE_DISABLED_BY_DEFAULT};
// Enables or disables using the system input engine for physical typing in
// Korean.
const base::Feature kSystemKoreanPhysicalTyping{
"SystemKoreanPhysicalTyping", base::FEATURE_ENABLED_BY_DEFAULT};
// Enables the Chrome OS system-proxy daemon, only for system services. This
// means that system services like tlsdate, update engine etc. can opt to be
// authenticated to a remote HTTP web proxy via system-proxy.
const base::Feature kSystemProxyForSystemServices{
"SystemProxyForSystemServices", base::FEATURE_DISABLED_BY_DEFAULT};
// Enables the UI to show tab cluster info.
const base::Feature kTabClusterUI{"TabClusterUI",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables Chrome OS Telemetry Extension.
const base::Feature kTelemetryExtension{"TelemetryExtension",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables SSH tabs in the Terminal System App.
const base::Feature kTerminalSSH{"TerminalSSH",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables tmux integration in the Terminal System App.
const base::Feature kTerminalTmuxIntegration{"TerminalTmuxIntegration",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables the Settings UI to show data usage for cellular networks.
const base::Feature kTrafficCountersSettingsUi{
"TrafficCountersSettingsUi", base::FEATURE_ENABLED_BY_DEFAULT};
// Enables trilinear filtering.
const base::Feature kTrilinearFiltering{"TrilinearFiltering",
base::FEATURE_DISABLED_BY_DEFAULT};
// Unblock the UsbPeripheralNotificationController class in ash to display
// USB related notifications from the type-c daemon in Chrome OS.
const base::Feature kUsbNotificationController{
"UsbNotificationController", base::FEATURE_DISABLED_BY_DEFAULT};
// Uses new AuthSession-based API in cryptohome to authenticate users during
// sign-in.
const base::Feature kUseAuthsessionAuthentication{
"UseAuthsessionAuthentication", base::FEATURE_DISABLED_BY_DEFAULT};
// Enables using the BluetoothSystem Mojo interface for Bluetooth operations.
const base::Feature kUseBluetoothSystemInAsh{"UseBluetoothSystemInAsh",
base::FEATURE_DISABLED_BY_DEFAULT};
// Use the staging URL as part of the "Messages" feature under "Connected
// Devices" settings.
const base::Feature kUseMessagesStagingUrl{"UseMessagesStagingUrl",
base::FEATURE_DISABLED_BY_DEFAULT};
// Remap search+click to right click instead of the legacy alt+click on
// Chrome OS.
const base::Feature kUseSearchClickForRightClick{
"UseSearchClickForRightClick", base::FEATURE_DISABLED_BY_DEFAULT};
// Use the Stork Production SM-DS address to fetch pending ESim profiles
const base::Feature kUseStorkSmdsServerAddress{
"UseStorkSmdsServerAddress", base::FEATURE_DISABLED_BY_DEFAULT};
// Use the staging server as part of the Wallpaper App to verify
// additions/removals of wallpapers.
const base::Feature kUseWallpaperStagingUrl{"UseWallpaperStagingUrl",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables or disables user activity prediction for power management on
// Chrome OS.
// Defined here rather than in //chrome alongside other related features so that
// PowerPolicyController can check it.
const base::Feature kUserActivityPrediction{"UserActivityPrediction",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enable or disable bordered key for virtual keyboard on Chrome OS.
const base::Feature kVirtualKeyboardBorderedKey{
"VirtualKeyboardBorderedKey", base::FEATURE_ENABLED_BY_DEFAULT};
// Controls whether to allow enabling wake on WiFi features in shill.
const base::Feature kWakeOnWifiAllowed{"WakeOnWifiAllowed",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enable new wallpaper experience SWA.
const base::Feature kWallpaperWebUI{"WallpaperWebUI",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enable full screen wallpaper preview in new wallpaper experience. Requires
// |kWallpaperWebUI| to also be enabled.
const base::Feature kWallpaperFullScreenPreview{
"WallpaperFullScreenPreview", base::FEATURE_DISABLED_BY_DEFAULT};
// Enable Google Photos integration in the new wallpaper experience. Note that
// this feature flag does not have any effect if `kWallpaperWebUI` is disabled.
const base::Feature kWallpaperGooglePhotosIntegration{
"WallpaperGooglePhotosIntegration", base::FEATURE_DISABLED_BY_DEFAULT};
// Enable different wallpapers per desk.
const base::Feature kWallpaperPerDesk{"WallpaperPerDesk",
base::FEATURE_DISABLED_BY_DEFAULT};
// Generates WebAPKs representing installed PWAs and installs them inside ARC.
const base::Feature kWebApkGenerator{"WebApkGenerator",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables special handling of Chrome tab drags from a WebUI tab strip.
// These will be treated similarly to a window drag, showing split view
// indicators in tablet mode, etc. The functionality is behind a flag right now
// since it is under development.
const base::Feature kWebUITabStripTabDragIntegration{
"WebUITabStripTabDragIntegration", base::FEATURE_ENABLED_BY_DEFAULT};
// Controls whether to enable MAC Address Randomization on WiFi connection.
const base::Feature kWifiConnectMacAddressRandomization{
"WifiConnectMacAddressRandomization", base::FEATURE_DISABLED_BY_DEFAULT};
// Controls whether to enable the syncing of deletes of Wi-Fi configurations.
// This only controls sending delete events to the Chrome Sync server.
const base::Feature kWifiSyncAllowDeletes{"WifiSyncAllowDeletes",
base::FEATURE_ENABLED_BY_DEFAULT};
// Controls whether to enable syncing of Wi-Fi configurations between
// ChromeOS and a connected Android phone.
const base::Feature kWifiSyncAndroid{"WifiSyncAndroid",
base::FEATURE_ENABLED_BY_DEFAULT};
// Controls whether to apply incoming Wi-Fi configuration delete events from
// the Chrome Sync server.
const base::Feature kWifiSyncApplyDeletes{"WifiSyncApplyDeletes",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables a window control menu to snap, float and move window to another desk.
// https://crbug.com/1240411
const base::Feature kWindowControlMenu{"WindowControlMenu",
base::FEATURE_DISABLED_BY_DEFAULT};
// Change window creation to be based on cursor position when there are multiple
// displays.
const base::Feature kWindowsFollowCursor{"WindowsFollowCursor",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables or disables Fresnel Device Active reporting on Chrome OS.
const base::Feature kDeviceActiveClient{"DeviceActiveClient",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables or disables whether to store UMA logs per-user and whether metrics
// consent is per-user.
const base::Feature kPerUserMetrics{"PerUserMetricsConsent",
base::FEATURE_DISABLED_BY_DEFAULT};
////////////////////////////////////////////////////////////////////////////////
bool AreContextualNudgesEnabled() {
if (!IsHideShelfControlsInTabletModeEnabled())
return false;
return base::FeatureList::IsEnabled(kContextualNudges);
}
bool AreDesksTemplatesEnabled() {
return base::FeatureList::IsEnabled(kDesksTemplates);
}
bool AreDesksTrackpadSwipeImprovementsEnabled() {
return base::FeatureList::IsEnabled(kEnableDesksTrackpadSwipeImprovements);
}
bool DoWindowsFollowCursor() {
return base::FeatureList::IsEnabled(kWindowsFollowCursor);
}
bool IsAdjustSplitViewForVKEnabled() {
return base::FeatureList::IsEnabled(kAdjustSplitViewForVK);
}
bool IsAllowAmbientEQEnabled() {
return base::FeatureList::IsEnabled(kAllowAmbientEQ);
}
bool IsAmbientModeDevUseProdEnabled() {
return base::FeatureList::IsEnabled(kAmbientModeDevUseProdFeature);
}
bool IsAmbientModeEnabled() {
return base::FeatureList::IsEnabled(kAmbientModeFeature);
}
bool IsAmbientModePhotoPreviewEnabled() {
return base::FeatureList::IsEnabled(kAmbientModePhotoPreviewFeature);
}
bool IsAmbientModeNewUrlEnabled() {
return base::FeatureList::IsEnabled(kAmbientModeNewUrl);
}
bool IsAppNotificationsPageEnabled() {
return base::FeatureList::IsEnabled(kOsSettingsAppNotificationsPage);
}
bool IsArcInputOverlayEnabled() {
return base::FeatureList::IsEnabled(kArcInputOverlay);
}
bool IsArcNetworkDiagnosticsButtonEnabled() {
return IsNetworkingInDiagnosticsAppEnabled() &&
base::FeatureList::IsEnabled(kButtonARCNetworkDiagnostics);
}
bool IsAssistiveMultiWordEnabled() {
return base::FeatureList::IsEnabled(kAssistMultiWord);
}
bool IsAutoNightLightEnabled() {
return base::FeatureList::IsEnabled(kAutoNightLight);
}
bool IsBackgroundBlurEnabled() {
bool enabled_by_feature_flag =
base::FeatureList::IsEnabled(kEnableBackgroundBlur);
#if defined(ARCH_CPU_ARM_FAMILY)
// Enable background blur on Mali when GPU rasterization is enabled.
// See crbug.com/996858 for the condition.
return enabled_by_feature_flag &&
base::CommandLine::ForCurrentProcess()->HasSwitch(
switches::kAshEnableTabletMode);
#else
return enabled_by_feature_flag;
#endif
}
bool IsBentoBarEnabled() {
return base::FeatureList::IsEnabled(kBentoBar);
}
bool IsBluetoothRevampEnabled() {
return base::FeatureList::IsEnabled(kBluetoothRevamp);
}
bool IsCalendarViewEnabled() {
return base::FeatureList::IsEnabled(kCalendarView);
}
bool IsClipboardHistoryContextMenuNudgeEnabled() {
return base::FeatureList::IsEnabled(kClipboardHistoryContextMenuNudge);
}
bool IsClipboardHistoryEnabled() {
return base::FeatureList::IsEnabled(kClipboardHistory);
}
bool IsClipboardHistoryNudgeSessionResetEnabled() {
return base::FeatureList::IsEnabled(kClipboardHistoryNudgeSessionReset);
}
bool IsLauncherItemColorSyncEnabled() {
return IsLauncherAppSortEnabled() &&
base::FeatureList::IsEnabled(kLauncherItemColorSync);
}
bool IsClipboardHistoryScreenshotNudgeEnabled() {
return base::FeatureList::IsEnabled(kClipboardHistoryScreenshotNudge);
}
bool IsCompositingBasedThrottlingEnabled() {
return base::FeatureList::IsEnabled(kCompositingBasedThrottling);
}
bool IsCryptohomeRecoveryFlowEnabled() {
return base::FeatureList::IsEnabled(kCryptohomeRecoveryFlow);
}
bool IsDarkLightModeEnabled() {
return chromeos::features::IsDarkLightModeEnabled();
}
bool IsDemoModeSWAEnabled() {
return base::FeatureList::IsEnabled(kDemoModeSWA);
}
bool IsDeskTemplateSyncEnabled() {
return base::FeatureList::IsEnabled(kDeskTemplateSync);
}
bool IsDiagnosticsAppEnabled() {
return base::FeatureList::IsEnabled(kDiagnosticsApp);
}
bool IsDisplayAlignmentAssistanceEnabled() {
return base::FeatureList::IsEnabled(kDisplayAlignAssist);
}
bool IsDragUnpinnedAppToPinEnabled() {
return base::FeatureList::IsEnabled(kDragUnpinnedAppToPin);
}
bool IsDragWindowToNewDeskEnabled() {
return base::FeatureList::IsEnabled(kDragWindowToNewDesk);
}
bool IsEchePhoneHubPermissionsOnboarding() {
return base::FeatureList::IsEnabled(kEchePhoneHubPermissionsOnboarding);
}
bool IsEcheSWAEnabled() {
return base::FeatureList::IsEnabled(kEcheSWA);
}
bool IsEcheSWAResizingEnabled() {
return base::FeatureList::IsEnabled(kEcheSWAResizing);
}
bool IsEcheSWADebugModeEnabled() {
return base::FeatureList::IsEnabled(kEcheSWADebugMode);
}
bool IsESimPolicyEnabled() {
return base::FeatureList::IsEnabled(kESimPolicy);
}
bool IsFamilyLinkOnSchoolDeviceEnabled() {
return base::FeatureList::IsEnabled(kFamilyLinkOnSchoolDevice);
}
bool IsFastPairEnabled() {
return base::FeatureList::IsEnabled(kFastPair);
}
bool IsFileManagerSwaEnabled() {
return base::FeatureList::IsEnabled(kFilesSWA);
}
bool IsFirmwareUpdaterAppEnabled() {
return base::FeatureList::IsEnabled(kFirmwareUpdaterApp);
}
bool IsFullscreenAfterUnlockAllowed() {
return base::FeatureList::IsEnabled(kFullscreenAfterUnlockAllowed);
}
bool IsFullscreenAlertBubbleEnabled() {
return base::FeatureList::IsEnabled(kFullscreenAlertBubble);
}
bool IsGaiaCloseViewMessageEnabled() {
return base::FeatureList::IsEnabled(kGaiaCloseViewMessage);
}
bool IsGaiaReauthEndpointEnabled() {
return base::FeatureList::IsEnabled(kGaiaReauthEndpoint);
}
bool IsHideArcMediaNotificationsEnabled() {
return base::FeatureList::IsEnabled(kHideArcMediaNotifications);
}
bool IsHideShelfControlsInTabletModeEnabled() {
return base::FeatureList::IsEnabled(kHideShelfControlsInTabletMode);
}
bool IsHoldingSpaceInProgressAnimationV2Enabled() {
return base::FeatureList::IsEnabled(kHoldingSpaceInProgressAnimationV2);
}
bool IsHoldingSpaceInProgressDownloadsIntegrationEnabled() {
return base::FeatureList::IsEnabled(
kHoldingSpaceInProgressDownloadsIntegration);
}
bool IsHoldingSpaceInProgressDownloadsNotificationSuppressionEnabled() {
return base::FeatureList::IsEnabled(
kHoldingSpaceInProgressDownloadsNotificationSuppression);
}
bool IsHoldingSpaceIncognitoProfileIntegrationEnabled() {
return base::FeatureList::IsEnabled(kHoldingSpaceIncognitoProfileIntegration);
}
bool IsHostnameSettingEnabled() {
return base::FeatureList::IsEnabled(kEnableHostnameSetting);
}
bool IsSnoopingProtectionEnabled() {
return base::FeatureList::IsEnabled(kSnoopingProtection);
}
bool IsIdleInhibitEnabled() {
return base::FeatureList::IsEnabled(kEnableIdleInhibit);
}
bool IsImprovedDesksKeyboardShortcutsEnabled() {
return base::FeatureList::IsEnabled(kImprovedDesksKeyboardShortcuts);
}
bool IsInputInDiagnosticsAppEnabled() {
return base::FeatureList::IsEnabled(kEnableInputInDiagnosticsApp);
}
bool IsInputNoiseCancellationUiEnabled() {
return base::FeatureList::IsEnabled(kEnableInputNoiseCancellationUi);
}
bool IsInstantTetheringBackgroundAdvertisingSupported() {
return base::FeatureList::IsEnabled(
kInstantTetheringBackgroundAdvertisementSupport);
}
bool IsKeyboardBacklightToggleEnabled() {
return base::FeatureList::IsEnabled(kEnableKeyboardBacklightToggle);
}
bool IsKeyboardBasedDisplayArrangementInSettingsEnabled() {
return base::FeatureList::IsEnabled(
kKeyboardBasedDisplayArrangementInSettings);
}
bool IsLauncherAppSortEnabled() {
return IsProductivityLauncherEnabled() &&
base::FeatureList::IsEnabled(kLauncherAppSort);
}
bool IsLauncherNudgeShortIntervalEnabled() {
return IsProductivityLauncherEnabled() &&
base::FeatureList::IsEnabled(kLauncherNudgeShortInterval);
}
bool IsLicensePackagedOobeFlowEnabled() {
return base::FeatureList::IsEnabled(kLicensePackagedOobeFlow);
}
bool IsLockScreenHideSensitiveNotificationsSupported() {
return base::FeatureList::IsEnabled(
kLockScreenHideSensitiveNotificationsSupport);
}
bool IsLockScreenInlineReplyEnabled() {
return base::FeatureList::IsEnabled(kLockScreenInlineReply);
}
bool IsLockScreenNotificationsEnabled() {
return base::FeatureList::IsEnabled(kLockScreenNotifications);
}
bool IsManagedDeviceUIRedesignEnabled() {
return base::FeatureList::IsEnabled(kManagedDeviceUIRedesign);
}
bool IsManagedTermsOfServiceEnabled() {
return base::FeatureList::IsEnabled(kManagedTermsOfService);
}
bool IsMicMuteNotificationsEnabled() {
return base::FeatureList::IsEnabled(kMicMuteNotifications);
}
bool IsMinimumChromeVersionEnabled() {
return base::FeatureList::IsEnabled(kMinimumChromeVersion);
}
bool IsMinorModeRestrictionEnabled() {
return base::FeatureList::IsEnabled(kMinorModeRestriction);
}
bool IsNearbyKeepAliveFixEnabled() {
return base::FeatureList::IsEnabled(kNearbyKeepAliveFix);
}
bool IsNetworkingInDiagnosticsAppEnabled() {
return base::FeatureList::IsEnabled(kEnableNetworkingInDiagnosticsApp) &&
base::FeatureList::IsEnabled(kDiagnosticsAppNavigation);
}
bool IsOAuthIppEnabled() {
return base::FeatureList::IsEnabled(kEnableOAuthIpp);
}
bool IsNewLockScreenReauthLayoutEnabled() {
return base::FeatureList::IsEnabled(kNewLockScreenReauthLayout);
}
bool IsNotificationExpansionAnimationEnabled() {
return base::FeatureList::IsEnabled(kNotificationExpansionAnimation);
}
bool IsNotificationExperimentalShortTimeoutsEnabled() {
return base::FeatureList::IsEnabled(kNotificationExperimentalShortTimeouts);
}
bool IsNotificationScrollBarEnabled() {
return base::FeatureList::IsEnabled(kNotificationScrollBar);
}
bool IsNotificationsInContextMenuEnabled() {
return base::FeatureList::IsEnabled(kNotificationsInContextMenu);
}
// True if `kNotificationsRefresh` or `kDarkLightMode` is enabled. Showing the
// new notifications UI if the D/L mode feature is enabled, since the new
// notifications UI supports D/L mode. These two features will be launched at
// the same time, or the new notifications UI will be launched earlier than D/L
// mode, so it is safe to do this.
bool IsNotificationsRefreshEnabled() {
return base::FeatureList::IsEnabled(kNotificationsRefresh) ||
IsDarkLightModeEnabled();
}
bool IsOobeChromeVoxHintEnabled() {
return base::FeatureList::IsEnabled(kEnableOobeChromeVoxHint);
}
bool IsOobePolymer3Enabled() {
return base::FeatureList::IsEnabled(kEnableOobePolymer3);
}
bool IsOobeNetworkScreenSkipEnabled() {
return base::FeatureList::IsEnabled(kEnableOobeNetworkScreenSkip);
}
bool IsOobeConsolidatedConsentEnabled() {
return base::FeatureList::IsEnabled(kOobeConsolidatedConsent);
}
bool IsOobeQuickStartEnabled() {
return base::FeatureList::IsEnabled(kOobeQuickStart);
}
bool IsPcieBillboardNotificationEnabled() {
return base::FeatureList::IsEnabled(kPcieBillboardNotification);
}
bool IsPciguardUiEnabled() {
return base::FeatureList::IsEnabled(kEnablePciguardUi);
}
bool IsPerDeskShelfEnabled() {
return base::FeatureList::IsEnabled(kPerDeskShelf);
}
bool IsPhoneHubCameraRollEnabled() {
return base::FeatureList::IsEnabled(kPhoneHubCameraRoll);
}
bool IsPerformantSplitViewResizingEnabled() {
return base::FeatureList::IsEnabled(kPerformantSplitViewResizing);
}
bool IsPersonalizationHubEnabled() {
return base::FeatureList::IsEnabled(kPersonalizationHub);
}
bool IsPhoneHubEnabled() {
return base::FeatureList::IsEnabled(kPhoneHub);
}
bool IsPhoneHubCallNotificationEnabled() {
return base::FeatureList::IsEnabled(kPhoneHubCallNotification);
}
bool IsPhoneHubRecentAppsEnabled() {
return base::FeatureList::IsEnabled(kPhoneHubRecentApps);
}
bool IsPinAutosubmitBackfillFeatureEnabled() {
return base::FeatureList::IsEnabled(kQuickUnlockPinAutosubmitBackfill);
}
bool IsPinAutosubmitFeatureEnabled() {
return base::FeatureList::IsEnabled(kQuickUnlockPinAutosubmit);
}
bool IsPinSetupForManagedUsersEnabled() {
return base::FeatureList::IsEnabled(kPinSetupForManagedUsers);
}
bool IsPipRoundedCornersEnabled() {
return base::FeatureList::IsEnabled(kPipRoundedCorners);
}
bool IsProductivityLauncherEnabled() {
return base::FeatureList::IsEnabled(kProductivityLauncher);
}
bool IsProductivityLauncherAnimationEnabled() {
return IsProductivityLauncherEnabled() &&
base::FeatureList::IsEnabled(kProductivityLauncherAnimation);
}
bool IsProjectorEnabled() {
return IsProjectorAllUserEnabled() || IsProjectorManagedUserEnabled();
}
bool IsProjectorAllUserEnabled() {
return base::FeatureList::IsEnabled(kProjector);
}
bool IsProjectorManagedUserEnabled() {
return base::FeatureList::IsEnabled(kProjectorManagedUser);
}
bool IsProjectorFeaturePodEnabled() {
return IsProjectorEnabled() &&
base::FeatureList::IsEnabled(kProjectorFeaturePod);
}
bool IsProjectorAnnotatorEnabled() {
return IsProjectorEnabled() &&
base::FeatureList::IsEnabled(kProjectorAnnotator);
}
bool IsQuickDimEnabled() {
return base::FeatureList::IsEnabled(kQuickDim);
}
bool IsQuickSettingsNetworkRevampEnabled() {
return base::FeatureList::IsEnabled(kQuickSettingsNetworkRevamp);
}
bool IsRedirectToDefaultIdPEnabled() {
return base::FeatureList::IsEnabled(kRedirectToDefaultIdP);
}
bool IsReduceDisplayNotificationsEnabled() {
return base::FeatureList::IsEnabled(kReduceDisplayNotifications);
}
bool IsReverseScrollGesturesEnabled() {
return base::FeatureList::IsEnabled(kReverseScrollGestures);
}
bool IsSamlNotificationOnPasswordChangeSuccessEnabled() {
return base::FeatureList::IsEnabled(
kEnableSamlNotificationOnPasswordChangeSuccess);
}
bool IsSamlReauthenticationOnLockscreenEnabled() {
return base::FeatureList::IsEnabled(kEnableSamlReauthenticationOnLockscreen);
}
bool IsScalableStatusAreaEnabled() {
return base::FeatureList::IsEnabled(kScalableStatusArea);
}
bool IsSeparateNetworkIconsEnabled() {
return base::FeatureList::IsEnabled(kSeparateNetworkIcons);
}
bool IsSettingsAppNotificationSettingsEnabled() {
return base::FeatureList::IsEnabled(kSettingsAppNotificationSettings);
}
bool IsShelfLauncherNudgeEnabled() {
return base::FeatureList::IsEnabled(kShelfLauncherNudge);
}
bool IsShimlessRMAFlowEnabled() {
return base::FeatureList::IsEnabled(kShimlessRMAFlow);
}
bool IsSyncSettingsCategorizationEnabled() {
return base::FeatureList::IsEnabled(kSyncSettingsCategorization);
}
bool IsStylusBatteryStatusEnabled() {
return base::FeatureList::IsEnabled(kStylusBatteryStatus);
}
bool IsSystemChinesePhysicalTypingEnabled() {
return base::FeatureList::IsEnabled(kSystemChinesePhysicalTyping);
}
bool IsSystemJapanesePhysicalTypingEnabled() {
return base::FeatureList::IsEnabled(kSystemJapanesePhysicalTyping);
}
bool IsSystemKoreanPhysicalTypingEnabled() {
return base::FeatureList::IsEnabled(kSystemKoreanPhysicalTyping);
}
bool IsTabClusterUIEnabled() {
return base::FeatureList::IsEnabled(kTabClusterUI);
}
bool IsTrilinearFilteringEnabled() {
static bool use_trilinear_filtering =
base::FeatureList::IsEnabled(kTrilinearFiltering);
return use_trilinear_filtering;
}
bool IsUseStorkSmdsServerAddressEnabled() {
return base::FeatureList::IsEnabled(kUseStorkSmdsServerAddress);
}
bool IsWallpaperWebUIEnabled() {
return base::FeatureList::IsEnabled(kWallpaperWebUI);
}
bool IsWallpaperFullScreenPreviewEnabled() {
return IsWallpaperWebUIEnabled() &&
base::FeatureList::IsEnabled(kWallpaperFullScreenPreview);
}
bool IsWallpaperGooglePhotosIntegrationEnabled() {
return IsWallpaperWebUIEnabled() &&
base::FeatureList::IsEnabled(kWallpaperGooglePhotosIntegration);
}
bool IsWallpaperPerDeskEnabled() {
return base::FeatureList::IsEnabled(kWallpaperPerDesk);
}
bool IsWebUITabStripTabDragIntegrationEnabled() {
return base::FeatureList::IsEnabled(kWebUITabStripTabDragIntegration);
}
bool IsWifiSyncAndroidEnabled() {
return base::FeatureList::IsEnabled(kWifiSyncAndroid);
}
bool IsWindowControlMenuEnabled() {
return base::FeatureList::IsEnabled(kWindowControlMenu);
}
bool ShouldShowPlayStoreInDemoMode() {
return base::FeatureList::IsEnabled(kShowPlayInDemoMode);
}
bool ShouldUseAttachApn() {
// See comment on |kCellularForbidAttachApn| for details.
return !base::FeatureList::IsEnabled(kCellularForbidAttachApn) &&
base::FeatureList::IsEnabled(kCellularUseAttachApn);
}
bool ShouldUseV1DeviceSync() {
return !ShouldUseV2DeviceSync() ||
!base::FeatureList::IsEnabled(kDisableCryptAuthV1DeviceSync);
}
bool ShouldUseV2DeviceSync() {
return base::FeatureList::IsEnabled(kCryptAuthV2Enrollment) &&
base::FeatureList::IsEnabled(kCryptAuthV2DeviceSync);
}
namespace {
// The boolean flag indicating if "WebUITabStrip" feature is enabled in Chrome.
bool g_webui_tab_strip_enabled = false;
} // namespace
void SetWebUITabStripEnabled(bool enabled) {
g_webui_tab_strip_enabled = enabled;
}
bool IsWebUITabStripEnabled() {
return g_webui_tab_strip_enabled;
}
} // namespace features
} // namespace ash