| Index: net/socket/client_socket_factory.cc
|
| ===================================================================
|
| --- net/socket/client_socket_factory.cc (revision 75692)
|
| +++ net/socket/client_socket_factory.cc (working copy)
|
| @@ -8,12 +8,14 @@
|
| #include "build/build_config.h"
|
| #include "net/socket/client_socket_handle.h"
|
| #if defined(OS_WIN)
|
| +#include "net/socket/ssl_client_socket_nss.h"
|
| #include "net/socket/ssl_client_socket_win.h"
|
| #elif defined(USE_OPENSSL)
|
| #include "net/socket/ssl_client_socket_openssl.h"
|
| #elif defined(USE_NSS)
|
| #include "net/socket/ssl_client_socket_nss.h"
|
| #elif defined(OS_MACOSX)
|
| +#include "net/socket/ssl_client_socket_mac.h"
|
| #include "net/socket/ssl_client_socket_nss.h"
|
| #endif
|
| #include "net/socket/ssl_host_info.h"
|
| @@ -21,38 +23,10 @@
|
|
|
| namespace net {
|
|
|
| -class DnsCertProvenanceChecker;
|
| -
|
| namespace {
|
|
|
| -SSLClientSocket* DefaultSSLClientSocketFactory(
|
| - ClientSocketHandle* transport_socket,
|
| - const HostPortPair& host_and_port,
|
| - const SSLConfig& ssl_config,
|
| - SSLHostInfo* ssl_host_info,
|
| - CertVerifier* cert_verifier,
|
| - DnsCertProvenanceChecker* dns_cert_checker) {
|
| - scoped_ptr<SSLHostInfo> shi(ssl_host_info);
|
| -#if defined(OS_WIN)
|
| - return new SSLClientSocketWin(transport_socket, host_and_port, ssl_config,
|
| - cert_verifier);
|
| -#elif defined(USE_OPENSSL)
|
| - return new SSLClientSocketOpenSSL(transport_socket, host_and_port,
|
| - ssl_config, cert_verifier);
|
| -#elif defined(USE_NSS)
|
| - return new SSLClientSocketNSS(transport_socket, host_and_port, ssl_config,
|
| - shi.release(), cert_verifier, dns_cert_checker);
|
| -#elif defined(OS_MACOSX)
|
| - return new SSLClientSocketNSS(transport_socket, host_and_port, ssl_config,
|
| - shi.release(), cert_verifier, dns_cert_checker);
|
| -#else
|
| - NOTIMPLEMENTED();
|
| - return NULL;
|
| -#endif
|
| -}
|
| +bool g_use_system_ssl = false;
|
|
|
| -SSLClientSocketFactory g_ssl_factory = DefaultSSLClientSocketFactory;
|
| -
|
| class DefaultClientSocketFactory : public ClientSocketFactory {
|
| public:
|
| virtual ClientSocket* CreateTCPClientSocket(
|
| @@ -69,8 +43,34 @@
|
| SSLHostInfo* ssl_host_info,
|
| CertVerifier* cert_verifier,
|
| DnsCertProvenanceChecker* dns_cert_checker) {
|
| - return g_ssl_factory(transport_socket, host_and_port, ssl_config,
|
| - ssl_host_info, cert_verifier, dns_cert_checker);
|
| + scoped_ptr<SSLHostInfo> shi(ssl_host_info);
|
| +#if defined(OS_WIN)
|
| + if (g_use_system_ssl) {
|
| + return new SSLClientSocketWin(transport_socket, host_and_port,
|
| + ssl_config, cert_verifier);
|
| + }
|
| + return new SSLClientSocketNSS(transport_socket, host_and_port, ssl_config,
|
| + shi.release(), cert_verifier,
|
| + dns_cert_checker);
|
| +#elif defined(USE_OPENSSL)
|
| + return new SSLClientSocketOpenSSL(transport_socket, host_and_port,
|
| + ssl_config, cert_verifier);
|
| +#elif defined(USE_NSS)
|
| + return new SSLClientSocketNSS(transport_socket, host_and_port, ssl_config,
|
| + shi.release(), cert_verifier,
|
| + dns_cert_checker);
|
| +#elif defined(OS_MACOSX)
|
| + if (g_use_system_ssl) {
|
| + return new SSLClientSocketMac(transport_socket, host_and_port,
|
| + ssl_config, cert_verifier);
|
| + }
|
| + return new SSLClientSocketNSS(transport_socket, host_and_port, ssl_config,
|
| + shi.release(), cert_verifier,
|
| + dns_cert_checker);
|
| +#else
|
| + NOTIMPLEMENTED();
|
| + return NULL;
|
| +#endif
|
| }
|
| };
|
|
|
| @@ -99,9 +99,8 @@
|
| }
|
|
|
| // static
|
| -void ClientSocketFactory::SetSSLClientSocketFactory(
|
| - SSLClientSocketFactory factory) {
|
| - g_ssl_factory = factory;
|
| +void ClientSocketFactory::UseSystemSSL() {
|
| + g_use_system_ssl = true;
|
| }
|
|
|
| } // namespace net
|
|
|