| Index: net/socket/client_socket_factory.cc
|
| diff --git a/net/socket/client_socket_factory.cc b/net/socket/client_socket_factory.cc
|
| deleted file mode 100644
|
| index 51aea715f4d157e9388b923906034eca8e9ed92f..0000000000000000000000000000000000000000
|
| --- a/net/socket/client_socket_factory.cc
|
| +++ /dev/null
|
| @@ -1,140 +0,0 @@
|
| -// 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 "net/socket/client_socket_factory.h"
|
| -
|
| -#include "base/lazy_instance.h"
|
| -#include "base/thread_task_runner_handle.h"
|
| -#include "base/threading/sequenced_worker_pool.h"
|
| -#include "build/build_config.h"
|
| -#include "net/cert/cert_database.h"
|
| -#include "net/socket/client_socket_handle.h"
|
| -#if defined(USE_OPENSSL)
|
| -#include "net/socket/ssl_client_socket_openssl.h"
|
| -#elif defined(USE_NSS) || defined(OS_MACOSX) || defined(OS_WIN)
|
| -#include "net/socket/ssl_client_socket_nss.h"
|
| -#endif
|
| -#include "net/socket/tcp_client_socket.h"
|
| -#include "net/udp/udp_client_socket.h"
|
| -
|
| -namespace net {
|
| -
|
| -class X509Certificate;
|
| -
|
| -namespace {
|
| -
|
| -// ChromeOS and Linux may require interaction with smart cards or TPMs, which
|
| -// may cause NSS functions to block for upwards of several seconds. To avoid
|
| -// blocking all activity on the current task runner, such as network or IPC
|
| -// traffic, run NSS SSL functions on a dedicated thread.
|
| -#if defined(OS_CHROMEOS) || defined(OS_LINUX)
|
| -bool g_use_dedicated_nss_thread = true;
|
| -#else
|
| -bool g_use_dedicated_nss_thread = false;
|
| -#endif
|
| -
|
| -class DefaultClientSocketFactory : public ClientSocketFactory,
|
| - public CertDatabase::Observer {
|
| - public:
|
| - DefaultClientSocketFactory() {
|
| - if (g_use_dedicated_nss_thread) {
|
| - // Use a single thread for the worker pool.
|
| - worker_pool_ = new base::SequencedWorkerPool(1, "NSS SSL Thread");
|
| - nss_thread_task_runner_ =
|
| - worker_pool_->GetSequencedTaskRunnerWithShutdownBehavior(
|
| - worker_pool_->GetSequenceToken(),
|
| - base::SequencedWorkerPool::CONTINUE_ON_SHUTDOWN);
|
| - }
|
| -
|
| - CertDatabase::GetInstance()->AddObserver(this);
|
| - }
|
| -
|
| - ~DefaultClientSocketFactory() override {
|
| - // Note: This code never runs, as the factory is defined as a Leaky
|
| - // singleton.
|
| - CertDatabase::GetInstance()->RemoveObserver(this);
|
| - }
|
| -
|
| - void OnCertAdded(const X509Certificate* cert) override {
|
| - ClearSSLSessionCache();
|
| - }
|
| -
|
| - void OnCACertChanged(const X509Certificate* cert) override {
|
| - // Per wtc, we actually only need to flush when trust is reduced.
|
| - // Always flush now because OnCACertChanged does not tell us this.
|
| - // See comments in ClientSocketPoolManager::OnCACertChanged.
|
| - ClearSSLSessionCache();
|
| - }
|
| -
|
| - scoped_ptr<DatagramClientSocket> CreateDatagramClientSocket(
|
| - DatagramSocket::BindType bind_type,
|
| - const RandIntCallback& rand_int_cb,
|
| - NetLog* net_log,
|
| - const NetLog::Source& source) override {
|
| - return scoped_ptr<DatagramClientSocket>(
|
| - new UDPClientSocket(bind_type, rand_int_cb, net_log, source));
|
| - }
|
| -
|
| - scoped_ptr<StreamSocket> CreateTransportClientSocket(
|
| - const AddressList& addresses,
|
| - NetLog* net_log,
|
| - const NetLog::Source& source) override {
|
| - return scoped_ptr<StreamSocket>(
|
| - new TCPClientSocket(addresses, net_log, source));
|
| - }
|
| -
|
| - scoped_ptr<SSLClientSocket> CreateSSLClientSocket(
|
| - scoped_ptr<ClientSocketHandle> transport_socket,
|
| - const HostPortPair& host_and_port,
|
| - const SSLConfig& ssl_config,
|
| - const SSLClientSocketContext& context) override {
|
| - // nss_thread_task_runner_ may be NULL if g_use_dedicated_nss_thread is
|
| - // false or if the dedicated NSS thread failed to start. If so, cause NSS
|
| - // functions to execute on the current task runner.
|
| - //
|
| - // Note: The current task runner is obtained on each call due to unit
|
| - // tests, which may create and tear down the current thread's TaskRunner
|
| - // between each test. Because the DefaultClientSocketFactory is leaky, it
|
| - // may span multiple tests, and thus the current task runner may change
|
| - // from call to call.
|
| - scoped_refptr<base::SequencedTaskRunner> nss_task_runner(
|
| - nss_thread_task_runner_);
|
| - if (!nss_task_runner.get())
|
| - nss_task_runner = base::ThreadTaskRunnerHandle::Get();
|
| -
|
| -#if defined(USE_OPENSSL)
|
| - return scoped_ptr<SSLClientSocket>(
|
| - new SSLClientSocketOpenSSL(transport_socket.Pass(), host_and_port,
|
| - ssl_config, context));
|
| -#elif defined(USE_NSS) || defined(OS_MACOSX) || defined(OS_WIN)
|
| - return scoped_ptr<SSLClientSocket>(
|
| - new SSLClientSocketNSS(nss_task_runner.get(),
|
| - transport_socket.Pass(),
|
| - host_and_port,
|
| - ssl_config,
|
| - context));
|
| -#else
|
| - NOTIMPLEMENTED();
|
| - return scoped_ptr<SSLClientSocket>();
|
| -#endif
|
| - }
|
| -
|
| - void ClearSSLSessionCache() override { SSLClientSocket::ClearSessionCache(); }
|
| -
|
| - private:
|
| - scoped_refptr<base::SequencedWorkerPool> worker_pool_;
|
| - scoped_refptr<base::SequencedTaskRunner> nss_thread_task_runner_;
|
| -};
|
| -
|
| -static base::LazyInstance<DefaultClientSocketFactory>::Leaky
|
| - g_default_client_socket_factory = LAZY_INSTANCE_INITIALIZER;
|
| -
|
| -} // namespace
|
| -
|
| -// static
|
| -ClientSocketFactory* ClientSocketFactory::GetDefaultFactory() {
|
| - return g_default_client_socket_factory.Pointer();
|
| -}
|
| -
|
| -} // namespace net
|
|
|