12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187 |
- // Copyright 2016 The Chromium Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- #include "chrome/common/chrome_features.h"
- #include "base/command_line.h"
- #include "base/feature_list.h"
- #include "base/strings/string_split.h"
- #include "build/build_config.h"
- #include "build/chromeos_buildflags.h"
- #include "chrome/common/chrome_switches.h"
- #include "ppapi/buildflags/buildflags.h"
- namespace features {
- // All features in alphabetical order.
- #if BUILDFLAG(IS_CHROMEOS_ASH)
- // If enabled device status collector will add the type of session (Affiliated
- // User, Kiosks, Managed Guest Sessions) to the device status report.
- const base::Feature kActivityReportingSessionType{
- "ActivityReportingSessionType", base::FEATURE_ENABLED_BY_DEFAULT};
- #endif // BUILDFLAG(IS_CHROMEOS_ASH)
- #if BUILDFLAG(IS_CHROMEOS_ASH)
- // Enables or disables logging for adaptive screen brightness on Chrome OS.
- const base::Feature kAdaptiveScreenBrightnessLogging{
- "AdaptiveScreenBrightnessLogging", base::FEATURE_ENABLED_BY_DEFAULT};
- #endif
- #if BUILDFLAG(IS_CHROMEOS_ASH)
- // Shows settings to adjust and disable touchpad haptic feedback.
- const base::Feature kAllowDisableTouchpadHapticFeedback{
- "AllowDisableTouchpadHapticFeedback", base::FEATURE_ENABLED_BY_DEFAULT};
- #endif // BUILDFLAG(IS_CHROMEOS_ASH)
- #if BUILDFLAG(IS_CHROMEOS_ASH)
- // Shows settings to adjust the touchpad haptic click settings.
- const base::Feature kAllowTouchpadHapticClickSettings{
- "AllowTouchpadHapticClickSettings", base::FEATURE_ENABLED_BY_DEFAULT};
- #endif // defined(IS_CHROMEOS_ASH)
- #if BUILDFLAG(IS_ANDROID)
- const base::Feature kAnonymousUpdateChecks{"AnonymousUpdateChecks",
- base::FEATURE_ENABLED_BY_DEFAULT};
- #endif
- #if BUILDFLAG(IS_CHROMEOS_ASH)
- const base::Feature kAppDiscoveryForOobe{"AppDiscoveryForOobe",
- base::FEATURE_ENABLED_BY_DEFAULT};
- #endif
- #if BUILDFLAG(IS_CHROMEOS_ASH)
- const base::Feature kAppManagementAppDetails{"AppManagementAppDetails",
- base::FEATURE_DISABLED_BY_DEFAULT};
- #endif // BUILDFLAG(IS_CHROMEOS_ASH)
- #if BUILDFLAG(IS_CHROMEOS_ASH)
- const base::Feature kAppDeduplicationService{"AppDeduplicationService",
- base::FEATURE_DISABLED_BY_DEFAULT};
- #endif // BUILDFLAG(IS_CHROMEOS_ASH)
- #if BUILDFLAG(IS_CHROMEOS_ASH)
- const base::Feature kAppProvisioningStatic{"AppProvisioningStatic",
- base::FEATURE_DISABLED_BY_DEFAULT};
- #endif // BUILDFLAG(IS_CHROMEOS_ASH)
- #if BUILDFLAG(IS_MAC)
- // Can be used to disable RemoteCocoa (hosting NSWindows for apps in the app
- // process). For debugging purposes only.
- const base::Feature kAppShimRemoteCocoa{"AppShimRemoteCocoa",
- base::FEATURE_ENABLED_BY_DEFAULT};
- // This is used to control the new app close behavior on macOS wherein closing
- // all windows for an app leaves the app running.
- // https://crbug.com/1080729
- const base::Feature kAppShimNewCloseBehavior{"AppShimNewCloseBehavior",
- base::FEATURE_DISABLED_BY_DEFAULT};
- #endif // BUILDFLAG(IS_MAC)
- // Enables the built-in DNS resolver.
- const base::Feature kAsyncDns {
- "AsyncDns",
- #if BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_ANDROID)
- base::FEATURE_ENABLED_BY_DEFAULT
- #else
- base::FEATURE_DISABLED_BY_DEFAULT
- #endif
- };
- #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
- BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_FUCHSIA)
- // Enables or disables the Autofill survey triggered by opening a prompt to
- // save address info.
- const base::Feature kAutofillAddressSurvey{"AutofillAddressSurvey",
- base::FEATURE_DISABLED_BY_DEFAULT};
- // Enables or disables the Autofill survey triggered by opening a prompt to
- // save credit card info.
- const base::Feature kAutofillCardSurvey{"AutofillCardSurvey",
- base::FEATURE_DISABLED_BY_DEFAULT};
- // Enables or disables the Autofill survey triggered by opening a prompt to
- // save password info.
- const base::Feature kAutofillPasswordSurvey{"AutofillPasswordSurvey",
- base::FEATURE_DISABLED_BY_DEFAULT};
- #endif
- #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
- // Enables the Restart background mode optimization. When all Chrome UI is
- // closed and it goes in the background, allows to restart the browser to
- // discard memory.
- const base::Feature kBackgroundModeAllowRestart{
- "BackgroundModeAllowRestart", base::FEATURE_DISABLED_BY_DEFAULT};
- #endif // BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
- #if !BUILDFLAG(IS_ANDROID)
- const base::Feature kBlockMigratedDefaultChromeAppSync{
- "BlockMigratedDefaultChromeAppSync", base::FEATURE_ENABLED_BY_DEFAULT};
- #endif
- #if BUILDFLAG(IS_CHROMEOS_ASH)
- // Enable Borealis on Chrome OS.
- const base::Feature kBorealis{"Borealis", base::FEATURE_DISABLED_BY_DEFAULT};
- #endif
- // Enables change picture video mode.
- const base::Feature kChangePictureVideoMode{"ChangePictureVideoMode",
- base::FEATURE_ENABLED_BY_DEFAULT};
- const base::Feature kClientStorageAccessContextAuditing{
- "ClientStorageAccessContextAuditing", base::FEATURE_DISABLED_BY_DEFAULT};
- const base::Feature kConsolidatedSiteStorageControls{
- "ConsolidatedSiteStorageControls", base::FEATURE_DISABLED_BY_DEFAULT};
- #if BUILDFLAG(IS_CHROMEOS_ASH)
- // Enables or disables "usm" service in the list of user services returned by
- // userInfo Gaia message.
- const base::Feature kCrOSEnableUSMUserService{"CrOSEnableUSMUserService",
- base::FEATURE_ENABLED_BY_DEFAULT};
- // Enables or disables flash component updates on Chrome OS.
- const base::Feature kCrosCompUpdates{"CrosCompUpdates",
- base::FEATURE_ENABLED_BY_DEFAULT};
- // Enable project Crostini, Linux VMs on Chrome OS.
- const base::Feature kCrostini{"Crostini", base::FEATURE_DISABLED_BY_DEFAULT};
- // Enable additional Crostini session status reporting for
- // managed devices only, i.e. reports of installed apps and kernel version.
- const base::Feature kCrostiniAdditionalEnterpriseReporting{
- "CrostiniAdditionalEnterpriseReporting", base::FEATURE_ENABLED_BY_DEFAULT};
- // Enable advanced access controls for Crostini-related features
- // (e.g. restricting VM CLI tools access, restricting Crostini root access).
- const base::Feature kCrostiniAdvancedAccessControls{
- "CrostiniAdvancedAccessControls", base::FEATURE_DISABLED_BY_DEFAULT};
- // Enables infrastructure for applying Ansible playbook to default Crostini
- // container.
- const base::Feature kCrostiniAnsibleInfrastructure{
- "CrostiniAnsibleInfrastructure", base::FEATURE_ENABLED_BY_DEFAULT};
- // Enables infrastructure for generating Ansible playbooks for the default
- // Crostini container from software configurations in JSON schema.
- const base::Feature kCrostiniAnsibleSoftwareManagement{
- "CrostiniAnsibleSoftwareManagement", base::FEATURE_DISABLED_BY_DEFAULT};
- // Enables support for sideloading android apps into Arc via crostini.
- const base::Feature kCrostiniArcSideload{"CrostiniArcSideload",
- base::FEATURE_ENABLED_BY_DEFAULT};
- // Enables custom UI for forcibly closing unresponsive windows.
- const base::Feature kCrostiniForceClose{"CrostiniForceClose",
- base::FEATURE_ENABLED_BY_DEFAULT};
- // Enables distributed model for TPM1.2, i.e., using tpm_managerd and
- // attestationd.
- const base::Feature kCryptohomeDistributedModel{
- "CryptohomeDistributedModel", base::FEATURE_DISABLED_BY_DEFAULT};
- // Enables cryptohome UserDataAuth interface, a new dbus interface that is
- // fully protobuf and uses libbrillo for dbus instead of the deprecated
- // glib-dbus.
- const base::Feature kCryptohomeUserDataAuth{"CryptohomeUserDataAuth",
- base::FEATURE_DISABLED_BY_DEFAULT};
- // Kill switch for cryptohome UserDataAuth interface. UserDataAuth is a new
- // dbus interface that is fully protobuf and uses libbrillo for dbus instead
- // instead of the deprecated glib-dbus.
- const base::Feature kCryptohomeUserDataAuthKillswitch{
- "CryptohomeUserDataAuthKillswitch", base::FEATURE_DISABLED_BY_DEFAULT};
- #endif
- #if BUILDFLAG(IS_CHROMEOS)
- // Enables parsing and enforcing Data Leak Prevention policy rules that
- // restricts usage of some system features, e.g.clipboard, screenshot, etc.
- // for confidential content.
- const base::Feature kDataLeakPreventionPolicy{"DataLeakPreventionPolicy",
- base::FEATURE_ENABLED_BY_DEFAULT};
- // Enables starting of Data Leak Prevention Files Daemon by sending the
- // DLP policy there. The daemon might restrict access to some protected files.
- const base::Feature kDataLeakPreventionFilesRestriction{
- "DataLeakPreventionFilesRestriction", base::FEATURE_DISABLED_BY_DEFAULT};
- #endif
- #if BUILDFLAG(IS_CHROMEOS_ASH)
- // When enabled, newly installed ARC apps will not capture links clicked in the
- // browser by default. Users can still enable link capturing for apps through
- // the intent picker or settings.
- const base::Feature kDefaultLinkCapturingInBrowser{
- "DefaultLinkCapturingInBrowser", base::FEATURE_ENABLED_BY_DEFAULT};
- #endif
- #if BUILDFLAG(IS_CHROMEOS_ASH)
- // Enables passing additional user authentication in requests to DMServer
- // (policy fetch, status report upload).
- const base::Feature kDMServerOAuthForChildUser{
- "DMServerOAuthForChildUser", base::FEATURE_ENABLED_BY_DEFAULT};
- #endif
- #if !BUILDFLAG(IS_ANDROID)
- // Whether to allow installed-by-default web apps to be installed or not.
- const base::Feature kPreinstalledWebAppInstallation{
- "DefaultWebAppInstallation", base::FEATURE_ENABLED_BY_DEFAULT};
- // Whether to run the PreinstalledWebAppDuplicationFixer code during start up.
- const base::Feature kPreinstalledWebAppDuplicationFixer{
- "PreinstalledWebAppDuplicationFixer", base::FEATURE_ENABLED_BY_DEFAULT};
- #endif
- // API that allows PWAs manually minimizing, maximizing and restoring windows.
- const base::Feature kDesktopPWAsAdditionalWindowingControls{
- "DesktopPWAsAdditionalWindowingControls",
- base::FEATURE_DISABLED_BY_DEFAULT};
- // When installing default installed PWAs, we wait for service workers
- // to cache resources.
- const base::Feature kDesktopPWAsCacheDuringDefaultInstall{
- "DesktopPWAsCacheDuringDefaultInstall", base::FEATURE_ENABLED_BY_DEFAULT};
- // Generates customised default offline page that is shown when web app is
- // offline if no custom page is provided by developer.
- #if BUILDFLAG(IS_ANDROID)
- const base::Feature kAndroidPWAsDefaultOfflinePage{
- "AndroidPWAsDefaultOfflinePage", base::FEATURE_DISABLED_BY_DEFAULT};
- #else
- const base::Feature kDesktopPWAsDefaultOfflinePage{
- "DesktopPWAsDefaultOfflinePage", base::FEATURE_DISABLED_BY_DEFAULT};
- #endif // BUILDFLAG(IS_ANDROID)
- // Moves the Extensions "puzzle piece" icon from the title bar into the app menu
- // for web app windows.
- const base::Feature kDesktopPWAsElidedExtensionsMenu {
- "DesktopPWAsElidedExtensionsMenu",
- #if BUILDFLAG(IS_CHROMEOS)
- base::FEATURE_ENABLED_BY_DEFAULT
- #else
- base::FEATURE_DISABLED_BY_DEFAULT
- #endif
- };
- // Whether to parse and enforce the WebAppSettings policy.
- const base::Feature kDesktopPWAsEnforceWebAppSettingsPolicy{
- "DesktopPWAsEnforceWebAppSettingsPolicy", base::FEATURE_ENABLED_BY_DEFAULT};
- // Enables or disables Desktop PWAs to be auto-started on OS login.
- const base::Feature kDesktopPWAsRunOnOsLogin {
- "DesktopPWAsRunOnOsLogin",
- #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX)
- base::FEATURE_ENABLED_BY_DEFAULT
- #else
- base::FEATURE_DISABLED_BY_DEFAULT
- #endif
- };
- // Adds a user settings that allows PWAs to be opened with a tab strip.
- const base::Feature kDesktopPWAsTabStripSettings{
- "DesktopPWAsTabStripSettings", base::FEATURE_DISABLED_BY_DEFAULT};
- // Adds support for web bundles, making web apps able to be launched offline.
- const base::Feature kDesktopPWAsWebBundles{"DesktopPWAsWebBundles",
- base::FEATURE_DISABLED_BY_DEFAULT};
- #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
- BUILDFLAG(IS_FUCHSIA)
- // Controls whether Chrome Apps are supported. See https://crbug.com/1221251.
- // If the feature is disabled, Chrome Apps continue to work. If enabled, Chrome
- // Apps will not launch and will be marked in the UI as deprecated.
- const base::Feature kChromeAppsDeprecation{"ChromeAppsDeprecation",
- base::FEATURE_DISABLED_BY_DEFAULT};
- // Controls whether force installed and preinstalled apps should be exempt from
- // deprecation.
- const base::Feature kKeepForceInstalledPreinstalledApps{
- "KeepForceInstalledPreinstalledApps", base::FEATURE_DISABLED_BY_DEFAULT};
- #endif
- // Enables notification permission revocation for origins that may send
- // disruptive notifications.
- const base::Feature kDisruptiveNotificationPermissionRevocation{
- "DisruptiveNotificationPermissionRevocation",
- base::FEATURE_DISABLED_BY_DEFAULT};
- // Enable DNS over HTTPS (DoH).
- const base::Feature kDnsOverHttps {
- "DnsOverHttps",
- #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) || \
- BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_LINUX)
- base::FEATURE_ENABLED_BY_DEFAULT
- #else
- base::FEATURE_DISABLED_BY_DEFAULT
- #endif
- };
- // Set whether fallback to insecure DNS is allowed by default. This setting may
- // be overridden for individual transactions.
- const base::FeatureParam<bool> kDnsOverHttpsFallbackParam{&kDnsOverHttps,
- "Fallback", true};
- // Sets whether the DoH setting is displayed in the settings UI.
- const base::FeatureParam<bool> kDnsOverHttpsShowUiParam {
- &kDnsOverHttps, "ShowUi",
- #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) || \
- BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_LINUX)
- true
- #else
- false
- #endif
- };
- // Supply one or more space-separated DoH server URI templates to use when this
- // feature is enabled. If no templates are specified, then a hardcoded mapping
- // will be used to construct a list of DoH templates associated with the IP
- // addresses of insecure resolvers in the discovered configuration.
- const base::FeatureParam<std::string> kDnsOverHttpsTemplatesParam{
- &kDnsOverHttps, "Templates", ""};
- #if BUILDFLAG(IS_CHROMEOS_ASH)
- // Enables the DNS-Over-HTTPS in the DNS proxy.
- const base::Feature kDnsProxyEnableDOH{"DnsProxyEnableDOH",
- base::FEATURE_ENABLED_BY_DEFAULT};
- #endif
- #if BUILDFLAG(IS_ANDROID)
- // Enable loading native libraries earlier in startup on Android.
- const base::Feature kEarlyLibraryLoad{"EarlyLibraryLoad",
- base::FEATURE_ENABLED_BY_DEFAULT};
- #endif
- #if BUILDFLAG(IS_ANDROID)
- // Under this flag Java bootstrap (aka startup) tasks that are run before native
- // initialization will not be specially prioritized by being posted at the front
- // of the Looper's queue.
- const base::Feature kElidePrioritizationOfPreNativeBootstrapTasks = {
- "ElidePrioritizationOfPreNativeBootstrapTasks",
- base::FEATURE_ENABLED_BY_DEFAULT};
- #endif
- // Enable the restricted web APIs for high-trusted apps.
- const base::Feature kEnableRestrictedWebApis{"EnableRestrictedWebApis",
- base::FEATURE_ENABLED_BY_DEFAULT};
- #if !BUILDFLAG(IS_ANDROID)
- // Enable WebHID on extension service workers.
- const base::Feature kEnableWebHidOnExtensionServiceWorker{
- "EnableWebHidOnExtensionServiceWorker", base::FEATURE_DISABLED_BY_DEFAULT};
- #endif
- #if !BUILDFLAG(IS_ANDROID)
- // Lazy initialize IndividualSettings for extensions from enterprise policy
- // that are not installed.
- const base::Feature kExtensionDeferredIndividualSettings{
- "ExtensionDeferredIndividualSettings", base::FEATURE_ENABLED_BY_DEFAULT};
- #endif
- // Controls whether the user justification text field is visible on the
- // extension request dialog.
- const base::Feature kExtensionWorkflowJustification{
- "ExtensionWorkflowJustification", base::FEATURE_DISABLED_BY_DEFAULT};
- // If enabled, this feature's |kExternalInstallDefaultButtonKey| field trial
- // parameter value controls which |ExternalInstallBubbleAlert| button is the
- // default.
- const base::Feature kExternalExtensionDefaultButtonControl{
- "ExternalExtensionDefaultButtonControl", base::FEATURE_DISABLED_BY_DEFAULT};
- #if BUILDFLAG(IS_CHROMEOS_ASH)
- COMPONENT_EXPORT(CHROME_FEATURES)
- const base::Feature kFileTransferEnterpriseConnector{
- "FileTransferEnterpriseConnector", base::FEATURE_DISABLED_BY_DEFAULT};
- #endif
- #if BUILDFLAG(ENABLE_PLUGINS)
- // Show Flash deprecation warning to users who have manually enabled Flash.
- // https://crbug.com/918428
- const base::Feature kFlashDeprecationWarning{"FlashDeprecationWarning",
- base::FEATURE_ENABLED_BY_DEFAULT};
- #endif
- // Controls whether the GeoLanguage system is enabled. GeoLanguage uses IP-based
- // coarse geolocation to provide an estimate (for use by other Chrome features
- // such as Translate) of the local/regional language(s) corresponding to the
- // device's location. If this feature is disabled, the GeoLanguage provider is
- // not initialized at startup, and clients calling it will receive an empty list
- // of languages.
- const base::Feature kGeoLanguage{"GeoLanguage",
- base::FEATURE_DISABLED_BY_DEFAULT};
- #if !BUILDFLAG(IS_ANDROID)
- // Enables or disables the Happiness Tracking System demo mode for Desktop
- // Chrome.
- const base::Feature kHappinessTrackingSurveysForDesktopDemo{
- "HappinessTrackingSurveysForDesktopDemo",
- base::FEATURE_DISABLED_BY_DEFAULT};
- // Enables or disables the Happiness Tracking System for COEP issues in Chrome
- // DevTools on Desktop.
- const base::Feature kHaTSDesktopDevToolsIssuesCOEP{
- "HaTSDesktopDevToolsIssuesCOEP", base::FEATURE_DISABLED_BY_DEFAULT};
- // Enables or disables the Happiness Tracking System for Mixed Content issues in
- // Chrome DevTools on Desktop.
- const base::Feature kHaTSDesktopDevToolsIssuesMixedContent{
- "HaTSDesktopDevToolsIssuesMixedContent", base::FEATURE_DISABLED_BY_DEFAULT};
- // Enables or disables the Happiness Tracking System for same-site cookies
- // issues in Chrome DevTools on Desktop.
- const base::Feature
- kHappinessTrackingSurveysForDesktopDevToolsIssuesCookiesSameSite{
- "HappinessTrackingSurveysForDesktopDevToolsIssuesCookiesSameSite",
- base::FEATURE_DISABLED_BY_DEFAULT};
- // Enables or disables the Happiness Tracking System for Heavy Ad issues in
- // Chrome DevTools on Desktop.
- const base::Feature kHaTSDesktopDevToolsIssuesHeavyAd{
- "HaTSDesktopDevToolsIssuesHeavyAd", base::FEATURE_DISABLED_BY_DEFAULT};
- // Enables or disables the Happiness Tracking System for CSP issues in Chrome
- // DevTools on Desktop.
- const base::Feature kHaTSDesktopDevToolsIssuesCSP{
- "HaTSDesktopDevToolsIssuesCSP", base::FEATURE_DISABLED_BY_DEFAULT};
- // Enables or disables the Happiness Tracking System for Desktop Privacy Guide.
- const base::Feature kHappinessTrackingSurveysForDesktopPrivacyGuide{
- "HappinessTrackingSurveysForDesktopPrivacyGuide",
- base::FEATURE_DISABLED_BY_DEFAULT};
- const base::FeatureParam<base::TimeDelta>
- kHappinessTrackingSurveysForDesktopPrivacyGuideTime{
- &kHappinessTrackingSurveysForDesktopPrivacyGuide, "settings-time",
- base::Seconds(20)};
- // Enables or disables the Happiness Tracking System for Desktop Privacy
- // Sandbox.
- const base::Feature kHappinessTrackingSurveysForDesktopPrivacySandbox{
- "HappinessTrackingSurveysForDesktopPrivacySandbox",
- base::FEATURE_DISABLED_BY_DEFAULT};
- const base::FeatureParam<base::TimeDelta>
- kHappinessTrackingSurveysForDesktopPrivacySandboxTime{
- &kHappinessTrackingSurveysForDesktopPrivacySandbox, "settings-time",
- base::Seconds(20)};
- // Enables or disables the Happiness Tracking System for Desktop Chrome
- // Settings.
- const base::Feature kHappinessTrackingSurveysForDesktopSettings{
- "HappinessTrackingSurveysForDesktopSettings",
- base::FEATURE_DISABLED_BY_DEFAULT};
- // Enables or disables the Happiness Tracking System for Desktop Chrome
- // Privacy Settings.
- const base::Feature kHappinessTrackingSurveysForDesktopSettingsPrivacy{
- "HappinessTrackingSurveysForDesktopSettingsPrivacy",
- base::FEATURE_DISABLED_BY_DEFAULT};
- const base::FeatureParam<bool>
- kHappinessTrackingSurveysForDesktopSettingsPrivacyNoSandbox{
- &kHappinessTrackingSurveysForDesktopSettingsPrivacy, "no-sandbox",
- false};
- const base::FeatureParam<bool>
- kHappinessTrackingSurveysForDesktopSettingsPrivacyNoGuide{
- &kHappinessTrackingSurveysForDesktopSettingsPrivacy, "no-guide", false};
- const base::FeatureParam<base::TimeDelta>
- kHappinessTrackingSurveysForDesktopSettingsPrivacyTime{
- &kHappinessTrackingSurveysForDesktopSettingsPrivacy, "settings-time",
- base::Seconds(20)};
- // Enables or disables the Happiness Tracking System for Desktop Chrome
- // NTP Modules.
- const base::Feature kHappinessTrackingSurveysForDesktopNtpModules{
- "HappinessTrackingSurveysForDesktopNtpModules",
- base::FEATURE_DISABLED_BY_DEFAULT};
- const base::Feature kHappinessTrackingSurveysForNtpPhotosOptOut{
- "HappinessTrackingSurveysForrNtpPhotosOptOut",
- base::FEATURE_DISABLED_BY_DEFAULT};
- // Enables or disables the Happiness Tracking System for Chrome What's New.
- const base::Feature kHappinessTrackingSurveysForDesktopWhatsNew{
- "HappinessTrackingSurveysForDesktopWhatsNew",
- base::FEATURE_DISABLED_BY_DEFAULT};
- const base::FeatureParam<base::TimeDelta>
- kHappinessTrackingSurveysForDesktopWhatsNewTime{
- &kHappinessTrackingSurveysForDesktopWhatsNew, "whats-new-time",
- base::Seconds(20)};
- #endif // !BUILDFLAG(IS_ANDROID)
- #if BUILDFLAG(IS_CHROMEOS_ASH)
- // Enables or disables the Happiness Tracking System for the General survey.
- const base::Feature kHappinessTrackingSystem{"HappinessTrackingSystem",
- base::FEATURE_DISABLED_BY_DEFAULT};
- // Enables or disables the Happiness Tracking System for the Ent survey.
- const base::Feature kHappinessTrackingSystemEnt{
- "HappinessTrackingSystemEnt", base::FEATURE_DISABLED_BY_DEFAULT};
- // Enables or disables the Happiness Tracking System for the Stability survey.
- const base::Feature kHappinessTrackingSystemStability{
- "HappinessTrackingSystemStability", base::FEATURE_DISABLED_BY_DEFAULT};
- // Enables or disables the Happiness Tracking System for the Performance survey.
- const base::Feature kHappinessTrackingSystemPerformance{
- "HappinessTrackingSystemPerformance", base::FEATURE_DISABLED_BY_DEFAULT};
- // Enables or disables the Happiness Tracking System for Onboarding Experience.
- const base::Feature kHappinessTrackingSystemOnboarding{
- "HappinessTrackingOnboardingExperience", base::FEATURE_DISABLED_BY_DEFAULT};
- // Enables or disables the Happiness Tracking System for Unlock.
- const base::Feature kHappinessTrackingSystemUnlock{
- "HappinessTrackingUnlock", base::FEATURE_DISABLED_BY_DEFAULT};
- // Enables or disables the Happiness Tracking System for Smart Lock.
- const base::Feature kHappinessTrackingSystemSmartLock{
- "HappinessTrackingSmartLock", base::FEATURE_DISABLED_BY_DEFAULT};
- // Enables or disables the Happiness Tracking System for ARC Games survey.
- const base::Feature kHappinessTrackingSystemArcGames{
- "HappinessTrackingArcGames", base::FEATURE_DISABLED_BY_DEFAULT};
- // Enables or disables the Happiness Tracking System for Audio survey.
- const base::Feature kHappinessTrackingSystemAudio{
- "HappinessTrackingAudio", base::FEATURE_DISABLED_BY_DEFAULT};
- // Enables the Happiness Tracking System for Personalization Avatar survey.
- const base::Feature kHappinessTrackingPersonalizationAvatar{
- "HappinessTrackingPersonalizationAvatar",
- base::FEATURE_DISABLED_BY_DEFAULT};
- // Enables the Happiness Tracking System for Personalization Screensaver survey.
- const base::Feature kHappinessTrackingPersonalizationScreensaver{
- "HappinessTrackingPersonalizationScreensaver",
- base::FEATURE_DISABLED_BY_DEFAULT};
- // Enables the Happiness Tracking System for Personalization Wallpaper survey.
- const base::Feature kHappinessTrackingPersonalizationWallpaper{
- "HappinessTrackingPersonalizationWallpaper",
- base::FEATURE_DISABLED_BY_DEFAULT};
- // Enables the Happiness Tracking System for Media App PDF survey.
- const base::Feature kHappinessTrackingMediaAppPdf{
- "HappinessTrackingMediaAppPdf", base::FEATURE_DISABLED_BY_DEFAULT};
- // Enables or disables the Happiness Tracking System for Camera App survey.
- const base::Feature kHappinessTrackingSystemCameraApp{
- "HappinessTrackingCameraApp", base::FEATURE_DISABLED_BY_DEFAULT};
- // Enables the Happiness Tracking System for Photos Experience survey.
- const base::Feature kHappinessTrackingPhotosExperience{
- "HappinessTrackingPhotosExperience", base::FEATURE_DISABLED_BY_DEFAULT};
- #endif
- // Hides the origin text from showing up briefly in WebApp windows.
- const base::Feature kHideWebAppOriginText{"HideWebAppOriginText",
- base::FEATURE_DISABLED_BY_DEFAULT};
- // Sets whether the HTTPS-Only Mode setting is displayed in the settings UI.
- const base::Feature kHttpsOnlyMode{"HttpsOnlyMode",
- base::FEATURE_ENABLED_BY_DEFAULT};
- #if BUILDFLAG(IS_MAC)
- const base::Feature kImmersiveFullscreen{"ImmersiveFullscreen",
- base::FEATURE_DISABLED_BY_DEFAULT};
- #endif
- #if BUILDFLAG(IS_CHROMEOS_ASH)
- // Enables scraping of password-expiry information during SAML login flow, which
- // can lead to an in-session flow for changing SAML password if it has expired.
- // This is safe to enable by default since it does not cause the password-expiry
- // information to be stored, or any user-visible change - in order for anything
- // to happen, the domain administrator has to intentionally send this extra
- // info in the SAML response, and enable the InSessionPasswordChange policy.
- // So, this feature is just for disabling the scraping code if it causes
- // any unforeseen issues.
- const base::Feature kInSessionPasswordChange{"InSessionPasswordChange",
- base::FEATURE_ENABLED_BY_DEFAULT};
- #endif // BUILDFLAG(IS_CHROMEOS_ASH)
- #if BUILDFLAG(IS_WIN)
- // A feature that controls whether Chrome warns about incompatible applications.
- // This feature requires Windows 10 or higher to work because it depends on
- // the "Apps & Features" system settings.
- const base::Feature kIncompatibleApplicationsWarning{
- "IncompatibleApplicationsWarning", base::FEATURE_DISABLED_BY_DEFAULT};
- #endif
- #if BUILDFLAG(IS_ANDROID)
- // When enabled, users will see a warning when downloading from Incognito.
- const base::Feature kIncognitoDownloadsWarning{
- "IncognitoDownloadsWarning", base::FEATURE_DISABLED_BY_DEFAULT};
- #endif
- // When enabled, users will see updated UI in Incognito NTP
- const base::Feature kIncognitoNtpRevamp{"IncognitoNtpRevamp",
- base::FEATURE_DISABLED_BY_DEFAULT};
- #if BUILDFLAG(IS_CHROMEOS)
- const base::Feature kKioskEnableAppService("KioskEnableAppService",
- base::FEATURE_DISABLED_BY_DEFAULT);
- #endif // BUILDFLAG(IS_CHROMEOS)
- // When enabled, removes any entry points to the history UI from Incognito mode.
- const base::Feature kUpdateHistoryEntryPointsInIncognito{
- "UpdateHistoryEntryPointsInIncognito", base::FEATURE_ENABLED_BY_DEFAULT};
- #if BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CHROMEOS)
- COMPONENT_EXPORT(CHROME_FEATURES)
- const base::Feature kLinuxLowMemoryMonitor{"LinuxLowMemoryMonitor",
- base::FEATURE_DISABLED_BY_DEFAULT};
- // Values taken from the low-memory-monitor documentation and also apply to the
- // portal API:
- // https://hadess.pages.freedesktop.org/low-memory-monitor/gdbus-org.freedesktop.LowMemoryMonitor.html
- constexpr base::FeatureParam<int> kLinuxLowMemoryMonitorModerateLevel{
- &kLinuxLowMemoryMonitor, "moderate_level", 50};
- constexpr base::FeatureParam<int> kLinuxLowMemoryMonitorCriticalLevel{
- &kLinuxLowMemoryMonitor, "critical_level", 255};
- #endif // BUILDFLAG(IS_LINUX) && !BUILDFLAG(IS_CHROMEOS)
- #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN)
- const base::Feature kListWebAppsSwitch{"ListWebAppsSwitch",
- base::FEATURE_DISABLED_BY_DEFAULT};
- #endif
- #if BUILDFLAG(IS_MAC)
- // Enable screen capture system permission check on Mac 10.15+.
- const base::Feature kMacSystemScreenCapturePermissionCheck{
- "MacSystemScreenCapturePermissionCheck", base::FEATURE_ENABLED_BY_DEFAULT};
- #endif
- #if BUILDFLAG(IS_CHROMEOS_ASH)
- // Whether to show the Metered toggle in Settings, allowing users to toggle
- // whether to treat a WiFi or Cellular network as 'metered'.
- const base::Feature kMeteredShowToggle{"MeteredShowToggle",
- base::FEATURE_DISABLED_BY_DEFAULT};
- // Whether to show the Hidden toggle in Settings, allowing users to toggle
- // whether to treat a WiFi network as having a hidden ssid.
- const base::Feature kShowHiddenNetworkToggle{"ShowHiddenNetworkToggle",
- base::FEATURE_ENABLED_BY_DEFAULT};
- #endif
- #if BUILDFLAG(IS_ANDROID)
- // Enables the new design of metrics settings.
- const base::Feature kMetricsSettingsAndroid{"MetricsSettingsAndroid",
- base::FEATURE_DISABLED_BY_DEFAULT};
- #endif
- const base::Feature kMoveWebApp{
- "MoveWebApp", base::FeatureState::FEATURE_DISABLED_BY_DEFAULT};
- const base::FeatureParam<std::string> kMoveWebAppUninstallStartUrlPrefix(
- &kMoveWebApp,
- "uninstallStartUrlPrefix",
- "");
- const base::FeatureParam<std::string> kMoveWebAppUninstallStartUrlPattern(
- &kMoveWebApp,
- "uninstallStartUrlPattern",
- "");
- const base::FeatureParam<std::string>
- kMoveWebAppInstallStartUrl(&kMoveWebApp, "installStartUrl", "");
- // Enables the use of system notification centers instead of using the Message
- // Center for displaying the toasts. The feature is hardcoded to enabled for
- // Chrome OS.
- #if BUILDFLAG(ENABLE_SYSTEM_NOTIFICATIONS) && !BUILDFLAG(IS_CHROMEOS_ASH)
- const base::Feature kNativeNotifications{"NativeNotifications",
- base::FEATURE_ENABLED_BY_DEFAULT};
- const base::Feature kSystemNotifications{"SystemNotifications",
- base::FEATURE_ENABLED_BY_DEFAULT};
- #endif // BUILDFLAG(ENABLE_SYSTEM_NOTIFICATIONS)
- #if BUILDFLAG(IS_MAC)
- // Enables the usage of Apple's new Notification API on macOS 10.14+
- const base::Feature kNewMacNotificationAPI{"NewMacNotificationAPI",
- base::FEATURE_DISABLED_BY_DEFAULT};
- #endif // BUILDFLAG(IS_MAC)
- // When kNoReferrers is enabled, most HTTP requests will provide empty
- // referrers instead of their ordinary behavior.
- const base::Feature kNoReferrers{"NoReferrers",
- base::FEATURE_DISABLED_BY_DEFAULT};
- #if BUILDFLAG(IS_WIN)
- // Changes behavior of requireInteraction for notifications. Instead of staying
- // on-screen until dismissed, they are instead shown for a very long time.
- const base::Feature kNotificationDurationLongForRequireInteraction{
- "NotificationDurationLongForRequireInteraction",
- base::FEATURE_DISABLED_BY_DEFAULT};
- #endif // BUILDFLAG(IS_WIN)
- #if !BUILDFLAG(IS_ANDROID)
- const base::Feature kOnConnectNative{"OnConnectNative",
- base::FEATURE_DISABLED_BY_DEFAULT};
- #endif
- // Enables/disables marketing emails for other countries other than US,CA,UK.
- const base::Feature kOobeMarketingAdditionalCountriesSupported{
- "kOobeMarketingAdditionalCountriesSupported",
- base::FEATURE_ENABLED_BY_DEFAULT};
- // Enables/disables marketing emails for double opt-in countries.
- const base::Feature kOobeMarketingDoubleOptInCountriesSupported{
- "kOobeMarketingDoubleOptInCountriesSupported",
- base::FEATURE_ENABLED_BY_DEFAULT};
- #if BUILDFLAG(IS_ANDROID)
- // Enables or disabled the OOM intervention.
- const base::Feature kOomIntervention{"OomIntervention",
- base::FEATURE_ENABLED_BY_DEFAULT};
- #endif
- #if BUILDFLAG(IS_CHROMEOS_ASH)
- // Enables usage of Parent Access Code in the login flow for reauth and add
- // user. Requires |kParentAccessCode| to be enabled.
- const base::Feature kParentAccessCodeForOnlineLogin{
- "ParentAccessCodeForOnlineLogin", base::FEATURE_ENABLED_BY_DEFAULT};
- #endif
- // Keep a client-side log of when websites access permission-gated capabilities
- // to allow the user to audit usage.
- const base::Feature kPermissionAuditing{"PermissionAuditing",
- base::FEATURE_DISABLED_BY_DEFAULT};
- // Enables using the prediction service for permission prompts. We will keep
- // this feature in order to allow us to update the holdback chance via finch.
- const base::Feature kPermissionPredictions{"PermissionPredictions",
- base::FEATURE_ENABLED_BY_DEFAULT};
- // The holdback chance is 30% but it can also be configured/updated
- // through finch if needed.
- const base::FeatureParam<double> kPermissionPredictionsHoldbackChance(
- &kPermissionPredictions,
- "holdback_chance",
- 0.3);
- // Enables using the prediction service for geolocation permission prompts.
- const base::Feature kPermissionGeolocationPredictions{
- "PermissionGeolocationPredictions", base::FEATURE_ENABLED_BY_DEFAULT};
- const base::FeatureParam<double>
- kPermissionGeolocationPredictionsHoldbackChance(
- &kPermissionGeolocationPredictions,
- "holdback_chance",
- 0.3);
- #if BUILDFLAG(IS_CHROMEOS_ASH)
- // Enable support for "Plugin VMs" on Chrome OS.
- const base::Feature kPluginVm{"PluginVm", base::FEATURE_DISABLED_BY_DEFAULT};
- #endif
- // Allows prediction operations (e.g., prefetching) on all connection types.
- const base::Feature kPredictivePrefetchingAllowedOnAllConnectionTypes{
- "PredictivePrefetchingAllowedOnAllConnectionTypes",
- base::FEATURE_ENABLED_BY_DEFAULT};
- const base::Feature kPrefixWebAppWindowsWithAppName{
- "PrefixWebAppWindowsWithAppName", base::FEATURE_ENABLED_BY_DEFAULT};
- // Allows Chrome to do preconnect when prerender fails.
- const base::Feature kPrerenderFallbackToPreconnect{
- "PrerenderFallbackToPreconnect", base::FEATURE_ENABLED_BY_DEFAULT};
- const base::Feature kPrivacyGuide2{"PrivacyGuide2",
- base::FEATURE_DISABLED_BY_DEFAULT};
- const base::Feature kPrivacyGuideAndroid{"PrivacyGuideAndroid",
- base::FEATURE_DISABLED_BY_DEFAULT};
- // Enables or disables push subscriptions keeping Chrome running in the
- // background when closed.
- const base::Feature kPushMessagingBackgroundMode{
- "PushMessagingBackgroundMode", base::FEATURE_DISABLED_BY_DEFAULT};
- // Shows a confirmation dialog when updates to a PWAs icon has been detected.
- const base::Feature kPwaUpdateDialogForIcon{"PwaUpdateDialogForIcon",
- base::FEATURE_DISABLED_BY_DEFAULT};
- // Shows a confirmation dialog when updates to a PWAs name has been detected.
- const base::Feature kPwaUpdateDialogForName{"PwaUpdateDialogForName",
- base::FEATURE_ENABLED_BY_DEFAULT};
- // Enables using quiet prompts for notification permission requests.
- const base::Feature kQuietNotificationPrompts{"QuietNotificationPrompts",
- base::FEATURE_ENABLED_BY_DEFAULT};
- // Enables recording additional web app related debugging data to be displayed
- // in: chrome://web-app-internals
- const base::Feature kRecordWebAppDebugInfo{"RecordWebAppDebugInfo",
- base::FEATURE_DISABLED_BY_DEFAULT};
- // Enables notification permission revocation for abusive origins.
- const base::Feature kAbusiveNotificationPermissionRevocation{
- "AbusiveOriginNotificationPermissionRevocation",
- base::FEATURE_ENABLED_BY_DEFAULT};
- const base::Feature kRemoveStatusBarInWebApps{"RemoveStatusBarInWebApps",
- base::FEATURE_ENABLED_BY_DEFAULT};
- #if BUILDFLAG(IS_CHROMEOS_ASH)
- // Enables permanent removal of Legacy Supervised Users on startup.
- const base::Feature kRemoveSupervisedUsersOnStartup{
- "RemoveSupervisedUsersOnStartup", base::FEATURE_DISABLED_BY_DEFAULT};
- #endif
- #if BUILDFLAG(IS_ANDROID)
- const base::Feature kRequestDesktopSiteForTablets{
- "RequestDesktopSiteForTablets", base::FEATURE_DISABLED_BY_DEFAULT};
- #endif
- #if !BUILDFLAG(IS_ANDROID)
- // Enables permission modules on Safety Check.
- const base::Feature kSafetyCheckPermissions{"SafetyCheckPermissions",
- base::FEATURE_DISABLED_BY_DEFAULT};
- #endif // !BUILDFLAG(IS_ANDROID)
- #if BUILDFLAG(IS_CHROMEOS_ASH)
- // Enable support for multiple scheduler configurations.
- const base::Feature kSchedulerConfiguration{"SchedulerConfiguration",
- base::FEATURE_DISABLED_BY_DEFAULT};
- #endif // BUILDFLAG(IS_CHROMEOS_ASH)
- // Controls whether SCT audit reports are queued and the rate at which they
- // should be sampled. Default sampling rate is 1/10,000 certificates.
- #if BUILDFLAG(IS_ANDROID)
- const base::Feature kSCTAuditing{"SCTAuditing",
- base::FEATURE_DISABLED_BY_DEFAULT};
- #else
- const base::Feature kSCTAuditing{"SCTAuditing",
- base::FEATURE_ENABLED_BY_DEFAULT};
- #endif
- constexpr base::FeatureParam<double> kSCTAuditingSamplingRate{
- &kSCTAuditing, "sampling_rate", 0.0001};
- // SCT auditing hashdance allows Chrome clients who are not opted-in to Enhanced
- // Safe Browsing Reporting to perform a k-anonymous query to see if Google knows
- // about an SCT seen in the wild. If it hasn't been seen, then it is considered
- // a security incident and uploaded to Google.
- const base::Feature kSCTAuditingHashdance{"SCTAuditingHashdance",
- base::FEATURE_ENABLED_BY_DEFAULT};
- // An estimated high bound for the time it takes Google to ingest updates to an
- // SCT log. Chrome will wait for at least this time plus the Log's Maximum Merge
- // Delay after an SCT's timestamp before performing a hashdance lookup query.
- const base::FeatureParam<base::TimeDelta> kSCTLogExpectedIngestionDelay{
- &kSCTAuditingHashdance,
- "sct_log_expected_ingestion_delay",
- base::Hours(1),
- };
- // A random delay will be added to the expected log ingestion delay between zero
- // and this maximum. This prevents a burst of queries once a new SCT is issued.
- const base::FeatureParam<base::TimeDelta> kSCTLogMaxIngestionRandomDelay{
- &kSCTAuditingHashdance,
- "sct_log_max_ingestion_random_delay",
- base::Hours(1),
- };
- // Controls whether the user is prompted when sites request attestation.
- const base::Feature kSecurityKeyAttestationPrompt{
- "SecurityKeyAttestationPrompt", base::FEATURE_ENABLED_BY_DEFAULT};
- // Alternative to switches::kSitePerProcess, for turning on full site isolation.
- // Launch bug: https://crbug.com/810843. This is a //chrome-layer feature to
- // avoid turning on site-per-process by default for *all* //content embedders
- // (e.g. this approach lets ChromeCast avoid site-per-process mode).
- //
- // TODO(alexmos): Move this and the other site isolation features below to
- // browser_features, as they are only used on the browser side.
- const base::Feature kSitePerProcess {
- "SitePerProcess",
- #if BUILDFLAG(IS_ANDROID)
- base::FEATURE_DISABLED_BY_DEFAULT
- #else
- base::FEATURE_ENABLED_BY_DEFAULT
- #endif
- };
- #if BUILDFLAG(IS_CHROMEOS_ASH)
- // Enables or disables SmartDim on Chrome OS.
- const base::Feature kSmartDim{"SmartDim", base::FEATURE_DISABLED_BY_DEFAULT};
- #endif // BUILDFLAG(IS_CHROMEOS_ASH)
- // Enables or disables the ability to use the sound content setting to mute a
- // website.
- const base::Feature kSoundContentSetting{"SoundContentSetting",
- base::FEATURE_ENABLED_BY_DEFAULT};
- #if BUILDFLAG(IS_CHROMEOS_ASH)
- // Enables or disables chrome://sys-internals.
- const base::Feature kSysInternals{"SysInternals",
- base::FEATURE_DISABLED_BY_DEFAULT};
- // Enables or disables TPM firmware update capability on Chrome OS.
- const base::Feature kTPMFirmwareUpdate{"TPMFirmwareUpdate",
- base::FEATURE_ENABLED_BY_DEFAULT};
- #endif // BUILDFLAG(IS_CHROMEOS_ASH)
- #if !BUILDFLAG(IS_ANDROID)
- // Enables logging UKMs for background tab activity by TabActivityWatcher.
- const base::Feature kTabMetricsLogging{"TabMetricsLogging",
- base::FEATURE_ENABLED_BY_DEFAULT};
- // Enables the demo version of the Support Tool. The tool will be available in
- // chrome://support-tool. See go/support-tool-v1-design for more details.
- const base::Feature kSupportTool{"SupportTool",
- base::FEATURE_DISABLED_BY_DEFAULT};
- #endif
- #if BUILDFLAG(IS_WIN)
- // Enables the blocking of third-party modules. This feature requires Windows 8
- // or higher because it depends on the ProcessExtensionPointDisablePolicy
- // mitigation, which was not available on Windows 7.
- // Note: Due to a limitation in the implementation of this feature, it is
- // required to start the browser two times to fully enable or disable it.
- const base::Feature kThirdPartyModulesBlocking{
- "ThirdPartyModulesBlocking", base::FEATURE_DISABLED_BY_DEFAULT};
- #endif
- // Disable downloads of unsafe file types over insecure transports if initiated
- // from a secure page. As of M89, mixed downloads are blocked on all platforms.
- const base::Feature kTreatUnsafeDownloadsAsActive{
- "TreatUnsafeDownloadsAsActive", base::FEATURE_ENABLED_BY_DEFAULT};
- #if !BUILDFLAG(IS_ANDROID)
- // Enables surveying of users of Trust & Safety features with HaTS.
- const base::Feature kTrustSafetySentimentSurvey{
- "TrustSafetySentimentSurvey", base::FEATURE_DISABLED_BY_DEFAULT};
- // The minimum and maximum time after a user has interacted with a Trust and
- // Safety they are eligible to be surveyed.
- const base::FeatureParam<base::TimeDelta>
- kTrustSafetySentimentSurveyMinTimeToPrompt{
- &kTrustSafetySentimentSurvey, "min-time-to-prompt", base::Minutes(2)};
- const base::FeatureParam<base::TimeDelta>
- kTrustSafetySentimentSurveyMaxTimeToPrompt{
- &kTrustSafetySentimentSurvey, "max-time-to-prompt", base::Minutes(60)};
- // The maximum and minimum range for the random number of NTPs that the user
- // must at least visit after interacting with a Trust and Safety feature to be
- // eligible for a survey.
- const base::FeatureParam<int> kTrustSafetySentimentSurveyNtpVisitsMinRange{
- &kTrustSafetySentimentSurvey, "ntp-visits-min-range", 2};
- const base::FeatureParam<int> kTrustSafetySentimentSurveyNtpVisitsMaxRange{
- &kTrustSafetySentimentSurvey, "ntp-visits-max-range", 4};
- // The feature area probabilities for each feature area considered as part of
- // the Trust & Safety sentiment survey.
- const base::FeatureParam<double>
- kTrustSafetySentimentSurveyPrivacySettingsProbability{
- &kTrustSafetySentimentSurvey, "privacy-settings-probability", 0.6};
- const base::FeatureParam<double>
- kTrustSafetySentimentSurveyTrustedSurfaceProbability{
- &kTrustSafetySentimentSurvey, "trusted-surface-probability", 0.4};
- const base::FeatureParam<double>
- kTrustSafetySentimentSurveyTransactionsProbability{
- &kTrustSafetySentimentSurvey, "transactions-probability", 0.05};
- const base::FeatureParam<double>
- kTrustSafetySentimentSurveyPrivacySandbox3ConsentAcceptProbability{
- &kTrustSafetySentimentSurvey,
- "privacy-sandbox-3-consent-accept-probability", 0.1};
- const base::FeatureParam<double>
- kTrustSafetySentimentSurveyPrivacySandbox3ConsentDeclineProbability{
- &kTrustSafetySentimentSurvey,
- "privacy-sandbox-3-consent-decline-probability", 0.5};
- const base::FeatureParam<double>
- kTrustSafetySentimentSurveyPrivacySandbox3NoticeDismissProbability{
- &kTrustSafetySentimentSurvey,
- "privacy-sandbox-3-notice-dismiss-probability", 0.5};
- const base::FeatureParam<double>
- kTrustSafetySentimentSurveyPrivacySandbox3NoticeOkProbability{
- &kTrustSafetySentimentSurvey, "privacy-sandbox-3-notice-ok-probability",
- 0.05};
- const base::FeatureParam<double>
- kTrustSafetySentimentSurveyPrivacySandbox3NoticeSettingsProbability{
- &kTrustSafetySentimentSurvey,
- "privacy-sandbox-3-notice-settings-probability", 0.8};
- const base::FeatureParam<double>
- kTrustSafetySentimentSurveyPrivacySandbox3NoticeLearnMoreProbability{
- &kTrustSafetySentimentSurvey,
- "privacy-sandbox-3-notice-learn-more-probability", 0.2};
- // The HaTS trigger IDs, which determine which survey is delivered from the HaTS
- // backend.
- const base::FeatureParam<std::string>
- kTrustSafetySentimentSurveyPrivacySettingsTriggerId{
- &kTrustSafetySentimentSurvey, "privacy-settings-trigger-id", ""};
- const base::FeatureParam<std::string>
- kTrustSafetySentimentSurveyTrustedSurfaceTriggerId{
- &kTrustSafetySentimentSurvey, "trusted-surface-trigger-id", ""};
- extern const base::FeatureParam<std::string>
- kTrustSafetySentimentSurveyTransactionsTriggerId{
- &kTrustSafetySentimentSurvey, "transactions-trigger-id", ""};
- extern const base::FeatureParam<std::string>
- kTrustSafetySentimentSurveyPrivacySandbox3ConsentAcceptTriggerId{
- &kTrustSafetySentimentSurvey,
- "privacy-sandbox-3-consent-accept-trigger-id", ""};
- extern const base::FeatureParam<std::string>
- kTrustSafetySentimentSurveyPrivacySandbox3ConsentDeclineTriggerId{
- &kTrustSafetySentimentSurvey,
- "privacy-sandbox-3-consent-decline-trigger-id", ""};
- extern const base::FeatureParam<std::string>
- kTrustSafetySentimentSurveyPrivacySandbox3NoticeDismissTriggerId{
- &kTrustSafetySentimentSurvey,
- "privacy-sandbox-3-notice-dismiss-trigger-id", ""};
- extern const base::FeatureParam<std::string>
- kTrustSafetySentimentSurveyPrivacySandbox3NoticeOkTriggerId{
- &kTrustSafetySentimentSurvey, "privacy-sandbox-3-notice-ok-trigger-id",
- ""};
- extern const base::FeatureParam<std::string>
- kTrustSafetySentimentSurveyPrivacySandbox3NoticeSettingsTriggerId{
- &kTrustSafetySentimentSurvey,
- "privacy-sandbox-3-notice-settings-trigger-id", ""};
- extern const base::FeatureParam<std::string>
- kTrustSafetySentimentSurveyPrivacySandbox3NoticeLearnMoreTriggerId{
- &kTrustSafetySentimentSurvey,
- "privacy-sandbox-3-notice-learn-more-trigger-id", ""};
- // The time the user must remain on settings after interacting with a privacy
- // setting to be considered.
- const base::FeatureParam<base::TimeDelta>
- kTrustSafetySentimentSurveyPrivacySettingsTime{&kTrustSafetySentimentSurvey,
- "privacy-settings-time",
- base::Seconds(20)};
- // The time the user must have the Trusted Surface bubble open to be considered.
- // Alternatively the user can interact with the bubble, in which case this time
- // is irrelevant.
- const base::FeatureParam<base::TimeDelta>
- kTrustSafetySentimentSurveyTrustedSurfaceTime{
- &kTrustSafetySentimentSurvey, "trusted-surface-time", base::Seconds(5)};
- // The time the user must remain on settings after visiting the password
- // manager page.
- const base::FeatureParam<base::TimeDelta>
- kTrustSafetySentimentSurveyTransactionsPasswordManagerTime{
- &kTrustSafetySentimentSurvey, "transactions-password-manager-time",
- base::Seconds(20)};
- #endif
- #if BUILDFLAG(IS_CHROMEOS_ASH)
- // Enable uploading of a zip archive of system logs instead of individual files.
- const base::Feature kUploadZippedSystemLogs{"UploadZippedSystemLogs",
- base::FEATURE_ENABLED_BY_DEFAULT};
- #endif
- #if BUILDFLAG(IS_CHROMEOS_ASH)
- // Enables or disables user activity event logging for power management on
- // Chrome OS.
- const base::Feature kUserActivityEventLogging{"UserActivityEventLogging",
- base::FEATURE_ENABLED_BY_DEFAULT};
- #endif
- #if !BUILDFLAG(IS_ANDROID)
- const base::Feature kWebAppManifestIconUpdating{
- "WebAppManifestIconUpdating", base::FEATURE_DISABLED_BY_DEFAULT};
- #endif // BUILDFLAG(IS_ANDROID)
- const base::Feature kWebAppManifestPolicyAppIdentityUpdate{
- "WebAppManifestPolicyAppIdentityUpdate", base::FEATURE_ENABLED_BY_DEFAULT};
- #if BUILDFLAG(IS_CHROMEOS_ASH)
- // When this feature flag is enabled together with the LacrosAvailability
- // policy, the Chrome app Kiosk session uses Lacros-chrome as the web browser to
- // launch Chrome apps. When disabled, the Ash-chrome will be used instead.
- const base::Feature kChromeKioskEnableLacros{"ChromeKioskEnableLacros",
- base::FEATURE_ENABLED_BY_DEFAULT};
- // When this feature flag is enabled together with the LacrosAvailability
- // policy, the web (PWA) Kiosk session uses Lacros-chrome as the web browser to
- // launch web (PWA) applications. When disabled, the Ash-chrome will be used
- // instead.
- const base::Feature kWebKioskEnableLacros{"WebKioskEnableLacros",
- base::FEATURE_ENABLED_BY_DEFAULT};
- // When enabled, the Ash browser only manages system web apps, and non-system
- // web apps are managed by the Lacros browser. When disabled, the Ash browser
- // manages all web apps.
- const base::Feature kWebAppsCrosapi{"WebAppsCrosapi",
- base::FEATURE_DISABLED_BY_DEFAULT};
- #endif // BUILDFLAG(IS_CHROMEOS_ASH)
- #if !BUILDFLAG(IS_ANDROID)
- // Allow capturing of WebRTC event logs, and uploading of those logs to Crash.
- // Please note that a Chrome policy must also be set, for this to have effect.
- // Effectively, this is a kill-switch for the feature.
- // TODO(crbug.com/775415): Remove this kill-switch.
- const base::Feature kWebRtcRemoteEventLog{"WebRtcRemoteEventLog",
- base::FEATURE_ENABLED_BY_DEFAULT};
- // Compress remote-bound WebRTC event logs (if used; see kWebRtcRemoteEventLog).
- const base::Feature kWebRtcRemoteEventLogGzipped{
- "WebRtcRemoteEventLogGzipped", base::FEATURE_ENABLED_BY_DEFAULT};
- #endif
- #if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_CHROMEOS)
- // Enables Web Share (navigator.share)
- const base::Feature kWebShare{"WebShare", base::FEATURE_ENABLED_BY_DEFAULT};
- #endif
- #if BUILDFLAG(IS_MAC)
- // Enables Web Share (navigator.share) for macOS
- const base::Feature kWebShare{"WebShare", base::FEATURE_DISABLED_BY_DEFAULT};
- #endif
- // Whether to enable "dark mode" enhancements in Mac Mojave or Windows 10 for
- // UIs implemented with web technologies.
- const base::Feature kWebUIDarkMode {
- "WebUIDarkMode",
- #if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_ANDROID) || \
- BUILDFLAG(IS_CHROMEOS_ASH)
- base::FEATURE_ENABLED_BY_DEFAULT
- #else
- base::FEATURE_DISABLED_BY_DEFAULT
- #endif // BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_ANDROID) ||
- // BUILDFLAG(IS_CHROMEOS_ASH)
- };
- #if BUILDFLAG(IS_CHROMEOS_ASH)
- // Populates storage dimensions in UMA log if enabled. Requires diagnostics
- // package in the image.
- const base::Feature kUmaStorageDimensions{"UmaStorageDimensions",
- base::FEATURE_DISABLED_BY_DEFAULT};
- // Allow a Wilco DTC (diagnostics and telemetry controller) on Chrome OS.
- // More info about the project may be found here:
- // https://docs.google.com/document/d/18Ijj8YlC8Q3EWRzLspIi2dGxg4vIBVe5sJgMPt9SWYo
- const base::Feature kWilcoDtc{"WilcoDtc", base::FEATURE_DISABLED_BY_DEFAULT};
- #endif
- #if BUILDFLAG(IS_CHROMEOS_ASH)
- // Populates the user type on device type metrics in UMA log if enabled.
- const base::Feature kUserTypeByDeviceTypeMetricsProvider{
- "UserTypeByDeviceTypeMetricsProvider", base::FEATURE_ENABLED_BY_DEFAULT};
- #endif
- #if BUILDFLAG(IS_WIN)
- // Enables the accelerated default browser flow for Windows 10.
- const base::Feature kWin10AcceleratedDefaultBrowserFlow{
- "Win10AcceleratedDefaultBrowserFlow", base::FEATURE_ENABLED_BY_DEFAULT};
- #endif // BUILDFLAG(IS_WIN)
- // Enables writing basic system profile to the persistent histograms files
- // earlier.
- const base::Feature kWriteBasicSystemProfileToPersistentHistogramsFile{
- "WriteBasicSystemProfileToPersistentHistogramsFile",
- base::FEATURE_ENABLED_BY_DEFAULT};
- #if BUILDFLAG(IS_CHROMEOS_ASH)
- bool IsParentAccessCodeForOnlineLoginEnabled() {
- return base::FeatureList::IsEnabled(kParentAccessCodeForOnlineLogin);
- }
- #endif // BUILDFLAG(IS_CHROMEOS_ASH)
- // Enables omnibox trigger prerendering.
- const base::Feature kOmniboxTriggerForPrerender2{
- "OmniboxTriggerForPrerender2", base::FEATURE_DISABLED_BY_DEFAULT};
- const base::Feature kSupportSearchSuggestionForPrerender2{
- "SupportSearchSuggestionForPrerender2", base::FEATURE_DISABLED_BY_DEFAULT};
- const base::FeatureParam<SearchSuggestionPrerenderImplementationType>::Option
- search_suggestion_implementation_types[] = {
- {SearchSuggestionPrerenderImplementationType::kUsePrefetch,
- "use_prefetch"},
- {SearchSuggestionPrerenderImplementationType::kIgnorePrefetch,
- "ignore_prefetch"}};
- const base::FeatureParam<SearchSuggestionPrerenderImplementationType>
- kSearchSuggestionPrerenderImplementationTypeParam{
- &kSupportSearchSuggestionForPrerender2, "implementation_type",
- SearchSuggestionPrerenderImplementationType::kIgnorePrefetch,
- &search_suggestion_implementation_types};
- // Enables omnibox trigger no state prefetch. Only one of
- // kOmniboxTriggerForPrerender2 or kOmniboxTriggerForNoStatePrefetch can be
- // enabled in the experiment.
- // TODO(crbug.com/1267731): Remove this flag once the experiments are completed.
- const base::Feature kOmniboxTriggerForNoStatePrefetch{
- "OmniboxTriggerForNoStatePrefetch", base::FEATURE_ENABLED_BY_DEFAULT};
- #if BUILDFLAG(IS_CHROMEOS_ASH)
- // A feature to indicate whether setting wake time >24hours away is supported by
- // the platform's RTC.
- // TODO(b/187516317): Remove when the issue is resolved in FW.
- const base::Feature kSupportsRtcWakeOver24Hours{
- "SupportsRtcWakeOver24Hours", base::FEATURE_ENABLED_BY_DEFAULT};
- #endif // BUILDFLAG(IS_CHROMEOS_ASH)
- const base::Feature kUseWebAppDBInsteadOfExternalPrefs{
- "UseWebAppDBInsteadOfExternalPrefs", base::FEATURE_ENABLED_BY_DEFAULT};
- } // namespace features
|