xref: /aosp_15_r20/external/cronet/net/base/features.h (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
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