| Index: components/ssl_config/ssl_config_service_manager_pref.cc
|
| diff --git a/chrome/browser/net/ssl_config_service_manager_pref.cc b/components/ssl_config/ssl_config_service_manager_pref.cc
|
| similarity index 71%
|
| rename from chrome/browser/net/ssl_config_service_manager_pref.cc
|
| rename to components/ssl_config/ssl_config_service_manager_pref.cc
|
| index 9a400ec275d0dee77974a6f770cad1d94a8c5347..0f7329f3fa0903af9ab1c547f2b5fe49b7760b57 100644
|
| --- a/chrome/browser/net/ssl_config_service_manager_pref.cc
|
| +++ b/components/ssl_config/ssl_config_service_manager_pref.cc
|
| @@ -1,7 +1,7 @@
|
| // Copyright (c) 2012 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 "chrome/browser/net/ssl_config_service_manager.h"
|
| +#include "components/ssl_config/ssl_config_service_manager.h"
|
|
|
| #include <algorithm>
|
| #include <string>
|
| @@ -14,16 +14,17 @@
|
| #include "base/prefs/pref_member.h"
|
| #include "base/prefs/pref_registry_simple.h"
|
| #include "base/prefs/pref_service.h"
|
| -#include "chrome/browser/chrome_notification_types.h"
|
| -#include "chrome/common/chrome_switches.h"
|
| -#include "chrome/common/pref_names.h"
|
| +#include "base/single_thread_task_runner.h"
|
| #include "components/content_settings/core/browser/content_settings_utils.h"
|
| #include "components/content_settings/core/common/content_settings.h"
|
| -#include "content/public/browser/browser_thread.h"
|
| +#include "components/ssl_config/ssl_config_prefs.h"
|
| +#include "components/ssl_config/ssl_config_switches.h"
|
| #include "net/ssl/ssl_cipher_suite_names.h"
|
| #include "net/ssl/ssl_config_service.h"
|
|
|
| -using content::BrowserThread;
|
| +namespace base {
|
| +class SingleThreadTaskRunner;
|
| +}
|
|
|
| namespace {
|
|
|
| @@ -54,8 +55,7 @@ std::vector<uint16> ParseCipherSuites(
|
| it != cipher_strings.end(); ++it) {
|
| uint16 cipher_suite = 0;
|
| if (!net::ParseSSLCipherString(*it, &cipher_suite)) {
|
| - LOG(ERROR) << "Ignoring unrecognized or unparsable cipher suite: "
|
| - << *it;
|
| + LOG(ERROR) << "Ignoring unrecognized or unparsable cipher suite: " << *it;
|
| continue;
|
| }
|
| cipher_suites.push_back(cipher_suite);
|
| @@ -88,7 +88,8 @@ uint16 SSLProtocolVersionFromString(const std::string& version_str) {
|
| // change.
|
| class SSLConfigServicePref : public net::SSLConfigService {
|
| public:
|
| - SSLConfigServicePref() {}
|
| + explicit SSLConfigServicePref(
|
| + const scoped_refptr<base::SingleThreadTaskRunner>& io_task_runner);
|
|
|
| // Store SSL config settings in |config|. Must only be called from IO thread.
|
| void GetSSLConfig(net::SSLConfig* config) override;
|
| @@ -106,16 +107,21 @@ class SSLConfigServicePref : public net::SSLConfigService {
|
| // Cached value of prefs, should only be accessed from IO thread.
|
| net::SSLConfig cached_config_;
|
|
|
| + scoped_refptr<base::SingleThreadTaskRunner> io_task_runner_;
|
| +
|
| DISALLOW_COPY_AND_ASSIGN(SSLConfigServicePref);
|
| };
|
|
|
| +SSLConfigServicePref::SSLConfigServicePref(
|
| + const scoped_refptr<base::SingleThreadTaskRunner>& io_task_runner)
|
| + : io_task_runner_(io_task_runner) {}
|
| +
|
| void SSLConfigServicePref::GetSSLConfig(net::SSLConfig* config) {
|
| - DCHECK_CURRENTLY_ON(BrowserThread::IO);
|
| + DCHECK(io_task_runner_->BelongsToCurrentThread());
|
| *config = cached_config_;
|
| }
|
|
|
| -void SSLConfigServicePref::SetNewSSLConfig(
|
| - const net::SSLConfig& new_config) {
|
| +void SSLConfigServicePref::SetNewSSLConfig(const net::SSLConfig& new_config) {
|
| net::SSLConfig orig_config = cached_config_;
|
| cached_config_ = new_config;
|
| ProcessConfigUpdate(orig_config, new_config);
|
| @@ -125,10 +131,11 @@ void SSLConfigServicePref::SetNewSSLConfig(
|
| // SSLConfigServiceManagerPref
|
|
|
| // The manager for holding and updating an SSLConfigServicePref instance.
|
| -class SSLConfigServiceManagerPref
|
| - : public SSLConfigServiceManager {
|
| +class SSLConfigServiceManagerPref : public ssl_config::SSLConfigServiceManager {
|
| public:
|
| - explicit SSLConfigServiceManagerPref(PrefService* local_state);
|
| + SSLConfigServiceManagerPref(
|
| + PrefService* local_state,
|
| + const scoped_refptr<base::SingleThreadTaskRunner>& io_task_runner);
|
| ~SSLConfigServiceManagerPref() override {}
|
|
|
| // Register local_state SSL preferences.
|
| @@ -139,8 +146,7 @@ class SSLConfigServiceManagerPref
|
| private:
|
| // Callback for preference changes. This will post the changes to the IO
|
| // thread with SetNewSSLConfig.
|
| - void OnPreferenceChanged(PrefService* prefs,
|
| - const std::string& pref_name);
|
| + void OnPreferenceChanged(PrefService* prefs, const std::string& pref_name);
|
|
|
| // Store SSL config settings in |config|, directly from the preferences. Must
|
| // only be called from UI thread.
|
| @@ -164,35 +170,37 @@ class SSLConfigServiceManagerPref
|
|
|
| scoped_refptr<SSLConfigServicePref> ssl_config_service_;
|
|
|
| + scoped_refptr<base::SingleThreadTaskRunner> io_task_runner_;
|
| +
|
| DISALLOW_COPY_AND_ASSIGN(SSLConfigServiceManagerPref);
|
| };
|
|
|
| SSLConfigServiceManagerPref::SSLConfigServiceManagerPref(
|
| - PrefService* local_state)
|
| - : ssl_config_service_(new SSLConfigServicePref()) {
|
| + PrefService* local_state,
|
| + const scoped_refptr<base::SingleThreadTaskRunner>& io_task_runner)
|
| + : ssl_config_service_(new SSLConfigServicePref(io_task_runner)),
|
| + io_task_runner_(io_task_runner) {
|
| DCHECK(local_state);
|
|
|
| - PrefChangeRegistrar::NamedChangeCallback local_state_callback = base::Bind(
|
| - &SSLConfigServiceManagerPref::OnPreferenceChanged,
|
| - base::Unretained(this),
|
| - local_state);
|
| + PrefChangeRegistrar::NamedChangeCallback local_state_callback =
|
| + base::Bind(&SSLConfigServiceManagerPref::OnPreferenceChanged,
|
| + base::Unretained(this), local_state);
|
|
|
| - rev_checking_enabled_.Init(
|
| - prefs::kCertRevocationCheckingEnabled, local_state, local_state_callback);
|
| + rev_checking_enabled_.Init(ssl_config::prefs::kCertRevocationCheckingEnabled,
|
| + local_state, local_state_callback);
|
| rev_checking_required_local_anchors_.Init(
|
| - prefs::kCertRevocationCheckingRequiredLocalAnchors,
|
| - local_state,
|
| - local_state_callback);
|
| - ssl_version_min_.Init(
|
| - prefs::kSSLVersionMin, local_state, local_state_callback);
|
| - ssl_version_max_.Init(
|
| - prefs::kSSLVersionMax, local_state, local_state_callback);
|
| - ssl_version_fallback_min_.Init(
|
| - prefs::kSSLVersionFallbackMin, local_state, local_state_callback);
|
| + ssl_config::prefs::kCertRevocationCheckingRequiredLocalAnchors,
|
| + local_state, local_state_callback);
|
| + ssl_version_min_.Init(ssl_config::prefs::kSSLVersionMin, local_state,
|
| + local_state_callback);
|
| + ssl_version_max_.Init(ssl_config::prefs::kSSLVersionMax, local_state,
|
| + local_state_callback);
|
| + ssl_version_fallback_min_.Init(ssl_config::prefs::kSSLVersionFallbackMin,
|
| + local_state, local_state_callback);
|
|
|
| local_state_change_registrar_.Init(local_state);
|
| - local_state_change_registrar_.Add(
|
| - prefs::kCipherSuiteBlacklist, local_state_callback);
|
| + local_state_change_registrar_.Add(ssl_config::prefs::kCipherSuiteBlacklist,
|
| + local_state_callback);
|
|
|
| OnDisabledCipherSuitesChange(local_state);
|
|
|
| @@ -204,15 +212,19 @@ SSLConfigServiceManagerPref::SSLConfigServiceManagerPref(
|
| // static
|
| void SSLConfigServiceManagerPref::RegisterPrefs(PrefRegistrySimple* registry) {
|
| net::SSLConfig default_config;
|
| - registry->RegisterBooleanPref(prefs::kCertRevocationCheckingEnabled,
|
| - default_config.rev_checking_enabled);
|
| registry->RegisterBooleanPref(
|
| - prefs::kCertRevocationCheckingRequiredLocalAnchors,
|
| + ssl_config::prefs::kCertRevocationCheckingEnabled,
|
| + default_config.rev_checking_enabled);
|
| + registry->RegisterBooleanPref(
|
| + ssl_config::prefs::kCertRevocationCheckingRequiredLocalAnchors,
|
| default_config.rev_checking_required_local_anchors);
|
| - registry->RegisterStringPref(prefs::kSSLVersionMin, std::string());
|
| - registry->RegisterStringPref(prefs::kSSLVersionMax, std::string());
|
| - registry->RegisterStringPref(prefs::kSSLVersionFallbackMin, std::string());
|
| - registry->RegisterListPref(prefs::kCipherSuiteBlacklist);
|
| + registry->RegisterStringPref(ssl_config::prefs::kSSLVersionMin,
|
| + std::string());
|
| + registry->RegisterStringPref(ssl_config::prefs::kSSLVersionMax,
|
| + std::string());
|
| + registry->RegisterStringPref(ssl_config::prefs::kSSLVersionFallbackMin,
|
| + std::string());
|
| + registry->RegisterListPref(ssl_config::prefs::kCipherSuiteBlacklist);
|
| }
|
|
|
| net::SSLConfigService* SSLConfigServiceManagerPref::Get() {
|
| @@ -222,9 +234,8 @@ net::SSLConfigService* SSLConfigServiceManagerPref::Get() {
|
| void SSLConfigServiceManagerPref::OnPreferenceChanged(
|
| PrefService* prefs,
|
| const std::string& pref_name_in) {
|
| - DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
| DCHECK(prefs);
|
| - if (pref_name_in == prefs::kCipherSuiteBlacklist)
|
| + if (pref_name_in == ssl_config::prefs::kCipherSuiteBlacklist)
|
| OnDisabledCipherSuitesChange(prefs);
|
|
|
| net::SSLConfig new_config;
|
| @@ -232,13 +243,9 @@ void SSLConfigServiceManagerPref::OnPreferenceChanged(
|
|
|
| // Post a task to |io_loop| with the new configuration, so it can
|
| // update |cached_config_|.
|
| - BrowserThread::PostTask(
|
| - BrowserThread::IO,
|
| - FROM_HERE,
|
| - base::Bind(
|
| - &SSLConfigServicePref::SetNewSSLConfig,
|
| - ssl_config_service_.get(),
|
| - new_config));
|
| + io_task_runner_->PostTask(FROM_HERE,
|
| + base::Bind(&SSLConfigServicePref::SetNewSSLConfig,
|
| + ssl_config_service_.get(), new_config));
|
| }
|
|
|
| void SSLConfigServiceManagerPref::GetSSLConfigFromPrefs(
|
| @@ -277,20 +284,23 @@ void SSLConfigServiceManagerPref::GetSSLConfigFromPrefs(
|
| void SSLConfigServiceManagerPref::OnDisabledCipherSuitesChange(
|
| PrefService* local_state) {
|
| const base::ListValue* value =
|
| - local_state->GetList(prefs::kCipherSuiteBlacklist);
|
| + local_state->GetList(ssl_config::prefs::kCipherSuiteBlacklist);
|
| disabled_cipher_suites_ = ParseCipherSuites(ListValueToStringVector(value));
|
| }
|
|
|
| ////////////////////////////////////////////////////////////////////////////////
|
| // SSLConfigServiceManager
|
|
|
| +namespace ssl_config {
|
| // static
|
| SSLConfigServiceManager* SSLConfigServiceManager::CreateDefaultManager(
|
| - PrefService* local_state) {
|
| - return new SSLConfigServiceManagerPref(local_state);
|
| + PrefService* local_state,
|
| + const scoped_refptr<base::SingleThreadTaskRunner>& io_task_runner) {
|
| + return new SSLConfigServiceManagerPref(local_state, io_task_runner);
|
| }
|
|
|
| // static
|
| void SSLConfigServiceManager::RegisterPrefs(PrefRegistrySimple* registry) {
|
| SSLConfigServiceManagerPref::RegisterPrefs(registry);
|
| }
|
| +} // namespace ssl_config
|
|
|