blob: c4dcfe0a9eeea792d08349707e492bec53557d37 [file] [log] [blame]
// Copyright (c) 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "net/base/features.h"
#include <vector>
#include "base/feature_list.h"
#include "build/build_config.h"
namespace net {
namespace features {
const base::Feature kAcceptLanguageHeader{"AcceptLanguageHeader",
base::FEATURE_ENABLED_BY_DEFAULT};
const base::Feature kAlpsForHttp2{"AlpsForHttp2",
base::FEATURE_ENABLED_BY_DEFAULT};
const base::Feature kAvoidH2Reprioritization{"AvoidH2Reprioritization",
base::FEATURE_DISABLED_BY_DEFAULT};
const base::Feature kCapReferrerToOriginOnCrossOrigin{
"CapReferrerToOriginOnCrossOrigin", base::FEATURE_DISABLED_BY_DEFAULT};
const base::Feature kDnsTransactionDynamicTimeouts{
"DnsTransactionDynamicTimeouts", base::FEATURE_DISABLED_BY_DEFAULT};
const base::FeatureParam<double> kDnsTransactionTimeoutMultiplier{
&kDnsTransactionDynamicTimeouts, "DnsTransactionTimeoutMultiplier", 7.5};
const base::FeatureParam<base::TimeDelta> kDnsMinTransactionTimeout{
&kDnsTransactionDynamicTimeouts, "DnsMinTransactionTimeout",
base::TimeDelta::FromSeconds(12)};
const base::Feature kDnsHttpssvc{"DnsHttpssvc",
base::FEATURE_DISABLED_BY_DEFAULT};
const base::FeatureParam<bool> kDnsHttpssvcUseHttpssvc{
&kDnsHttpssvc, "DnsHttpssvcUseHttpssvc", false};
const base::FeatureParam<bool> kDnsHttpssvcUseIntegrity{
&kDnsHttpssvc, "DnsHttpssvcUseIntegrity", false};
const base::FeatureParam<bool> kDnsHttpssvcEnableQueryOverInsecure{
&kDnsHttpssvc, "DnsHttpssvcEnableQueryOverInsecure", false};
const base::FeatureParam<int> kDnsHttpssvcExtraTimeMs{
&kDnsHttpssvc, "DnsHttpssvcExtraTimeMs", 10};
const base::FeatureParam<int> kDnsHttpssvcExtraTimePercent{
&kDnsHttpssvc, "DnsHttpssvcExtraTimePercent", 5};
const base::FeatureParam<std::string> kDnsHttpssvcExperimentDomains{
&kDnsHttpssvc, "DnsHttpssvcExperimentDomains", ""};
const base::FeatureParam<std::string> kDnsHttpssvcControlDomains{
&kDnsHttpssvc, "DnsHttpssvcControlDomains", ""};
const base::FeatureParam<bool> kDnsHttpssvcControlDomainWildcard{
&kDnsHttpssvc, "DnsHttpssvcControlDomainWildcard", false};
namespace dns_httpssvc_experiment {
base::TimeDelta GetExtraTimeAbsolute() {
DCHECK(base::FeatureList::IsEnabled(features::kDnsHttpssvc));
return base::TimeDelta::FromMilliseconds(kDnsHttpssvcExtraTimeMs.Get());
}
} // namespace dns_httpssvc_experiment
const base::Feature kUseDnsHttpsSvcb{"UseDnsHttpsSvcb",
base::FEATURE_DISABLED_BY_DEFAULT};
const base::FeatureParam<bool> kUseDnsHttpsSvcbHttpUpgrade{
&kUseDnsHttpsSvcb, "UseDnsHttpsSvcbHttpUpgrade", false};
const base::FeatureParam<bool> kUseDnsHttpsSvcbEnforceSecureResponse{
&kUseDnsHttpsSvcb, "UseDnsHttpsSvcbEnforceSecureResponse", false};
const base::FeatureParam<bool> kUseDnsHttpsSvcbEnableInsecure{
&kUseDnsHttpsSvcb, "UseDnsHttpsSvcbEnableInsecure", false};
const base::FeatureParam<base::TimeDelta> kUseDnsHttpsSvcbExtraTimeAbsolute{
&kUseDnsHttpsSvcb, "UseDnsHttpsSvcbExtraTimeAbsolute", base::TimeDelta()};
const base::FeatureParam<int> kUseDnsHttpsSvcbExtraTimePercent{
&kUseDnsHttpsSvcb, "UseDnsHttpsSvcbExtraTimePercent", 0};
const base::Feature kEnableTLS13EarlyData{"EnableTLS13EarlyData",
base::FEATURE_DISABLED_BY_DEFAULT};
const base::Feature kNetworkQualityEstimator{"NetworkQualityEstimator",
base::FEATURE_DISABLED_BY_DEFAULT};
const base::Feature kSplitCacheByNetworkIsolationKey{
"SplitCacheByNetworkIsolationKey", base::FEATURE_DISABLED_BY_DEFAULT};
const base::Feature kSplitHostCacheByNetworkIsolationKey{
"SplitHostCacheByNetworkIsolationKey", base::FEATURE_DISABLED_BY_DEFAULT};
const base::Feature kPartitionConnectionsByNetworkIsolationKey{
"PartitionConnectionsByNetworkIsolationKey",
base::FEATURE_DISABLED_BY_DEFAULT};
const base::Feature kPartitionHttpServerPropertiesByNetworkIsolationKey{
"PartitionHttpServerPropertiesByNetworkIsolationKey",
base::FEATURE_DISABLED_BY_DEFAULT};
const base::Feature kPartitionSSLSessionsByNetworkIsolationKey{
"PartitionSSLSessionsByNetworkIsolationKey",
base::FEATURE_DISABLED_BY_DEFAULT};
const base::Feature kPartitionExpectCTStateByNetworkIsolationKey{
"PartitionExpectCTStateByNetworkIsolationKey",
base::FEATURE_DISABLED_BY_DEFAULT};
const base::Feature kPartitionNelAndReportingByNetworkIsolationKey{
"PartitionNelAndReportingByNetworkIsolationKey",
base::FEATURE_DISABLED_BY_DEFAULT};
const base::Feature kExpectCTPruning{"ExpectCTPruning",
base::FEATURE_ENABLED_BY_DEFAULT};
NET_EXPORT extern const base::FeatureParam<int>
kExpectCTPruneMax(&kExpectCTPruning, "ExpectCTPruneMax", 2000);
NET_EXPORT extern const base::FeatureParam<int>
kExpectCTPruneMin(&kExpectCTPruning, "ExpectCTPruneMin", 1800);
NET_EXPORT extern const base::FeatureParam<int> kExpectCTSafeFromPruneDays(
&kExpectCTPruning,
"ExpectCTSafeFromPruneDays",
40);
NET_EXPORT extern const base::FeatureParam<int> kExpectCTMaxEntriesPerNik(
&kExpectCTPruning,
"ExpectCTMaxEntriesPerNik",
20);
NET_EXPORT extern const base::FeatureParam<int>
kExpectCTPruneDelaySecs(&kExpectCTPruning, "ExpectCTPruneDelaySecs", 60);
const base::Feature kTLS13KeyUpdate{"TLS13KeyUpdate",
base::FEATURE_DISABLED_BY_DEFAULT};
const base::Feature kPostQuantumCECPQ2{"PostQuantumCECPQ2",
base::FEATURE_DISABLED_BY_DEFAULT};
const base::Feature kPostQuantumCECPQ2SomeDomains{
"PostQuantumCECPQ2SomeDomains", base::FEATURE_ENABLED_BY_DEFAULT};
const base::FeatureParam<std::string> kPostQuantumCECPQ2InitialLetters(
&kPostQuantumCECPQ2SomeDomains,
"InitialLetters",
"ag");
const base::Feature kNetUnusedIdleSocketTimeout{
"NetUnusedIdleSocketTimeout", base::FEATURE_DISABLED_BY_DEFAULT};
const base::Feature kShortLaxAllowUnsafeThreshold{
"ShortLaxAllowUnsafeThreshold", base::FEATURE_DISABLED_BY_DEFAULT};
const base::Feature kSameSiteDefaultChecksMethodRigorously{
"SameSiteDefaultChecksMethodRigorously", base::FEATURE_DISABLED_BY_DEFAULT};
#if BUILDFLAG(BUILTIN_CERT_VERIFIER_FEATURE_SUPPORTED)
const base::Feature kCertVerifierBuiltinFeature{
"CertVerifierBuiltin", base::FEATURE_DISABLED_BY_DEFAULT};
#if defined(OS_MAC)
const base::FeatureParam<int> kCertVerifierBuiltinImpl{
&kCertVerifierBuiltinFeature, "impl", 0};
const base::FeatureParam<int> kCertVerifierBuiltinCacheSize{
&kCertVerifierBuiltinFeature, "cachesize", 0};
#endif /* defined(OS_MAC) */
#endif
#if BUILDFLAG(TRIAL_COMPARISON_CERT_VERIFIER_SUPPORTED)
// Enables the dual certificate verification trial feature.
// https://crbug.com/649026
const base::Feature kCertDualVerificationTrialFeature{
"CertDualVerificationTrial", base::FEATURE_DISABLED_BY_DEFAULT};
#if defined(OS_MAC)
const base::FeatureParam<int> kCertDualVerificationTrialImpl{
&kCertDualVerificationTrialFeature, "impl", 0};
const base::FeatureParam<int> kCertDualVerificationTrialCacheSize{
&kCertDualVerificationTrialFeature, "cachesize", 0};
#endif /* defined(OS_MAC) */
#endif
#if BUILDFLAG(CHROME_ROOT_STORE_SUPPORTED)
const base::Feature kChromeRootStoreUsed{"ChromeRootStoreUsed",
base::FEATURE_DISABLED_BY_DEFAULT};
#endif /* BUILDFLAG(CHROME_ROOT_STORE_SUPPORTED) */
const base::Feature kTurnOffStreamingMediaCachingOnBattery{
"TurnOffStreamingMediaCachingOnBattery", base::FEATURE_DISABLED_BY_DEFAULT};
const base::Feature kTurnOffStreamingMediaCachingAlways{
"TurnOffStreamingMediaCachingAlways", base::FEATURE_DISABLED_BY_DEFAULT};
const base::Feature kLegacyTLSEnforced{"LegacyTLSEnforced",
base::FEATURE_ENABLED_BY_DEFAULT};
const base::Feature kSchemefulSameSite{"SchemefulSameSite",
base::FEATURE_ENABLED_BY_DEFAULT};
const base::Feature kTLSLegacyCryptoFallbackForMetrics{
"TLSLegacyCryptoFallbackForMetrics", base::FEATURE_ENABLED_BY_DEFAULT};
const base::Feature kUseLookalikesForNavigationSuggestions{
"UseLookalikesForNavigationSuggestions", base::FEATURE_DISABLED_BY_DEFAULT};
const base::Feature kReportPoorConnectivity{"ReportPoorConnectivity",
base::FEATURE_DISABLED_BY_DEFAULT};
const base::Feature kPreemptiveMobileNetworkActivation{
"PreemptiveMobileNetworkActivation", base::FEATURE_DISABLED_BY_DEFAULT};
const base::Feature kLimitOpenUDPSockets{"LimitOpenUDPSockets",
base::FEATURE_ENABLED_BY_DEFAULT};
extern const base::FeatureParam<int> kLimitOpenUDPSocketsMax(
&kLimitOpenUDPSockets,
"LimitOpenUDPSocketsMax",
6000);
const base::Feature kTimeoutTcpConnectAttempt{
"TimeoutTcpConnectAttempt", base::FEATURE_DISABLED_BY_DEFAULT};
extern const base::FeatureParam<double> kTimeoutTcpConnectAttemptRTTMultiplier(
&kTimeoutTcpConnectAttempt,
"TimeoutTcpConnectAttemptRTTMultiplier",
5.0);
extern const base::FeatureParam<base::TimeDelta> kTimeoutTcpConnectAttemptMin(
&kTimeoutTcpConnectAttempt,
"TimeoutTcpConnectAttemptMin",
base::TimeDelta::FromSeconds(8));
extern const base::FeatureParam<base::TimeDelta> kTimeoutTcpConnectAttemptMax(
&kTimeoutTcpConnectAttempt,
"TimeoutTcpConnectAttemptMax",
base::TimeDelta::FromSeconds(30));
constexpr base::Feature kFirstPartySets{"FirstPartySets",
base::FEATURE_DISABLED_BY_DEFAULT};
const base::FeatureParam<bool> kFirstPartySetsIsDogfooder{
&kFirstPartySets, "FirstPartySetsIsDogfooder", false};
#if BUILDFLAG(ENABLE_REPORTING)
const base::Feature kDocumentReporting{"DocumentReporting",
base::FEATURE_DISABLED_BY_DEFAULT};
#endif // BUILDFLAG(ENABLE_REPORTING)
#if defined(OS_POSIX) || defined(OS_FUCHSIA)
const base::Feature kUdpSocketPosixAlwaysUpdateBytesReceived{
"UdpSocketPosixAlwaysUpdateBytesReceived",
base::FEATURE_ENABLED_BY_DEFAULT};
#endif // defined(OS_POSIX) || defined(OS_FUCHSIA)
const base::Feature kCookieSameSiteConsidersRedirectChain{
"CookieSameSiteConsidersRedirectChain", base::FEATURE_DISABLED_BY_DEFAULT};
const base::Feature kSamePartyCookiesConsideredFirstParty{
"SamePartyCookiesConsideredFirstParty", base::FEATURE_DISABLED_BY_DEFAULT};
} // namespace features
} // namespace net