diff options
author | wtc@chromium.org <wtc@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-02-23 21:35:19 +0000 |
---|---|---|
committer | wtc@chromium.org <wtc@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-02-23 21:35:19 +0000 |
commit | 2380f378654e66f58262e3eaa1f9ba0cd1da09e0 (patch) | |
tree | cd9202c3cfd4a88a619604a7d59ee3184b94a29b | |
parent | b4ce3c22d957e8c6128e7e1dd7434b5cd0e61008 (diff) | |
download | chromium_src-2380f378654e66f58262e3eaa1f9ba0cd1da09e0.zip chromium_src-2380f378654e66f58262e3eaa1f9ba0cd1da09e0.tar.gz chromium_src-2380f378654e66f58262e3eaa1f9ba0cd1da09e0.tar.bz2 |
Remove the workaround for bug 43461. Use a g_use_system_ssl
boolean flag in DefaultClientSocketFactory::CreateSSLClientSocket.
Based on rch's code in http://codereview.chromium.org/6487012.
R=rch
BUG=43461
TEST=no ChromeFrame test program build failures.
Review URL: http://codereview.chromium.org/6561003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@75791 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | chrome/browser/browser_main_mac.mm | 5 | ||||
-rw-r--r-- | chrome/browser/browser_main_win.cc | 13 | ||||
-rw-r--r-- | net/base/run_all_unittests.cc | 7 | ||||
-rw-r--r-- | net/socket/client_socket_factory.cc | 67 | ||||
-rw-r--r-- | net/socket/client_socket_factory.h | 14 | ||||
-rw-r--r-- | webkit/tools/test_shell/simple_resource_loader_bridge.cc | 9 |
6 files changed, 43 insertions, 72 deletions
diff --git a/chrome/browser/browser_main_mac.mm b/chrome/browser/browser_main_mac.mm index e47e268..15ee489 100644 --- a/chrome/browser/browser_main_mac.mm +++ b/chrome/browser/browser_main_mac.mm @@ -24,7 +24,7 @@ #include "chrome/common/chrome_switches.h" #include "chrome/common/main_function_params.h" #include "chrome/common/result_codes.h" -#include "net/socket/ssl_client_socket_mac_factory.h" +#include "net/socket/client_socket_factory.h" #include "ui/base/l10n/l10n_util_mac.h" #include "ui/base/resource/resource_bundle.h" @@ -135,8 +135,7 @@ class BrowserMainPartsMac : public BrowserMainPartsPosix { // Use NSS for SSL by default. // The default client socket factory uses NSS for SSL by default on Mac. if (parsed_command_line().HasSwitch(switches::kUseSystemSSL)) { - net::ClientSocketFactory::SetSSLClientSocketFactory( - net::SSLClientSocketMacFactory); + net::ClientSocketFactory::UseSystemSSL(); } else { // We want to be sure to init NSPR on the main thread. base::EnsureNSPRInit(); diff --git a/chrome/browser/browser_main_win.cc b/chrome/browser/browser_main_win.cc index 8689e39..2824d01 100644 --- a/chrome/browser/browser_main_win.cc +++ b/chrome/browser/browser_main_win.cc @@ -34,7 +34,7 @@ #include "grit/chromium_strings.h" #include "grit/generated_resources.h" #include "net/base/winsock_init.h" -#include "net/socket/ssl_client_socket_nss_factory.h" +#include "net/socket/client_socket_factory.h" #include "ui/base/l10n/l10n_util.h" #include "ui/base/l10n/l10n_util_win.h" #include "ui/base/message_box_win.h" @@ -270,12 +270,11 @@ class BrowserMainPartsWin : public BrowserMainParts { private: virtual void InitializeSSL() { // Use NSS for SSL by default. - // Because of a build system issue (http://crbug.com/43461), the default - // client socket factory uses SChannel (the system SSL library) for SSL by - // default on Windows. - if (!parsed_command_line().HasSwitch(switches::kUseSystemSSL)) { - net::ClientSocketFactory::SetSSLClientSocketFactory( - net::SSLClientSocketNSSFactory); + // The default client socket factory uses NSS for SSL by default on + // Windows. + if (parsed_command_line().HasSwitch(switches::kUseSystemSSL)) { + net::ClientSocketFactory::UseSystemSSL(); + } else { // We want to be sure to init NSPR on the main thread. base::EnsureNSPRInit(); } diff --git a/net/base/run_all_unittests.cc b/net/base/run_all_unittests.cc index d0822a0..a60e501 100644 --- a/net/base/run_all_unittests.cc +++ b/net/base/run_all_unittests.cc @@ -6,9 +6,6 @@ #include "base/metrics/histogram.h" #include "base/nss_util.h" #include "net/base/net_test_suite.h" -#if defined(OS_WIN) -#include "net/socket/ssl_client_socket_nss_factory.h" -#endif int main(int argc, char** argv) { // Record histograms, so we can get histograms data in tests. @@ -16,10 +13,6 @@ int main(int argc, char** argv) { NetTestSuite test_suite(argc, argv); #if defined(OS_WIN) - // Use NSS for SSL on Windows. TODO(wtc): this should eventually be hidden - // inside DefaultClientSocketFactory::CreateSSLClientSocket. - net::ClientSocketFactory::SetSSLClientSocketFactory( - net::SSLClientSocketNSSFactory); // We want to be sure to init NSPR on the main thread. base::EnsureNSPRInit(); #endif diff --git a/net/socket/client_socket_factory.cc b/net/socket/client_socket_factory.cc index dd201f9..dfbe1f2 100644 --- a/net/socket/client_socket_factory.cc +++ b/net/socket/client_socket_factory.cc @@ -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,37 +23,9 @@ 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 -} - -SSLClientSocketFactory g_ssl_factory = DefaultSSLClientSocketFactory; +bool g_use_system_ssl = false; class DefaultClientSocketFactory : public ClientSocketFactory { public: @@ -69,8 +43,34 @@ class DefaultClientSocketFactory : public ClientSocketFactory { 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 @@ ClientSocketFactory* ClientSocketFactory::GetDefaultFactory() { } // static -void ClientSocketFactory::SetSSLClientSocketFactory( - SSLClientSocketFactory factory) { - g_ssl_factory = factory; +void ClientSocketFactory::UseSystemSSL() { + g_use_system_ssl = true; } } // namespace net diff --git a/net/socket/client_socket_factory.h b/net/socket/client_socket_factory.h index 2a0cd7c..b750a0d 100644 --- a/net/socket/client_socket_factory.h +++ b/net/socket/client_socket_factory.h @@ -23,15 +23,6 @@ class SSLClientSocket; struct SSLConfig; class SSLHostInfo; -// Callback function to create new SSLClientSocket objects. -typedef SSLClientSocket* (*SSLClientSocketFactory)( - ClientSocketHandle* transport_socket, - const HostPortPair& host_and_port, - const SSLConfig& ssl_config, - SSLHostInfo* ssl_host_info, - CertVerifier* cert_verifier, - DnsCertProvenanceChecker* dns_cert_checker); - // An interface used to instantiate ClientSocket objects. Used to facilitate // testing code with mock socket implementations. class ClientSocketFactory { @@ -64,9 +55,8 @@ class ClientSocketFactory { // Returns the default ClientSocketFactory. static ClientSocketFactory* GetDefaultFactory(); - // Instructs the default ClientSocketFactory to use |factory| to create - // SSLClientSocket objects. - static void SetSSLClientSocketFactory(SSLClientSocketFactory factory); + // Instructs the default ClientSocketFactory to use the system SSL library. + static void UseSystemSSL(); }; } // namespace net diff --git a/webkit/tools/test_shell/simple_resource_loader_bridge.cc b/webkit/tools/test_shell/simple_resource_loader_bridge.cc index f2c4658..fe7f7be 100644 --- a/webkit/tools/test_shell/simple_resource_loader_bridge.cc +++ b/webkit/tools/test_shell/simple_resource_loader_bridge.cc @@ -57,9 +57,6 @@ #include "net/http/http_request_headers.h" #include "net/http/http_response_headers.h" #include "net/proxy/proxy_service.h" -#if defined(OS_WIN) -#include "net/socket/ssl_client_socket_nss_factory.h" -#endif #include "net/url_request/url_request.h" #include "net/url_request/url_request_job.h" #include "webkit/appcache/appcache_interfaces.h" @@ -885,12 +882,6 @@ bool SimpleResourceLoaderBridge::EnsureIOThread() { if (g_io_thread) return true; -#if defined(OS_WIN) - // Use NSS for SSL on Windows. TODO(wtc): this should eventually be hidden - // inside DefaultClientSocketFactory::CreateSSLClientSocket. - net::ClientSocketFactory::SetSSLClientSocketFactory( - net::SSLClientSocketNSSFactory); -#endif #if defined(OS_MACOSX) || defined(OS_WIN) // We want to be sure to init NSPR on the main thread. base::EnsureNSPRInit(); |