blob: daa96c96f01eee8e7d7d3d63c73ada57a7d0c0c0 [file] [log] [blame]
Avi Drissman64595482022-09-14 20:52:291// Copyright 2018 The Chromium Authors
Mythri Alle030e8f892018-10-09 14:58:172// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
Mythri Alle030e8f892018-10-09 14:58:175#include "net/base/features.h"
Daniel McArdle4705fd32020-05-18 21:44:146
Tom Van Goethem8f760752025-04-24 01:28:537#include <string>
Daniel McArdle4705fd32020-05-18 21:44:148#include <vector>
9
Olivier Lid1b497c2021-07-21 15:35:2710#include "base/feature_list.h"
Matt Muellerc136bf52020-01-07 01:35:4111#include "build/build_config.h"
Liza Burakova7ac2b962023-07-11 16:06:2712#include "net/base/cronet_buildflags.h"
Tsuyoshi Horo80d4be622025-07-29 07:26:1913#include "net/disk_cache/buildflags.h"
Matt Mueller8b02b1902023-03-07 00:06:3614#include "net/net_buildflags.h"
Keita Suzuki9824dd32025-09-01 13:54:0215#include "net/third_party/quiche/src/quiche/quic/core/quic_constants.h"
Mythri Alle030e8f892018-10-09 14:58:1716
Ari Chivukula70b4390c2025-05-23 13:12:2717#if BUILDFLAG(IS_WIN)
18#include "base/win/windows_version.h"
19#endif
20
Tsuyoshi Horo4f516be2022-06-14 11:53:1321namespace net::features {
Mythri Alle030e8f892018-10-09 14:58:1722
Xiaohan Wange9e65e32025-09-04 20:53:4223BASE_FEATURE(kAlpsForHttp2, base::FEATURE_ENABLED_BY_DEFAULT);
Bence Békycfb16812021-04-01 21:30:4524
Xiaohan Wange9e65e32025-09-04 20:53:4225BASE_FEATURE(kAvoidH2Reprioritization, base::FEATURE_DISABLED_BY_DEFAULT);
Xiaohan Wangbe493172025-08-19 19:58:5726
Xiaohan Wange9e65e32025-09-04 20:53:4227BASE_FEATURE(kCapReferrerToOriginOnCrossOrigin,
Daniel Cheng2fff35702022-09-21 16:44:5228 base::FEATURE_DISABLED_BY_DEFAULT);
Eric Orthfe639c22021-06-25 22:00:5529
Xiaohan Wange9e65e32025-09-04 20:53:4230BASE_FEATURE(kAsyncDns,
Kenichi Ishibashi696c6de2024-01-30 00:37:3931#if BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_ANDROID) || \
32 BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX)
33 base::FEATURE_ENABLED_BY_DEFAULT
34#else
35 base::FEATURE_DISABLED_BY_DEFAULT
36#endif
37);
38
Xiaohan Wange9e65e32025-09-04 20:53:4239BASE_FEATURE(kDnsTransactionDynamicTimeouts, base::FEATURE_DISABLED_BY_DEFAULT);
Eric Orth24c8ed842020-10-16 21:23:3440
41const base::FeatureParam<double> kDnsTransactionTimeoutMultiplier{
42 &kDnsTransactionDynamicTimeouts, "DnsTransactionTimeoutMultiplier", 7.5};
43
44const base::FeatureParam<base::TimeDelta> kDnsMinTransactionTimeout{
45 &kDnsTransactionDynamicTimeouts, "DnsMinTransactionTimeout",
Peter Kastinge5a38ed2021-10-02 03:06:3546 base::Seconds(12)};
Eric Orth24c8ed842020-10-16 21:23:3447
Xiaohan Wange9e65e32025-09-04 20:53:4248BASE_FEATURE(kUseDnsHttpsSvcb, base::FEATURE_ENABLED_BY_DEFAULT);
Eric Orthfe639c22021-06-25 22:00:5549
Eric Orthfe639c22021-06-25 22:00:5550const base::FeatureParam<bool> kUseDnsHttpsSvcbEnforceSecureResponse{
51 &kUseDnsHttpsSvcb, "UseDnsHttpsSvcbEnforceSecureResponse", false};
52
Eric Orth50f10c12022-04-07 19:48:0253const base::FeatureParam<base::TimeDelta> kUseDnsHttpsSvcbInsecureExtraTimeMax{
54 &kUseDnsHttpsSvcb, "UseDnsHttpsSvcbInsecureExtraTimeMax",
Eric Orth4f7ca9f2022-08-23 18:21:5255 base::Milliseconds(50)};
Eric Orth50f10c12022-04-07 19:48:0256
57const base::FeatureParam<int> kUseDnsHttpsSvcbInsecureExtraTimePercent{
Eric Orth4f7ca9f2022-08-23 18:21:5258 &kUseDnsHttpsSvcb, "UseDnsHttpsSvcbInsecureExtraTimePercent", 20};
Eric Orth50f10c12022-04-07 19:48:0259
60const base::FeatureParam<base::TimeDelta> kUseDnsHttpsSvcbInsecureExtraTimeMin{
61 &kUseDnsHttpsSvcb, "UseDnsHttpsSvcbInsecureExtraTimeMin",
Eric Orth4f7ca9f2022-08-23 18:21:5262 base::Milliseconds(5)};
Eric Orth50f10c12022-04-07 19:48:0263
64const base::FeatureParam<base::TimeDelta> kUseDnsHttpsSvcbSecureExtraTimeMax{
Eric Orth4f7ca9f2022-08-23 18:21:5265 &kUseDnsHttpsSvcb, "UseDnsHttpsSvcbSecureExtraTimeMax",
66 base::Milliseconds(50)};
Eric Orth50f10c12022-04-07 19:48:0267
68const base::FeatureParam<int> kUseDnsHttpsSvcbSecureExtraTimePercent{
Eric Orth4f7ca9f2022-08-23 18:21:5269 &kUseDnsHttpsSvcb, "UseDnsHttpsSvcbSecureExtraTimePercent", 20};
Eric Orth50f10c12022-04-07 19:48:0270
71const base::FeatureParam<base::TimeDelta> kUseDnsHttpsSvcbSecureExtraTimeMin{
Eric Orth4f7ca9f2022-08-23 18:21:5272 &kUseDnsHttpsSvcb, "UseDnsHttpsSvcbSecureExtraTimeMin",
73 base::Milliseconds(5)};
Eric Orth50f10c12022-04-07 19:48:0274
Xiaohan Wange9e65e32025-09-04 20:53:4275BASE_FEATURE(kUseHostResolverCache, base::FEATURE_DISABLED_BY_DEFAULT);
Eric Orth0bd8e9952024-01-25 19:08:3376
Xiaohan Wange9e65e32025-09-04 20:53:4277BASE_FEATURE(kHappyEyeballsV3, base::FEATURE_DISABLED_BY_DEFAULT);
Kenichi Ishibashi1751e602024-04-15 00:53:0578
Tsuyoshi Horo9898b302023-07-20 01:26:4279const base::FeatureParam<int> kAlternativePortForGloballyReachableCheck{
80 &kUseAlternativePortForGloballyReachableCheck,
81 "AlternativePortForGloballyReachableCheck", 443};
82
Xiaohan Wange9e65e32025-09-04 20:53:4283BASE_FEATURE(kUseAlternativePortForGloballyReachableCheck,
Tsuyoshi Horo9898b302023-07-20 01:26:4284 base::FEATURE_DISABLED_BY_DEFAULT);
85
Xiaohan Wange9e65e32025-09-04 20:53:4286BASE_FEATURE(kEnableIPv6ReachabilityOverride,
87 base::FEATURE_DISABLED_BY_DEFAULT);
Kenichi Ishibashiae494c8e2023-10-10 03:43:1888
Alex Henriea986e772025-09-12 19:19:2389BASE_FEATURE(kMaintainConnectionsOnIpv6TempAddrChange,
90 base::FEATURE_DISABLED_BY_DEFAULT);
91
Xiaohan Wange9e65e32025-09-04 20:53:4292BASE_FEATURE(kEnableTLS13EarlyData, base::FEATURE_DISABLED_BY_DEFAULT);
Steven Valdez89a44ea92019-05-01 15:18:4993
Xiaohan Wange9e65e32025-09-04 20:53:4294BASE_FEATURE(kNetworkQualityEstimator, base::FEATURE_DISABLED_BY_DEFAULT);
Tarun Bansald2ef20c62019-03-12 21:43:3095
Yoshisato Yanagisawa506cdef2024-07-16 08:28:4896const base::FeatureParam<int> kRecentHTTPThresholdInSeconds{
97 &kNetworkQualityEstimator, "RecentHTTPThresholdInSeconds", -1};
98const base::FeatureParam<int> kRecentTransportThresholdInSeconds{
99 &kNetworkQualityEstimator, "RecentTransportThresholdInSeconds", -1};
100const base::FeatureParam<int> kRecentEndToEndThresholdInSeconds{
101 &kNetworkQualityEstimator, "RecentEndToEndThresholdInSeconds", -1};
Yoshisato Yanagisawa0b2c4362024-07-19 05:51:41102const base::FeatureParam<int> kCountNewObservationsReceivedComputeEct{
103 &kNetworkQualityEstimator, "CountNewObservationsReceivedComputeEct", 50};
104const base::FeatureParam<int> kObservationBufferSize{
105 &kNetworkQualityEstimator, "ObservationBufferSize", 300};
106const base::FeatureParam<base::TimeDelta>
107 kEffectiveConnectionTypeRecomputationInterval{
108 &kNetworkQualityEstimator,
109 "EffectiveConnectionTypeRecomputationInterval", base::Seconds(10)};
Yoshisato Yanagisawa506cdef2024-07-16 08:28:48110
Xiaohan Wange9e65e32025-09-04 20:53:42111BASE_FEATURE(kSplitCacheByIncludeCredentials,
112 base::FEATURE_DISABLED_BY_DEFAULT);
Arthur Sonzogni54013f22021-09-03 14:57:12113
Xiaohan Wange9e65e32025-09-04 20:53:42114BASE_FEATURE(kSplitCacheByNetworkIsolationKey,
Daniel Cheng2fff35702022-09-21 16:44:52115 base::FEATURE_DISABLED_BY_DEFAULT);
Josh Karlinf3caee1642018-12-10 22:54:27116
Andrew Williams8bea9cb2025-03-13 15:08:56117// Note: Use of this feature is gated on the HTTP cache itself being
118// partitioned, which is controlled by the kSplitCacheByNetworkIsolationKey
119// feature.
Xiaohan Wange9e65e32025-09-04 20:53:42120BASE_FEATURE(kSplitCacheByCrossSiteMainFrameNavigationBoolean,
Andrew Williams8bea9cb2025-03-13 15:08:56121 base::FEATURE_ENABLED_BY_DEFAULT);
Andrew Williamsaeeec53b2024-08-20 22:32:30122
Xiaohan Wange9e65e32025-09-04 20:53:42123BASE_FEATURE(kSplitCodeCacheByNetworkIsolationKey,
Andrew Williamsd5fa8ad02023-03-21 21:15:43124 base::FEATURE_DISABLED_BY_DEFAULT);
125
Xiaohan Wange9e65e32025-09-04 20:53:42126BASE_FEATURE(kPartitionConnectionsByNetworkIsolationKey,
Daniel Cheng2fff35702022-09-21 16:44:52127 base::FEATURE_DISABLED_BY_DEFAULT);
Matt Menke166443c2019-05-24 18:45:59128
Xiaohan Wange9e65e32025-09-04 20:53:42129BASE_FEATURE(kPrefixCookieHttp, base::FEATURE_ENABLED_BY_DEFAULT);
Yoav Weiss871400e2025-06-25 05:49:57130
Xiaohan Wange9e65e32025-09-04 20:53:42131BASE_FEATURE(kPrefixCookieHostHttp, base::FEATURE_ENABLED_BY_DEFAULT);
Yoav Weiss5c096a7e2025-06-25 18:48:01132
Xiaohan Wange9e65e32025-09-04 20:53:42133BASE_FEATURE(kSearchEnginePreconnectInterval,
134 base::FEATURE_DISABLED_BY_DEFAULT);
Keita Suzuki68315bc2025-01-10 00:44:38135
Keita Suzuki468c59fc2025-10-02 04:49:44136BASE_FEATURE(kSearchEnginePreconnect2, base::FEATURE_ENABLED_BY_DEFAULT);
Keita Suzukic06fdca2025-04-08 06:21:46137
Keita Suzuki51ed960c2025-04-22 09:27:07138BASE_FEATURE_PARAM(int,
139 kIdleTimeoutInSeconds,
140 &kSearchEnginePreconnect2,
141 "IdleTimeoutInSeconds",
Keita Suzuki468c59fc2025-10-02 04:49:44142 30);
Keita Suzuki51ed960c2025-04-22 09:27:07143
Keita Suzukia4677332025-04-22 09:25:56144BASE_FEATURE_PARAM(base::TimeDelta,
145 kShortSessionThreshold,
146 &kSearchEnginePreconnect2,
Keita Suzuki7e43a222025-05-02 08:56:17147 "MaxShortSessionThreshold",
Keita Suzukia4677332025-04-22 09:25:56148 base::Seconds(30));
149
Keita Suzukic06fdca2025-04-08 06:21:46150extern const base::FeatureParam<int> kMaxPreconnectRetryInterval(
151 &kSearchEnginePreconnect2,
152 "MaxPreconnectRetryInterval",
153 30);
154
Keita Suzuki51ed960c2025-04-22 09:27:07155BASE_FEATURE_PARAM(int,
156 kPingIntervalInSeconds,
157 &kSearchEnginePreconnect2,
158 "PingIntervalInSeconds",
Keita Suzuki468c59fc2025-10-02 04:49:44159 27);
Keita Suzuki51ed960c2025-04-22 09:27:07160
Keita Suzuki6ae19def12025-06-11 04:09:31161BASE_FEATURE_PARAM(std::string,
162 kQuicConnectionOptions,
163 &kSearchEnginePreconnect2,
164 "QuicConnectionOptions",
Keita Suzuki468c59fc2025-10-02 04:49:44165 "ECCP");
Keita Suzuki6ae19def12025-06-11 04:09:31166
Keita Suzukicf1acdb2025-08-08 12:00:35167BASE_FEATURE_PARAM(bool,
168 kFallbackInLowPowerMode,
169 &kSearchEnginePreconnect2,
170 "FallbackInLowPowerMode",
171 false);
172
Xiaohan Wange9e65e32025-09-04 20:53:42173BASE_FEATURE(kShortLaxAllowUnsafeThreshold, base::FEATURE_DISABLED_BY_DEFAULT);
Xiaohan Wangbe493172025-08-19 19:58:57174
Xiaohan Wange9e65e32025-09-04 20:53:42175BASE_FEATURE(kSameSiteDefaultChecksMethodRigorously,
Daniel Cheng2fff35702022-09-21 16:44:52176 base::FEATURE_DISABLED_BY_DEFAULT);
Lily Chenfcddec62019-10-02 20:25:32177
Xiaohan Wange9e65e32025-09-04 20:53:42178BASE_FEATURE(kTimeoutTcpConnectAttempt, base::FEATURE_DISABLED_BY_DEFAULT);
Eric Romanc1c427a2020-10-01 17:29:01179
180extern const base::FeatureParam<double> kTimeoutTcpConnectAttemptRTTMultiplier(
181 &kTimeoutTcpConnectAttempt,
182 "TimeoutTcpConnectAttemptRTTMultiplier",
183 5.0);
184
185extern const base::FeatureParam<base::TimeDelta> kTimeoutTcpConnectAttemptMin(
186 &kTimeoutTcpConnectAttempt,
187 "TimeoutTcpConnectAttemptMin",
Peter Kastinge5a38ed2021-10-02 03:06:35188 base::Seconds(8));
Eric Romanc1c427a2020-10-01 17:29:01189
190extern const base::FeatureParam<base::TimeDelta> kTimeoutTcpConnectAttemptMax(
191 &kTimeoutTcpConnectAttempt,
192 "TimeoutTcpConnectAttemptMax",
Peter Kastinge5a38ed2021-10-02 03:06:35193 base::Seconds(30));
Eric Romanc1c427a2020-10-01 17:29:01194
Xiaohan Wange9e65e32025-09-04 20:53:42195BASE_FEATURE(kCookieSameSiteConsidersRedirectChain,
Daniel Cheng2fff35702022-09-21 16:44:52196 base::FEATURE_DISABLED_BY_DEFAULT);
Lily Chenf70a68d92021-06-03 01:01:41197
Xiaohan Wange9e65e32025-09-04 20:53:42198BASE_FEATURE(kAllowSameSiteNoneCookiesInSandbox,
Anusha Muley5d7f45f32025-03-14 15:59:58199 base::FEATURE_ENABLED_BY_DEFAULT);
Anusha Muleyb25e4d9b2024-10-22 13:15:41200
Xiaohan Wange9e65e32025-09-04 20:53:42201BASE_FEATURE(kWaitForFirstPartySetsInit, base::FEATURE_DISABLED_BY_DEFAULT);
Chris Fredrickson56234ce2023-06-26 22:13:13202
Chris Fredrickson2f66b942023-12-15 20:38:49203// Controls the maximum time duration an outermost frame navigation should be
204// deferred by RWS initialization.
205extern const base::FeatureParam<base::TimeDelta>
206 kWaitForFirstPartySetsInitNavigationThrottleTimeout{
207 &kWaitForFirstPartySetsInit,
208 "kWaitForFirstPartySetsInitNavigationThrottleTimeout",
209 base::Seconds(0)};
210
Xiaohan Wange9e65e32025-09-04 20:53:42211BASE_FEATURE(kRequestStorageAccessNoCorsRequired,
selya4ba5d3572024-12-20 20:25:05212 base::FEATURE_DISABLED_BY_DEFAULT);
213
Xiaohan Wange9e65e32025-09-04 20:53:42214BASE_FEATURE(kStorageAccessApiFollowsSameOriginPolicy,
Chris Fredrickson6a8eefe2025-08-08 14:57:42215 base::FEATURE_ENABLED_BY_DEFAULT);
Chris Fredricksona7d082d2025-01-07 04:03:32216
Xiaohan Wange9e65e32025-09-04 20:53:42217BASE_FEATURE(kStaticKeyPinningEnforcement, base::FEATURE_ENABLED_BY_DEFAULT);
Carlos ILf12eac92022-05-12 02:19:53218
Xiaohan Wange9e65e32025-09-04 20:53:42219BASE_FEATURE(kCookieDomainRejectNonASCII, base::FEATURE_DISABLED_BY_DEFAULT);
Johann Hofmann373f5992022-06-03 09:22:18220
Chris Fredricksone139a8d72022-08-10 22:58:06221// Enables partitioning of third party storage (IndexedDB, CacheStorage, etc.)
222// by the top level site to reduce fingerprinting.
Xiaohan Wange9e65e32025-09-04 20:53:42223BASE_FEATURE(kThirdPartyStoragePartitioning, base::FEATURE_ENABLED_BY_DEFAULT);
Kyraf5d8c2cc2023-09-28 02:01:16224
Joshua Hoodd9083163f2024-01-18 14:49:10225BASE_FEATURE(kTpcdTrialSettings,
Joshua Hood0b269e32023-08-04 18:10:54226 "TpcdSupportSettings",
Joshua Hood3f0d6442023-12-07 16:23:47227 base::FEATURE_ENABLED_BY_DEFAULT);
Joshua Hood0b269e32023-08-04 18:10:54228
Joshua Hoodd9083163f2024-01-18 14:49:10229BASE_FEATURE(kTopLevelTpcdTrialSettings,
Joshua Hoode0e1ac6a2024-01-12 14:43:57230 "TopLevelTpcdSupportSettings",
Joshua Hoodaf55f672024-07-23 19:56:28231 base::FEATURE_ENABLED_BY_DEFAULT);
Joshua Hoode0e1ac6a2024-01-12 14:43:57232
Xiaohan Wange9e65e32025-09-04 20:53:42233BASE_FEATURE(kTpcdMetadataGrants, base::FEATURE_ENABLED_BY_DEFAULT);
Jonathan Njeunje70e46a22023-08-25 14:58:45234
Xiaohan Wange9e65e32025-09-04 20:53:42235BASE_FEATURE(kTpcdMetadataStageControl, base::FEATURE_ENABLED_BY_DEFAULT);
Jonathan Njeunjefac83d32024-03-28 15:02:56236
Xiaohan Wange9e65e32025-09-04 20:53:42237BASE_FEATURE(kAlpsParsing, base::FEATURE_ENABLED_BY_DEFAULT);
Ari Chivukula369a96a02022-08-22 17:52:22238
Xiaohan Wange9e65e32025-09-04 20:53:42239BASE_FEATURE(kAlpsClientHintParsing, base::FEATURE_ENABLED_BY_DEFAULT);
Ari Chivukula33a8977162022-08-25 11:53:59240
Xiaohan Wange9e65e32025-09-04 20:53:42241BASE_FEATURE(kShouldKillSessionOnAcceptChMalformed,
Daniel Cheng2fff35702022-09-21 16:44:52242 base::FEATURE_DISABLED_BY_DEFAULT);
Ari Chivukula33a8977162022-08-25 11:53:59243
Xiaohan Wange9e65e32025-09-04 20:53:42244BASE_FEATURE(kEnableWebsocketsOverHttp3, base::FEATURE_DISABLED_BY_DEFAULT);
Momoka Yamamotof7962482022-10-07 13:56:10245
David Benjamin88493202022-11-12 14:22:35246#if BUILDFLAG(IS_WIN)
Will Harrise6fea7f2023-10-19 02:47:32247// Disabled because of https://crbug.com/1489696.
Xiaohan Wange9e65e32025-09-04 20:53:42248BASE_FEATURE(kEnableGetNetworkConnectivityHintAPI,
Will Harrise6fea7f2023-10-19 02:47:32249 base::FEATURE_DISABLED_BY_DEFAULT);
Erik Andersonde9ae7d2024-04-23 04:20:16250
Xiaohan Wange9e65e32025-09-04 20:53:42251BASE_FEATURE(kTcpPortRandomizationWin, base::FEATURE_ENABLED_BY_DEFAULT);
François Doray70382d02024-09-19 16:28:45252
Ari Chivukula70b4390c2025-05-23 13:12:27253BASE_FEATURE_PARAM(int,
254 kTcpPortRandomizationWinVersionMinimum,
255 &kTcpPortRandomizationWin,
256 "TcpPortRandomizationWinVersionMinimum",
Ari Chivukula9173d602025-06-20 14:58:23257 static_cast<int>(base::win::Version::WIN11_22H2));
Ari Chivukula70b4390c2025-05-23 13:12:27258
Xiaohan Wange9e65e32025-09-04 20:53:42259BASE_FEATURE(kTcpPortReuseMetricsWin, base::FEATURE_ENABLED_BY_DEFAULT);
Ari Chivukula16e17792025-06-06 03:43:21260
Xiaohan Wange9e65e32025-09-04 20:53:42261BASE_FEATURE(kTcpSocketIoCompletionPortWin, base::FEATURE_DISABLED_BY_DEFAULT);
David Benjamin88493202022-11-12 14:22:35262#endif
263
Xiaohan Wange9e65e32025-09-04 20:53:42264BASE_FEATURE(kAvoidEntryCreationForNoStore, base::FEATURE_DISABLED_BY_DEFAULT);
Olivier Li Shing Tat-Dupuis1e069dd2024-05-10 18:15:42265const base::FeatureParam<int> kAvoidEntryCreationForNoStoreCacheSize{
266 &kAvoidEntryCreationForNoStore, "AvoidEntryCreationForNoStoreCacheSize",
267 1000};
268
slutskii4171f8b72023-03-01 23:46:06269// A flag for new Kerberos feature, that suggests new UI
270// when Kerberos authentication in browser fails on ChromeOS.
271// b/260522530
272#if BUILDFLAG(IS_CHROMEOS)
Xiaohan Wange9e65e32025-09-04 20:53:42273BASE_FEATURE(kKerberosInBrowserRedirect, base::FEATURE_ENABLED_BY_DEFAULT);
slutskii4171f8b72023-03-01 23:46:06274#endif
275
Liza Burakova86312a82023-03-23 21:24:49276// A flag to use asynchronous session creation for new QUIC sessions.
Xiaohan Wange9e65e32025-09-04 20:53:42277BASE_FEATURE(kAsyncQuicSession,
Will Harris10dcebaf2023-08-01 17:42:15278#if BUILDFLAG(IS_WIN)
279 base::FEATURE_ENABLED_BY_DEFAULT);
280#else
Liza Burakova86312a82023-03-23 21:24:49281 base::FEATURE_DISABLED_BY_DEFAULT);
Will Harris10dcebaf2023-08-01 17:42:15282#endif
Liza Burakova86312a82023-03-23 21:24:49283
Liza Burakova7ac2b962023-07-11 16:06:27284// A flag to make multiport context creation asynchronous.
Xiaohan Wange9e65e32025-09-04 20:53:42285BASE_FEATURE(kAsyncMultiPortPath,
Liza Burakova7ac2b962023-07-11 16:06:27286#if !BUILDFLAG(CRONET_BUILD) && (BUILDFLAG(IS_WIN) || BUILDFLAG(IS_ANDROID))
287 base::FEATURE_ENABLED_BY_DEFAULT);
288#else
289 base::FEATURE_DISABLED_BY_DEFAULT);
290#endif
291
Ryan Kalla08ff1dc2025-04-03 12:49:19292// Probabilistic reveal tokens configuration settings
Xiaohan Wange9e65e32025-09-04 20:53:42293BASE_FEATURE(kEnableProbabilisticRevealTokens,
Ryan Kalla08ff1dc2025-04-03 12:49:19294 base::FEATURE_DISABLED_BY_DEFAULT);
295
296const base::FeatureParam<std::string> kProbabilisticRevealTokenServer{
297 &kEnableProbabilisticRevealTokens,
298 /*name=*/"ProbabilisticRevealTokenServer",
299 /*default_value=*/"https://aaftokenissuer.pa.googleapis.com"};
300
301const base::FeatureParam<std::string> kProbabilisticRevealTokenServerPath{
302 &kEnableProbabilisticRevealTokens,
303 /*name=*/"ProbabilisticRevealTokenServerPath",
304 /*default_value=*/"/v1/issueprts"};
305
Ryan Kallaeda9eec2025-04-25 21:27:15306const base::FeatureParam<bool> kBypassProbabilisticRevealTokenRegistry{
307 &kEnableProbabilisticRevealTokens,
308 /*name=*/"BypassProbabilisticRevealTokenRegistry",
309 /*default_value=*/false};
310
311const base::FeatureParam<bool> kUseCustomProbabilisticRevealTokenRegistry{
312 &kEnableProbabilisticRevealTokens,
313 /*name=*/"UseCustomProbabilisticRevealTokenRegistry",
314 /*default_value=*/false};
315
316const base::FeatureParam<std::string> kCustomProbabilisticRevealTokenRegistry{
317 &kEnableProbabilisticRevealTokens,
318 /*name=*/"CustomProbabilisticRevealTokenRegistry",
319 /*default_value=*/""};
320
321const base::FeatureParam<bool> kProbabilisticRevealTokensOnlyInIncognito{
322 &kEnableProbabilisticRevealTokens,
323 /*name=*/"ProbabilisticRevealTokensOnlyInIncognito",
324 /*default_value=*/false};
325
326const base::FeatureParam<bool> kProbabilisticRevealTokenFetchOnly{
327 &kEnableProbabilisticRevealTokens,
328 /*name=*/"ProbabilisticRevealTokenFetchOnly",
329 /*default_value=*/false};
330
Ryan Kalla08ff1dc2025-04-03 12:49:19331const base::FeatureParam<bool>
Ryan Kallaeda9eec2025-04-25 21:27:15332 kEnableProbabilisticRevealTokensForNonProxiedRequests{
Ryan Kalla08ff1dc2025-04-03 12:49:19333 &kEnableProbabilisticRevealTokens,
Ryan Kallaeda9eec2025-04-25 21:27:15334 /*name=*/"EnableProbabilisticRevealTokensForNonProxiedRequests",
Ryan Kalla08ff1dc2025-04-03 12:49:19335 /*default_value=*/false};
336
Aykut Bulut331b0e22025-04-25 00:58:40337const base::FeatureParam<bool>
338 kProbabilisticRevealTokensAddHeaderToProxiedRequests{
339 &kEnableProbabilisticRevealTokens,
340 /*name=*/"ProbabilisticRevealTokensAddHeaderToProxiedRequests",
341 /*default_value=*/false};
342
Brianna Goldsteinf457c2f2023-03-15 00:36:50343// IP protection experiment configuration settings
344BASE_FEATURE(kEnableIpProtectionProxy,
345 "EnableIpPrivacyProxy",
346 base::FEATURE_DISABLED_BY_DEFAULT);
347
Andrew Williams3b434e92023-08-23 01:49:24348const base::FeatureParam<std::string> kIpPrivacyTokenServer{
349 &kEnableIpProtectionProxy, /*name=*/"IpPrivacyTokenServer",
Ciara McMullin60a5a2ac2024-10-28 16:28:21350 /*default_value=*/"https://prod.ipprotectionauth.goog"};
Andrew Williams3b434e92023-08-23 01:49:24351
352const base::FeatureParam<std::string> kIpPrivacyTokenServerGetInitialDataPath{
353 &kEnableIpProtectionProxy,
354 /*name=*/"IpPrivacyTokenServerGetInitialDataPath",
Andrew Williams82f6fdf72023-09-08 22:59:26355 /*default_value=*/"/v1/ipblinding/getInitialData"};
Andrew Williams3b434e92023-08-23 01:49:24356
357const base::FeatureParam<std::string> kIpPrivacyTokenServerGetTokensPath{
358 &kEnableIpProtectionProxy, /*name=*/"IpPrivacyTokenServerGetTokensPath",
Andrew Williams82f6fdf72023-09-08 22:59:26359 /*default_value=*/"/v1/ipblinding/auth"};
Andrew Williams3b434e92023-08-23 01:49:24360
Dustin J. Mitchellc9fa2482023-09-05 22:54:55361const base::FeatureParam<std::string> kIpPrivacyTokenServerGetProxyConfigPath{
362 &kEnableIpProtectionProxy,
363 /*name=*/"IpPrivacyTokenServerGetProxyConfigPath",
364 /*default_value=*/"/v1/ipblinding/getProxyConfig"};
365
Dustin J. Mitchell323bb0b2023-08-16 13:26:08366const base::FeatureParam<int> kIpPrivacyAuthTokenCacheBatchSize{
367 &kEnableIpProtectionProxy, /*name=*/"IpPrivacyAuthTokenCacheBatchSize",
368 /*default_value=*/64};
369
370const base::FeatureParam<int> kIpPrivacyAuthTokenCacheLowWaterMark{
371 &kEnableIpProtectionProxy, /*name=*/"IpPrivacyAuthTokenCacheLowWaterMark",
372 /*default_value=*/16};
373
Dustin J. Mitchellc69f62782023-09-01 12:56:03374const base::FeatureParam<base::TimeDelta> kIpPrivacyProxyListFetchInterval{
375 &kEnableIpProtectionProxy, /*name=*/"IpPrivacyProxyListFetchInterval",
376 /*default_value=*/base::Hours(1)};
377
378const base::FeatureParam<base::TimeDelta> kIpPrivacyProxyListMinFetchInterval{
379 &kEnableIpProtectionProxy, /*name=*/"IpPrivacyProxyMinListFetchInterval",
380 /*default_value=*/base::Minutes(1)};
381
Ciara McMullin6f72d102024-09-06 17:26:14382const base::FeatureParam<base::TimeDelta> kIpPrivacyProxyListFetchIntervalFuzz{
383 &kEnableIpProtectionProxy, /*name=*/"IpPrivacyProxyListFetchIntervalFuzz",
384 /*default_value=*/base::Minutes(30)};
385
Dustin J. Mitchellc69f62782023-09-01 12:56:03386const base::FeatureParam<bool> kIpPrivacyDirectOnly{
387 &kEnableIpProtectionProxy, /*name=*/"IpPrivacyDirectOnly",
388 /*default_value=*/false};
389
Raja Abdulhaqe7393442023-12-21 22:11:56390const base::FeatureParam<bool> kIpPrivacyIncludeOAuthTokenInGetProxyConfig{
391 &kEnableIpProtectionProxy,
392 /*name=*/"IpPrivacyIncludeOAuthTokenInGetProxyConfig",
393 /*default_value=*/false};
394
Scott Hendrickson1768ab1a2023-12-06 13:09:42395const base::FeatureParam<std::string> kIpPrivacyProxyAHostnameOverride{
396 &kEnableIpProtectionProxy, /*name=*/"IpPrivacyProxyAHostnameOverride",
397 /*default_value=*/""};
398
399const base::FeatureParam<std::string> kIpPrivacyProxyBHostnameOverride{
400 &kEnableIpProtectionProxy, /*name=*/"IpPrivacyProxyBHostnameOverride",
401 /*default_value=*/""};
402
Andrew Williams21904d4e2024-01-03 21:35:25403const base::FeatureParam<bool> kIpPrivacyAddHeaderToProxiedRequests{
404 &kEnableIpProtectionProxy, /*name=*/"IpPrivacyAddHeaderToProxiedRequests",
405 /*default_value=*/false};
406
Dustin J. Mitchell274291b2024-02-15 15:38:54407const base::FeatureParam<base::TimeDelta> kIpPrivacyExpirationFuzz{
408 &kEnableIpProtectionProxy, /*name=*/"IpPrivacyExpirationFuzz",
409 /*default_value=*/base::Minutes(15)};
410
Ciara McMullin975baea2024-11-19 22:09:59411const base::FeatureParam<base::TimeDelta>
412 kIpPrivacyTryGetAuthTokensNotEligibleBackoff{
413 &kEnableIpProtectionProxy,
414 /*name=*/"IpPrivacyTryGetAuthTokensNotEligibleBackoff",
Ciara McMullin2a1b7942024-12-10 15:14:05415 /*default_value=*/base::Hours(1)};
Ciara McMullin975baea2024-11-19 22:09:59416
417const base::FeatureParam<base::TimeDelta>
418 kIpPrivacyTryGetAuthTokensTransientBackoff{
419 &kEnableIpProtectionProxy,
420 /*name=*/"IpPrivacyTryGetAuthTokensTransientBackoff",
421 /*default_value=*/base::Seconds(5)};
422
423const base::FeatureParam<base::TimeDelta> kIpPrivacyTryGetAuthTokensBugBackoff{
424 &kEnableIpProtectionProxy, /*name=*/"IpPrivacyTryGetAuthTokensBugBackoff",
425 /*default_value=*/base::Minutes(10)};
426
Ron Sailer5ac7dd62025-09-15 18:13:43427const base::FeatureParam<double> kIpPrivacyBackoffJitter{
428 &kEnableIpProtectionProxy, /*name=*/"IpPrivacyBackoffJitter",
429 /*default_value=*/0.25};
430
Andrew Williams1828d1f2024-03-11 16:57:42431const base::FeatureParam<bool> kIpPrivacyRestrictTopLevelSiteSchemes{
432 &kEnableIpProtectionProxy,
433 /*name=*/"IpPrivacyRestrictTopLevelSiteSchemes",
434 /*default_value=*/true};
435
Dustin J. Mitchella3030132024-04-09 16:12:50436const base::FeatureParam<bool> kIpPrivacyUseQuicProxies{
437 &kEnableIpProtectionProxy,
438 /*name=*/"IpPrivacyUseQuicProxies",
439 /*default_value=*/false};
440
441const base::FeatureParam<bool> kIpPrivacyUseQuicProxiesOnly{
442 &kEnableIpProtectionProxy,
443 /*name=*/"IpPrivacyUseQuicProxiesOnly",
444 /*default_value=*/false};
445
Alex Kallamfee6c9d2025-10-08 17:59:42446const base::FeatureParam<bool>
447 kIpPrivacyUseQuicProxiesWithoutWaitingForConnectResponse{
448 &kEnableIpProtectionProxy,
449 /*name=*/"IpPrivacyUseQuicProxiesWithoutWaitingForConnectResponse",
450 /*default_value=*/false};
451
Dustin J. Mitchell583df5d2024-04-18 20:50:31452const base::FeatureParam<bool> kIpPrivacyFallbackToDirect{
453 &kEnableIpProtectionProxy,
454 /*name=*/"IpPrivacyFallbackToDirect",
455 /*default_value=*/true};
456
Dustin J. Mitchell7cfca7082024-06-04 21:06:09457const base::FeatureParam<int> kIpPrivacyDebugExperimentArm{
458 &kEnableIpProtectionProxy,
459 /*name=*/"IpPrivacyDebugExperimentArm",
460 /*default_value=*/0};
461
Abhi Patel9b7ac032024-10-25 15:25:45462const base::FeatureParam<bool> kIpPrivacyAlwaysCreateCore{
463 &kEnableIpProtectionProxy,
464 /*name=*/"IpPrivacyAlwaysCreateCore",
465 /*default_value=*/false};
466
Abhi Patel7ee8b4d2024-11-01 21:06:08467const base::FeatureParam<bool> kIpPrivacyOnlyInIncognito{
468 &kEnableIpProtectionProxy,
469 /*name=*/"IpPrivacyOnlyInIncognito",
470 /*default_value=*/false};
471
Abhi Pateld00da532025-02-28 18:59:24472const base::FeatureParam<bool> kIpPrivacyEnableUserBypass{
473 &kEnableIpProtectionProxy,
474 /*name=*/"IpPrivacyEnableUserBypass",
475 /*default_value=*/false};
476
Andrew Williamsb24c0a7f2025-05-08 13:12:34477const base::FeatureParam<bool> kIpPrivacyDisableForEnterpriseByDefault{
478 &kEnableIpProtectionProxy,
479 /*name=*/"IpPrivacyDisableForEnterpriseByDefault",
480 /*default_value=*/false};
481
Antonio Alphonsea50a8ef2025-06-18 15:39:17482const base::FeatureParam<bool> kIpPrivacyEnableIppInDevTools{
483 &kEnableIpProtectionProxy,
484 /*name=*/"IpPrivacyEnableIppInDevTools",
Antonio Alphonsee7656d62025-08-08 17:06:43485 /*default_value=*/true};
Antonio Alphonsea50a8ef2025-06-18 15:39:17486
Hannah Su2dc0c2e52025-07-15 10:21:18487const base::FeatureParam<bool> kIpPrivacyEnableIppPanelInDevTools{
488 &kEnableIpProtectionProxy,
clarejb922f4102025-09-04 15:44:01489 /*name=*/"IpPrivacyEnableIppPanelInDevTools",
Hannah Su2dc0c2e52025-07-15 10:21:18490 /*default_value=*/false};
491
Jon Toohill620e4502025-09-25 04:37:44492const base::FeatureParam<std::string> kIpPrivacyUnconditionalProxyDomainList{
493 &kEnableIpProtectionProxy,
494 /*name=*/"IpPrivacyUnconditionalProxyDomainList", /*default_value=*/""};
495
Xiaohan Wange9e65e32025-09-04 20:53:42496BASE_FEATURE(kEnableIpPrivacyProxyAdvancedFallbackLogic,
Andrew Williams222d496e2025-08-20 17:01:23497 base::FEATURE_ENABLED_BY_DEFAULT);
498
Mayur Patil34c593c2025-02-25 04:43:28499BASE_FEATURE(kExcludeLargeBodyReports,
500 "ExcludeLargeReportBodies",
501 base::FEATURE_ENABLED_BY_DEFAULT);
502
503BASE_FEATURE_PARAM(size_t,
504 kMaxReportBodySizeKB,
505 &kExcludeLargeBodyReports,
506 "max_report_body_size_kb",
507 1024);
508
Xiaohan Wange9e65e32025-09-04 20:53:42509BASE_FEATURE(kRelatedWebsitePartitionAPI, base::FEATURE_DISABLED_BY_DEFAULT);
Anusha Muleya893e9252025-04-08 21:16:07510
Stefano Duo73063a32023-04-04 14:06:51511// Network-change migration requires NetworkHandle support, which are currently
512// only supported on Android (see
513// NetworkChangeNotifier::AreNetworkHandlesSupported).
514#if BUILDFLAG(IS_ANDROID)
515inline constexpr auto kMigrateSessionsOnNetworkChangeV2Default =
Mohannad Farrag539128b2024-01-12 15:46:14516 base::FEATURE_ENABLED_BY_DEFAULT;
Stefano Duo73063a32023-04-04 14:06:51517#else // !BUILDFLAG(IS_ANDROID)
518inline constexpr auto kMigrateSessionsOnNetworkChangeV2Default =
519 base::FEATURE_DISABLED_BY_DEFAULT;
520#endif // BUILDFLAG(IS_ANDROID)
Xiaohan Wange9e65e32025-09-04 20:53:42521BASE_FEATURE(kMigrateSessionsOnNetworkChangeV2,
Stefano Duo73063a32023-04-04 14:06:51522 kMigrateSessionsOnNetworkChangeV2Default);
523
Mohannad Farraga6d8f8e2023-06-26 19:45:14524BASE_FEATURE(kDisableBlackholeOnNoNewNetwork,
525 "DisableBlackHoleOnNoNewNetwork",
526 base::FEATURE_DISABLED_BY_DEFAULT);
527
Matthew Dentonfa68c9c2023-04-17 07:39:31528#if BUILDFLAG(IS_LINUX)
Xiaohan Wange9e65e32025-09-04 20:53:42529BASE_FEATURE(kAddressTrackerLinuxIsProxied, base::FEATURE_ENABLED_BY_DEFAULT);
Matthew Dentonfa68c9c2023-04-17 07:39:31530#endif // BUILDFLAG(IS_LINUX)
531
sbingler62efd892023-05-03 19:06:20532// Enables binding of cookies to the port that originally set them by default.
Xiaohan Wange9e65e32025-09-04 20:53:42533BASE_FEATURE(kEnablePortBoundCookies, base::FEATURE_DISABLED_BY_DEFAULT);
sbingler62efd892023-05-03 19:06:20534
535// Enables binding of cookies to the scheme that originally set them.
536NET_EXPORT BASE_DECLARE_FEATURE(kEnableSchemeBoundCookies);
Xiaohan Wange9e65e32025-09-04 20:53:42537BASE_FEATURE(kEnableSchemeBoundCookies, base::FEATURE_DISABLED_BY_DEFAULT);
sbingler62efd892023-05-03 19:06:20538
amarjotgillf61674a2025-01-09 21:17:48539// Disallows cookies to have non ascii values in their name or value.
540NET_EXPORT BASE_DECLARE_FEATURE(kDisallowNonAsciiCookies);
Xiaohan Wange9e65e32025-09-04 20:53:42541BASE_FEATURE(kDisallowNonAsciiCookies, base::FEATURE_DISABLED_BY_DEFAULT);
amarjotgillf61674a2025-01-09 21:17:48542
Xiaohan Wange9e65e32025-09-04 20:53:42543BASE_FEATURE(kTimeLimitedInsecureCookies, base::FEATURE_DISABLED_BY_DEFAULT);
Carlos IL00ab134a2023-12-18 22:22:41544
Dylan Cutlerccf6d5422023-05-22 12:08:23545// Enable third-party cookie blocking from the command line.
546BASE_FEATURE(kForceThirdPartyCookieBlocking,
547 "ForceThirdPartyCookieBlockingEnabled",
548 base::FEATURE_DISABLED_BY_DEFAULT);
549
Xiaohan Wange9e65e32025-09-04 20:53:42550BASE_FEATURE(kEnableEarlyHintsOnHttp11, base::FEATURE_DISABLED_BY_DEFAULT);
Kenichi Ishibashi5ca5a1772023-06-13 06:32:11551
Xiaohan Wange9e65e32025-09-04 20:53:42552BASE_FEATURE(kEnableWebTransportDraft07, base::FEATURE_DISABLED_BY_DEFAULT);
Victor Vasiliev4f934962023-07-10 18:12:52553
Xiaohan Wange9e65e32025-09-04 20:53:42554BASE_FEATURE(kWebTransportFineGrainedThrottling,
Javier Fernández García-Boente628b71552025-06-23 20:26:54555 base::FEATURE_DISABLED_BY_DEFAULT);
556
sbinglere83ad48b2023-08-28 18:57:04557// When enabled, partitioned storage will be allowed even if third-party cookies
558// are disabled by default. Partitioned storage will not be allowed if
559// third-party cookies are disabled due to a specific rule.
Xiaohan Wange9e65e32025-09-04 20:53:42560BASE_FEATURE(kThirdPartyPartitionedStorageAllowedByDefault,
Steven Bingler6bf7d852023-09-29 22:15:40561 base::FEATURE_ENABLED_BY_DEFAULT);
sbinglere83ad48b2023-08-28 18:57:04562
Xiaohan Wange9e65e32025-09-04 20:53:42563BASE_FEATURE(kSpdyHeadersToHttpResponseUseBuilder,
Adam Rice9b9e7c522023-09-28 06:27:43564 base::FEATURE_DISABLED_BY_DEFAULT);
565
Xiaohan Wange9e65e32025-09-04 20:53:42566BASE_FEATURE(kUseNewAlpsCodepointHttp2, base::FEATURE_ENABLED_BY_DEFAULT);
Victor Tan914785302023-11-08 15:59:50567
Xiaohan Wange9e65e32025-09-04 20:53:42568BASE_FEATURE(kUseNewAlpsCodepointQUIC, base::FEATURE_ENABLED_BY_DEFAULT);
Victor Tan7ccd5fe2023-12-08 22:23:13569
Xiaohan Wange9e65e32025-09-04 20:53:42570BASE_FEATURE(kTruncateBodyToContentLength, base::FEATURE_ENABLED_BY_DEFAULT);
Nidhi Jaju7b37e012024-02-19 10:00:31571
Tsuyoshi Horo93f8e3b6e2024-03-11 04:04:22572#if BUILDFLAG(IS_MAC)
Xiaohan Wange9e65e32025-09-04 20:53:42573BASE_FEATURE(kReduceIPAddressChangeNotification,
Tsuyoshi Horo97338d7d2024-03-18 13:05:22574 base::FEATURE_ENABLED_BY_DEFAULT);
Tsuyoshi Horo93f8e3b6e2024-03-11 04:04:22575#endif // BUILDFLAG(IS_MAC)
576
Xiaohan Wange9e65e32025-09-04 20:53:42577BASE_FEATURE(kDeviceBoundSessions, base::FEATURE_DISABLED_BY_DEFAULT);
578BASE_FEATURE(kPersistDeviceBoundSessions, base::FEATURE_DISABLED_BY_DEFAULT);
Daniel Rubery2aaa0e32025-03-04 04:45:13579BASE_FEATURE_PARAM(bool,
Daniel Rubery0e066a12025-08-18 16:48:10580 kDeviceBoundSessionsRequireOriginTrialTokens,
Daniel Rubery2aaa0e32025-03-04 04:45:13581 &kDeviceBoundSessions,
Daniel Rubery0e066a12025-08-18 16:48:10582 "RequireOriginTrialTokens",
583 true);
584BASE_FEATURE_PARAM(bool,
585 kDeviceBoundSessionsRefreshQuota,
586 &kDeviceBoundSessions,
587 "RefreshQuota",
588 true);
589BASE_FEATURE_PARAM(bool,
590 kDeviceBoundSessionsCheckSubdomainRegistration,
591 &kDeviceBoundSessions,
592 "CheckSubdomainRegistration",
593 true);
thefrog536ad7332025-09-23 14:28:30594BASE_FEATURE_PARAM(int,
595 kDeviceBoundSessionsSchemaVersion,
596 &kDeviceBoundSessions,
597 "SchemaVersion",
598 1);
Daniel Ruberyffbfe832025-09-29 16:24:15599BASE_FEATURE_PARAM(bool,
600 kDeviceBoundSessionsOriginTrialFeedback,
601 &kDeviceBoundSessions,
602 "OriginTrialFeedback",
603 false);
Kristian Monsend56563ce2024-03-18 23:32:00604
Daniel Rubery1f4f4112025-09-25 17:31:35605BASE_FEATURE(kDeviceBoundSessionsFederatedRegistration,
606 base::FEATURE_DISABLED_BY_DEFAULT);
607BASE_FEATURE_PARAM(bool,
608 kDeviceBoundSessionsFederatedRegistrationCheckWellKnown,
609 &kDeviceBoundSessionsFederatedRegistration,
610 "CheckWellKnown",
611 true);
612
Xiaohan Wange9e65e32025-09-04 20:53:42613BASE_FEATURE(kSpdySessionForProxyAdditionalChecks,
Xiaohan Wangbe493172025-08-19 19:58:57614 base::FEATURE_ENABLED_BY_DEFAULT);
615
Xiaohan Wange9e65e32025-09-04 20:53:42616BASE_FEATURE(kCompressionDictionaryTransportRequireKnownRootCert,
Xiaohan Wangbe493172025-08-19 19:58:57617 base::FEATURE_ENABLED_BY_DEFAULT);
618
Xiaohan Wange9e65e32025-09-04 20:53:42619BASE_FEATURE(kReportingApiEnableEnterpriseCookieIssues,
Ciara McMullin46d9e912025-05-05 19:02:06620 base::FEATURE_DISABLED_BY_DEFAULT);
Dustin J. Mitchelle520f992024-05-30 17:23:26621
Xiaohan Wange9e65e32025-09-04 20:53:42622BASE_FEATURE(kSimdutfBase64Support,
Nidhi Jaju6295166b2025-07-31 07:55:33623#if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX)
624 base::FEATURE_ENABLED_BY_DEFAULT
625#else
626 base::FEATURE_DISABLED_BY_DEFAULT
627#endif
628);
Nidhi Jaju52b25dc62024-12-05 01:31:36629
Xiaohan Wange9e65e32025-09-04 20:53:42630BASE_FEATURE(kFurtherOptimizeParsingDataUrls, base::FEATURE_ENABLED_BY_DEFAULT);
Xiaohan Wangbe493172025-08-19 19:58:57631
Xiaohan Wange9e65e32025-09-04 20:53:42632BASE_FEATURE(kNoVarySearchIgnoreUnrecognizedKeys,
Nidhi Jaju84812c2a2024-12-06 02:14:28633 base::FEATURE_ENABLED_BY_DEFAULT);
634
Xiaohan Wange9e65e32025-09-04 20:53:42635BASE_FEATURE(kEnableStaticCTAPIEnforcement, base::FEATURE_ENABLED_BY_DEFAULT);
Jeremy Roman48f63142024-09-10 05:03:18636
Xiaohan Wange9e65e32025-09-04 20:53:42637BASE_FEATURE(kDiskCacheBackendExperiment, base::FEATURE_DISABLED_BY_DEFAULT);
Hayato Itoc91a3422024-10-10 02:19:07638constexpr base::FeatureParam<DiskCacheBackend>::Option
639 kDiskCacheBackendOptions[] = {
Tsuyoshi Horo80d4be622025-07-29 07:26:19640 {DiskCacheBackend::kDefault, "default"},
Hayato Itoc91a3422024-10-10 02:19:07641 {DiskCacheBackend::kSimple, "simple"},
642 {DiskCacheBackend::kBlockfile, "blockfile"},
Tsuyoshi Horo80d4be622025-07-29 07:26:19643#if BUILDFLAG(ENABLE_DISK_CACHE_SQL_BACKEND)
644 {DiskCacheBackend::kSql, "sql"},
645#endif // ENABLE_DISK_CACHE_SQL_BACKEND
Hayato Itoc91a3422024-10-10 02:19:07646};
647const base::FeatureParam<DiskCacheBackend> kDiskCacheBackendParam{
Tsuyoshi Horo80d4be622025-07-29 07:26:19648 &kDiskCacheBackendExperiment, "backend", DiskCacheBackend::kDefault,
Hayato Itoc91a3422024-10-10 02:19:07649 &kDiskCacheBackendOptions};
650
Tsuyoshi Horo03d95fc82025-09-12 04:24:50651#if BUILDFLAG(ENABLE_DISK_CACHE_SQL_BACKEND)
652BASE_FEATURE_PARAM(int,
653 kSqlDiskCacheForceCheckpointThreshold,
654 &kDiskCacheBackendExperiment,
655 "SqlDiskCacheForceCheckpointThreshold",
656 20000);
657BASE_FEATURE_PARAM(int,
658 kSqlDiskCacheIdleCheckpointThreshold,
659 &kDiskCacheBackendExperiment,
660 "SqlDiskCacheIdleCheckpointThreshold",
661 1000);
Tsuyoshi Horo40c33c52025-10-03 03:07:30662BASE_FEATURE_PARAM(int,
663 kSqlDiskCacheOptimisticWriteBufferSize,
664 &kDiskCacheBackendExperiment,
665 "SqlDiskCacheOptimisticWriteBufferSize",
666 32 * 1024 * 1024);
Tsuyoshi Horo03d95fc82025-09-12 04:24:50667#endif // ENABLE_DISK_CACHE_SQL_BACKEND
668
Xiaohan Wange9e65e32025-09-04 20:53:42669BASE_FEATURE(kIgnoreHSTSForLocalhost, base::FEATURE_ENABLED_BY_DEFAULT);
Eric Lawrencea5e738f22024-10-30 16:55:58670
Xiaohan Wange9e65e32025-09-04 20:53:42671BASE_FEATURE(kSimpleCachePrioritizedCaching, base::FEATURE_ENABLED_BY_DEFAULT);
Tsuyoshi Horo4be7529b2024-11-26 08:54:52672
673const base::FeatureParam<int>
674 kSimpleCachePrioritizedCachingPrioritizationFactor{
675 &kSimpleCachePrioritizedCaching,
676 /*name=*/"SimpleCachePrioritizedCachingPrioritizationFactor",
677 /*default_value=*/10};
678
679const base::FeatureParam<base::TimeDelta>
680 kSimpleCachePrioritizedCachingPrioritizationPeriod{
681 &kSimpleCachePrioritizedCaching,
682 /*name=*/"SimpleCachePrioritizedCachingPrioritizationPeriod",
683 /*default_value=*/base::Days(1)};
684
Xiaohan Wange9e65e32025-09-04 20:53:42685BASE_FEATURE(kHstsTopLevelNavigationsOnly, base::FEATURE_DISABLED_BY_DEFAULT);
sbinglere0bc0952024-12-13 18:09:12686
Hiroki Nakagawa79bb3d32025-07-30 08:45:43687#if BUILDFLAG(IS_WIN)
Xiaohan Wange9e65e32025-09-04 20:53:42688BASE_FEATURE(kHttpCacheMappedFileFlushWin, base::FEATURE_DISABLED_BY_DEFAULT);
Hiroki Nakagawa79bb3d32025-07-30 08:45:43689#endif
690
Hiroki Nakagawa9be15ca2025-09-29 23:06:09691BASE_FEATURE(kHttpCacheNoVarySearch,
Hiroki Nakagawa368bb622025-10-07 23:41:37692#if BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || \
693 BUILDFLAG(IS_CHROMEOS)
Hiroki Nakagawa9be15ca2025-09-29 23:06:09694 base::FEATURE_ENABLED_BY_DEFAULT
695#else
696 base::FEATURE_DISABLED_BY_DEFAULT
697#endif
698);
Adam Rice5d93dd5e2025-01-17 10:28:50699
700BASE_FEATURE_PARAM(size_t,
701 kHttpCacheNoVarySearchCacheMaxEntries,
702 &kHttpCacheNoVarySearch,
703 "max_entries",
704 1000);
705
Adam Rice7ff69ba2025-07-28 08:24:49706BASE_FEATURE_PARAM(bool,
707 kHttpCacheNoVarySearchPersistenceEnabled,
708 &kHttpCacheNoVarySearch,
709 "persistence_enabled",
710 true);
711
Adam Rice7dad4fd2025-07-28 09:20:08712BASE_FEATURE_PARAM(bool,
Adam Rice3e80287e72025-09-02 06:09:53713 kHttpCacheNoVarySearchKeepNotSuitable,
714 &kHttpCacheNoVarySearch,
715 "keep_not_suitable",
Adam Ricea270cd242025-10-08 09:42:26716 true);
Adam Rice3e80287e72025-09-02 06:09:53717
Adam Ricea9b9b9b02025-10-03 04:02:16718BASE_FEATURE(kHttpNoVarySearchDataUseNewAreEquivalent,
719 base::FEATURE_DISABLED_BY_DEFAULT);
720
721BASE_FEATURE_PARAM(bool,
722 kHttpNoVarySearchDataAreEquivalentCheckResult,
723 &kHttpNoVarySearchDataUseNewAreEquivalent,
724 "check_result",
725 false);
726
Xiaohan Wange9e65e32025-09-04 20:53:42727BASE_FEATURE(kReportingApiCorsOriginHeader, base::FEATURE_ENABLED_BY_DEFAULT);
Viktoria Zlatinovaf237fc02025-01-29 17:16:25728
Chidera Olibie46325582025-01-31 10:35:28729#if BUILDFLAG(IS_ANDROID)
Xiaohan Wange9e65e32025-09-04 20:53:42730BASE_FEATURE(kUseCertTransparencyAwareApiForOsCertVerify,
Chidera Olibie46325582025-01-31 10:35:28731 base::FEATURE_ENABLED_BY_DEFAULT);
732#endif // BUILDFLAG(IS_ANDROID)
733
Xiaohan Wange9e65e32025-09-04 20:53:42734BASE_FEATURE(kSelfSignedLocalNetworkInterstitial,
Carlos IL9f2a0252025-02-25 22:23:48735 base::FEATURE_DISABLED_BY_DEFAULT);
736
Matt Mueller9e5916c2025-03-12 01:56:59737#if BUILDFLAG(CHROME_ROOT_STORE_SUPPORTED)
Xiaohan Wange9e65e32025-09-04 20:53:42738BASE_FEATURE(kVerifyQWACs, base::FEATURE_DISABLED_BY_DEFAULT);
Matt Mueller9e5916c2025-03-12 01:56:59739#endif // BUILDFLAG(CHROME_ROOT_STORE_SUPPORTED)
740
Xiaohan Wange9e65e32025-09-04 20:53:42741BASE_FEATURE(kRestrictAbusePorts, base::FEATURE_DISABLED_BY_DEFAULT);
Tom Van Goethem8f760752025-04-24 01:28:53742
Xiaohan Wange9e65e32025-09-04 20:53:42743BASE_FEATURE(kRestrictAbusePortsOnLocalhost, base::FEATURE_ENABLED_BY_DEFAULT);
Tom Van Goethem59535072025-05-09 11:07:29744
Xiaohan Wange9e65e32025-09-04 20:53:42745BASE_FEATURE(kTLSTrustAnchorIDs, base::FEATURE_DISABLED_BY_DEFAULT);
Emily Stark047975242025-06-04 18:14:34746
Ari Chivukulac7d9bc52025-09-17 05:08:50747BASE_FEATURE(kSocketPoolSizePerTopLevelSiteTrial,
748 base::FEATURE_DISABLED_BY_DEFAULT);
Ari Chivukulab52939e2025-06-18 14:12:53749
750BASE_FEATURE_PARAM(int,
Ari Chivukulac7d9bc52025-09-17 05:08:50751 kSocketPoolSizePerTopLevelSiteTrialNormalProfileLimit,
752 &kSocketPoolSizePerTopLevelSiteTrial,
753 "SocketPoolSizePerTopLevelSiteTrialNormalProfileLimit",
Ari Chivukulab52939e2025-06-18 14:12:53754 256);
755
756BASE_FEATURE_PARAM(int,
Ari Chivukulac7d9bc52025-09-17 05:08:50757 kSocketPoolSizePerTopLevelSiteTrialWebSocketProfileLimit,
758 &kSocketPoolSizePerTopLevelSiteTrial,
759 "SocketPoolSizePerTopLevelSiteTrialWebSocketProfileLimit",
Ari Chivukulab52939e2025-06-18 14:12:53760 256);
761
Hayato Ito391d9262025-09-29 08:55:46762BASE_FEATURE(kNetTaskScheduler, base::FEATURE_ENABLED_BY_DEFAULT);
Hayato Ito3d2778a2025-07-09 02:19:03763BASE_FEATURE_PARAM(bool,
764 kNetTaskSchedulerHttpProxyConnectJob,
765 &kNetTaskScheduler,
766 "http_proxy_connect_job",
Hayato Ito391d9262025-09-29 08:55:46767 true);
Hayato Ito3d2778a2025-07-09 02:19:03768BASE_FEATURE_PARAM(bool,
Hayato Ito30ecce92025-08-05 00:22:07769 kNetTaskSchedulerHttpCache,
770 &kNetTaskScheduler,
771 "http_cache",
772 false);
773BASE_FEATURE_PARAM(bool,
Hayato Itod7201392025-07-29 00:47:37774 kNetTaskSchedulerHttpCacheTransaction,
775 &kNetTaskScheduler,
776 "http_cache_transaction",
777 false);
778BASE_FEATURE_PARAM(bool,
Hayato Ito3d2778a2025-07-09 02:19:03779 kNetTaskSchedulerHttpStreamFactoryJob,
780 &kNetTaskScheduler,
781 "http_stream_factory_job",
Hayato Ito391d9262025-09-29 08:55:46782 true);
Hayato Ito3d2778a2025-07-09 02:19:03783BASE_FEATURE_PARAM(bool,
784 kNetTaskSchedulerHttpStreamFactoryJobController,
785 &kNetTaskScheduler,
786 "http_stream_factory_job_controller",
Hayato Ito391d9262025-09-29 08:55:46787 true);
Hayato Ito3d2778a2025-07-09 02:19:03788BASE_FEATURE_PARAM(bool,
789 kNetTaskSchedulerURLRequestErrorJob,
790 &kNetTaskScheduler,
791 "url_request_error_job",
Hayato Ito391d9262025-09-29 08:55:46792 true);
Hayato Ito3d2778a2025-07-09 02:19:03793BASE_FEATURE_PARAM(bool,
794 kNetTaskSchedulerURLRequestHttpJob,
795 &kNetTaskScheduler,
796 "url_request_http_job",
Hayato Ito391d9262025-09-29 08:55:46797 true);
Hayato Ito3d2778a2025-07-09 02:19:03798BASE_FEATURE_PARAM(bool,
799 kNetTaskSchedulerURLRequestJob,
800 &kNetTaskScheduler,
801 "url_request_job",
Hayato Ito391d9262025-09-29 08:55:46802 true);
Hayato Ito3d2778a2025-07-09 02:19:03803BASE_FEATURE_PARAM(bool,
804 kNetTaskSchedulerURLRequestRedirectJob,
805 &kNetTaskScheduler,
806 "url_request_redirect_job",
Hayato Ito391d9262025-09-29 08:55:46807 true);
Hayato Ito3d2778a2025-07-09 02:19:03808
Xiaohan Wange9e65e32025-09-04 20:53:42809BASE_FEATURE(kAdditionalDelayMainJob, base::FEATURE_DISABLED_BY_DEFAULT);
Keita Suzuki2e7604d82025-09-01 07:31:19810BASE_FEATURE_PARAM(base::TimeDelta,
811 kAdditionalDelay,
812 &kAdditionalDelayMainJob,
813 "AdditionalDelay",
814 base::Milliseconds(0));
Keita Suzuki6a11dd72025-09-04 06:01:17815BASE_FEATURE_PARAM(bool,
816 kDelayMainJobWithAvailableSpdySession,
817 &kAdditionalDelayMainJob,
818 "DelayMainJobWithAvailableSpdySession",
819 false);
Keita Suzuki2e7604d82025-09-01 07:31:19820
Xiaohan Wange9e65e32025-09-04 20:53:42821BASE_FEATURE(kExtendQuicHandshakeTimeout, base::FEATURE_DISABLED_BY_DEFAULT);
Keita Suzuki9824dd32025-09-01 13:54:02822BASE_FEATURE_PARAM(base::TimeDelta,
823 kQuicHandshakeTimeout,
824 &kExtendQuicHandshakeTimeout,
825 "QuicHandshakeTimeout",
826 base::Seconds(quic::kMaxTimeForCryptoHandshakeSecs));
Nidhi Jaju0c1f40922025-09-01 15:12:19827
Sayede569faf2025-09-24 09:21:48828BASE_FEATURE(kQuicLongerIdleConnectionTimeout,
829 base::FEATURE_DISABLED_BY_DEFAULT);
830
Xiaohan Wange9e65e32025-09-04 20:53:42831BASE_FEATURE(kLowerQuicMaxPacketSize, base::FEATURE_DISABLED_BY_DEFAULT);
Nidhi Jaju950dc3c2025-09-01 23:02:41832BASE_FEATURE_PARAM(size_t,
833 kQuicMaxPacketSize,
834 &kLowerQuicMaxPacketSize,
835 "mtu",
836 quic::kDefaultMaxPacketSize);
837
Xiaohan Wanga8d618f2025-09-13 23:57:24838BASE_FEATURE(kConfigureQuicHints, base::FEATURE_DISABLED_BY_DEFAULT);
Nidhi Jaju0c1f40922025-09-01 15:12:19839BASE_FEATURE_PARAM(std::string,
840 kQuicHintHostPortPairs,
841 &kConfigureQuicHints,
842 /*name=*/"quic_hints",
843 /*default_value=*/"");
Nidhi Jaju08b2c4a2025-09-02 00:06:48844BASE_FEATURE_PARAM(std::string,
845 kWildcardQuicHintHostPortPairs,
846 &kConfigureQuicHints,
847 /*name=*/"wildcard_quic_hints",
848 /*default_value=*/"");
Nidhi Jaju0c1f40922025-09-01 15:12:19849
Chenhao Diao0dc159c2025-09-08 04:57:29850BASE_FEATURE(kDnsFilteringDetails, base::FEATURE_DISABLED_BY_DEFAULT);
851
Mingyu Lei0e8220e2025-09-16 03:29:32852BASE_FEATURE(kUpdateIsMainFrameOriginRecentlyAccessed,
Mingyu Lei0e8220e2025-09-16 03:29:32853 base::FEATURE_DISABLED_BY_DEFAULT);
854
855BASE_FEATURE_PARAM(size_t,
856 kRecentlyAccessedOriginCacheSize,
857 &kUpdateIsMainFrameOriginRecentlyAccessed,
858 "cache_size",
859 64);
860
Nidhi Jajud326d2b2025-10-02 05:42:24861BASE_FEATURE(kTryQuicByDefault, base::FEATURE_DISABLED_BY_DEFAULT);
862
863BASE_FEATURE_PARAM(std::string,
864 kQuicOptions,
865 &kTryQuicByDefault,
866 "quic_options",
867 "");
868
Tsuyoshi Horo4f516be2022-06-14 11:53:13869} // namespace net::features