Index: chrome/browser/net/ssl_config_service_manager_pref.cc |
=================================================================== |
--- chrome/browser/net/ssl_config_service_manager_pref.cc (revision 98542) |
+++ chrome/browser/net/ssl_config_service_manager_pref.cc (working copy) |
@@ -8,12 +8,10 @@ |
#include <vector> |
#include "base/basictypes.h" |
-#include "base/command_line.h" |
#include "chrome/browser/prefs/pref_change_registrar.h" |
#include "chrome/browser/prefs/pref_member.h" |
#include "chrome/browser/prefs/pref_service.h" |
#include "chrome/common/chrome_notification_types.h" |
-#include "chrome/common/chrome_switches.h" |
#include "chrome/common/pref_names.h" |
#include "content/browser/browser_thread.h" |
#include "content/common/notification_details.h" |
@@ -128,6 +126,9 @@ |
// only be called from UI thread. |
void GetSSLConfigFromPrefs(net::SSLConfig* config); |
+ void OnSSL3EnabledChange(PrefService* prefs); |
+ void OnTLS1EnabledChange(PrefService* prefs); |
+ |
// Processes changes to the disabled cipher suites preference, updating the |
// cached list of parsed SSL/TLS cipher suites that are disabled. |
void OnDisabledCipherSuitesChange(PrefService* prefs); |
@@ -137,6 +138,10 @@ |
// The prefs (should only be accessed from UI thread) |
BooleanPrefMember rev_checking_enabled_; |
+ // The cached booleans of enabled SSL/TLS versions. |
+ bool ssl3_enabled_; |
Ryan Sleevi
2011/08/27 14:14:42
nit: You can probably simplify things just using a
wtc
2011/08/27 20:27:06
Thanks a lot for the suggestion of using a Boolean
|
+ bool tls1_enabled_; |
+ |
// The cached list of disabled SSL cipher suites. |
std::vector<uint16> disabled_cipher_suites_; |
@@ -153,8 +158,12 @@ |
rev_checking_enabled_.Init(prefs::kCertRevocationCheckingEnabled, |
local_state, this); |
pref_change_registrar_.Init(local_state); |
+ pref_change_registrar_.Add(prefs::kSSL3Enabled, this); |
+ pref_change_registrar_.Add(prefs::kTLS1Enabled, this); |
pref_change_registrar_.Add(prefs::kCipherSuiteBlacklist, this); |
+ OnSSL3EnabledChange(local_state); |
+ OnTLS1EnabledChange(local_state); |
OnDisabledCipherSuitesChange(local_state); |
// Initialize from UI thread. This is okay as there shouldn't be anything on |
// the IO thread trying to access it yet. |
@@ -166,6 +175,10 @@ |
net::SSLConfig default_config; |
prefs->RegisterBooleanPref(prefs::kCertRevocationCheckingEnabled, |
default_config.rev_checking_enabled); |
+ prefs->RegisterBooleanPref(prefs::kSSL3Enabled, |
+ default_config.ssl3_enabled); |
+ prefs->RegisterBooleanPref(prefs::kTLS1Enabled, |
+ default_config.tls1_enabled); |
prefs->RegisterListPref(prefs::kCipherSuiteBlacklist); |
} |
@@ -181,6 +194,10 @@ |
std::string* pref_name_in = Details<std::string>(details).ptr(); |
PrefService* prefs = Source<PrefService>(source).ptr(); |
DCHECK(pref_name_in && prefs); |
+ if (*pref_name_in == prefs::kSSL3Enabled) |
+ OnSSL3EnabledChange(prefs); |
+ if (*pref_name_in == prefs::kTLS1Enabled) |
Ryan Sleevi
2011/08/27 14:14:42
nit: else if here and line 201?
|
+ OnTLS1EnabledChange(prefs); |
if (*pref_name_in == prefs::kCipherSuiteBlacklist) |
OnDisabledCipherSuitesChange(prefs); |
@@ -202,16 +219,20 @@ |
void SSLConfigServiceManagerPref::GetSSLConfigFromPrefs( |
net::SSLConfig* config) { |
config->rev_checking_enabled = rev_checking_enabled_.GetValue(); |
- |
- config->ssl3_enabled = |
- !CommandLine::ForCurrentProcess()->HasSwitch(switches::kDisableSSL3); |
- config->tls1_enabled = |
- !CommandLine::ForCurrentProcess()->HasSwitch(switches::kDisableTLS1); |
- |
+ config->ssl3_enabled = ssl3_enabled_; |
+ config->tls1_enabled = tls1_enabled_; |
config->disabled_cipher_suites = disabled_cipher_suites_; |
SSLConfigServicePref::SetSSLConfigFlags(config); |
} |
+void SSLConfigServiceManagerPref::OnSSL3EnabledChange(PrefService* prefs) { |
+ ssl3_enabled_ = prefs->GetBoolean(prefs::kSSL3Enabled); |
+} |
+ |
+void SSLConfigServiceManagerPref::OnTLS1EnabledChange(PrefService* prefs) { |
+ tls1_enabled_ = prefs->GetBoolean(prefs::kTLS1Enabled); |
+} |
+ |
void SSLConfigServiceManagerPref::OnDisabledCipherSuitesChange( |
PrefService* prefs) { |
const ListValue* value = prefs->GetList(prefs::kCipherSuiteBlacklist); |