Index: components/ssl_config/ssl_config_service_manager_pref.cc |
diff --git a/components/ssl_config/ssl_config_service_manager_pref.cc b/components/ssl_config/ssl_config_service_manager_pref.cc |
index 0f7329f3fa0903af9ab1c547f2b5fe49b7760b57..d9c567f767db4f97b9b5feb57c1bad238369d0f6 100644 |
--- a/components/ssl_config/ssl_config_service_manager_pref.cc |
+++ b/components/ssl_config/ssl_config_service_manager_pref.cc |
@@ -15,6 +15,8 @@ |
#include "base/prefs/pref_registry_simple.h" |
#include "base/prefs/pref_service.h" |
#include "base/single_thread_task_runner.h" |
+#include "base/strings/string_util.h" |
+#include "base/values.h" |
#include "components/content_settings/core/browser/content_settings_utils.h" |
#include "components/content_settings/core/common/content_settings.h" |
#include "components/ssl_config/ssl_config_prefs.h" |
@@ -78,6 +80,12 @@ uint16 SSLProtocolVersionFromString(const std::string& version_str) { |
return version; |
} |
+bool IsRC4EnabledByDefault() { |
+ const std::string group_name = |
+ base::FieldTrialList::FindFullName("RC4Ciphers"); |
+ return base::StartsWith(group_name, "Enabled", base::CompareCase::SENSITIVE); |
+} |
+ |
} // namespace |
//////////////////////////////////////////////////////////////////////////////// |
@@ -164,6 +172,7 @@ class SSLConfigServiceManagerPref : public ssl_config::SSLConfigServiceManager { |
StringPrefMember ssl_version_min_; |
StringPrefMember ssl_version_max_; |
StringPrefMember ssl_version_fallback_min_; |
+ BooleanPrefMember rc4_enabled_; |
// The cached list of disabled SSL cipher suites. |
std::vector<uint16> disabled_cipher_suites_; |
@@ -182,6 +191,10 @@ SSLConfigServiceManagerPref::SSLConfigServiceManagerPref( |
io_task_runner_(io_task_runner) { |
DCHECK(local_state); |
+ local_state->SetDefaultPrefValue( |
+ ssl_config::prefs::kRC4Enabled, |
+ new base::FundamentalValue(IsRC4EnabledByDefault())); |
+ |
PrefChangeRegistrar::NamedChangeCallback local_state_callback = |
base::Bind(&SSLConfigServiceManagerPref::OnPreferenceChanged, |
base::Unretained(this), local_state); |
@@ -197,6 +210,8 @@ SSLConfigServiceManagerPref::SSLConfigServiceManagerPref( |
local_state_callback); |
ssl_version_fallback_min_.Init(ssl_config::prefs::kSSLVersionFallbackMin, |
local_state, local_state_callback); |
+ rc4_enabled_.Init(ssl_config::prefs::kRC4Enabled, local_state, |
+ local_state_callback); |
local_state_change_registrar_.Init(local_state); |
local_state_change_registrar_.Add(ssl_config::prefs::kCipherSuiteBlacklist, |
@@ -225,6 +240,8 @@ void SSLConfigServiceManagerPref::RegisterPrefs(PrefRegistrySimple* registry) { |
registry->RegisterStringPref(ssl_config::prefs::kSSLVersionFallbackMin, |
std::string()); |
registry->RegisterListPref(ssl_config::prefs::kCipherSuiteBlacklist); |
+ registry->RegisterBooleanPref(ssl_config::prefs::kRC4Enabled, |
+ default_config.rc4_enabled); |
} |
net::SSLConfigService* SSLConfigServiceManagerPref::Get() { |
@@ -279,6 +296,7 @@ void SSLConfigServiceManagerPref::GetSSLConfigFromPrefs( |
config->version_fallback_min = version_fallback_min; |
} |
config->disabled_cipher_suites = disabled_cipher_suites_; |
+ config->rc4_enabled = rc4_enabled_.GetValue(); |
} |
void SSLConfigServiceManagerPref::OnDisabledCipherSuitesChange( |