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