1*6777b538SAndroid Build Coastguard Worker // Copyright 2018 The Chromium Authors 2*6777b538SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 3*6777b538SAndroid Build Coastguard Worker // found in the LICENSE file. 4*6777b538SAndroid Build Coastguard Worker 5*6777b538SAndroid Build Coastguard Worker #ifndef NET_BASE_FEATURES_H_ 6*6777b538SAndroid Build Coastguard Worker #define NET_BASE_FEATURES_H_ 7*6777b538SAndroid Build Coastguard Worker 8*6777b538SAndroid Build Coastguard Worker #include <string> 9*6777b538SAndroid Build Coastguard Worker #include <string_view> 10*6777b538SAndroid Build Coastguard Worker 11*6777b538SAndroid Build Coastguard Worker #include "base/feature_list.h" 12*6777b538SAndroid Build Coastguard Worker #include "base/metrics/field_trial_params.h" 13*6777b538SAndroid Build Coastguard Worker #include "base/time/time.h" 14*6777b538SAndroid Build Coastguard Worker #include "build/build_config.h" 15*6777b538SAndroid Build Coastguard Worker #include "crypto/crypto_buildflags.h" 16*6777b538SAndroid Build Coastguard Worker #include "net/base/net_export.h" 17*6777b538SAndroid Build Coastguard Worker #include "net/net_buildflags.h" 18*6777b538SAndroid Build Coastguard Worker 19*6777b538SAndroid Build Coastguard Worker namespace net::features { 20*6777b538SAndroid Build Coastguard Worker 21*6777b538SAndroid Build Coastguard Worker // Enables ALPS extension of TLS 1.3 for HTTP/2, see 22*6777b538SAndroid Build Coastguard Worker // https://vasilvv.github.io/tls-alps/draft-vvv-tls-alps.html and 23*6777b538SAndroid Build Coastguard Worker // https://vasilvv.github.io/httpbis-alps/draft-vvv-httpbis-alps.html. 24*6777b538SAndroid Build Coastguard Worker NET_EXPORT BASE_DECLARE_FEATURE(kAlpsForHttp2); 25*6777b538SAndroid Build Coastguard Worker 26*6777b538SAndroid Build Coastguard Worker // Disable H2 reprioritization, in order to measure its impact. 27*6777b538SAndroid Build Coastguard Worker NET_EXPORT BASE_DECLARE_FEATURE(kAvoidH2Reprioritization); 28*6777b538SAndroid Build Coastguard Worker 29*6777b538SAndroid Build Coastguard Worker // When kCapReferrerToOriginOnCrossOrigin is enabled, HTTP referrers on cross- 30*6777b538SAndroid Build Coastguard Worker // origin requests are restricted to contain at most the source origin. 31*6777b538SAndroid Build Coastguard Worker NET_EXPORT BASE_DECLARE_FEATURE(kCapReferrerToOriginOnCrossOrigin); 32*6777b538SAndroid Build Coastguard Worker 33*6777b538SAndroid Build Coastguard Worker // Enables the built-in DNS resolver. 34*6777b538SAndroid Build Coastguard Worker NET_EXPORT BASE_DECLARE_FEATURE(kAsyncDns); 35*6777b538SAndroid Build Coastguard Worker 36*6777b538SAndroid Build Coastguard Worker // Support for altering the parameters used for DNS transaction timeout. See 37*6777b538SAndroid Build Coastguard Worker // ResolveContext::SecureTransactionTimeout(). 38*6777b538SAndroid Build Coastguard Worker NET_EXPORT BASE_DECLARE_FEATURE(kDnsTransactionDynamicTimeouts); 39*6777b538SAndroid Build Coastguard Worker // Multiplier applied to current fallback periods in determining a transaction 40*6777b538SAndroid Build Coastguard Worker // timeout. 41*6777b538SAndroid Build Coastguard Worker NET_EXPORT extern const base::FeatureParam<double> 42*6777b538SAndroid Build Coastguard Worker kDnsTransactionTimeoutMultiplier; 43*6777b538SAndroid Build Coastguard Worker NET_EXPORT extern const base::FeatureParam<base::TimeDelta> 44*6777b538SAndroid Build Coastguard Worker kDnsMinTransactionTimeout; 45*6777b538SAndroid Build Coastguard Worker 46*6777b538SAndroid Build Coastguard Worker // Enables querying HTTPS DNS records that will affect results from HostResolver 47*6777b538SAndroid Build Coastguard Worker // and may be used to affect connection behavior. Whether or not those results 48*6777b538SAndroid Build Coastguard Worker // are used (e.g. to connect via ECH) may be controlled by separate features. 49*6777b538SAndroid Build Coastguard Worker NET_EXPORT BASE_DECLARE_FEATURE(kUseDnsHttpsSvcb); 50*6777b538SAndroid Build Coastguard Worker 51*6777b538SAndroid Build Coastguard Worker // Param to control whether or not HostResolver, when using Secure DNS, will 52*6777b538SAndroid Build Coastguard Worker // fail the entire connection attempt when receiving an inconclusive response to 53*6777b538SAndroid Build Coastguard Worker // an HTTPS query (anything except transport error, timeout, or SERVFAIL). Used 54*6777b538SAndroid Build Coastguard Worker // to prevent certain downgrade attacks against ECH behavior. 55*6777b538SAndroid Build Coastguard Worker NET_EXPORT extern const base::FeatureParam<bool> 56*6777b538SAndroid Build Coastguard Worker kUseDnsHttpsSvcbEnforceSecureResponse; 57*6777b538SAndroid Build Coastguard Worker 58*6777b538SAndroid Build Coastguard Worker // If we are still waiting for an HTTPS transaction after all the 59*6777b538SAndroid Build Coastguard Worker // other transactions in an insecure DnsTask have completed, we will compute a 60*6777b538SAndroid Build Coastguard Worker // timeout for the remaining transaction. The timeout will be 61*6777b538SAndroid Build Coastguard Worker // `kUseDnsHttpsSvcbInsecureExtraTimePercent.Get() / 100 * t`, where `t` is the 62*6777b538SAndroid Build Coastguard Worker // time delta since the first query began. And the timeout will additionally be 63*6777b538SAndroid Build Coastguard Worker // clamped by: 64*6777b538SAndroid Build Coastguard Worker // (a) `kUseDnsHttpsSvcbInsecureExtraTimeMin.Get()` 65*6777b538SAndroid Build Coastguard Worker // (b) `kUseDnsHttpsSvcbInsecureExtraTimeMax.Get()` 66*6777b538SAndroid Build Coastguard Worker // 67*6777b538SAndroid Build Coastguard Worker // Any param is ignored if zero, and if one of min/max is non-zero with a zero 68*6777b538SAndroid Build Coastguard Worker // percent param it will be used as an absolute timeout. If all are zero, there 69*6777b538SAndroid Build Coastguard Worker // is no timeout specific to HTTPS transactions, only the regular DNS query 70*6777b538SAndroid Build Coastguard Worker // timeout and server fallback. 71*6777b538SAndroid Build Coastguard Worker NET_EXPORT extern const base::FeatureParam<base::TimeDelta> 72*6777b538SAndroid Build Coastguard Worker kUseDnsHttpsSvcbInsecureExtraTimeMax; 73*6777b538SAndroid Build Coastguard Worker NET_EXPORT extern const base::FeatureParam<int> 74*6777b538SAndroid Build Coastguard Worker kUseDnsHttpsSvcbInsecureExtraTimePercent; 75*6777b538SAndroid Build Coastguard Worker NET_EXPORT extern const base::FeatureParam<base::TimeDelta> 76*6777b538SAndroid Build Coastguard Worker kUseDnsHttpsSvcbInsecureExtraTimeMin; 77*6777b538SAndroid Build Coastguard Worker 78*6777b538SAndroid Build Coastguard Worker // Same as `kUseDnsHttpsSvcbInsecureExtraTime...` except for secure DnsTasks. 79*6777b538SAndroid Build Coastguard Worker // 80*6777b538SAndroid Build Coastguard Worker // If `kUseDnsHttpsSvcbEnforceSecureResponse` is enabled, the timeouts will not 81*6777b538SAndroid Build Coastguard Worker // be used because there is no sense killing a transaction early if that will 82*6777b538SAndroid Build Coastguard Worker // just kill the entire request. 83*6777b538SAndroid Build Coastguard Worker NET_EXPORT extern const base::FeatureParam<base::TimeDelta> 84*6777b538SAndroid Build Coastguard Worker kUseDnsHttpsSvcbSecureExtraTimeMax; 85*6777b538SAndroid Build Coastguard Worker NET_EXPORT extern const base::FeatureParam<int> 86*6777b538SAndroid Build Coastguard Worker kUseDnsHttpsSvcbSecureExtraTimePercent; 87*6777b538SAndroid Build Coastguard Worker NET_EXPORT extern const base::FeatureParam<base::TimeDelta> 88*6777b538SAndroid Build Coastguard Worker kUseDnsHttpsSvcbSecureExtraTimeMin; 89*6777b538SAndroid Build Coastguard Worker 90*6777b538SAndroid Build Coastguard Worker // Update protocol using ALPN information in HTTPS DNS records. 91*6777b538SAndroid Build Coastguard Worker NET_EXPORT BASE_DECLARE_FEATURE(kUseDnsHttpsSvcbAlpn); 92*6777b538SAndroid Build Coastguard Worker 93*6777b538SAndroid Build Coastguard Worker // If enabled, HostResolver will use the new HostResolverCache that separately 94*6777b538SAndroid Build Coastguard Worker // caches by DNS type, unlike the old HostCache that always cached by merged 95*6777b538SAndroid Build Coastguard Worker // request results. May enable related behavior such as separately sorting DNS 96*6777b538SAndroid Build Coastguard Worker // results after each transaction rather than sorting collectively after all 97*6777b538SAndroid Build Coastguard Worker // transactions complete. 98*6777b538SAndroid Build Coastguard Worker NET_EXPORT BASE_DECLARE_FEATURE(kUseHostResolverCache); 99*6777b538SAndroid Build Coastguard Worker 100*6777b538SAndroid Build Coastguard Worker // Enables the DNS ServiceEndpointRequest API, which provides intermediate 101*6777b538SAndroid Build Coastguard Worker // service endpoints in the middle of a DNS transaction so that clients of this 102*6777b538SAndroid Build Coastguard Worker // API can attempt connections as soon as candidate endpoints are available. 103*6777b538SAndroid Build Coastguard Worker NET_EXPORT BASE_DECLARE_FEATURE(kUseServiceEndpointRequest); 104*6777b538SAndroid Build Coastguard Worker 105*6777b538SAndroid Build Coastguard Worker // If the `kUseAlternativePortForGloballyReachableCheck` flag is enabled, the 106*6777b538SAndroid Build Coastguard Worker // globally reachable check will use the port number specified by 107*6777b538SAndroid Build Coastguard Worker // `kAlternativePortForGloballyReachableCheck` flag. Otherwise, the globally 108*6777b538SAndroid Build Coastguard Worker // reachable check will use 443 port. 109*6777b538SAndroid Build Coastguard Worker NET_EXPORT extern const base::FeatureParam<int> 110*6777b538SAndroid Build Coastguard Worker kAlternativePortForGloballyReachableCheck; 111*6777b538SAndroid Build Coastguard Worker NET_EXPORT BASE_DECLARE_FEATURE(kUseAlternativePortForGloballyReachableCheck); 112*6777b538SAndroid Build Coastguard Worker 113*6777b538SAndroid Build Coastguard Worker // If enabled, overrides IPv6 reachability probe results based on the system's 114*6777b538SAndroid Build Coastguard Worker // IP addresses. 115*6777b538SAndroid Build Coastguard Worker NET_EXPORT BASE_DECLARE_FEATURE(kEnableIPv6ReachabilityOverride); 116*6777b538SAndroid Build Coastguard Worker 117*6777b538SAndroid Build Coastguard Worker // Enables TLS 1.3 early data. 118*6777b538SAndroid Build Coastguard Worker NET_EXPORT BASE_DECLARE_FEATURE(kEnableTLS13EarlyData); 119*6777b538SAndroid Build Coastguard Worker 120*6777b538SAndroid Build Coastguard Worker // Enables optimizing the network quality estimation algorithms in network 121*6777b538SAndroid Build Coastguard Worker // quality estimator (NQE). 122*6777b538SAndroid Build Coastguard Worker NET_EXPORT BASE_DECLARE_FEATURE(kNetworkQualityEstimator); 123*6777b538SAndroid Build Coastguard Worker 124*6777b538SAndroid Build Coastguard Worker // Splits cache entries by the request's includeCredentials. 125*6777b538SAndroid Build Coastguard Worker NET_EXPORT BASE_DECLARE_FEATURE(kSplitCacheByIncludeCredentials); 126*6777b538SAndroid Build Coastguard Worker 127*6777b538SAndroid Build Coastguard Worker // Splits cache entries by the request's NetworkIsolationKey if one is 128*6777b538SAndroid Build Coastguard Worker // available. 129*6777b538SAndroid Build Coastguard Worker NET_EXPORT BASE_DECLARE_FEATURE(kSplitCacheByNetworkIsolationKey); 130*6777b538SAndroid Build Coastguard Worker 131*6777b538SAndroid Build Coastguard Worker // Splits the generated code cache by the request's NetworkIsolationKey if one 132*6777b538SAndroid Build Coastguard Worker // is available. Note that this feature is also gated behind 133*6777b538SAndroid Build Coastguard Worker // `net::HttpCache::IsSplitCacheEnabled()`. 134*6777b538SAndroid Build Coastguard Worker NET_EXPORT BASE_DECLARE_FEATURE(kSplitCodeCacheByNetworkIsolationKey); 135*6777b538SAndroid Build Coastguard Worker 136*6777b538SAndroid Build Coastguard Worker // Splits host cache entries by the DNS request's NetworkAnonymizationKey if one 137*6777b538SAndroid Build Coastguard Worker // is available. Also prevents merging live DNS lookups when there is a NAK 138*6777b538SAndroid Build Coastguard Worker // mismatch. 139*6777b538SAndroid Build Coastguard Worker NET_EXPORT BASE_DECLARE_FEATURE(kSplitHostCacheByNetworkIsolationKey); 140*6777b538SAndroid Build Coastguard Worker 141*6777b538SAndroid Build Coastguard Worker // Partitions connections based on the NetworkAnonymizationKey associated with a 142*6777b538SAndroid Build Coastguard Worker // request. 143*6777b538SAndroid Build Coastguard Worker NET_EXPORT BASE_DECLARE_FEATURE(kPartitionConnectionsByNetworkIsolationKey); 144*6777b538SAndroid Build Coastguard Worker 145*6777b538SAndroid Build Coastguard Worker // Partitions HttpServerProperties based on the NetworkAnonymizationKey 146*6777b538SAndroid Build Coastguard Worker // associated with a request. 147*6777b538SAndroid Build Coastguard Worker NET_EXPORT BASE_DECLARE_FEATURE( 148*6777b538SAndroid Build Coastguard Worker kPartitionHttpServerPropertiesByNetworkIsolationKey); 149*6777b538SAndroid Build Coastguard Worker 150*6777b538SAndroid Build Coastguard Worker // Partitions TLS sessions and QUIC server configs based on the 151*6777b538SAndroid Build Coastguard Worker // NetworkAnonymizationKey associated with a request. 152*6777b538SAndroid Build Coastguard Worker // 153*6777b538SAndroid Build Coastguard Worker // This feature requires kPartitionConnectionsByNetworkIsolationKey to be 154*6777b538SAndroid Build Coastguard Worker // enabled to work. 155*6777b538SAndroid Build Coastguard Worker NET_EXPORT BASE_DECLARE_FEATURE(kPartitionSSLSessionsByNetworkIsolationKey); 156*6777b538SAndroid Build Coastguard Worker 157*6777b538SAndroid Build Coastguard Worker // Partitions Network Error Logging and Reporting API data by 158*6777b538SAndroid Build Coastguard Worker // NetworkAnonymizationKey. Also partitions all reports generated by other 159*6777b538SAndroid Build Coastguard Worker // consumers of the reporting API. Applies the NetworkAnonymizationKey to 160*6777b538SAndroid Build Coastguard Worker // reports uploads as well. 161*6777b538SAndroid Build Coastguard Worker // 162*6777b538SAndroid Build Coastguard Worker // When disabled, the main entry points of the reporting and NEL services ignore 163*6777b538SAndroid Build Coastguard Worker // NetworkAnonymizationKey parameters, and they're cleared while loading from 164*6777b538SAndroid Build Coastguard Worker // the cache, but internal objects can be created with them (e.g., endpoints), 165*6777b538SAndroid Build Coastguard Worker // for testing. 166*6777b538SAndroid Build Coastguard Worker NET_EXPORT BASE_DECLARE_FEATURE(kPartitionNelAndReportingByNetworkIsolationKey); 167*6777b538SAndroid Build Coastguard Worker 168*6777b538SAndroid Build Coastguard Worker // Creates a <double key + is_cross_site> NetworkIsolationKey which is used 169*6777b538SAndroid Build Coastguard Worker // to partition the HTTP cache. This key will have the following properties: 170*6777b538SAndroid Build Coastguard Worker // `top_frame_site_` -> the schemeful site of the top level page. 171*6777b538SAndroid Build Coastguard Worker // `frame_site_` -> std::nullopt. 172*6777b538SAndroid Build Coastguard Worker // `is_cross_site_` -> a boolean indicating whether the frame site is 173*6777b538SAndroid Build Coastguard Worker // schemefully cross-site from the top-level site. 174*6777b538SAndroid Build Coastguard Worker NET_EXPORT BASE_DECLARE_FEATURE(kEnableCrossSiteFlagNetworkIsolationKey); 175*6777b538SAndroid Build Coastguard Worker NET_EXPORT BASE_DECLARE_FEATURE( 176*6777b538SAndroid Build Coastguard Worker kEnableFrameSiteSharedOpaqueNetworkIsolationKey); 177*6777b538SAndroid Build Coastguard Worker NET_EXPORT BASE_DECLARE_FEATURE(kHttpCacheKeyingExperimentControlGroup); 178*6777b538SAndroid Build Coastguard Worker 179*6777b538SAndroid Build Coastguard Worker // Enables sending TLS 1.3 Key Update messages on TLS 1.3 connections in order 180*6777b538SAndroid Build Coastguard Worker // to ensure that this corner of the spec is exercised. This is currently 181*6777b538SAndroid Build Coastguard Worker // disabled by default because we discovered incompatibilities with some 182*6777b538SAndroid Build Coastguard Worker // servers. 183*6777b538SAndroid Build Coastguard Worker NET_EXPORT BASE_DECLARE_FEATURE(kTLS13KeyUpdate); 184*6777b538SAndroid Build Coastguard Worker 185*6777b538SAndroid Build Coastguard Worker // Enables permuting TLS extensions in the ClientHello, to reduce the risk of 186*6777b538SAndroid Build Coastguard Worker // non-compliant servers ossifying parts of the ClientHello and interfering with 187*6777b538SAndroid Build Coastguard Worker // deployment of future security improvements. 188*6777b538SAndroid Build Coastguard Worker NET_EXPORT BASE_DECLARE_FEATURE(kPermuteTLSExtensions); 189*6777b538SAndroid Build Coastguard Worker 190*6777b538SAndroid Build Coastguard Worker // Enables Kyber-based post-quantum key-agreements in TLS 1.3 connections. 191*6777b538SAndroid Build Coastguard Worker NET_EXPORT BASE_DECLARE_FEATURE(kPostQuantumKyber); 192*6777b538SAndroid Build Coastguard Worker 193*6777b538SAndroid Build Coastguard Worker // Changes the timeout after which unused sockets idle sockets are cleaned up. 194*6777b538SAndroid Build Coastguard Worker NET_EXPORT BASE_DECLARE_FEATURE(kNetUnusedIdleSocketTimeout); 195*6777b538SAndroid Build Coastguard Worker 196*6777b538SAndroid Build Coastguard Worker // When enabled, the time threshold for Lax-allow-unsafe cookies will be lowered 197*6777b538SAndroid Build Coastguard Worker // from 2 minutes to 10 seconds. This time threshold refers to the age cutoff 198*6777b538SAndroid Build Coastguard Worker // for which cookies that default into SameSite=Lax, which are newer than the 199*6777b538SAndroid Build Coastguard Worker // threshold, will be sent with any top-level cross-site navigation regardless 200*6777b538SAndroid Build Coastguard Worker // of HTTP method (i.e. allowing unsafe methods). This is a convenience for 201*6777b538SAndroid Build Coastguard Worker // integration tests which may want to test behavior of cookies older than the 202*6777b538SAndroid Build Coastguard Worker // threshold, but which would not be practical to run for 2 minutes. 203*6777b538SAndroid Build Coastguard Worker NET_EXPORT BASE_DECLARE_FEATURE(kShortLaxAllowUnsafeThreshold); 204*6777b538SAndroid Build Coastguard Worker 205*6777b538SAndroid Build Coastguard Worker // When enabled, the SameSite by default feature does not add the 206*6777b538SAndroid Build Coastguard Worker // "Lax-allow-unsafe" behavior. Any cookies that do not specify a SameSite 207*6777b538SAndroid Build Coastguard Worker // attribute will be treated as Lax only, i.e. POST and other unsafe HTTP 208*6777b538SAndroid Build Coastguard Worker // methods will not be allowed at all for top-level cross-site navigations. 209*6777b538SAndroid Build Coastguard Worker // This only has an effect if the cookie defaults to SameSite=Lax. 210*6777b538SAndroid Build Coastguard Worker NET_EXPORT BASE_DECLARE_FEATURE(kSameSiteDefaultChecksMethodRigorously); 211*6777b538SAndroid Build Coastguard Worker 212*6777b538SAndroid Build Coastguard Worker // When enabled, bssl::TrustStore implementations will use TRUSTED_LEAF, 213*6777b538SAndroid Build Coastguard Worker // TRUSTED_ANCHOR_OR_LEAF, and TRUSTED_ANCHOR as appropriate. When disabled, 214*6777b538SAndroid Build Coastguard Worker // bssl::TrustStore implementation will only use TRUSTED_ANCHOR. 215*6777b538SAndroid Build Coastguard Worker // TODO(https://crbug.com/1403034): remove this a few milestones after the 216*6777b538SAndroid Build Coastguard Worker // trusted leaf support has been launched on all relevant platforms. 217*6777b538SAndroid Build Coastguard Worker #if BUILDFLAG(IS_MAC) || BUILDFLAG(USE_NSS_CERTS) || BUILDFLAG(IS_WIN) 218*6777b538SAndroid Build Coastguard Worker NET_EXPORT BASE_DECLARE_FEATURE(kTrustStoreTrustedLeafSupport); 219*6777b538SAndroid Build Coastguard Worker #endif 220*6777b538SAndroid Build Coastguard Worker 221*6777b538SAndroid Build Coastguard Worker // Turns off streaming media caching to disk when on battery power. 222*6777b538SAndroid Build Coastguard Worker NET_EXPORT BASE_DECLARE_FEATURE(kTurnOffStreamingMediaCachingOnBattery); 223*6777b538SAndroid Build Coastguard Worker 224*6777b538SAndroid Build Coastguard Worker // Turns off streaming media caching to disk always. 225*6777b538SAndroid Build Coastguard Worker NET_EXPORT BASE_DECLARE_FEATURE(kTurnOffStreamingMediaCachingAlways); 226*6777b538SAndroid Build Coastguard Worker 227*6777b538SAndroid Build Coastguard Worker // When enabled this feature will cause same-site calculations to take into 228*6777b538SAndroid Build Coastguard Worker // account the scheme of the site-for-cookies and the request/response url. 229*6777b538SAndroid Build Coastguard Worker NET_EXPORT BASE_DECLARE_FEATURE(kSchemefulSameSite); 230*6777b538SAndroid Build Coastguard Worker 231*6777b538SAndroid Build Coastguard Worker // Enables a process-wide limit on "open" UDP sockets. See 232*6777b538SAndroid Build Coastguard Worker // udp_socket_global_limits.h for details on what constitutes an "open" socket. 233*6777b538SAndroid Build Coastguard Worker NET_EXPORT BASE_DECLARE_FEATURE(kLimitOpenUDPSockets); 234*6777b538SAndroid Build Coastguard Worker 235*6777b538SAndroid Build Coastguard Worker // FeatureParams associated with kLimitOpenUDPSockets. 236*6777b538SAndroid Build Coastguard Worker 237*6777b538SAndroid Build Coastguard Worker // Sets the maximum allowed open UDP sockets. Provisioning more sockets than 238*6777b538SAndroid Build Coastguard Worker // this will result in a failure (ERR_INSUFFICIENT_RESOURCES). 239*6777b538SAndroid Build Coastguard Worker NET_EXPORT extern const base::FeatureParam<int> kLimitOpenUDPSocketsMax; 240*6777b538SAndroid Build Coastguard Worker 241*6777b538SAndroid Build Coastguard Worker // Enables a timeout on individual TCP connect attempts, based on 242*6777b538SAndroid Build Coastguard Worker // the parameter values. 243*6777b538SAndroid Build Coastguard Worker NET_EXPORT BASE_DECLARE_FEATURE(kTimeoutTcpConnectAttempt); 244*6777b538SAndroid Build Coastguard Worker 245*6777b538SAndroid Build Coastguard Worker // FeatureParams associated with kTimeoutTcpConnectAttempt. 246*6777b538SAndroid Build Coastguard Worker 247*6777b538SAndroid Build Coastguard Worker // When there is an estimated RTT available, the experimental TCP connect 248*6777b538SAndroid Build Coastguard Worker // attempt timeout is calculated as: 249*6777b538SAndroid Build Coastguard Worker // 250*6777b538SAndroid Build Coastguard Worker // clamp(kTimeoutTcpConnectAttemptMin, 251*6777b538SAndroid Build Coastguard Worker // kTimeoutTcpConnectAttemptMax, 252*6777b538SAndroid Build Coastguard Worker // <Estimated RTT> * kTimeoutTcpConnectAttemptRTTMultiplier); 253*6777b538SAndroid Build Coastguard Worker // 254*6777b538SAndroid Build Coastguard Worker // Otherwise the TCP connect attempt timeout is set to 255*6777b538SAndroid Build Coastguard Worker // kTimeoutTcpConnectAttemptMax. 256*6777b538SAndroid Build Coastguard Worker NET_EXPORT extern const base::FeatureParam<double> 257*6777b538SAndroid Build Coastguard Worker kTimeoutTcpConnectAttemptRTTMultiplier; 258*6777b538SAndroid Build Coastguard Worker NET_EXPORT extern const base::FeatureParam<base::TimeDelta> 259*6777b538SAndroid Build Coastguard Worker kTimeoutTcpConnectAttemptMin; 260*6777b538SAndroid Build Coastguard Worker NET_EXPORT extern const base::FeatureParam<base::TimeDelta> 261*6777b538SAndroid Build Coastguard Worker kTimeoutTcpConnectAttemptMax; 262*6777b538SAndroid Build Coastguard Worker 263*6777b538SAndroid Build Coastguard Worker #if BUILDFLAG(ENABLE_REPORTING) 264*6777b538SAndroid Build Coastguard Worker // When enabled this feature will allow a new Reporting-Endpoints header to 265*6777b538SAndroid Build Coastguard Worker // configure reporting endpoints for report delivery. This is used to support 266*6777b538SAndroid Build Coastguard Worker // the new Document Reporting spec. 267*6777b538SAndroid Build Coastguard Worker NET_EXPORT BASE_DECLARE_FEATURE(kDocumentReporting); 268*6777b538SAndroid Build Coastguard Worker #endif // BUILDFLAG(ENABLE_REPORTING) 269*6777b538SAndroid Build Coastguard Worker 270*6777b538SAndroid Build Coastguard Worker #if BUILDFLAG(IS_POSIX) || BUILDFLAG(IS_FUCHSIA) 271*6777b538SAndroid Build Coastguard Worker // When enabled, UDPSocketPosix increments the global counter of bytes received 272*6777b538SAndroid Build Coastguard Worker // every time bytes are received, instead of using a timer to batch updates. 273*6777b538SAndroid Build Coastguard Worker // This should reduce the number of wake ups and improve battery consumption. 274*6777b538SAndroid Build Coastguard Worker // TODO(https://crbug.com/1189805): Cleanup the feature after verifying that it 275*6777b538SAndroid Build Coastguard Worker // doesn't negatively affect performance. 276*6777b538SAndroid Build Coastguard Worker NET_EXPORT BASE_DECLARE_FEATURE(kUdpSocketPosixAlwaysUpdateBytesReceived); 277*6777b538SAndroid Build Coastguard Worker #endif // BUILDFLAG(IS_POSIX) || BUILDFLAG(IS_FUCHSIA) 278*6777b538SAndroid Build Coastguard Worker 279*6777b538SAndroid Build Coastguard Worker // When this feature is enabled, redirected requests will be considered 280*6777b538SAndroid Build Coastguard Worker // cross-site for the purpose of SameSite cookies if any redirect hop was 281*6777b538SAndroid Build Coastguard Worker // cross-site to the target URL, even if the original initiator of the 282*6777b538SAndroid Build Coastguard Worker // redirected request was same-site with the target URL (and the 283*6777b538SAndroid Build Coastguard Worker // site-for-cookies). 284*6777b538SAndroid Build Coastguard Worker // See spec changes in https://github.com/httpwg/http-extensions/pull/1348 285*6777b538SAndroid Build Coastguard Worker NET_EXPORT BASE_DECLARE_FEATURE(kCookieSameSiteConsidersRedirectChain); 286*6777b538SAndroid Build Coastguard Worker 287*6777b538SAndroid Build Coastguard Worker // When this feature is enabled, the network service will wait until First-Party 288*6777b538SAndroid Build Coastguard Worker // Sets are initialized before issuing requests that use the HTTP cache or 289*6777b538SAndroid Build Coastguard Worker // cookies. 290*6777b538SAndroid Build Coastguard Worker NET_EXPORT BASE_DECLARE_FEATURE(kWaitForFirstPartySetsInit); 291*6777b538SAndroid Build Coastguard Worker 292*6777b538SAndroid Build Coastguard Worker // Controls the maximum time duration an outermost frame navigation should be 293*6777b538SAndroid Build Coastguard Worker // deferred by RWS initialization. 294*6777b538SAndroid Build Coastguard Worker NET_EXPORT extern const base::FeatureParam<base::TimeDelta> 295*6777b538SAndroid Build Coastguard Worker kWaitForFirstPartySetsInitNavigationThrottleTimeout; 296*6777b538SAndroid Build Coastguard Worker 297*6777b538SAndroid Build Coastguard Worker // When enabled, a cross-site ancestor chain bit is included in the partition 298*6777b538SAndroid Build Coastguard Worker // key in partitioned cookies. 299*6777b538SAndroid Build Coastguard Worker NET_EXPORT BASE_DECLARE_FEATURE(kAncestorChainBitEnabledInPartitionedCookies); 300*6777b538SAndroid Build Coastguard Worker 301*6777b538SAndroid Build Coastguard Worker // When enabled, cookie-related code will treat cookies containing '\0', '\r', 302*6777b538SAndroid Build Coastguard Worker // and '\n' as invalid and reject the cookie. 303*6777b538SAndroid Build Coastguard Worker NET_EXPORT BASE_DECLARE_FEATURE(kBlockTruncatedCookies); 304*6777b538SAndroid Build Coastguard Worker 305*6777b538SAndroid Build Coastguard Worker // Controls whether static key pinning is enforced. 306*6777b538SAndroid Build Coastguard Worker NET_EXPORT BASE_DECLARE_FEATURE(kStaticKeyPinningEnforcement); 307*6777b538SAndroid Build Coastguard Worker 308*6777b538SAndroid Build Coastguard Worker // When enabled, cookies with a non-ASCII domain attribute will be rejected. 309*6777b538SAndroid Build Coastguard Worker NET_EXPORT BASE_DECLARE_FEATURE(kCookieDomainRejectNonASCII); 310*6777b538SAndroid Build Coastguard Worker 311*6777b538SAndroid Build Coastguard Worker NET_EXPORT BASE_DECLARE_FEATURE(kThirdPartyStoragePartitioning); 312*6777b538SAndroid Build Coastguard Worker NET_EXPORT BASE_DECLARE_FEATURE(kSupportPartitionedBlobUrl); 313*6777b538SAndroid Build Coastguard Worker 314*6777b538SAndroid Build Coastguard Worker // Feature to enable consideration of 3PC deprecation trial settings. 315*6777b538SAndroid Build Coastguard Worker NET_EXPORT BASE_DECLARE_FEATURE(kTpcdTrialSettings); 316*6777b538SAndroid Build Coastguard Worker 317*6777b538SAndroid Build Coastguard Worker // Feature to enable consideration of top-level 3PC deprecation trial settings. 318*6777b538SAndroid Build Coastguard Worker NET_EXPORT BASE_DECLARE_FEATURE(kTopLevelTpcdTrialSettings); 319*6777b538SAndroid Build Coastguard Worker 320*6777b538SAndroid Build Coastguard Worker // Whether to enable the use of 3PC based on 3PCD metadata grants delivered via 321*6777b538SAndroid Build Coastguard Worker // component updater. 322*6777b538SAndroid Build Coastguard Worker NET_EXPORT BASE_DECLARE_FEATURE(kTpcdMetadataGrants); 323*6777b538SAndroid Build Coastguard Worker 324*6777b538SAndroid Build Coastguard Worker // Whether to enable staged rollback of the TPCD Metadata Entries. 325*6777b538SAndroid Build Coastguard Worker NET_EXPORT BASE_DECLARE_FEATURE(kTpcdMetadataStagedRollback); 326*6777b538SAndroid Build Coastguard Worker 327*6777b538SAndroid Build Coastguard Worker // Whether ALPS parsing is on for any type of frame. 328*6777b538SAndroid Build Coastguard Worker NET_EXPORT BASE_DECLARE_FEATURE(kAlpsParsing); 329*6777b538SAndroid Build Coastguard Worker 330*6777b538SAndroid Build Coastguard Worker // Whether ALPS parsing is on for client hint parsing specifically. 331*6777b538SAndroid Build Coastguard Worker NET_EXPORT BASE_DECLARE_FEATURE(kAlpsClientHintParsing); 332*6777b538SAndroid Build Coastguard Worker 333*6777b538SAndroid Build Coastguard Worker // Whether to kill the session on Error::kAcceptChMalformed. 334*6777b538SAndroid Build Coastguard Worker NET_EXPORT BASE_DECLARE_FEATURE(kShouldKillSessionOnAcceptChMalformed); 335*6777b538SAndroid Build Coastguard Worker 336*6777b538SAndroid Build Coastguard Worker NET_EXPORT BASE_DECLARE_FEATURE(kCaseInsensitiveCookiePrefix); 337*6777b538SAndroid Build Coastguard Worker 338*6777b538SAndroid Build Coastguard Worker NET_EXPORT BASE_DECLARE_FEATURE(kEnableWebsocketsOverHttp3); 339*6777b538SAndroid Build Coastguard Worker 340*6777b538SAndroid Build Coastguard Worker // Whether to do IPv4 to IPv6 address translation for IPv4 literals. 341*6777b538SAndroid Build Coastguard Worker NET_EXPORT BASE_DECLARE_FEATURE(kUseNAT64ForIPv4Literal); 342*6777b538SAndroid Build Coastguard Worker 343*6777b538SAndroid Build Coastguard Worker // Whether to block newly added forbidden headers (https://crbug.com/1362331). 344*6777b538SAndroid Build Coastguard Worker NET_EXPORT BASE_DECLARE_FEATURE(kBlockNewForbiddenHeaders); 345*6777b538SAndroid Build Coastguard Worker 346*6777b538SAndroid Build Coastguard Worker #if BUILDFLAG(IS_WIN) 347*6777b538SAndroid Build Coastguard Worker // Whether to probe for SHA-256 on some legacy platform keys, before assuming 348*6777b538SAndroid Build Coastguard Worker // the key requires SHA-1. See SSLPlatformKeyWin for details. 349*6777b538SAndroid Build Coastguard Worker NET_EXPORT BASE_DECLARE_FEATURE(kPlatformKeyProbeSHA256); 350*6777b538SAndroid Build Coastguard Worker 351*6777b538SAndroid Build Coastguard Worker // Whether or not to use the GetNetworkConnectivityHint API on modern Windows 352*6777b538SAndroid Build Coastguard Worker // versions for the Network Change Notifier. 353*6777b538SAndroid Build Coastguard Worker NET_EXPORT BASE_DECLARE_FEATURE(kEnableGetNetworkConnectivityHintAPI); 354*6777b538SAndroid Build Coastguard Worker #endif 355*6777b538SAndroid Build Coastguard Worker 356*6777b538SAndroid Build Coastguard Worker // Prefetch to follow normal semantics instead of 5-minute rule 357*6777b538SAndroid Build Coastguard Worker // https://crbug.com/1345207 358*6777b538SAndroid Build Coastguard Worker NET_EXPORT BASE_DECLARE_FEATURE(kPrefetchFollowsNormalCacheSemantics); 359*6777b538SAndroid Build Coastguard Worker 360*6777b538SAndroid Build Coastguard Worker // A flag for new Kerberos feature, that suggests new UI 361*6777b538SAndroid Build Coastguard Worker // when Kerberos authentication in browser fails on ChromeOS. 362*6777b538SAndroid Build Coastguard Worker // b/260522530 363*6777b538SAndroid Build Coastguard Worker #if BUILDFLAG(IS_CHROMEOS) 364*6777b538SAndroid Build Coastguard Worker NET_EXPORT BASE_DECLARE_FEATURE(kKerberosInBrowserRedirect); 365*6777b538SAndroid Build Coastguard Worker #endif 366*6777b538SAndroid Build Coastguard Worker 367*6777b538SAndroid Build Coastguard Worker // A flag to use asynchronous session creation for new QUIC sessions. 368*6777b538SAndroid Build Coastguard Worker NET_EXPORT BASE_DECLARE_FEATURE(kAsyncQuicSession); 369*6777b538SAndroid Build Coastguard Worker 370*6777b538SAndroid Build Coastguard Worker // A flag to make multiport context creation asynchronous. 371*6777b538SAndroid Build Coastguard Worker NET_EXPORT BASE_DECLARE_FEATURE(kAsyncMultiPortPath); 372*6777b538SAndroid Build Coastguard Worker 373*6777b538SAndroid Build Coastguard Worker // Enables custom proxy configuration for the IP Protection experimental proxy. 374*6777b538SAndroid Build Coastguard Worker NET_EXPORT BASE_DECLARE_FEATURE(kEnableIpProtectionProxy); 375*6777b538SAndroid Build Coastguard Worker 376*6777b538SAndroid Build Coastguard Worker // Sets the name of the IP protection auth token server. 377*6777b538SAndroid Build Coastguard Worker NET_EXPORT extern const base::FeatureParam<std::string> kIpPrivacyTokenServer; 378*6777b538SAndroid Build Coastguard Worker 379*6777b538SAndroid Build Coastguard Worker // Sets the path component of the IP protection auth token server URL used for 380*6777b538SAndroid Build Coastguard Worker // getting initial token signing data. 381*6777b538SAndroid Build Coastguard Worker NET_EXPORT extern const base::FeatureParam<std::string> 382*6777b538SAndroid Build Coastguard Worker kIpPrivacyTokenServerGetInitialDataPath; 383*6777b538SAndroid Build Coastguard Worker 384*6777b538SAndroid Build Coastguard Worker // Sets the path component of the IP protection auth token server URL used for 385*6777b538SAndroid Build Coastguard Worker // getting blind-signed tokens. 386*6777b538SAndroid Build Coastguard Worker NET_EXPORT extern const base::FeatureParam<std::string> 387*6777b538SAndroid Build Coastguard Worker kIpPrivacyTokenServerGetTokensPath; 388*6777b538SAndroid Build Coastguard Worker 389*6777b538SAndroid Build Coastguard Worker // Sets the path component of the IP protection auth token server URL used for 390*6777b538SAndroid Build Coastguard Worker // getting proxy configuration. 391*6777b538SAndroid Build Coastguard Worker NET_EXPORT extern const base::FeatureParam<std::string> 392*6777b538SAndroid Build Coastguard Worker kIpPrivacyTokenServerGetProxyConfigPath; 393*6777b538SAndroid Build Coastguard Worker 394*6777b538SAndroid Build Coastguard Worker // Sets the batch size to fetch new auth tokens for IP protection. 395*6777b538SAndroid Build Coastguard Worker NET_EXPORT extern const base::FeatureParam<int> 396*6777b538SAndroid Build Coastguard Worker kIpPrivacyAuthTokenCacheBatchSize; 397*6777b538SAndroid Build Coastguard Worker 398*6777b538SAndroid Build Coastguard Worker // Sets the cache low-water-mark for auth tokens for IP protection. 399*6777b538SAndroid Build Coastguard Worker NET_EXPORT extern const base::FeatureParam<int> 400*6777b538SAndroid Build Coastguard Worker kIpPrivacyAuthTokenCacheLowWaterMark; 401*6777b538SAndroid Build Coastguard Worker 402*6777b538SAndroid Build Coastguard Worker // Sets the normal time between fetches of the IP protection proxy list. 403*6777b538SAndroid Build Coastguard Worker NET_EXPORT extern const base::FeatureParam<base::TimeDelta> 404*6777b538SAndroid Build Coastguard Worker kIpPrivacyProxyListFetchInterval; 405*6777b538SAndroid Build Coastguard Worker 406*6777b538SAndroid Build Coastguard Worker // Sets the minimum time between fetches of the IP protection proxy list, such 407*6777b538SAndroid Build Coastguard Worker // as when a re-fetch is forced due to an error. 408*6777b538SAndroid Build Coastguard Worker NET_EXPORT extern const base::FeatureParam<base::TimeDelta> 409*6777b538SAndroid Build Coastguard Worker kIpPrivacyProxyListMinFetchInterval; 410*6777b538SAndroid Build Coastguard Worker 411*6777b538SAndroid Build Coastguard Worker // Overrides the ProxyA hostname normally set by the proxylist fetch. 412*6777b538SAndroid Build Coastguard Worker NET_EXPORT extern const base::FeatureParam<std::string> 413*6777b538SAndroid Build Coastguard Worker kIpPrivacyProxyAHostnameOverride; 414*6777b538SAndroid Build Coastguard Worker 415*6777b538SAndroid Build Coastguard Worker // Overrides the ProxyB hostname normally set by the proxylist fetch. 416*6777b538SAndroid Build Coastguard Worker NET_EXPORT extern const base::FeatureParam<std::string> 417*6777b538SAndroid Build Coastguard Worker kIpPrivacyProxyBHostnameOverride; 418*6777b538SAndroid Build Coastguard Worker 419*6777b538SAndroid Build Coastguard Worker // Controls whether IP Protection _proxying_ is bypassed by not including any 420*6777b538SAndroid Build Coastguard Worker // of the proxies in the proxy list. This supports experimental comparison of 421*6777b538SAndroid Build Coastguard Worker // connections that _would_ have been proxied, but were not. 422*6777b538SAndroid Build Coastguard Worker NET_EXPORT extern const base::FeatureParam<bool> kIpPrivacyDirectOnly; 423*6777b538SAndroid Build Coastguard Worker 424*6777b538SAndroid Build Coastguard Worker // The PSK added to connections to proxyB with `Proxy-Authorization: Preshared 425*6777b538SAndroid Build Coastguard Worker // $PSK`. 426*6777b538SAndroid Build Coastguard Worker NET_EXPORT extern const base::FeatureParam<std::string> kIpPrivacyProxyBPsk; 427*6777b538SAndroid Build Coastguard Worker 428*6777b538SAndroid Build Coastguard Worker // If true, pass OAuth token to Phosphor in GetProxyConfig API for IP 429*6777b538SAndroid Build Coastguard Worker // Protection. 430*6777b538SAndroid Build Coastguard Worker NET_EXPORT extern const base::FeatureParam<bool> 431*6777b538SAndroid Build Coastguard Worker kIpPrivacyIncludeOAuthTokenInGetProxyConfig; 432*6777b538SAndroid Build Coastguard Worker 433*6777b538SAndroid Build Coastguard Worker // Controls whether a header ("IP-Protection: 1") should be added to proxied 434*6777b538SAndroid Build Coastguard Worker // network requests. 435*6777b538SAndroid Build Coastguard Worker NET_EXPORT extern const base::FeatureParam<bool> 436*6777b538SAndroid Build Coastguard Worker kIpPrivacyAddHeaderToProxiedRequests; 437*6777b538SAndroid Build Coastguard Worker 438*6777b538SAndroid Build Coastguard Worker // Token expirations will have a random time between 5 seconds and this delta 439*6777b538SAndroid Build Coastguard Worker // subtracted from their expiration, in order to even out the load on the token 440*6777b538SAndroid Build Coastguard Worker // servers. 441*6777b538SAndroid Build Coastguard Worker NET_EXPORT extern const base::FeatureParam<base::TimeDelta> 442*6777b538SAndroid Build Coastguard Worker kIpPrivacyExpirationFuzz; 443*6777b538SAndroid Build Coastguard Worker 444*6777b538SAndroid Build Coastguard Worker // If true, only proxy traffic when the top-level site uses the http:// or 445*6777b538SAndroid Build Coastguard Worker // https:// schemes. This prevents attempts to proxy from top-level sites with 446*6777b538SAndroid Build Coastguard Worker // chrome://, chrome-extension://, or other non-standard schemes, in addition to 447*6777b538SAndroid Build Coastguard Worker // top-level sites using less common schemes like blob:// and data://. 448*6777b538SAndroid Build Coastguard Worker NET_EXPORT extern const base::FeatureParam<bool> 449*6777b538SAndroid Build Coastguard Worker kIpPrivacyRestrictTopLevelSiteSchemes; 450*6777b538SAndroid Build Coastguard Worker 451*6777b538SAndroid Build Coastguard Worker // If true, IP protection will attempt to use QUIC to connect to proxies, 452*6777b538SAndroid Build Coastguard Worker // falling back to HTTPS. If false, it will only use HTTPs. 453*6777b538SAndroid Build Coastguard Worker NET_EXPORT extern const base::FeatureParam<bool> kIpPrivacyUseQuicProxies; 454*6777b538SAndroid Build Coastguard Worker 455*6777b538SAndroid Build Coastguard Worker // If true, IP protection will only use QUIC to connect to proxies, with no 456*6777b538SAndroid Build Coastguard Worker // fallback to HTTPS. This is intended for development of the QUIC 457*6777b538SAndroid Build Coastguard Worker // functionality. 458*6777b538SAndroid Build Coastguard Worker NET_EXPORT extern const base::FeatureParam<bool> kIpPrivacyUseQuicProxiesOnly; 459*6777b538SAndroid Build Coastguard Worker 460*6777b538SAndroid Build Coastguard Worker // Truncate IP protection proxy chains to a single proxy. This is intended for 461*6777b538SAndroid Build Coastguard Worker // development of the QUIC functionality. 462*6777b538SAndroid Build Coastguard Worker NET_EXPORT extern const base::FeatureParam<bool> kIpPrivacyUseSingleProxy; 463*6777b538SAndroid Build Coastguard Worker 464*6777b538SAndroid Build Coastguard Worker // Send all traffic to this host via IP Protection proxies, regardless of MDL, 465*6777b538SAndroid Build Coastguard Worker // 1P/3P, or token availability. This is intended for development of the QUIC 466*6777b538SAndroid Build Coastguard Worker // functionality. 467*6777b538SAndroid Build Coastguard Worker NET_EXPORT extern const base::FeatureParam<std::string> kIpPrivacyAlwaysProxy; 468*6777b538SAndroid Build Coastguard Worker 469*6777b538SAndroid Build Coastguard Worker // Whether QuicParams::migrate_sessions_on_network_change_v2 defaults to true or 470*6777b538SAndroid Build Coastguard Worker // false. This is needed as a workaround to set this value to true on Android 471*6777b538SAndroid Build Coastguard Worker // but not on WebView (until crbug.com/1430082 has been fixed). 472*6777b538SAndroid Build Coastguard Worker NET_EXPORT BASE_DECLARE_FEATURE(kMigrateSessionsOnNetworkChangeV2); 473*6777b538SAndroid Build Coastguard Worker 474*6777b538SAndroid Build Coastguard Worker // Enables whether blackhole detector should be disabled during connection 475*6777b538SAndroid Build Coastguard Worker // migration and there is no available network. 476*6777b538SAndroid Build Coastguard Worker NET_EXPORT BASE_DECLARE_FEATURE(kDisableBlackholeOnNoNewNetwork); 477*6777b538SAndroid Build Coastguard Worker 478*6777b538SAndroid Build Coastguard Worker #if BUILDFLAG(IS_LINUX) 479*6777b538SAndroid Build Coastguard Worker // AddressTrackerLinux will not run inside the network service in this 480*6777b538SAndroid Build Coastguard Worker // configuration, which will improve the Linux network service sandbox. 481*6777b538SAndroid Build Coastguard Worker // TODO(crbug.com/1312226): remove this. 482*6777b538SAndroid Build Coastguard Worker NET_EXPORT BASE_DECLARE_FEATURE(kAddressTrackerLinuxIsProxied); 483*6777b538SAndroid Build Coastguard Worker #endif // BUILDFLAG(IS_LINUX) 484*6777b538SAndroid Build Coastguard Worker 485*6777b538SAndroid Build Coastguard Worker // Enables binding of cookies to the port that originally set them by default. 486*6777b538SAndroid Build Coastguard Worker NET_EXPORT BASE_DECLARE_FEATURE(kEnablePortBoundCookies); 487*6777b538SAndroid Build Coastguard Worker 488*6777b538SAndroid Build Coastguard Worker // Enables binding of cookies to the scheme that originally set them. Also 489*6777b538SAndroid Build Coastguard Worker // enables domain cookie shadowing protection. 490*6777b538SAndroid Build Coastguard Worker NET_EXPORT BASE_DECLARE_FEATURE(kEnableSchemeBoundCookies); 491*6777b538SAndroid Build Coastguard Worker 492*6777b538SAndroid Build Coastguard Worker // Enables expiration duration limit (3 hours) for cookies on insecure websites. 493*6777b538SAndroid Build Coastguard Worker // This feature is a no-op unless kEnableSchemeBoundCookies is enabled. 494*6777b538SAndroid Build Coastguard Worker NET_EXPORT BASE_DECLARE_FEATURE(kTimeLimitedInsecureCookies); 495*6777b538SAndroid Build Coastguard Worker 496*6777b538SAndroid Build Coastguard Worker // Enables enabling third-party cookie blocking from the command line. 497*6777b538SAndroid Build Coastguard Worker NET_EXPORT BASE_DECLARE_FEATURE(kForceThirdPartyCookieBlocking); 498*6777b538SAndroid Build Coastguard Worker 499*6777b538SAndroid Build Coastguard Worker // Enables an exception for third-party cookie blocking when the request is 500*6777b538SAndroid Build Coastguard Worker // same-site with the top-level document, opted into CORS, but embedded in a 501*6777b538SAndroid Build Coastguard Worker // cross-site context. 502*6777b538SAndroid Build Coastguard Worker NET_EXPORT BASE_DECLARE_FEATURE(kThirdPartyCookieTopLevelSiteCorsException); 503*6777b538SAndroid Build Coastguard Worker 504*6777b538SAndroid Build Coastguard Worker // Enables Early Hints on HTTP/1.1. 505*6777b538SAndroid Build Coastguard Worker NET_EXPORT BASE_DECLARE_FEATURE(kEnableEarlyHintsOnHttp11); 506*6777b538SAndroid Build Coastguard Worker 507*6777b538SAndroid Build Coastguard Worker // Enables draft-07 version of WebTransport over HTTP/3. 508*6777b538SAndroid Build Coastguard Worker NET_EXPORT BASE_DECLARE_FEATURE(kEnableWebTransportDraft07); 509*6777b538SAndroid Build Coastguard Worker 510*6777b538SAndroid Build Coastguard Worker // Enables Zstandard Content-Encoding support. 511*6777b538SAndroid Build Coastguard Worker NET_EXPORT BASE_DECLARE_FEATURE(kZstdContentEncoding); 512*6777b538SAndroid Build Coastguard Worker 513*6777b538SAndroid Build Coastguard Worker NET_EXPORT BASE_DECLARE_FEATURE(kThirdPartyPartitionedStorageAllowedByDefault); 514*6777b538SAndroid Build Coastguard Worker 515*6777b538SAndroid Build Coastguard Worker // Enables the HTTP extensible priorities "priority" header. 516*6777b538SAndroid Build Coastguard Worker // RFC 9218 517*6777b538SAndroid Build Coastguard Worker NET_EXPORT BASE_DECLARE_FEATURE(kPriorityHeader); 518*6777b538SAndroid Build Coastguard Worker 519*6777b538SAndroid Build Coastguard Worker // Enables a more efficient implementation of SpdyHeadersToHttpResponse(). 520*6777b538SAndroid Build Coastguard Worker NET_EXPORT BASE_DECLARE_FEATURE(kSpdyHeadersToHttpResponseUseBuilder); 521*6777b538SAndroid Build Coastguard Worker 522*6777b538SAndroid Build Coastguard Worker // Enables receiving ECN bit by sockets in Chrome. 523*6777b538SAndroid Build Coastguard Worker NET_EXPORT BASE_DECLARE_FEATURE(kReceiveEcn); 524*6777b538SAndroid Build Coastguard Worker 525*6777b538SAndroid Build Coastguard Worker // Enables using the new ALPS codepoint to negotiate application settings for 526*6777b538SAndroid Build Coastguard Worker // HTTP2. 527*6777b538SAndroid Build Coastguard Worker NET_EXPORT BASE_DECLARE_FEATURE(kUseNewAlpsCodepointHttp2); 528*6777b538SAndroid Build Coastguard Worker 529*6777b538SAndroid Build Coastguard Worker // Enables using the new ALPS codepoint to negotiate application settings for 530*6777b538SAndroid Build Coastguard Worker // QUIC. 531*6777b538SAndroid Build Coastguard Worker NET_EXPORT BASE_DECLARE_FEATURE(kUseNewAlpsCodepointQUIC); 532*6777b538SAndroid Build Coastguard Worker 533*6777b538SAndroid Build Coastguard Worker // Treat HTTP header `Expires: "0"` as expired value according section 5.3 on 534*6777b538SAndroid Build Coastguard Worker // RFC 9111. 535*6777b538SAndroid Build Coastguard Worker // TODO(https://crbug.com/853508): Remove after the bug fix will go well for a 536*6777b538SAndroid Build Coastguard Worker // while on stable channels. 537*6777b538SAndroid Build Coastguard Worker NET_EXPORT BASE_DECLARE_FEATURE(kTreatHTTPExpiresHeaderValueZeroAsExpired); 538*6777b538SAndroid Build Coastguard Worker 539*6777b538SAndroid Build Coastguard Worker // Enables truncating the response body to the content length. 540*6777b538SAndroid Build Coastguard Worker NET_EXPORT BASE_DECLARE_FEATURE(kTruncateBodyToContentLength); 541*6777b538SAndroid Build Coastguard Worker 542*6777b538SAndroid Build Coastguard Worker #if BUILDFLAG(IS_MAC) 543*6777b538SAndroid Build Coastguard Worker // Reduces the frequency of IP address change notifications that result in 544*6777b538SAndroid Build Coastguard Worker // TCP and QUIC connection resets. 545*6777b538SAndroid Build Coastguard Worker NET_EXPORT BASE_DECLARE_FEATURE(kReduceIPAddressChangeNotification); 546*6777b538SAndroid Build Coastguard Worker #endif // BUILDFLAG(IS_MAC) 547*6777b538SAndroid Build Coastguard Worker 548*6777b538SAndroid Build Coastguard Worker // This feature will enable the Device Bound Session Credentials protocol to let 549*6777b538SAndroid Build Coastguard Worker // the server assert sessions (and cookies) are bound to a specific device. 550*6777b538SAndroid Build Coastguard Worker NET_EXPORT BASE_DECLARE_FEATURE(kDeviceBoundSessions); 551*6777b538SAndroid Build Coastguard Worker 552*6777b538SAndroid Build Coastguard Worker } // namespace net::features 553*6777b538SAndroid Build Coastguard Worker 554*6777b538SAndroid Build Coastguard Worker #endif // NET_BASE_FEATURES_H_ 555