• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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(kDnsTransactionDynamicTimeouts,
27              "DnsTransactionDynamicTimeouts",
28              base::FEATURE_DISABLED_BY_DEFAULT);
29 
30 const base::FeatureParam<double> kDnsTransactionTimeoutMultiplier{
31     &kDnsTransactionDynamicTimeouts, "DnsTransactionTimeoutMultiplier", 7.5};
32 
33 const base::FeatureParam<base::TimeDelta> kDnsMinTransactionTimeout{
34     &kDnsTransactionDynamicTimeouts, "DnsMinTransactionTimeout",
35     base::Seconds(12)};
36 
37 BASE_FEATURE(kUseDnsHttpsSvcb,
38              "UseDnsHttpsSvcb",
39              base::FEATURE_ENABLED_BY_DEFAULT);
40 
41 const base::FeatureParam<bool> kUseDnsHttpsSvcbEnforceSecureResponse{
42     &kUseDnsHttpsSvcb, "UseDnsHttpsSvcbEnforceSecureResponse", false};
43 
44 const base::FeatureParam<base::TimeDelta> kUseDnsHttpsSvcbInsecureExtraTimeMax{
45     &kUseDnsHttpsSvcb, "UseDnsHttpsSvcbInsecureExtraTimeMax",
46     base::Milliseconds(50)};
47 
48 const base::FeatureParam<int> kUseDnsHttpsSvcbInsecureExtraTimePercent{
49     &kUseDnsHttpsSvcb, "UseDnsHttpsSvcbInsecureExtraTimePercent", 20};
50 
51 const base::FeatureParam<base::TimeDelta> kUseDnsHttpsSvcbInsecureExtraTimeMin{
52     &kUseDnsHttpsSvcb, "UseDnsHttpsSvcbInsecureExtraTimeMin",
53     base::Milliseconds(5)};
54 
55 const base::FeatureParam<base::TimeDelta> kUseDnsHttpsSvcbSecureExtraTimeMax{
56     &kUseDnsHttpsSvcb, "UseDnsHttpsSvcbSecureExtraTimeMax",
57     base::Milliseconds(50)};
58 
59 const base::FeatureParam<int> kUseDnsHttpsSvcbSecureExtraTimePercent{
60     &kUseDnsHttpsSvcb, "UseDnsHttpsSvcbSecureExtraTimePercent", 20};
61 
62 const base::FeatureParam<base::TimeDelta> kUseDnsHttpsSvcbSecureExtraTimeMin{
63     &kUseDnsHttpsSvcb, "UseDnsHttpsSvcbSecureExtraTimeMin",
64     base::Milliseconds(5)};
65 
66 BASE_FEATURE(kUseDnsHttpsSvcbAlpn,
67              "UseDnsHttpsSvcbAlpn",
68              base::FEATURE_ENABLED_BY_DEFAULT);
69 
70 const base::FeatureParam<int> kAlternativePortForGloballyReachableCheck{
71     &kUseAlternativePortForGloballyReachableCheck,
72     "AlternativePortForGloballyReachableCheck", 443};
73 
74 BASE_FEATURE(kUseAlternativePortForGloballyReachableCheck,
75              "UseAlternativePortForGloballyReachableCheck",
76              base::FEATURE_DISABLED_BY_DEFAULT);
77 
78 BASE_FEATURE(kEnableIPv6ReachabilityOverride,
79              "EnableIPv6ReachabilityOverride",
80              base::FEATURE_DISABLED_BY_DEFAULT);
81 
82 BASE_FEATURE(kSHA1ServerSignature,
83              "SHA1ServerSignature",
84              base::FEATURE_DISABLED_BY_DEFAULT);
85 
86 BASE_FEATURE(kEnableTLS13EarlyData,
87              "EnableTLS13EarlyData",
88              base::FEATURE_DISABLED_BY_DEFAULT);
89 
90 BASE_FEATURE(kEncryptedClientHello,
91              "EncryptedClientHello",
92              base::FEATURE_ENABLED_BY_DEFAULT);
93 
94 BASE_FEATURE(kEncryptedClientHelloQuic,
95              "EncryptedClientHelloQuic",
96              base::FEATURE_ENABLED_BY_DEFAULT);
97 
98 BASE_FEATURE(kRSAKeyUsageForLocalAnchors,
99              "RSAKeyUsageForLocalAnchors",
100              base::FEATURE_ENABLED_BY_DEFAULT);
101 
102 BASE_FEATURE(kNetworkQualityEstimator,
103              "NetworkQualityEstimator",
104              base::FEATURE_DISABLED_BY_DEFAULT);
105 
106 BASE_FEATURE(kSplitCacheByIncludeCredentials,
107              "SplitCacheByIncludeCredentials",
108              base::FEATURE_DISABLED_BY_DEFAULT);
109 
110 BASE_FEATURE(kSplitCacheByNetworkIsolationKey,
111              "SplitCacheByNetworkIsolationKey",
112              base::FEATURE_DISABLED_BY_DEFAULT);
113 
114 BASE_FEATURE(kSplitCodeCacheByNetworkIsolationKey,
115              "SplitCodeCacheByNetworkIsolationKey",
116              base::FEATURE_DISABLED_BY_DEFAULT);
117 
118 BASE_FEATURE(kSplitHostCacheByNetworkIsolationKey,
119              "SplitHostCacheByNetworkIsolationKey",
120              base::FEATURE_DISABLED_BY_DEFAULT);
121 
122 BASE_FEATURE(kPartitionConnectionsByNetworkIsolationKey,
123              "PartitionConnectionsByNetworkIsolationKey",
124              base::FEATURE_DISABLED_BY_DEFAULT);
125 
126 BASE_FEATURE(kPartitionHttpServerPropertiesByNetworkIsolationKey,
127              "PartitionHttpServerPropertiesByNetworkIsolationKey",
128              base::FEATURE_DISABLED_BY_DEFAULT);
129 
130 BASE_FEATURE(kPartitionSSLSessionsByNetworkIsolationKey,
131              "PartitionSSLSessionsByNetworkIsolationKey",
132              base::FEATURE_DISABLED_BY_DEFAULT);
133 
134 BASE_FEATURE(kPartitionNelAndReportingByNetworkIsolationKey,
135              "PartitionNelAndReportingByNetworkIsolationKey",
136              base::FEATURE_DISABLED_BY_DEFAULT);
137 
138 BASE_FEATURE(kEnableCrossSiteFlagNetworkIsolationKey,
139              "EnableCrossSiteFlagNetworkIsolationKey",
140              base::FEATURE_DISABLED_BY_DEFAULT);
141 BASE_FEATURE(kEnableFrameSiteSharedOpaqueNetworkIsolationKey,
142              "EnableFrameSiteSharedOpaqueNetworkIsolationKey",
143              base::FEATURE_DISABLED_BY_DEFAULT);
144 BASE_FEATURE(kHttpCacheKeyingExperimentControlGroup,
145              "HttpCacheKeyingExperimentControlGroup",
146              base::FEATURE_DISABLED_BY_DEFAULT);
147 
148 BASE_FEATURE(kTLS13KeyUpdate,
149              "TLS13KeyUpdate",
150              base::FEATURE_DISABLED_BY_DEFAULT);
151 
152 BASE_FEATURE(kPermuteTLSExtensions,
153              "PermuteTLSExtensions",
154              base::FEATURE_ENABLED_BY_DEFAULT);
155 
156 BASE_FEATURE(kPostQuantumKyber,
157              "PostQuantumKyber",
158              base::FEATURE_DISABLED_BY_DEFAULT);
159 
160 BASE_FEATURE(kNetUnusedIdleSocketTimeout,
161              "NetUnusedIdleSocketTimeout",
162              base::FEATURE_DISABLED_BY_DEFAULT);
163 
164 BASE_FEATURE(kShortLaxAllowUnsafeThreshold,
165              "ShortLaxAllowUnsafeThreshold",
166              base::FEATURE_DISABLED_BY_DEFAULT);
167 
168 BASE_FEATURE(kSameSiteDefaultChecksMethodRigorously,
169              "SameSiteDefaultChecksMethodRigorously",
170              base::FEATURE_DISABLED_BY_DEFAULT);
171 
172 #if BUILDFLAG(CHROME_ROOT_STORE_OPTIONAL)
173 BASE_FEATURE(kChromeRootStoreUsed,
174              "ChromeRootStoreUsed",
175 #if BUILDFLAG(IS_ANDROID)
176              base::FEATURE_ENABLED_BY_DEFAULT
177 #else
178              base::FEATURE_DISABLED_BY_DEFAULT
179 #endif
180 );
181 #endif  // BUILDFLAG(CHROME_ROOT_STORE_OPTIONAL)
182 
183 #if BUILDFLAG(IS_MAC) || BUILDFLAG(USE_NSS_CERTS) || BUILDFLAG(IS_WIN)
184 BASE_FEATURE(kTrustStoreTrustedLeafSupport,
185              "TrustStoreTrustedLeafSupport",
186              base::FEATURE_ENABLED_BY_DEFAULT);
187 #endif
188 
189 BASE_FEATURE(kTurnOffStreamingMediaCachingOnBattery,
190              "TurnOffStreamingMediaCachingOnBattery",
191              base::FEATURE_DISABLED_BY_DEFAULT);
192 
193 BASE_FEATURE(kTurnOffStreamingMediaCachingAlways,
194              "TurnOffStreamingMediaCachingAlways",
195              base::FEATURE_DISABLED_BY_DEFAULT);
196 
197 BASE_FEATURE(kSchemefulSameSite,
198              "SchemefulSameSite",
199              base::FEATURE_ENABLED_BY_DEFAULT);
200 
201 BASE_FEATURE(kLimitOpenUDPSockets,
202              "LimitOpenUDPSockets",
203              base::FEATURE_ENABLED_BY_DEFAULT);
204 
205 extern const base::FeatureParam<int> kLimitOpenUDPSocketsMax(
206     &kLimitOpenUDPSockets,
207     "LimitOpenUDPSocketsMax",
208     6000);
209 
210 BASE_FEATURE(kTimeoutTcpConnectAttempt,
211              "TimeoutTcpConnectAttempt",
212              base::FEATURE_DISABLED_BY_DEFAULT);
213 
214 extern const base::FeatureParam<double> kTimeoutTcpConnectAttemptRTTMultiplier(
215     &kTimeoutTcpConnectAttempt,
216     "TimeoutTcpConnectAttemptRTTMultiplier",
217     5.0);
218 
219 extern const base::FeatureParam<base::TimeDelta> kTimeoutTcpConnectAttemptMin(
220     &kTimeoutTcpConnectAttempt,
221     "TimeoutTcpConnectAttemptMin",
222     base::Seconds(8));
223 
224 extern const base::FeatureParam<base::TimeDelta> kTimeoutTcpConnectAttemptMax(
225     &kTimeoutTcpConnectAttempt,
226     "TimeoutTcpConnectAttemptMax",
227     base::Seconds(30));
228 
229 #if BUILDFLAG(ENABLE_REPORTING)
230 BASE_FEATURE(kDocumentReporting,
231              "DocumentReporting",
232              base::FEATURE_ENABLED_BY_DEFAULT);
233 #endif  // BUILDFLAG(ENABLE_REPORTING)
234 
235 #if BUILDFLAG(IS_POSIX) || BUILDFLAG(IS_FUCHSIA)
236 BASE_FEATURE(kUdpSocketPosixAlwaysUpdateBytesReceived,
237              "UdpSocketPosixAlwaysUpdateBytesReceived",
238              base::FEATURE_ENABLED_BY_DEFAULT);
239 #endif  // BUILDFLAG(IS_POSIX) || BUILDFLAG(IS_FUCHSIA)
240 
241 BASE_FEATURE(kCookieSameSiteConsidersRedirectChain,
242              "CookieSameSiteConsidersRedirectChain",
243              base::FEATURE_DISABLED_BY_DEFAULT);
244 
245 BASE_FEATURE(kWaitForFirstPartySetsInit,
246              "WaitForFirstPartySetsInit",
247              base::FEATURE_DISABLED_BY_DEFAULT);
248 
249 BASE_FEATURE(kPartitionedCookies,
250              "PartitionedCookies",
251              base::FEATURE_ENABLED_BY_DEFAULT);
252 
253 BASE_FEATURE(kBlockTruncatedCookies,
254              "BlockTruncatedCookies",
255              base::FEATURE_ENABLED_BY_DEFAULT);
256 
257 BASE_FEATURE(kStaticKeyPinningEnforcement,
258              "StaticKeyPinningEnforcement",
259              base::FEATURE_ENABLED_BY_DEFAULT);
260 
261 BASE_FEATURE(kCookieDomainRejectNonASCII,
262              "CookieDomainRejectNonASCII",
263              base::FEATURE_DISABLED_BY_DEFAULT);
264 
265 // Enables partitioning of third party storage (IndexedDB, CacheStorage, etc.)
266 // by the top level site to reduce fingerprinting.
267 BASE_FEATURE(kThirdPartyStoragePartitioning,
268              "ThirdPartyStoragePartitioning",
269              base::FEATURE_ENABLED_BY_DEFAULT);
270 
271 // Whether to use the new code paths needed to support partitioning Blob URLs.
272 // This exists as a kill-switch in case an issue is identified with the Blob
273 // URL implementation that causes breakage.
274 BASE_FEATURE(kSupportPartitionedBlobUrl,
275              "SupportPartitionedBlobUrl",
276              base::FEATURE_ENABLED_BY_DEFAULT);
277 
278 BASE_FEATURE(kTpcdSupportSettings,
279              "TpcdSupportSettings",
280              base::FEATURE_ENABLED_BY_DEFAULT);
281 
282 BASE_FEATURE(kTpcdMetadataGrants,
283              "TpcdMetadataGrants",
284              base::FEATURE_ENABLED_BY_DEFAULT);
285 
286 BASE_FEATURE(kAlpsParsing, "AlpsParsing", base::FEATURE_ENABLED_BY_DEFAULT);
287 
288 BASE_FEATURE(kAlpsClientHintParsing,
289              "AlpsClientHintParsing",
290              base::FEATURE_ENABLED_BY_DEFAULT);
291 
292 BASE_FEATURE(kShouldKillSessionOnAcceptChMalformed,
293              "ShouldKillSessionOnAcceptChMalformed",
294              base::FEATURE_DISABLED_BY_DEFAULT);
295 
296 BASE_FEATURE(kCaseInsensitiveCookiePrefix,
297              "CaseInsensitiveCookiePrefix",
298              base::FEATURE_ENABLED_BY_DEFAULT);
299 
300 BASE_FEATURE(kEnableWebsocketsOverHttp3,
301              "EnableWebsocketsOverHttp3",
302              base::FEATURE_DISABLED_BY_DEFAULT);
303 
304 BASE_FEATURE(kUseNAT64ForIPv4Literal,
305              "UseNAT64ForIPv4Literal",
306              base::FEATURE_ENABLED_BY_DEFAULT);
307 
308 BASE_FEATURE(kBlockNewForbiddenHeaders,
309              "BlockNewForbiddenHeaders",
310              base::FEATURE_ENABLED_BY_DEFAULT);
311 
312 #if BUILDFLAG(IS_WIN)
313 BASE_FEATURE(kPlatformKeyProbeSHA256,
314              "PlatformKeyProbeSHA256",
315              base::FEATURE_ENABLED_BY_DEFAULT);
316 
317 // Disabled because of https://crbug.com/1489696.
318 BASE_FEATURE(kEnableGetNetworkConnectivityHintAPI,
319              "EnableGetNetworkConnectivityHintAPI",
320              base::FEATURE_DISABLED_BY_DEFAULT);
321 #endif
322 
323 // Prefetch to follow normal semantics instead of 5-minute rule
324 // https://crbug.com/1345207
325 BASE_FEATURE(kPrefetchFollowsNormalCacheSemantics,
326              "PrefetchFollowsNormalCacheSemantics",
327              base::FEATURE_DISABLED_BY_DEFAULT);
328 
329 // A flag for new Kerberos feature, that suggests new UI
330 // when Kerberos authentication in browser fails on ChromeOS.
331 // b/260522530
332 #if BUILDFLAG(IS_CHROMEOS)
333 BASE_FEATURE(kKerberosInBrowserRedirect,
334              "KerberosInBrowserRedirect",
335              base::FEATURE_ENABLED_BY_DEFAULT);
336 #endif
337 
338 // A flag to use asynchronous session creation for new QUIC sessions.
339 BASE_FEATURE(kAsyncQuicSession,
340              "AsyncQuicSession",
341 #if BUILDFLAG(IS_WIN)
342              base::FEATURE_ENABLED_BY_DEFAULT);
343 #else
344              base::FEATURE_DISABLED_BY_DEFAULT);
345 #endif
346 
347 // A flag to make multiport context creation asynchronous.
348 BASE_FEATURE(kAsyncMultiPortPath,
349              "AsyncMultiPortPath",
350 #if !BUILDFLAG(CRONET_BUILD) && (BUILDFLAG(IS_WIN) || BUILDFLAG(IS_ANDROID))
351              base::FEATURE_ENABLED_BY_DEFAULT);
352 #else
353              base::FEATURE_DISABLED_BY_DEFAULT);
354 #endif
355 
356 // IP protection experiment configuration settings
357 BASE_FEATURE(kEnableIpProtectionProxy,
358              "EnableIpPrivacyProxy",
359              base::FEATURE_DISABLED_BY_DEFAULT);
360 
361 const base::FeatureParam<std::string> kIpPrivacyTokenServer{
362     &kEnableIpProtectionProxy, /*name=*/"IpPrivacyTokenServer",
363     /*default_value=*/"https://phosphor-pa.googleapis.com"};
364 
365 const base::FeatureParam<std::string> kIpPrivacyTokenServerGetInitialDataPath{
366     &kEnableIpProtectionProxy,
367     /*name=*/"IpPrivacyTokenServerGetInitialDataPath",
368     /*default_value=*/"/v1/ipblinding/getInitialData"};
369 
370 const base::FeatureParam<std::string> kIpPrivacyTokenServerGetTokensPath{
371     &kEnableIpProtectionProxy, /*name=*/"IpPrivacyTokenServerGetTokensPath",
372     /*default_value=*/"/v1/ipblinding/auth"};
373 
374 const base::FeatureParam<std::string> kIpPrivacyTokenServerGetProxyConfigPath{
375     &kEnableIpProtectionProxy,
376     /*name=*/"IpPrivacyTokenServerGetProxyConfigPath",
377     /*default_value=*/"/v1/ipblinding/getProxyConfig"};
378 
379 const base::FeatureParam<int> kIpPrivacyAuthTokenCacheBatchSize{
380     &kEnableIpProtectionProxy, /*name=*/"IpPrivacyAuthTokenCacheBatchSize",
381     /*default_value=*/64};
382 
383 const base::FeatureParam<int> kIpPrivacyAuthTokenCacheLowWaterMark{
384     &kEnableIpProtectionProxy, /*name=*/"IpPrivacyAuthTokenCacheLowWaterMark",
385     /*default_value=*/16};
386 
387 const base::FeatureParam<base::TimeDelta> kIpPrivacyProxyListFetchInterval{
388     &kEnableIpProtectionProxy, /*name=*/"IpPrivacyProxyListFetchInterval",
389     /*default_value=*/base::Hours(1)};
390 
391 const base::FeatureParam<base::TimeDelta> kIpPrivacyProxyListMinFetchInterval{
392     &kEnableIpProtectionProxy, /*name=*/"IpPrivacyProxyMinListFetchInterval",
393     /*default_value=*/base::Minutes(1)};
394 
395 const base::FeatureParam<bool> kIpPrivacyDirectOnly{
396     &kEnableIpProtectionProxy, /*name=*/"IpPrivacyDirectOnly",
397     /*default_value=*/false};
398 
399 const base::FeatureParam<bool> kIpPrivacyBsaEnablePrivacyPass{
400     &kEnableIpProtectionProxy, /*name=*/"IpPrivacyBsaEnablePrivacyPass",
401     /*default_value=*/false};
402 
403 const base::FeatureParam<std::string> kIpPrivacyProxyBPsk{
404     &kEnableIpProtectionProxy, /*name=*/"IpPrivacyProxyBPsk",
405     /*default_value=*/""};
406 
407 const base::FeatureParam<bool> kIpPrivacyUseProxyChains{
408     &kEnableIpProtectionProxy, /*name=*/"IpPrivacyUseProxyChains",
409     /*default_value=*/false};
410 
411 // Network-change migration requires NetworkHandle support, which are currently
412 // only supported on Android (see
413 // NetworkChangeNotifier::AreNetworkHandlesSupported).
414 #if BUILDFLAG(IS_ANDROID)
415 inline constexpr auto kMigrateSessionsOnNetworkChangeV2Default =
416     base::FEATURE_DISABLED_BY_DEFAULT;
417 #else   // !BUILDFLAG(IS_ANDROID)
418 inline constexpr auto kMigrateSessionsOnNetworkChangeV2Default =
419     base::FEATURE_DISABLED_BY_DEFAULT;
420 #endif  // BUILDFLAG(IS_ANDROID)
421 BASE_FEATURE(kMigrateSessionsOnNetworkChangeV2,
422              "MigrateSessionsOnNetworkChangeV2",
423              kMigrateSessionsOnNetworkChangeV2Default);
424 
425 BASE_FEATURE(kDisableBlackholeOnNoNewNetwork,
426              "DisableBlackHoleOnNoNewNetwork",
427              base::FEATURE_DISABLED_BY_DEFAULT);
428 
429 #if BUILDFLAG(IS_LINUX)
430 BASE_FEATURE(kAddressTrackerLinuxIsProxied,
431              "AddressTrackerLinuxIsProxied",
432              base::FEATURE_ENABLED_BY_DEFAULT);
433 #endif  // BUILDFLAG(IS_LINUX)
434 
435 // Enables binding of cookies to the port that originally set them by default.
436 BASE_FEATURE(kEnablePortBoundCookies,
437              "EnablePortBoundCookies",
438              base::FEATURE_DISABLED_BY_DEFAULT);
439 
440 // Enables binding of cookies to the scheme that originally set them.
441 NET_EXPORT BASE_DECLARE_FEATURE(kEnableSchemeBoundCookies);
442 BASE_FEATURE(kEnableSchemeBoundCookies,
443              "EnableSchemeBoundCookies",
444              base::FEATURE_DISABLED_BY_DEFAULT);
445 
446 // Enable third-party cookie blocking from the command line.
447 BASE_FEATURE(kForceThirdPartyCookieBlocking,
448              "ForceThirdPartyCookieBlockingEnabled",
449              base::FEATURE_DISABLED_BY_DEFAULT);
450 
451 BASE_FEATURE(kEnableEarlyHintsOnHttp11,
452              "EnableEarlyHintsOnHttp11",
453              base::FEATURE_DISABLED_BY_DEFAULT);
454 
455 BASE_FEATURE(kEnableWebTransportDraft07,
456              "EnableWebTransportDraft07",
457              base::FEATURE_DISABLED_BY_DEFAULT);
458 
459 BASE_FEATURE(kZstdContentEncoding,
460              "ZstdContentEncoding",
461              base::FEATURE_DISABLED_BY_DEFAULT);
462 
463 // When enabled, partitioned storage will be allowed even if third-party cookies
464 // are disabled by default. Partitioned storage will not be allowed if
465 // third-party cookies are disabled due to a specific rule.
466 BASE_FEATURE(kThirdPartyPartitionedStorageAllowedByDefault,
467              "ThirdPartyPartitionedStorageAllowedByDefault",
468              base::FEATURE_ENABLED_BY_DEFAULT);
469 
470 BASE_FEATURE(kPriorityHeader,
471              "PriorityHeader",
472              base::FEATURE_DISABLED_BY_DEFAULT);
473 
474 BASE_FEATURE(kSpdyHeadersToHttpResponseUseBuilder,
475              "SpdyHeadersToHttpResponseUseBuilder",
476              base::FEATURE_DISABLED_BY_DEFAULT);
477 
478 BASE_FEATURE(kReceiveEcn, "ReceiveEcn", base::FEATURE_DISABLED_BY_DEFAULT);
479 
480 // TODO(crbug.com/634470): Remove this feature flag in January 2024 if the new
481 // limit sticks.
482 BASE_FEATURE(kNewCertPathBuilderIterationLimit,
483              "NewCertPathBuilderIterationLimit",
484              base::FEATURE_ENABLED_BY_DEFAULT);
485 
486 BASE_FEATURE(kUseAlpsNewCodepoint,
487              "UseAlpsNewCodepoint",
488              base::FEATURE_DISABLED_BY_DEFAULT);
489 
490 BASE_FEATURE(kTreatHTTPExpiresHeaderValueZeroAsExpired,
491              "TreatHTTPExpiresHeaderValueZeroAsExpired",
492              base::FEATURE_ENABLED_BY_DEFAULT);
493 
494 }  // namespace net::features
495