1 // Copyright (c) 2018 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #include "net/base/features.h"
6 
7 #include <vector>
8 
9 #include "build/build_config.h"
10 
11 namespace net {
12 namespace features {
13 
14 const base::Feature kAcceptLanguageHeader{"AcceptLanguageHeader",
15                                           base::FEATURE_ENABLED_BY_DEFAULT};
16 
17 const base::Feature kCapReferrerToOriginOnCrossOrigin{
18     "CapReferrerToOriginOnCrossOrigin", base::FEATURE_DISABLED_BY_DEFAULT};
19 
20 const base::Feature kDnsTransactionDynamicTimeouts{
21     "DnsTransactionDynamicTimeouts", base::FEATURE_DISABLED_BY_DEFAULT};
22 
23 const base::FeatureParam<double> kDnsTransactionTimeoutMultiplier{
24     &kDnsTransactionDynamicTimeouts, "DnsTransactionTimeoutMultiplier", 7.5};
25 
26 const base::FeatureParam<base::TimeDelta> kDnsMinTransactionTimeout{
27     &kDnsTransactionDynamicTimeouts, "DnsMinTransactionTimeout",
28     base::TimeDelta::FromSeconds(12)};
29 
30 const base::Feature kDnsHttpssvc{"DnsHttpssvc",
31                                  base::FEATURE_DISABLED_BY_DEFAULT};
32 
33 const base::FeatureParam<bool> kDnsHttpssvcUseHttpssvc{
34     &kDnsHttpssvc, "DnsHttpssvcUseHttpssvc", false};
35 
36 const base::FeatureParam<bool> kDnsHttpssvcUseIntegrity{
37     &kDnsHttpssvc, "DnsHttpssvcUseIntegrity", false};
38 
39 const base::FeatureParam<bool> kDnsHttpssvcEnableQueryOverInsecure{
40     &kDnsHttpssvc, "DnsHttpssvcEnableQueryOverInsecure", false};
41 
42 const base::FeatureParam<int> kDnsHttpssvcExtraTimeMs{
43     &kDnsHttpssvc, "DnsHttpssvcExtraTimeMs", 10};
44 
45 const base::FeatureParam<int> kDnsHttpssvcExtraTimePercent{
46     &kDnsHttpssvc, "DnsHttpssvcExtraTimePercent", 5};
47 
48 const base::FeatureParam<std::string> kDnsHttpssvcExperimentDomains{
49     &kDnsHttpssvc, "DnsHttpssvcExperimentDomains", ""};
50 
51 const base::FeatureParam<std::string> kDnsHttpssvcControlDomains{
52     &kDnsHttpssvc, "DnsHttpssvcControlDomains", ""};
53 
54 const base::FeatureParam<bool> kDnsHttpssvcControlDomainWildcard{
55     &kDnsHttpssvc, "DnsHttpssvcControlDomainWildcard", false};
56 
57 const base::Feature kAvoidH2Reprioritization{"AvoidH2Reprioritization",
58                                              base::FEATURE_DISABLED_BY_DEFAULT};
59 
60 namespace dns_httpssvc_experiment {
GetExtraTimeAbsolute()61 base::TimeDelta GetExtraTimeAbsolute() {
62   DCHECK(base::FeatureList::IsEnabled(features::kDnsHttpssvc));
63   return base::TimeDelta::FromMilliseconds(kDnsHttpssvcExtraTimeMs.Get());
64 }
65 }  // namespace dns_httpssvc_experiment
66 
67 const base::Feature kEnableTLS13EarlyData{"EnableTLS13EarlyData",
68                                           base::FEATURE_DISABLED_BY_DEFAULT};
69 
70 const base::Feature kNetworkQualityEstimator{"NetworkQualityEstimator",
71                                              base::FEATURE_DISABLED_BY_DEFAULT};
72 
73 const base::Feature kSplitCacheByNetworkIsolationKey{
74     "SplitCacheByNetworkIsolationKey", base::FEATURE_DISABLED_BY_DEFAULT};
75 
76 const base::Feature kSplitHostCacheByNetworkIsolationKey{
77     "SplitHostCacheByNetworkIsolationKey", base::FEATURE_DISABLED_BY_DEFAULT};
78 
79 const base::Feature kPartitionConnectionsByNetworkIsolationKey{
80     "PartitionConnectionsByNetworkIsolationKey",
81     base::FEATURE_DISABLED_BY_DEFAULT};
82 
83 const base::Feature kPartitionHttpServerPropertiesByNetworkIsolationKey{
84     "PartitionHttpServerPropertiesByNetworkIsolationKey",
85     base::FEATURE_DISABLED_BY_DEFAULT};
86 
87 const base::Feature kPartitionSSLSessionsByNetworkIsolationKey{
88     "PartitionSSLSessionsByNetworkIsolationKey",
89     base::FEATURE_DISABLED_BY_DEFAULT};
90 
91 const base::Feature kPartitionExpectCTStateByNetworkIsolationKey{
92     "PartitionExpectCTStateByNetworkIsolationKey",
93     base::FEATURE_DISABLED_BY_DEFAULT};
94 
95 const base::Feature kPartitionNelAndReportingByNetworkIsolationKey{
96     "PartitionNelAndReportingByNetworkIsolationKey",
97     base::FEATURE_DISABLED_BY_DEFAULT};
98 
99 const base::Feature kExpectCTPruning{"ExpectCTPruning",
100                                      base::FEATURE_ENABLED_BY_DEFAULT};
101 
102 NET_EXPORT extern const base::FeatureParam<int>
103     kExpectCTPruneMax(&kExpectCTPruning, "ExpectCTPruneMax", 2000);
104 NET_EXPORT extern const base::FeatureParam<int>
105     kExpectCTPruneMin(&kExpectCTPruning, "ExpectCTPruneMin", 1800);
106 NET_EXPORT extern const base::FeatureParam<int> kExpectCTSafeFromPruneDays(
107     &kExpectCTPruning,
108     "ExpectCTSafeFromPruneDays",
109     40);
110 NET_EXPORT extern const base::FeatureParam<int> kExpectCTMaxEntriesPerNik(
111     &kExpectCTPruning,
112     "ExpectCTMaxEntriesPerNik",
113     20);
114 NET_EXPORT extern const base::FeatureParam<int>
115     kExpectCTPruneDelaySecs(&kExpectCTPruning, "ExpectCTPruneDelaySecs", 60);
116 
117 const base::Feature kTLS13KeyUpdate{"TLS13KeyUpdate",
118                                     base::FEATURE_DISABLED_BY_DEFAULT};
119 
120 const base::Feature kPostQuantumCECPQ2{"PostQuantumCECPQ2",
121                                        base::FEATURE_DISABLED_BY_DEFAULT};
122 
123 const base::Feature kNetUnusedIdleSocketTimeout{
124     "NetUnusedIdleSocketTimeout", base::FEATURE_DISABLED_BY_DEFAULT};
125 
126 const base::Feature kSameSiteByDefaultCookies{"SameSiteByDefaultCookies",
127                                               base::FEATURE_ENABLED_BY_DEFAULT};
128 
129 const base::Feature kCookiesWithoutSameSiteMustBeSecure{
130     "CookiesWithoutSameSiteMustBeSecure", base::FEATURE_ENABLED_BY_DEFAULT};
131 
132 const base::Feature kShortLaxAllowUnsafeThreshold{
133     "ShortLaxAllowUnsafeThreshold", base::FEATURE_DISABLED_BY_DEFAULT};
134 
135 const base::Feature kSameSiteDefaultChecksMethodRigorously{
136     "SameSiteDefaultChecksMethodRigorously", base::FEATURE_DISABLED_BY_DEFAULT};
137 
138 #if BUILDFLAG(BUILTIN_CERT_VERIFIER_FEATURE_SUPPORTED)
139 const base::Feature kCertVerifierBuiltinFeature{
140     "CertVerifierBuiltin", base::FEATURE_DISABLED_BY_DEFAULT};
141 #endif
142 
143 const base::Feature kAppendFrameOriginToNetworkIsolationKey{
144     "AppendFrameOriginToNetworkIsolationKey", base::FEATURE_ENABLED_BY_DEFAULT};
145 
146 const base::Feature kTurnOffStreamingMediaCachingOnBattery{
147     "TurnOffStreamingMediaCachingOnBattery", base::FEATURE_DISABLED_BY_DEFAULT};
148 
149 const base::Feature kTurnOffStreamingMediaCachingAlways{
150     "TurnOffStreamingMediaCachingAlways", base::FEATURE_DISABLED_BY_DEFAULT};
151 
152 const base::Feature kLegacyTLSEnforced{"LegacyTLSEnforced",
153                                        base::FEATURE_DISABLED_BY_DEFAULT};
154 
155 const base::Feature kSchemefulSameSite{"SchemefulSameSite",
156                                        base::FEATURE_DISABLED_BY_DEFAULT};
157 
158 const base::Feature kTLSLegacyCryptoFallbackForMetrics{
159     "TLSLegacyCryptoFallbackForMetrics", base::FEATURE_ENABLED_BY_DEFAULT};
160 
161 const base::Feature kUseLookalikesForNavigationSuggestions{
162     "UseLookalikesForNavigationSuggestions", base::FEATURE_DISABLED_BY_DEFAULT};
163 
164 const base::Feature kReportPoorConnectivity{"ReportPoorConnectivity",
165                                             base::FEATURE_DISABLED_BY_DEFAULT};
166 
167 const base::Feature kPreemptiveMobileNetworkActivation{
168     "PreemptiveMobileNetworkActivation", base::FEATURE_DISABLED_BY_DEFAULT};
169 
170 const base::Feature kLimitOpenUDPSockets{"LimitOpenUDPSockets",
171                                          base::FEATURE_ENABLED_BY_DEFAULT};
172 
173 extern const base::FeatureParam<int> kLimitOpenUDPSocketsMax(
174     &kLimitOpenUDPSockets,
175     "LimitOpenUDPSocketsMax",
176     6000);
177 
178 const base::Feature kTimeoutTcpConnectAttempt{
179     "TimeoutTcpConnectAttempt", base::FEATURE_DISABLED_BY_DEFAULT};
180 
181 extern const base::FeatureParam<double> kTimeoutTcpConnectAttemptRTTMultiplier(
182     &kTimeoutTcpConnectAttempt,
183     "TimeoutTcpConnectAttemptRTTMultiplier",
184     5.0);
185 
186 extern const base::FeatureParam<base::TimeDelta> kTimeoutTcpConnectAttemptMin(
187     &kTimeoutTcpConnectAttempt,
188     "TimeoutTcpConnectAttemptMin",
189     base::TimeDelta::FromSeconds(8));
190 
191 extern const base::FeatureParam<base::TimeDelta> kTimeoutTcpConnectAttemptMax(
192     &kTimeoutTcpConnectAttempt,
193     "TimeoutTcpConnectAttemptMax",
194     base::TimeDelta::FromSeconds(30));
195 
196 }  // namespace features
197 }  // namespace net
198