Chromium Code Reviews| Index: chrome/browser/ssl/ssl_browser_tests.cc |
| diff --git a/chrome/browser/ssl/ssl_browser_tests.cc b/chrome/browser/ssl/ssl_browser_tests.cc |
| index 54f61476d425412449d9eabe39ec19a462f60677..d1691861242ee2b713ba2caf67a636857dcfdd30 100644 |
| --- a/chrome/browser/ssl/ssl_browser_tests.cc |
| +++ b/chrome/browser/ssl/ssl_browser_tests.cc |
| @@ -2,6 +2,8 @@ |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| +#include "base/bind.h" |
| +#include "base/bind_helpers.h" |
| #include "base/command_line.h" |
| #include "base/path_service.h" |
| #include "base/prefs/pref_service.h" |
| @@ -39,14 +41,14 @@ |
| #include "content/public/test/browser_test_utils.h" |
| #include "content/public/test/download_test_observer.h" |
| #include "content/public/test/test_renderer_host.h" |
| -#include "crypto/nss_util.h" |
| -#include "net/base/crypto_module.h" |
| #include "net/base/net_errors.h" |
| #include "net/base/test_data_directory.h" |
| #include "net/cert/cert_status_flags.h" |
| #include "net/test/spawned_test_server/spawned_test_server.h" |
| #if defined(USE_NSS) |
| +#include "chrome/browser/net/nss_context.h" |
| +#include "net/base/crypto_module.h" |
| #include "net/cert/nss_cert_database.h" |
| #endif // defined(USE_NSS) |
| @@ -717,27 +719,46 @@ IN_PROC_BROWSER_TEST_F(SSLUITest, TestWSSInvalidCertAndGoForward) { |
| } |
| #if defined(USE_NSS) |
| +class SSLUITestWithClientCert : public SSLUITest { |
| + public: |
| + SSLUITestWithClientCert() : cert_db_(NULL) {} |
| + |
| + virtual void SetUpOnMainThread() OVERRIDE { |
| + SSLUITest::SetUpOnMainThread(); |
| + |
| + base::RunLoop loop; |
| + GetNSSCertDatabaseForProfile( |
| + browser()->profile(), |
| + base::Bind(&SSLUITestWithClientCert::DidGetCertDatabase, |
| + base::Unretained(this), |
| + &loop)); |
| + loop.Run(); |
| + } |
| + |
| + protected: |
| + void DidGetCertDatabase(base::RunLoop* loop, net::NSSCertDatabase* cert_db) { |
| + cert_db_ = cert_db; |
| + loop->Quit(); |
| + } |
| + |
| + net::NSSCertDatabase* cert_db_; |
| +}; |
| + |
| // SSL client certificate tests are only enabled when using NSS for private key |
| // storage, as only NSS can avoid modifying global machine state when testing. |
| // See http://crbug.com/51132 |
| // Visit a HTTPS page which requires client cert authentication. The client |
| // cert will be selected automatically, then a test which uses WebSocket runs. |
| -// Disabled: http://crbug.com/159985 |
|
pneubeck (no reviews)
2014/07/21 06:43:56
here it refers to the bug I listed first.
Disablin
|
| -IN_PROC_BROWSER_TEST_F(SSLUITest, DISABLED_TestWSSClientCert) { |
| - // Open a temporary NSS DB for testing. |
| - crypto::ScopedTestNSSDB test_nssdb; |
| - ASSERT_TRUE(test_nssdb.is_open()); |
| - |
| - // Import client cert for test. These interfaces require NSS. |
| - net::NSSCertDatabase* cert_db = net::NSSCertDatabase::GetInstance(); |
| - scoped_refptr<net::CryptoModule> crypt_module = cert_db->GetPublicModule(); |
| +IN_PROC_BROWSER_TEST_F(SSLUITestWithClientCert, TestWSSClientCert) { |
| + // Import a client cert for test. |
| + scoped_refptr<net::CryptoModule> crypt_module = cert_db_->GetPublicModule(); |
| std::string pkcs12_data; |
| base::FilePath cert_path = net::GetTestCertsDirectory().Append( |
| FILE_PATH_LITERAL("websocket_client_cert.p12")); |
| EXPECT_TRUE(base::ReadFileToString(cert_path, &pkcs12_data)); |
| EXPECT_EQ(net::OK, |
| - cert_db->ImportFromPKCS12( |
| + cert_db_->ImportFromPKCS12( |
| crypt_module.get(), pkcs12_data, base::string16(), true, NULL)); |
| // Start WebSocket test server with TLS and client cert authentication. |