xref: /aosp_15_r20/external/cronet/net/base/features.cc (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1 // Copyright 2018 The Chromium Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #include "net/base/features.h"
6 
7 #include <vector>
8 
9 #include "base/feature_list.h"
10 #include "build/build_config.h"
11 #include "net/base/cronet_buildflags.h"
12 #include "net/net_buildflags.h"
13 
14 namespace net::features {
15 
16 BASE_FEATURE(kAlpsForHttp2, "AlpsForHttp2", base::FEATURE_ENABLED_BY_DEFAULT);
17 
18 BASE_FEATURE(kAvoidH2Reprioritization,
19              "AvoidH2Reprioritization",
20              base::FEATURE_DISABLED_BY_DEFAULT);
21 
22 BASE_FEATURE(kCapReferrerToOriginOnCrossOrigin,
23              "CapReferrerToOriginOnCrossOrigin",
24              base::FEATURE_DISABLED_BY_DEFAULT);
25 
26 BASE_FEATURE(kAsyncDns,
27              "AsyncDns",
28 #if BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_MAC) || BUILDFLAG(IS_ANDROID) || \
29     BUILDFLAG(IS_WIN) || BUILDFLAG(IS_LINUX)
30              base::FEATURE_ENABLED_BY_DEFAULT
31 #else
32              base::FEATURE_DISABLED_BY_DEFAULT
33 #endif
34 );
35 
36 BASE_FEATURE(kDnsTransactionDynamicTimeouts,
37              "DnsTransactionDynamicTimeouts",
38              base::FEATURE_DISABLED_BY_DEFAULT);
39 
40 const base::FeatureParam<double> kDnsTransactionTimeoutMultiplier{
41     &kDnsTransactionDynamicTimeouts, "DnsTransactionTimeoutMultiplier", 7.5};
42 
43 const base::FeatureParam<base::TimeDelta> kDnsMinTransactionTimeout{
44     &kDnsTransactionDynamicTimeouts, "DnsMinTransactionTimeout",
45     base::Seconds(12)};
46 
47 BASE_FEATURE(kUseDnsHttpsSvcb,
48              "UseDnsHttpsSvcb",
49              base::FEATURE_ENABLED_BY_DEFAULT);
50 
51 const base::FeatureParam<bool> kUseDnsHttpsSvcbEnforceSecureResponse{
52     &kUseDnsHttpsSvcb, "UseDnsHttpsSvcbEnforceSecureResponse", false};
53 
54 const base::FeatureParam<base::TimeDelta> kUseDnsHttpsSvcbInsecureExtraTimeMax{
55     &kUseDnsHttpsSvcb, "UseDnsHttpsSvcbInsecureExtraTimeMax",
56     base::Milliseconds(50)};
57 
58 const base::FeatureParam<int> kUseDnsHttpsSvcbInsecureExtraTimePercent{
59     &kUseDnsHttpsSvcb, "UseDnsHttpsSvcbInsecureExtraTimePercent", 20};
60 
61 const base::FeatureParam<base::TimeDelta> kUseDnsHttpsSvcbInsecureExtraTimeMin{
62     &kUseDnsHttpsSvcb, "UseDnsHttpsSvcbInsecureExtraTimeMin",
63     base::Milliseconds(5)};
64 
65 const base::FeatureParam<base::TimeDelta> kUseDnsHttpsSvcbSecureExtraTimeMax{
66     &kUseDnsHttpsSvcb, "UseDnsHttpsSvcbSecureExtraTimeMax",
67     base::Milliseconds(50)};
68 
69 const base::FeatureParam<int> kUseDnsHttpsSvcbSecureExtraTimePercent{
70     &kUseDnsHttpsSvcb, "UseDnsHttpsSvcbSecureExtraTimePercent", 20};
71 
72 const base::FeatureParam<base::TimeDelta> kUseDnsHttpsSvcbSecureExtraTimeMin{
73     &kUseDnsHttpsSvcb, "UseDnsHttpsSvcbSecureExtraTimeMin",
74     base::Milliseconds(5)};
75 
76 BASE_FEATURE(kUseDnsHttpsSvcbAlpn,
77              "UseDnsHttpsSvcbAlpn",
78              base::FEATURE_ENABLED_BY_DEFAULT);
79 
80 BASE_FEATURE(kUseHostResolverCache,
81              "UseHostResolverCache",
82              base::FEATURE_DISABLED_BY_DEFAULT);
83 
84 BASE_FEATURE(kUseServiceEndpointRequest,
85              "UseServiceEndpointRequest",
86              base::FEATURE_DISABLED_BY_DEFAULT);
87 
88 const base::FeatureParam<int> kAlternativePortForGloballyReachableCheck{
89     &kUseAlternativePortForGloballyReachableCheck,
90     "AlternativePortForGloballyReachableCheck", 443};
91 
92 BASE_FEATURE(kUseAlternativePortForGloballyReachableCheck,
93              "UseAlternativePortForGloballyReachableCheck",
94              base::FEATURE_DISABLED_BY_DEFAULT);
95 
96 BASE_FEATURE(kEnableIPv6ReachabilityOverride,
97              "EnableIPv6ReachabilityOverride",
98              base::FEATURE_DISABLED_BY_DEFAULT);
99 
100 BASE_FEATURE(kEnableTLS13EarlyData,
101              "EnableTLS13EarlyData",
102              base::FEATURE_DISABLED_BY_DEFAULT);
103 
104 BASE_FEATURE(kNetworkQualityEstimator,
105              "NetworkQualityEstimator",
106              base::FEATURE_DISABLED_BY_DEFAULT);
107 
108 BASE_FEATURE(kSplitCacheByIncludeCredentials,
109              "SplitCacheByIncludeCredentials",
110              base::FEATURE_DISABLED_BY_DEFAULT);
111 
112 BASE_FEATURE(kSplitCacheByNetworkIsolationKey,
113              "SplitCacheByNetworkIsolationKey",
114              base::FEATURE_DISABLED_BY_DEFAULT);
115 
116 BASE_FEATURE(kSplitCodeCacheByNetworkIsolationKey,
117              "SplitCodeCacheByNetworkIsolationKey",
118              base::FEATURE_DISABLED_BY_DEFAULT);
119 
120 BASE_FEATURE(kSplitHostCacheByNetworkIsolationKey,
121              "SplitHostCacheByNetworkIsolationKey",
122              base::FEATURE_DISABLED_BY_DEFAULT);
123 
124 BASE_FEATURE(kPartitionConnectionsByNetworkIsolationKey,
125              "PartitionConnectionsByNetworkIsolationKey",
126              base::FEATURE_DISABLED_BY_DEFAULT);
127 
128 BASE_FEATURE(kPartitionHttpServerPropertiesByNetworkIsolationKey,
129              "PartitionHttpServerPropertiesByNetworkIsolationKey",
130              base::FEATURE_DISABLED_BY_DEFAULT);
131 
132 BASE_FEATURE(kPartitionSSLSessionsByNetworkIsolationKey,
133              "PartitionSSLSessionsByNetworkIsolationKey",
134              base::FEATURE_DISABLED_BY_DEFAULT);
135 
136 BASE_FEATURE(kPartitionNelAndReportingByNetworkIsolationKey,
137              "PartitionNelAndReportingByNetworkIsolationKey",
138              base::FEATURE_DISABLED_BY_DEFAULT);
139 
140 BASE_FEATURE(kEnableCrossSiteFlagNetworkIsolationKey,
141              "EnableCrossSiteFlagNetworkIsolationKey",
142              base::FEATURE_DISABLED_BY_DEFAULT);
143 BASE_FEATURE(kEnableFrameSiteSharedOpaqueNetworkIsolationKey,
144              "EnableFrameSiteSharedOpaqueNetworkIsolationKey",
145              base::FEATURE_DISABLED_BY_DEFAULT);
146 BASE_FEATURE(kHttpCacheKeyingExperimentControlGroup,
147              "HttpCacheKeyingExperimentControlGroup",
148              base::FEATURE_DISABLED_BY_DEFAULT);
149 
150 BASE_FEATURE(kTLS13KeyUpdate,
151              "TLS13KeyUpdate",
152              base::FEATURE_DISABLED_BY_DEFAULT);
153 
154 BASE_FEATURE(kPermuteTLSExtensions,
155              "PermuteTLSExtensions",
156              base::FEATURE_ENABLED_BY_DEFAULT);
157 
158 BASE_FEATURE(kPostQuantumKyber,
159              "PostQuantumKyber",
160 #if BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_IOS)
161              base::FEATURE_DISABLED_BY_DEFAULT);
162 #else
163              base::FEATURE_ENABLED_BY_DEFAULT);
164 #endif
165 
166 BASE_FEATURE(kNetUnusedIdleSocketTimeout,
167              "NetUnusedIdleSocketTimeout",
168              base::FEATURE_DISABLED_BY_DEFAULT);
169 
170 BASE_FEATURE(kShortLaxAllowUnsafeThreshold,
171              "ShortLaxAllowUnsafeThreshold",
172              base::FEATURE_DISABLED_BY_DEFAULT);
173 
174 BASE_FEATURE(kSameSiteDefaultChecksMethodRigorously,
175              "SameSiteDefaultChecksMethodRigorously",
176              base::FEATURE_DISABLED_BY_DEFAULT);
177 
178 #if BUILDFLAG(IS_MAC) || BUILDFLAG(USE_NSS_CERTS) || BUILDFLAG(IS_WIN)
179 BASE_FEATURE(kTrustStoreTrustedLeafSupport,
180              "TrustStoreTrustedLeafSupport",
181              base::FEATURE_ENABLED_BY_DEFAULT);
182 #endif
183 
184 BASE_FEATURE(kTurnOffStreamingMediaCachingOnBattery,
185              "TurnOffStreamingMediaCachingOnBattery",
186              base::FEATURE_DISABLED_BY_DEFAULT);
187 
188 BASE_FEATURE(kTurnOffStreamingMediaCachingAlways,
189              "TurnOffStreamingMediaCachingAlways",
190              base::FEATURE_DISABLED_BY_DEFAULT);
191 
192 BASE_FEATURE(kSchemefulSameSite,
193              "SchemefulSameSite",
194              base::FEATURE_ENABLED_BY_DEFAULT);
195 
196 BASE_FEATURE(kLimitOpenUDPSockets,
197              "LimitOpenUDPSockets",
198              base::FEATURE_ENABLED_BY_DEFAULT);
199 
200 extern const base::FeatureParam<int> kLimitOpenUDPSocketsMax(
201     &kLimitOpenUDPSockets,
202     "LimitOpenUDPSocketsMax",
203     6000);
204 
205 BASE_FEATURE(kTimeoutTcpConnectAttempt,
206              "TimeoutTcpConnectAttempt",
207              base::FEATURE_DISABLED_BY_DEFAULT);
208 
209 extern const base::FeatureParam<double> kTimeoutTcpConnectAttemptRTTMultiplier(
210     &kTimeoutTcpConnectAttempt,
211     "TimeoutTcpConnectAttemptRTTMultiplier",
212     5.0);
213 
214 extern const base::FeatureParam<base::TimeDelta> kTimeoutTcpConnectAttemptMin(
215     &kTimeoutTcpConnectAttempt,
216     "TimeoutTcpConnectAttemptMin",
217     base::Seconds(8));
218 
219 extern const base::FeatureParam<base::TimeDelta> kTimeoutTcpConnectAttemptMax(
220     &kTimeoutTcpConnectAttempt,
221     "TimeoutTcpConnectAttemptMax",
222     base::Seconds(30));
223 
224 #if BUILDFLAG(ENABLE_REPORTING)
225 BASE_FEATURE(kDocumentReporting,
226              "DocumentReporting",
227              base::FEATURE_ENABLED_BY_DEFAULT);
228 #endif  // BUILDFLAG(ENABLE_REPORTING)
229 
230 #if BUILDFLAG(IS_POSIX) || BUILDFLAG(IS_FUCHSIA)
231 BASE_FEATURE(kUdpSocketPosixAlwaysUpdateBytesReceived,
232              "UdpSocketPosixAlwaysUpdateBytesReceived",
233              base::FEATURE_ENABLED_BY_DEFAULT);
234 #endif  // BUILDFLAG(IS_POSIX) || BUILDFLAG(IS_FUCHSIA)
235 
236 BASE_FEATURE(kCookieSameSiteConsidersRedirectChain,
237              "CookieSameSiteConsidersRedirectChain",
238              base::FEATURE_DISABLED_BY_DEFAULT);
239 
240 BASE_FEATURE(kWaitForFirstPartySetsInit,
241              "WaitForFirstPartySetsInit",
242              base::FEATURE_DISABLED_BY_DEFAULT);
243 
244 // Controls the maximum time duration an outermost frame navigation should be
245 // deferred by RWS initialization.
246 extern const base::FeatureParam<base::TimeDelta>
247     kWaitForFirstPartySetsInitNavigationThrottleTimeout{
248         &kWaitForFirstPartySetsInit,
249         "kWaitForFirstPartySetsInitNavigationThrottleTimeout",
250         base::Seconds(0)};
251 
252 BASE_FEATURE(kAncestorChainBitEnabledInPartitionedCookies,
253              "AncestorChainBitEnabledInPartitionedCookies",
254              base::FEATURE_DISABLED_BY_DEFAULT);
255 
256 BASE_FEATURE(kBlockTruncatedCookies,
257              "BlockTruncatedCookies",
258              base::FEATURE_ENABLED_BY_DEFAULT);
259 
260 BASE_FEATURE(kStaticKeyPinningEnforcement,
261              "StaticKeyPinningEnforcement",
262              base::FEATURE_ENABLED_BY_DEFAULT);
263 
264 BASE_FEATURE(kCookieDomainRejectNonASCII,
265              "CookieDomainRejectNonASCII",
266              base::FEATURE_DISABLED_BY_DEFAULT);
267 
268 // Enables partitioning of third party storage (IndexedDB, CacheStorage, etc.)
269 // by the top level site to reduce fingerprinting.
270 BASE_FEATURE(kThirdPartyStoragePartitioning,
271              "ThirdPartyStoragePartitioning",
272              base::FEATURE_ENABLED_BY_DEFAULT);
273 
274 // Whether to use the new code paths needed to support partitioning Blob URLs.
275 // This exists as a kill-switch in case an issue is identified with the Blob
276 // URL implementation that causes breakage.
277 BASE_FEATURE(kSupportPartitionedBlobUrl,
278              "SupportPartitionedBlobUrl",
279              base::FEATURE_ENABLED_BY_DEFAULT);
280 
281 BASE_FEATURE(kTpcdTrialSettings,
282              "TpcdSupportSettings",
283              base::FEATURE_ENABLED_BY_DEFAULT);
284 
285 BASE_FEATURE(kTopLevelTpcdTrialSettings,
286              "TopLevelTpcdSupportSettings",
287              base::FEATURE_DISABLED_BY_DEFAULT);
288 
289 BASE_FEATURE(kTpcdMetadataGrants,
290              "TpcdMetadataGrants",
291              base::FEATURE_ENABLED_BY_DEFAULT);
292 
293 BASE_FEATURE(kTpcdMetadataStagedRollback,
294              "TpcdMetadataStageControl",
295              base::FEATURE_DISABLED_BY_DEFAULT);
296 
297 BASE_FEATURE(kAlpsParsing, "AlpsParsing", base::FEATURE_ENABLED_BY_DEFAULT);
298 
299 BASE_FEATURE(kAlpsClientHintParsing,
300              "AlpsClientHintParsing",
301              base::FEATURE_ENABLED_BY_DEFAULT);
302 
303 BASE_FEATURE(kShouldKillSessionOnAcceptChMalformed,
304              "ShouldKillSessionOnAcceptChMalformed",
305              base::FEATURE_DISABLED_BY_DEFAULT);
306 
307 BASE_FEATURE(kCaseInsensitiveCookiePrefix,
308              "CaseInsensitiveCookiePrefix",
309              base::FEATURE_ENABLED_BY_DEFAULT);
310 
311 BASE_FEATURE(kEnableWebsocketsOverHttp3,
312              "EnableWebsocketsOverHttp3",
313              base::FEATURE_DISABLED_BY_DEFAULT);
314 
315 BASE_FEATURE(kUseNAT64ForIPv4Literal,
316              "UseNAT64ForIPv4Literal",
317              base::FEATURE_ENABLED_BY_DEFAULT);
318 
319 BASE_FEATURE(kBlockNewForbiddenHeaders,
320              "BlockNewForbiddenHeaders",
321              base::FEATURE_ENABLED_BY_DEFAULT);
322 
323 #if BUILDFLAG(IS_WIN)
324 BASE_FEATURE(kPlatformKeyProbeSHA256,
325              "PlatformKeyProbeSHA256",
326              base::FEATURE_ENABLED_BY_DEFAULT);
327 
328 // Disabled because of https://crbug.com/1489696.
329 BASE_FEATURE(kEnableGetNetworkConnectivityHintAPI,
330              "EnableGetNetworkConnectivityHintAPI",
331              base::FEATURE_DISABLED_BY_DEFAULT);
332 #endif
333 
334 // Prefetch to follow normal semantics instead of 5-minute rule
335 // https://crbug.com/1345207
336 BASE_FEATURE(kPrefetchFollowsNormalCacheSemantics,
337              "PrefetchFollowsNormalCacheSemantics",
338              base::FEATURE_DISABLED_BY_DEFAULT);
339 
340 // A flag for new Kerberos feature, that suggests new UI
341 // when Kerberos authentication in browser fails on ChromeOS.
342 // b/260522530
343 #if BUILDFLAG(IS_CHROMEOS)
344 BASE_FEATURE(kKerberosInBrowserRedirect,
345              "KerberosInBrowserRedirect",
346              base::FEATURE_ENABLED_BY_DEFAULT);
347 #endif
348 
349 // A flag to use asynchronous session creation for new QUIC sessions.
350 BASE_FEATURE(kAsyncQuicSession,
351              "AsyncQuicSession",
352 #if BUILDFLAG(IS_WIN)
353              base::FEATURE_ENABLED_BY_DEFAULT);
354 #else
355              base::FEATURE_DISABLED_BY_DEFAULT);
356 #endif
357 
358 // A flag to make multiport context creation asynchronous.
359 BASE_FEATURE(kAsyncMultiPortPath,
360              "AsyncMultiPortPath",
361 #if !BUILDFLAG(CRONET_BUILD) && (BUILDFLAG(IS_WIN) || BUILDFLAG(IS_ANDROID))
362              base::FEATURE_ENABLED_BY_DEFAULT);
363 #else
364              base::FEATURE_DISABLED_BY_DEFAULT);
365 #endif
366 
367 // IP protection experiment configuration settings
368 BASE_FEATURE(kEnableIpProtectionProxy,
369              "EnableIpPrivacyProxy",
370              base::FEATURE_DISABLED_BY_DEFAULT);
371 
372 const base::FeatureParam<std::string> kIpPrivacyTokenServer{
373     &kEnableIpProtectionProxy, /*name=*/"IpPrivacyTokenServer",
374     /*default_value=*/"https://phosphor-pa.googleapis.com"};
375 
376 const base::FeatureParam<std::string> kIpPrivacyTokenServerGetInitialDataPath{
377     &kEnableIpProtectionProxy,
378     /*name=*/"IpPrivacyTokenServerGetInitialDataPath",
379     /*default_value=*/"/v1/ipblinding/getInitialData"};
380 
381 const base::FeatureParam<std::string> kIpPrivacyTokenServerGetTokensPath{
382     &kEnableIpProtectionProxy, /*name=*/"IpPrivacyTokenServerGetTokensPath",
383     /*default_value=*/"/v1/ipblinding/auth"};
384 
385 const base::FeatureParam<std::string> kIpPrivacyTokenServerGetProxyConfigPath{
386     &kEnableIpProtectionProxy,
387     /*name=*/"IpPrivacyTokenServerGetProxyConfigPath",
388     /*default_value=*/"/v1/ipblinding/getProxyConfig"};
389 
390 const base::FeatureParam<int> kIpPrivacyAuthTokenCacheBatchSize{
391     &kEnableIpProtectionProxy, /*name=*/"IpPrivacyAuthTokenCacheBatchSize",
392     /*default_value=*/64};
393 
394 const base::FeatureParam<int> kIpPrivacyAuthTokenCacheLowWaterMark{
395     &kEnableIpProtectionProxy, /*name=*/"IpPrivacyAuthTokenCacheLowWaterMark",
396     /*default_value=*/16};
397 
398 const base::FeatureParam<base::TimeDelta> kIpPrivacyProxyListFetchInterval{
399     &kEnableIpProtectionProxy, /*name=*/"IpPrivacyProxyListFetchInterval",
400     /*default_value=*/base::Hours(1)};
401 
402 const base::FeatureParam<base::TimeDelta> kIpPrivacyProxyListMinFetchInterval{
403     &kEnableIpProtectionProxy, /*name=*/"IpPrivacyProxyMinListFetchInterval",
404     /*default_value=*/base::Minutes(1)};
405 
406 const base::FeatureParam<bool> kIpPrivacyDirectOnly{
407     &kEnableIpProtectionProxy, /*name=*/"IpPrivacyDirectOnly",
408     /*default_value=*/false};
409 
410 const base::FeatureParam<std::string> kIpPrivacyProxyBPsk{
411     &kEnableIpProtectionProxy, /*name=*/"IpPrivacyProxyBPsk",
412     /*default_value=*/""};
413 
414 const base::FeatureParam<bool> kIpPrivacyIncludeOAuthTokenInGetProxyConfig{
415     &kEnableIpProtectionProxy,
416     /*name=*/"IpPrivacyIncludeOAuthTokenInGetProxyConfig",
417     /*default_value=*/false};
418 
419 const base::FeatureParam<std::string> kIpPrivacyProxyAHostnameOverride{
420     &kEnableIpProtectionProxy, /*name=*/"IpPrivacyProxyAHostnameOverride",
421     /*default_value=*/""};
422 
423 const base::FeatureParam<std::string> kIpPrivacyProxyBHostnameOverride{
424     &kEnableIpProtectionProxy, /*name=*/"IpPrivacyProxyBHostnameOverride",
425     /*default_value=*/""};
426 
427 const base::FeatureParam<bool> kIpPrivacyAddHeaderToProxiedRequests{
428     &kEnableIpProtectionProxy, /*name=*/"IpPrivacyAddHeaderToProxiedRequests",
429     /*default_value=*/false};
430 
431 const base::FeatureParam<base::TimeDelta> kIpPrivacyExpirationFuzz{
432     &kEnableIpProtectionProxy, /*name=*/"IpPrivacyExpirationFuzz",
433     /*default_value=*/base::Minutes(15)};
434 
435 const base::FeatureParam<bool> kIpPrivacyRestrictTopLevelSiteSchemes{
436     &kEnableIpProtectionProxy,
437     /*name=*/"IpPrivacyRestrictTopLevelSiteSchemes",
438     /*default_value=*/true};
439 
440 const base::FeatureParam<bool> kIpPrivacyUseQuicProxies{
441     &kEnableIpProtectionProxy,
442     /*name=*/"IpPrivacyUseQuicProxies",
443     /*default_value=*/false};
444 
445 const base::FeatureParam<bool> kIpPrivacyUseQuicProxiesOnly{
446     &kEnableIpProtectionProxy,
447     /*name=*/"IpPrivacyUseQuicProxiesOnly",
448     /*default_value=*/false};
449 
450 const base::FeatureParam<bool> kIpPrivacyUseSingleProxy{
451     &kEnableIpProtectionProxy,
452     /*name=*/"IpPrivacyUseSingleProxy",
453     /*default_value=*/false};
454 
455 const base::FeatureParam<std::string> kIpPrivacyAlwaysProxy{
456     &kEnableIpProtectionProxy,
457     /*name=*/"IpPrivacyAlwaysProxy",
458     /*default_value=*/""};
459 
460 // Network-change migration requires NetworkHandle support, which are currently
461 // only supported on Android (see
462 // NetworkChangeNotifier::AreNetworkHandlesSupported).
463 #if BUILDFLAG(IS_ANDROID)
464 inline constexpr auto kMigrateSessionsOnNetworkChangeV2Default =
465     base::FEATURE_ENABLED_BY_DEFAULT;
466 #else   // !BUILDFLAG(IS_ANDROID)
467 inline constexpr auto kMigrateSessionsOnNetworkChangeV2Default =
468     base::FEATURE_DISABLED_BY_DEFAULT;
469 #endif  // BUILDFLAG(IS_ANDROID)
470 BASE_FEATURE(kMigrateSessionsOnNetworkChangeV2,
471              "MigrateSessionsOnNetworkChangeV2",
472              kMigrateSessionsOnNetworkChangeV2Default);
473 
474 BASE_FEATURE(kDisableBlackholeOnNoNewNetwork,
475              "DisableBlackHoleOnNoNewNetwork",
476              base::FEATURE_DISABLED_BY_DEFAULT);
477 
478 #if BUILDFLAG(IS_LINUX)
479 BASE_FEATURE(kAddressTrackerLinuxIsProxied,
480              "AddressTrackerLinuxIsProxied",
481              base::FEATURE_ENABLED_BY_DEFAULT);
482 #endif  // BUILDFLAG(IS_LINUX)
483 
484 // Enables binding of cookies to the port that originally set them by default.
485 BASE_FEATURE(kEnablePortBoundCookies,
486              "EnablePortBoundCookies",
487              base::FEATURE_DISABLED_BY_DEFAULT);
488 
489 // Enables binding of cookies to the scheme that originally set them.
490 NET_EXPORT BASE_DECLARE_FEATURE(kEnableSchemeBoundCookies);
491 BASE_FEATURE(kEnableSchemeBoundCookies,
492              "EnableSchemeBoundCookies",
493              base::FEATURE_DISABLED_BY_DEFAULT);
494 
495 BASE_FEATURE(kTimeLimitedInsecureCookies,
496              "TimeLimitedInsecureCookies",
497              base::FEATURE_DISABLED_BY_DEFAULT);
498 
499 // Enable third-party cookie blocking from the command line.
500 BASE_FEATURE(kForceThirdPartyCookieBlocking,
501              "ForceThirdPartyCookieBlockingEnabled",
502              base::FEATURE_DISABLED_BY_DEFAULT);
503 
504 BASE_FEATURE(kThirdPartyCookieTopLevelSiteCorsException,
505              "ThirdPartyCookieTopLevelSiteCorsException",
506              base::FEATURE_DISABLED_BY_DEFAULT);
507 
508 BASE_FEATURE(kEnableEarlyHintsOnHttp11,
509              "EnableEarlyHintsOnHttp11",
510              base::FEATURE_DISABLED_BY_DEFAULT);
511 
512 BASE_FEATURE(kEnableWebTransportDraft07,
513              "EnableWebTransportDraft07",
514              base::FEATURE_DISABLED_BY_DEFAULT);
515 
516 BASE_FEATURE(kZstdContentEncoding,
517              "ZstdContentEncoding",
518              base::FEATURE_ENABLED_BY_DEFAULT);
519 
520 // When enabled, partitioned storage will be allowed even if third-party cookies
521 // are disabled by default. Partitioned storage will not be allowed if
522 // third-party cookies are disabled due to a specific rule.
523 BASE_FEATURE(kThirdPartyPartitionedStorageAllowedByDefault,
524              "ThirdPartyPartitionedStorageAllowedByDefault",
525              base::FEATURE_ENABLED_BY_DEFAULT);
526 
527 BASE_FEATURE(kPriorityHeader,
528              "PriorityHeader",
529              base::FEATURE_ENABLED_BY_DEFAULT);
530 
531 BASE_FEATURE(kSpdyHeadersToHttpResponseUseBuilder,
532              "SpdyHeadersToHttpResponseUseBuilder",
533              base::FEATURE_DISABLED_BY_DEFAULT);
534 
535 BASE_FEATURE(kReceiveEcn, "ReceiveEcn", base::FEATURE_DISABLED_BY_DEFAULT);
536 
537 BASE_FEATURE(kUseNewAlpsCodepointHttp2,
538              "UseNewAlpsCodepointHttp2",
539              base::FEATURE_DISABLED_BY_DEFAULT);
540 
541 BASE_FEATURE(kUseNewAlpsCodepointQUIC,
542              "UseNewAlpsCodepointQUIC",
543              base::FEATURE_DISABLED_BY_DEFAULT);
544 
545 BASE_FEATURE(kTreatHTTPExpiresHeaderValueZeroAsExpired,
546              "TreatHTTPExpiresHeaderValueZeroAsExpired",
547              base::FEATURE_ENABLED_BY_DEFAULT);
548 
549 BASE_FEATURE(kTruncateBodyToContentLength,
550              "TruncateBodyToContentLength",
551              base::FEATURE_ENABLED_BY_DEFAULT);
552 
553 #if BUILDFLAG(IS_MAC)
554 BASE_FEATURE(kReduceIPAddressChangeNotification,
555              "ReduceIPAddressChangeNotification",
556              base::FEATURE_ENABLED_BY_DEFAULT);
557 #endif  // BUILDFLAG(IS_MAC)
558 
559 BASE_FEATURE(kDeviceBoundSessions,
560              "DeviceBoundSessions",
561              base::FEATURE_DISABLED_BY_DEFAULT);
562 
563 }  // namespace net::features
564