blob: af60935ed6855765ca5794e82607816d6b3bf3c1 [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 "chromeos/constants/chromeos_features.h"
#include "base/feature_list.h"
#include "base/metrics/field_trial_params.h"
namespace chromeos {
namespace features {
namespace {
// Controls whether Instant Tethering supports hosts which use the background
// advertisement model.
const base::Feature kInstantTetheringBackgroundAdvertisementSupport{
"InstantTetheringBackgroundAdvertisementSupport",
base::FEATURE_ENABLED_BY_DEFAULT};
} // namespace
// Enables redesign of account management flows.
// https://crbug.com/1132472
const base::Feature kAccountManagementFlowsV2{
"AccountManagementFlowsV2", base::FEATURE_DISABLED_BY_DEFAULT};
// Shows settings for adjusting scroll acceleration/sensitivity for
// mouse/touchpad.
const base::Feature kAllowScrollSettings{"AllowScrollSettings",
base::FEATURE_DISABLED_BY_DEFAULT};
// Controls whether to enable Ambient mode feature.
const base::Feature kAmbientModeFeature{"ChromeOSAmbientMode",
base::FEATURE_ENABLED_BY_DEFAULT};
constexpr base::FeatureParam<bool> kAmbientModeCapturedOnPixelAlbumEnabled{
&kAmbientModeFeature, "CapturedOnPixelAlbumEnabled", false};
constexpr base::FeatureParam<bool> kAmbientModeFineArtAlbumEnabled{
&kAmbientModeFeature, "FineArtAlbumEnabled", false};
constexpr base::FeatureParam<bool> kAmbientModeFeaturedPhotoAlbumEnabled{
&kAmbientModeFeature, "FeaturedPhotoAlbumEnabled", true};
constexpr base::FeatureParam<bool> kAmbientModeEarthAndSpaceAlbumEnabled{
&kAmbientModeFeature, "EarthAndSpaceAlbumEnabled", false};
constexpr base::FeatureParam<bool> kAmbientModeStreetArtAlbumEnabled{
&kAmbientModeFeature, "StreetArtAlbumEnabled", false};
constexpr base::FeatureParam<bool> kAmbientModeDefaultFeedEnabled{
&kAmbientModeFeature, "DefaultFeedEnabled", false};
constexpr base::FeatureParam<bool> kAmbientModePersonalPhotosEnabled{
&kAmbientModeFeature, "PersonalPhotosEnabled", true};
constexpr base::FeatureParam<bool> kAmbientModeFeaturedPhotosEnabled{
&kAmbientModeFeature, "FeaturedPhotosEnabled", true};
constexpr base::FeatureParam<bool> kAmbientModeGeoPhotosEnabled{
&kAmbientModeFeature, "GeoPhotosEnabled", false};
constexpr base::FeatureParam<bool> kAmbientModeCulturalInstitutePhotosEnabled{
&kAmbientModeFeature, "CulturalInstitutePhotosEnabled", false};
constexpr base::FeatureParam<bool> kAmbientModeRssPhotosEnabled{
&kAmbientModeFeature, "RssPhotosEnabled", false};
constexpr base::FeatureParam<bool> kAmbientModeCapturedOnPixelPhotosEnabled{
&kAmbientModeFeature, "CapturedOnPixelPhotosEnabled", false};
// Controls whether to enable Ambient mode album selection with photo previews.
const base::Feature kAmbientModePhotoPreviewFeature{
"ChromeOSAmbientModePhotoPreview", base::FEATURE_ENABLED_BY_DEFAULT};
// Controls whether to allow Dev channel to use Prod server feature.
const base::Feature kAmbientModeDevUseProdFeature{
"ChromeOSAmbientModeDevChannelUseProdServer",
base::FEATURE_DISABLED_BY_DEFAULT};
// Controls whether to enable ARC ADB sideloading support.
const base::Feature kArcAdbSideloadingFeature{
"ArcAdbSideloading", 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 support for View.onKeyPreIme() of ARC apps.
const base::Feature kArcPreImeKeyEventSupport{
"ArcPreImeKeyEventSupport", 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};
// Controls whether to enable assistive autocorrect.
const base::Feature kAssistAutoCorrect{"AssistAutoCorrect",
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 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};
// Displays the avatar toolbar button and the profile menu.
// https://crbug.com/1041472
extern const base::Feature kAvatarToolbarButton{
"AvatarToolbarButton", base::FEATURE_DISABLED_BY_DEFAULT};
// Enables better version of the UpdateScreen in OOBE. Displays low battery
// warnings during the update downloading and further stages. Provides time
// estimates of the update stages.
// https://crbug.com/1101317
const base::Feature kBetterUpdateScreen{"BetterUpdateScreen",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables or disables more aggressive filtering out of Bluetooth devices with
// "appearances" that are less likely to be pairable or useful.
const base::Feature kBluetoothAggressiveAppearanceFilter{
"BluetoothAggressiveAppearanceFilter", base::FEATURE_ENABLED_BY_DEFAULT};
// Enables or disables Bluetooth WBS microphone be selected as default
// audio input option.
const base::Feature kBluetoothWbsDogfood{"BluetoothWbsDogfood",
base::FEATURE_DISABLED_BY_DEFAULT};
// 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 more filtering out of phones from the Bluetooth UI.
const base::Feature kBluetoothPhoneFilter{"BluetoothPhoneFilter",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enable or disables running the Camera App as a System Web App.
const base::Feature kCameraSystemWebApp{"CameraSystemWebApp",
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};
// If enabled, will use the CDM in the Chrome OS daemon rather than loading the
// CDM using the library CDM interface.
const base::Feature kCdmFactoryDaemon{"CdmFactoryDaemon",
base::FEATURE_DISABLED_BY_DEFAULT};
// If enabled, send the LTE attach APN configuration to the modem.
const base::Feature kCellularUseAttachApn{"CellularUseAttachApn",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables or disables entry point for child account sign in or creation.
const base::Feature kChildSpecificSignin{"ChildSpecificSignin",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables or disables using the new Connectivity Diagnostics WebUI app.
const base::Feature kConnectivityDiagnosticsWebUi{
"ConnectivityDiagnosticsWebUi", 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_DISABLED_BY_DEFAULT};
// Enables or disables Crostini Disk Resizing.
const base::Feature kCrostiniDiskResizing{"CrostiniDiskResizing",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables or disables Crostini using Buster container images.
const base::Feature kCrostiniUseBusterImage{"CrostiniUseBusterImage",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables or disables Crostini GPU support.
const base::Feature kCrostiniGpuSupport{"CrostiniGpuSupport",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables or disables the new WebUI Crostini upgrader.
const base::Feature kCrostiniWebUIUpgrader{"CrostiniWebUIUpgrader",
base::FEATURE_ENABLED_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_DISABLED_BY_DEFAULT};
// DLC Service is available for use on the board, prerequisite for the UseDlc
// flag.
const base::Feature kCrostiniEnableDlc{"CrostiniEnableDlc",
base::FEATURE_DISABLED_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};
// 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};
// 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 or disables the Diagnostics app.
const base::Feature kDiagnosticsApp{"DiagnosticsApp",
base::FEATURE_DISABLED_BY_DEFAULT};
// Disables the CryptAuth v1 DeviceSync flow. Note: During the first phase
// of the v2 DeviceSync rollout, v1 and v2 DeviceSync run in parallel. This flag
// is needed to disable the v1 service during the second phase of the rollout.
// kCryptAuthV2DeviceSync should be enabled before this flag is flipped.
const base::Feature kDisableCryptAuthV1DeviceSync{
"DisableCryptAuthV1DeviceSync", base::FEATURE_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};
// 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};
// If enabled, emoji suggestion will be shown when user type "space".
const base::Feature kEmojiSuggestAddition{"EmojiSuggestAddition",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables setting the device hostname.
const base::Feature kEnableHostnameSetting{"EnableHostnameSetting",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables LocalSearchService to be initialized.
const base::Feature kEnableLocalSearchService{"EnableLocalSearchService",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables the OOBE ChromeVox hint dialog and announcement feature.
const base::Feature kEnableOobeChromeVoxHint{"EnableOobeChromeVoxHint",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables Device End Of Lifetime warning notifications.
const base::Feature kEolWarningNotifications{"EolWarningNotifications",
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 camera folder handling in files app.
const base::Feature kFilesCameraFolder{"FilesCameraFolder",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables the next generation file manager.
const base::Feature kFilesNG{"FilesNG", base::FEATURE_ENABLED_BY_DEFAULT};
// Enables JS modules for Files app.
const base::Feature kFilesJsModules{"FilesJsModules",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables JS modules for Audio Player.
const base::Feature kAudioPlayerJsModules{"AudioPlayerJsModules",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables JS modules for Video Player.
const base::Feature kVideoPlayerJsModules{"VideoPlayerJsModules",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables partitioning of removable disks in file manager.
const base::Feature kFilesSinglePartitionFormat{
"FilesSinglePartitionFormat", 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};
// 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 new ZIP archive handling in Files App.
// https://crbug.com/912236
const base::Feature kFilesZipMount{"FilesZipMount",
base::FEATURE_DISABLED_BY_DEFAULT};
const base::Feature kFilesZipPack{"FilesZipPack",
base::FEATURE_DISABLED_BY_DEFAULT};
const base::Feature kFilesZipUnpack{"FilesZipUnpack",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables the Gaia reauth endpoint with deleted user customization page.
const base::Feature kGaiaReauthEndpoint{"GaiaReauthEndpoint",
base::FEATURE_DISABLED_BY_DEFAULT};
// Controls gamepad vibration in Exo.
const base::Feature kGamepadVibration{"ExoGamepadVibration",
base::FEATURE_DISABLED_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 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, 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};
// Enables rendering html in Clipboard History only if an img or table tag is
// present.
const base::Feature kClipboardHistorySimpleRender{
"ClipboardHistorySimpleRender", base::FEATURE_DISABLED_BY_DEFAULT};
// Enables copying an image to the system clipboard to support pasting onto
// different surfaces
const base::Feature kEnableFilesAppCopyImage{"EnableFilesAppCopyImage",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enable restriction of symlink traversal on user-supplied filesystems.
const base::Feature kFsNosymfollow{"FsNosymfollow",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enable a D-Bus service for accessing gesture properties.
const base::Feature kGesturePropertiesDBusService{
"GesturePropertiesDBusService", base::FEATURE_DISABLED_BY_DEFAULT};
// Enable Guest OS external protocol handling.
const base::Feature kGuestOsExternalProtocol{"GuestOsExternalProtocol",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables editing with handwriting gestures within the virtual keyboard.
const base::Feature kHandwritingGestureEditing{
"HandwritingGestureEditing", base::FEATURE_DISABLED_BY_DEFAULT};
// Enable the search service integration in the Help app.
const base::Feature kHelpAppSearchServiceIntegration{
"HelpAppSearchServiceIntegration", base::FEATURE_ENABLED_BY_DEFAULT};
// Enable or disable IME decoder via Mojo connection on Chrome OS.
const base::Feature kImeMojoDecoder{"ImeMojoDecoder",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enable or disable system emoji picker.
const base::Feature kImeSystemEmojiPicker{"SystemEmojiPicker",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables view-based version of multiprofile login, as opposed to Web UI one.
const base::Feature kViewBasedMultiprofileLogin{
"ViewBasedMultiprofileLogin", base::FEATURE_ENABLED_BY_DEFAULT};
// Enable or disable using the floating virtual keyboard as the default option
// on Chrome OS.
const base::Feature kVirtualKeyboardFloatingDefault{
"VirtualKeyboardFloatingDefault", base::FEATURE_DISABLED_BY_DEFAULT};
// Enables or disables Instant Tethering on Chrome OS.
const base::Feature kInstantTethering{"InstantTethering",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables the Kerberos Section in ChromeOS settings. When disabled, Kerberos
// settings will stay under People Section. https:://crbug.com/983041
const base::Feature kKerberosSettingsSection{"KerberosSettingsSection",
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};
// Enables or disables language settings update.
const base::Feature kLanguageSettingsUpdate{"LanguageSettingsUpdate",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables or disables device management disclosure on login / lock screen.
const base::Feature kLoginDeviceManagementDisclosure{
"LoginDeviceManagementDisclosure", 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};
// Controls whether new OOBE layout is shown or not.
const base::Feature kNewOobeLayout{"NewOobeLayout",
base::FEATURE_DISABLED_BY_DEFAULT};
// ChromeOS Media App. https://crbug.com/996088.
const base::Feature kMediaApp{"MediaApp", base::FEATURE_ENABLED_BY_DEFAULT};
// Whether image annotation is enabled in the ChromeOS media app.
const base::Feature kMediaAppAnnotation{"MediaAppAnnotation",
base::FEATURE_ENABLED_BY_DEFAULT};
// Whether known extensions for RAW image formats are handled by the ChromeOS
// Media App.
const base::Feature kMediaAppHandlesRaw{"MediaAppHandlesRaw",
base::FEATURE_ENABLED_BY_DEFAULT};
// Whether Pdf files loading ink is enabled in the ChromeOS media app.
const base::Feature kMediaAppPdfInInk{"MediaAppPdfInInk",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables support for multilingual assistive typing on Chrome OS.
const base::Feature kMultilingualTyping{"MultilingualTyping",
base::FEATURE_DISABLED_BY_DEFAULT};
// Controls whether to enable on-device grammar check service.
const base::Feature kOnDeviceGrammarCheck{"OnDeviceGrammarCheck",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables a unique URL for each path in CrOS settings.
// This allows deep linking to individual settings, i.e. in settings search.
const base::Feature kOsSettingsDeepLinking{"OsSettingsDeepLinking",
base::FEATURE_ENABLED_BY_DEFAULT};
// Flips chrome://os-settings to show Polymer 3 version
const base::Feature kOsSettingsPolymer3{"OsSettingsPolymer3",
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_DISABLED_BY_DEFAULT};
// Controls whether Phone Hub will exclusively use BLE for its connection with
// the user's phone.
const base::Feature kPhoneHubUseBle{"PhoneHubUseBle",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables PIN setup in OOBE for Family Link users on all devices supporting low
// entropy credentials regardless the form factor.
const base::Feature kPinSetupForFamilyLink{"PinSetupForFamilyLink",
base::FEATURE_ENABLED_BY_DEFAULT};
// Controls whether the camera permissions should be shown in the Plugin
// VM app settings.
const base::Feature kPluginVmShowCameraPermissions{
"PluginVmShowCameraPermissions", base::FEATURE_ENABLED_BY_DEFAULT};
// Controls whether the microphone permissions should be shown in the Plugin
// VM app settings.
const base::Feature kPluginVmShowMicrophonePermissions{
"PluginVmShowMicrophonePermissions", base::FEATURE_ENABLED_BY_DEFAULT};
// Controls whether to show printer statuses.
const base::Feature kPrinterStatus{"PrinterStatus",
base::FEATURE_ENABLED_BY_DEFAULT};
// Controls whether to show printer statuses on the Print Preview destination
// dialog.
const base::Feature kPrinterStatusDialog{"PrinterStatusDialog",
base::FEATURE_ENABLED_BY_DEFAULT};
// Controls whether to enable the Print Job Management App.
const base::Feature kPrintJobManagementApp{"PrintJobManagementApp",
base::FEATURE_ENABLED_BY_DEFAULT};
// Changes Print Preview Save to Drive to use local Drive.
const base::Feature kPrintSaveToDrive{"PrintSaveToDrive",
base::FEATURE_ENABLED_BY_DEFAULT};
// Allows print servers to be selected when beyond a specified limit.
const base::Feature kPrintServerScaling{"PrintServerScaling",
base::FEATURE_DISABLED_BY_DEFAULT};
// Controls whether to enable quick answers.
const base::Feature kQuickAnswers{"QuickAnswers",
base::FEATURE_DISABLED_BY_DEFAULT};
// Controls whether dogfood version of quick answers.
const base::Feature kQuickAnswersDogfood{"QuickAnswersDogfood",
base::FEATURE_DISABLED_BY_DEFAULT};
// Controls whether to enable quick answers text annotator.
const base::Feature kQuickAnswersTextAnnotator{
"QuickAnswersTextAnnotator", base::FEATURE_DISABLED_BY_DEFAULT};
// Controls whether to enable quick answers translation.
const base::Feature kQuickAnswersTranslation{"QuickAnswersTranslation",
base::FEATURE_DISABLED_BY_DEFAULT};
// Controls whether to enable quick answers translation using Cloud API.
const base::Feature kQuickAnswersTranslationCloudAPI{
"QuickAnswersTranslationCloudAPI", base::FEATURE_DISABLED_BY_DEFAULT};
// Controls whether to trigger quick answers on editable text selection.
const base::Feature kQuickAnswersOnEditableText{
"QuickAnswersOnEditableText", 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 or disables Release Notes notifications on Chrome OS.
const base::Feature kReleaseNotesNotification{"ReleaseNotesNotification",
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 a scanning UI on Chrome OS.
const base::Feature kScanningUI{"ScanningUI", base::FEATURE_ENABLED_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};
// Enables or disables a toggle to enable Bluetooth debug logs.
const base::Feature kShowBluetoothDebugLogToggle{
"ShowBluetoothDebugLogToggle", base::FEATURE_ENABLED_BY_DEFAULT};
// Enables or disables verbose Bluetooth log collection for Googlers.
const base::Feature kEnableBluetoothVerboseLogsForGooglers{
"EnableBluetoothVerboseLogsForGooglers", base::FEATURE_ENABLED_BY_DEFAULT};
// Enables or disables showing the battery level in the System Tray and Settings
// UI for supported Bluetooth Devices.
const base::Feature kShowBluetoothDeviceBattery{
"ShowBluetoothDeviceBattery", base::FEATURE_ENABLED_BY_DEFAULT};
// Shows the Play Store icon in Demo Mode.
const base::Feature kShowPlayInDemoMode{"ShowPlayInDemoMode",
base::FEATURE_ENABLED_BY_DEFAULT};
// Shows individual steps during Demo Mode setup.
const base::Feature kShowStepsInDemoModeSetup{"ShowStepsInDemoModeSetup",
base::FEATURE_ENABLED_BY_DEFAULT};
// Uses experimental component version for smart dim.
const base::Feature kSmartDimExperimentalComponent{
"SmartDimExperimentalComponent", base::FEATURE_DISABLED_BY_DEFAULT};
// Uses the smart dim component updater to provide smart dim model and
// preprocessor configuration.
const base::Feature kSmartDimNewMlAgent{"SmartDimNewMlAgent",
base::FEATURE_ENABLED_BY_DEFAULT};
// Uses the V3 (~2019-05 era) Smart Dim model instead of the default V2
// (~2018-11) model.
const base::Feature kSmartDimModelV3{"SmartDimModelV3",
base::FEATURE_ENABLED_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
// master pref for the OS sync feature
// - Updates the OOBE sync consent screen
//
// NOTE: The feature is rolling out via a client-side Finch trial, so the actual
// state will vary. See config in
// chrome/browser/chromeos/sync/split_settings_sync_field_trial.cc
const base::Feature kSplitSettingsSync{"SplitSettingsSync",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables a settings UI toggle that controls Suggested Content status. Also
// enables a corresponding notice in the Launcher about Suggested Content.
const base::Feature kSuggestedContentToggle{"SuggestedContentToggle",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables or disables using the system input engine for physical typing in
// languages based on latin script.
const base::Feature kSystemLatinPhysicalTyping{
"SystemLatinPhysicalTyping", base::FEATURE_DISABLED_BY_DEFAULT};
// Enables Chrome OS Telemetry Extension.
const base::Feature kTelemetryExtension{"TelemetryExtension",
base::FEATURE_DISABLED_BY_DEFAULT};
// Enables unified media view in Files app to browse recently-modified media
// files from local local, Google Drive, and Android.
const base::Feature kUnifiedMediaView{"UnifiedMediaView",
base::FEATURE_ENABLED_BY_DEFAULT};
// Enables the updated cellular activation UI; see go/cros-cellular-design.
const base::Feature kUpdatedCellularActivationUi{
"UpdatedCellularActivationUi", base::FEATURE_DISABLED_BY_DEFAULT};
// Uses the same browser sync consent dialog as Windows/Mac/Linux. Allows the
// user to fully opt-out of browser sync, including marking the IdentityManager
// primary account as unconsented. Requires SplitSettingsSync.
// NOTE: Call UseBrowserSyncConsent() to test the flag, see implementation.
const base::Feature kUseBrowserSyncConsent{"UseBrowserSyncConsent",
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};
// Use the staging URL as part of the "Messages" feature under "Connected
// Devices" settings.
const base::Feature kUseMessagesStagingUrl{"UseMessagesStagingUrl",
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};
// 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};
// Enable or disable bordered key for virtual keyboard on Chrome OS.
const base::Feature kVirtualKeyboardBorderedKey{
"VirtualKeyboardBorderedKey", base::FEATURE_DISABLED_BY_DEFAULT};
// Enable or disable the camera/mic indicators/notifications for VMs.
const base::Feature kVmCameraMicIndicatorsAndNotifications{
"VmCameraMicIndicatorsAndNotifications", 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_DISABLED_BY_DEFAULT};
// Enable or disable MOZC IME to use protobuf as interactive message format.
const base::Feature kImeMozcProto{"ImeMozcProto",
base::FEATURE_ENABLED_BY_DEFAULT};
// Force enable recreating the LXD DB at LXD launch.
const base::Feature kCrostiniResetLxdDb{"CrostiniResetLxdDb",
base::FEATURE_DISABLED_BY_DEFAULT};
// Controls whether the camera privacy switch toasts and notification should be
// displayed.
const base::Feature kCameraPrivacySwitchNotifications{
"CameraPrivacySwitchNotifications", base::FEATURE_ENABLED_BY_DEFAULT};
////////////////////////////////////////////////////////////////////////////////
bool IsAccountManagementFlowsV2Enabled() {
return base::FeatureList::IsEnabled(kAccountManagementFlowsV2);
}
bool IsAmbientModeEnabled() {
return base::FeatureList::IsEnabled(kAmbientModeFeature);
}
bool IsAmbientModePhotoPreviewEnabled() {
return base::FeatureList::IsEnabled(kAmbientModePhotoPreviewFeature);
}
bool IsAmbientModeDevUseProdEnabled() {
return base::FeatureList::IsEnabled(kAmbientModeDevUseProdFeature);
}
bool IsBetterUpdateEnabled() {
return base::FeatureList::IsEnabled(kBetterUpdateScreen);
}
bool IsChildSpecificSigninEnabled() {
return base::FeatureList::IsEnabled(kChildSpecificSignin);
}
bool IsDeepLinkingEnabled() {
return base::FeatureList::IsEnabled(kOsSettingsDeepLinking);
}
bool IsDiagnosticsAppEnabled() {
return base::FeatureList::IsEnabled(kDiagnosticsApp);
}
bool IsHostnameSettingEnabled() {
return base::FeatureList::IsEnabled(kEnableHostnameSetting);
}
bool IsLocalSearchServiceEnabled() {
return base::FeatureList::IsEnabled(kEnableLocalSearchService);
}
bool IsFamilyLinkOnSchoolDeviceEnabled() {
return base::FeatureList::IsEnabled(kFamilyLinkOnSchoolDevice);
}
bool IsGaiaReauthEndpointEnabled() {
return base::FeatureList::IsEnabled(kGaiaReauthEndpoint);
}
bool IsInstantTetheringBackgroundAdvertisingSupported() {
return base::FeatureList::IsEnabled(
kInstantTetheringBackgroundAdvertisementSupport);
}
bool IsKerberosSettingsSectionEnabled() {
return base::FeatureList::IsEnabled(kKerberosSettingsSection);
}
bool IsLoginDeviceManagementDisclosureEnabled() {
return base::FeatureList::IsEnabled(kLoginDeviceManagementDisclosure);
}
bool IsMinimumChromeVersionEnabled() {
return base::FeatureList::IsEnabled(kMinimumChromeVersion);
}
bool IsNewOobeLayoutEnabled() {
return base::FeatureList::IsEnabled(kNewOobeLayout);
}
bool IsOobeChromeVoxHintEnabled() {
return base::FeatureList::IsEnabled(kEnableOobeChromeVoxHint);
}
bool IsClipboardHistoryEnabled() {
return base::FeatureList::IsEnabled(kClipboardHistory) ||
base::FeatureList::IsEnabled(kClipboardHistorySimpleRender);
}
bool IsClipboardHistoryNudgeSessionResetEnabled() {
return base::FeatureList::IsEnabled(kClipboardHistoryNudgeSessionReset);
}
bool IsClipboardHistorySimpleRenderEnabled() {
return base::FeatureList::IsEnabled(kClipboardHistory) ||
base::FeatureList::IsEnabled(kClipboardHistorySimpleRender);
}
bool IsPhoneHubEnabled() {
return base::FeatureList::IsEnabled(kPhoneHub);
}
bool IsPhoneHubUseBleEnabled() {
return base::FeatureList::IsEnabled(kPhoneHubUseBle) && IsPhoneHubEnabled();
}
bool IsPinSetupForFamilyLinkEnabled() {
return base::FeatureList::IsEnabled(kPinSetupForFamilyLink);
}
bool IsPinAutosubmitFeatureEnabled() {
return base::FeatureList::IsEnabled(kQuickUnlockPinAutosubmit);
}
bool IsPinAutosubmitBackfillFeatureEnabled() {
return base::FeatureList::IsEnabled(kQuickUnlockPinAutosubmitBackfill);
}
bool IsQuickAnswersDogfood() {
return base::FeatureList::IsEnabled(kQuickAnswersDogfood);
}
bool IsQuickAnswersEnabled() {
return base::FeatureList::IsEnabled(kQuickAnswers);
}
bool IsQuickAnswersTextAnnotatorEnabled() {
return base::FeatureList::IsEnabled(kQuickAnswersTextAnnotator);
}
bool IsQuickAnswersTranslationEnabled() {
return base::FeatureList::IsEnabled(kQuickAnswersTranslation);
}
bool IsQuickAnswersTranslationCloudAPIEnabled() {
return base::FeatureList::IsEnabled(kQuickAnswersTranslationCloudAPI);
}
bool IsQuickAnswersOnEditableTextEnabled() {
return base::FeatureList::IsEnabled(kQuickAnswersOnEditableText);
}
bool IsSplitSettingsSyncEnabled() {
return base::FeatureList::IsEnabled(kSplitSettingsSync);
}
bool IsViewBasedMultiprofileLoginEnabled() {
return base::FeatureList::IsEnabled(kViewBasedMultiprofileLogin);
}
bool IsWifiSyncAndroidEnabled() {
return base::FeatureList::IsEnabled(kWifiSyncAndroid);
}
bool ShouldShowPlayStoreInDemoMode() {
return base::FeatureList::IsEnabled(kShowPlayInDemoMode);
}
bool ShouldUseBrowserSyncConsent() {
// UseBrowserSyncConsent requires SplitSettingsSync.
return base::FeatureList::IsEnabled(kSplitSettingsSync) &&
base::FeatureList::IsEnabled(kUseBrowserSyncConsent);
}
bool ShouldUseV1DeviceSync() {
return !ShouldUseV2DeviceSync() ||
!base::FeatureList::IsEnabled(
chromeos::features::kDisableCryptAuthV1DeviceSync);
}
bool ShouldUseV2DeviceSync() {
return base::FeatureList::IsEnabled(
chromeos::features::kCryptAuthV2Enrollment) &&
base::FeatureList::IsEnabled(
chromeos::features::kCryptAuthV2DeviceSync);
}
} // namespace features
} // namespace chromeos