| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "base/bind.h" | 5 #include "base/bind.h" |
| 6 #include "base/files/file_path.h" | 6 #include "base/files/file_path.h" |
| 7 #include "base/synchronization/waitable_event.h" | 7 #include "base/synchronization/waitable_event.h" |
| 8 #include "chrome/browser/profiles/profile.h" | 8 #include "chrome/browser/profiles/profile.h" |
| 9 #include "chrome/browser/ssl/ssl_client_auth_requestor_mock.h" | 9 #include "chrome/browser/ssl/ssl_client_auth_requestor_mock.h" |
| 10 #include "chrome/browser/ui/browser.h" | 10 #include "chrome/browser/ui/browser.h" |
| 11 #include "chrome/browser/ui/tabs/tab_strip_model.h" | 11 #include "chrome/browser/ui/tabs/tab_strip_model.h" |
| 12 #include "chrome/browser/ui/views/ssl_client_certificate_selector.h" | 12 #include "chrome/browser/ui/views/ssl_client_certificate_selector.h" |
| 13 #include "chrome/test/base/in_process_browser_test.h" | 13 #include "chrome/test/base/in_process_browser_test.h" |
| 14 #include "chrome/test/base/interactive_test_utils.h" | 14 #include "chrome/test/base/interactive_test_utils.h" |
| 15 #include "chrome/test/base/ui_test_utils.h" | 15 #include "chrome/test/base/ui_test_utils.h" |
| 16 #include "content/public/browser/web_contents.h" | 16 #include "content/public/browser/web_contents.h" |
| 17 #include "content/public/test/browser_test_utils.h" | 17 #include "content/public/test/browser_test_utils.h" |
| 18 #include "net/base/request_priority.h" | 18 #include "net/base/request_priority.h" |
| 19 #include "net/base/test_data_directory.h" | 19 #include "net/base/test_data_directory.h" |
| 20 #include "net/cert/x509_certificate.h" | 20 #include "net/cert/x509_certificate.h" |
| 21 #include "net/http/http_transaction_factory.h" | 21 #include "net/http/http_transaction_factory.h" |
| 22 #include "net/ssl/ssl_cert_request_info.h" | 22 #include "net/ssl/ssl_cert_request_info.h" |
| 23 #include "net/test/cert_test_util.h" | 23 #include "net/test/cert_test_util.h" |
| 24 #include "net/url_request/url_request.h" | 24 #include "net/url_request/url_request.h" |
| 25 #include "net/url_request/url_request_context.h" | 25 #include "net/url_request/url_request_context.h" |
| 26 #include "net/url_request/url_request_context_getter.h" | 26 #include "net/url_request/url_request_context_getter.h" |
| 27 #include "testing/gtest/include/gtest/gtest.h" | 27 #include "testing/gtest/include/gtest/gtest.h" |
| 28 | 28 |
| 29 #if defined(USE_NSS) |
| 30 #include "crypto/scoped_test_nss_db.h" |
| 31 #endif |
| 32 |
| 29 using ::testing::Mock; | 33 using ::testing::Mock; |
| 30 using ::testing::StrictMock; | 34 using ::testing::StrictMock; |
| 31 using content::BrowserThread; | 35 using content::BrowserThread; |
| 32 | 36 |
| 33 // We don't have a way to do end-to-end SSL client auth testing, so this test | 37 // We don't have a way to do end-to-end SSL client auth testing, so this test |
| 34 // creates a certificate selector_ manually with a mocked | 38 // creates a certificate selector_ manually with a mocked |
| 35 // SSLClientAuthHandler. | 39 // SSLClientAuthHandler. |
| 36 | 40 |
| 37 class SSLClientCertificateSelectorTest : public InProcessBrowserTest { | 41 class SSLClientCertificateSelectorTest : public InProcessBrowserTest { |
| 38 public: | 42 public: |
| 39 SSLClientCertificateSelectorTest() | 43 SSLClientCertificateSelectorTest() |
| 40 : io_loop_finished_event_(false, false), | 44 : io_loop_finished_event_(false, false), |
| 41 url_request_(NULL), | 45 url_request_(NULL), |
| 42 selector_(NULL) { | 46 selector_(NULL) { |
| 43 } | 47 } |
| 44 | 48 |
| 45 void SetUpInProcessBrowserTestFixture() override { | 49 void SetUpInProcessBrowserTestFixture() override { |
| 46 base::FilePath certs_dir = net::GetTestCertsDirectory(); | 50 base::FilePath certs_dir = net::GetTestCertsDirectory(); |
| 47 | 51 |
| 48 mit_davidben_cert_ = net::ImportCertFromFile(certs_dir, "mit.davidben.der"); | 52 #if defined(USE_NSS) |
| 49 ASSERT_NE(static_cast<net::X509Certificate*>(NULL), | 53 // If USE_NSS, the selector tries to unlock the slot where the private key |
| 50 mit_davidben_cert_.get()); | 54 // of each certificate is stored. If no private key is found, the slot would |
| 51 | 55 // be null and the unlock will crash. |
| 52 foaf_me_chromium_test_cert_ = net::ImportCertFromFile( | 56 ASSERT_TRUE(test_nssdb_.is_open()); |
| 53 certs_dir, "foaf.me.chromium-test-cert.der"); | 57 client_cert_1_ = net::ImportClientCertAndKeyFromFile( |
| 54 ASSERT_NE(static_cast<net::X509Certificate*>(NULL), | 58 certs_dir, "client_1.pem", "client_1.pk8", test_nssdb_.slot()); |
| 55 foaf_me_chromium_test_cert_.get()); | 59 client_cert_2_ = net::ImportClientCertAndKeyFromFile( |
| 60 certs_dir, "client_2.pem", "client_2.pk8", test_nssdb_.slot()); |
| 61 #else |
| 62 // No unlock is attempted if !USE_NSS. Thus, there is no need to import a |
| 63 // private key. |
| 64 client_cert_1_ = net::ImportCertFromFile(certs_dir, "client_1.pem"); |
| 65 client_cert_2_ = net::ImportCertFromFile(certs_dir, "client_2.pem"); |
| 66 #endif |
| 67 ASSERT_NE(nullptr, client_cert_1_.get()); |
| 68 ASSERT_NE(nullptr, client_cert_2_.get()); |
| 56 | 69 |
| 57 cert_request_info_ = new net::SSLCertRequestInfo; | 70 cert_request_info_ = new net::SSLCertRequestInfo; |
| 58 cert_request_info_->host_and_port = net::HostPortPair("foo", 123); | 71 cert_request_info_->host_and_port = net::HostPortPair("foo", 123); |
| 59 cert_request_info_->client_certs.push_back(mit_davidben_cert_); | 72 cert_request_info_->client_certs.push_back(client_cert_1_); |
| 60 cert_request_info_->client_certs.push_back(foaf_me_chromium_test_cert_); | 73 cert_request_info_->client_certs.push_back(client_cert_2_); |
| 61 } | 74 } |
| 62 | 75 |
| 63 void SetUpOnMainThread() override { | 76 void SetUpOnMainThread() override { |
| 64 url_request_context_getter_ = browser()->profile()->GetRequestContext(); | 77 url_request_context_getter_ = browser()->profile()->GetRequestContext(); |
| 65 | 78 |
| 66 BrowserThread::PostTask( | 79 BrowserThread::PostTask( |
| 67 BrowserThread::IO, FROM_HERE, | 80 BrowserThread::IO, FROM_HERE, |
| 68 base::Bind(&SSLClientCertificateSelectorTest::SetUpOnIOThread, this)); | 81 base::Bind(&SSLClientCertificateSelectorTest::SetUpOnIOThread, this)); |
| 69 | 82 |
| 70 io_loop_finished_event_.Wait(); | 83 io_loop_finished_event_.Wait(); |
| 71 | 84 |
| 72 content::WaitForLoadStop( | 85 content::WaitForLoadStop( |
| 73 browser()->tab_strip_model()->GetActiveWebContents()); | 86 browser()->tab_strip_model()->GetActiveWebContents()); |
| 74 selector_ = new SSLClientCertificateSelector( | 87 selector_ = new SSLClientCertificateSelector( |
| 75 browser()->tab_strip_model()->GetActiveWebContents(), | 88 browser()->tab_strip_model()->GetActiveWebContents(), |
| 76 auth_requestor_->cert_request_info_, | 89 auth_requestor_->cert_request_info_, |
| 77 base::Bind(&SSLClientAuthRequestorMock::CertificateSelected, | 90 base::Bind(&SSLClientAuthRequestorMock::CertificateSelected, |
| 78 auth_requestor_)); | 91 auth_requestor_)); |
| 79 selector_->Init(); | 92 selector_->Init(); |
| 93 selector_->Show(); |
| 80 | 94 |
| 81 EXPECT_EQ(mit_davidben_cert_.get(), selector_->GetSelectedCert()); | 95 EXPECT_EQ(client_cert_1_.get(), selector_->GetSelectedCert()); |
| 82 } | 96 } |
| 83 | 97 |
| 84 virtual void SetUpOnIOThread() { | 98 virtual void SetUpOnIOThread() { |
| 85 url_request_ = MakeURLRequest(url_request_context_getter_.get()).release(); | 99 url_request_ = MakeURLRequest(url_request_context_getter_.get()).release(); |
| 86 | 100 |
| 87 auth_requestor_ = new StrictMock<SSLClientAuthRequestorMock>( | 101 auth_requestor_ = new StrictMock<SSLClientAuthRequestorMock>( |
| 88 url_request_, | 102 url_request_, |
| 89 cert_request_info_); | 103 cert_request_info_); |
| 90 | 104 |
| 91 io_loop_finished_event_.Signal(); | 105 io_loop_finished_event_.Signal(); |
| (...skipping 22 matching lines...) Expand all Loading... |
| 114 net::URLRequestContextGetter* context_getter) { | 128 net::URLRequestContextGetter* context_getter) { |
| 115 return context_getter->GetURLRequestContext()->CreateRequest( | 129 return context_getter->GetURLRequestContext()->CreateRequest( |
| 116 GURL("https://example"), net::DEFAULT_PRIORITY, NULL, NULL); | 130 GURL("https://example"), net::DEFAULT_PRIORITY, NULL, NULL); |
| 117 } | 131 } |
| 118 | 132 |
| 119 base::WaitableEvent io_loop_finished_event_; | 133 base::WaitableEvent io_loop_finished_event_; |
| 120 | 134 |
| 121 scoped_refptr<net::URLRequestContextGetter> url_request_context_getter_; | 135 scoped_refptr<net::URLRequestContextGetter> url_request_context_getter_; |
| 122 net::URLRequest* url_request_; | 136 net::URLRequest* url_request_; |
| 123 | 137 |
| 124 scoped_refptr<net::X509Certificate> mit_davidben_cert_; | 138 scoped_refptr<net::X509Certificate> client_cert_1_; |
| 125 scoped_refptr<net::X509Certificate> foaf_me_chromium_test_cert_; | 139 scoped_refptr<net::X509Certificate> client_cert_2_; |
| 126 scoped_refptr<net::SSLCertRequestInfo> cert_request_info_; | 140 scoped_refptr<net::SSLCertRequestInfo> cert_request_info_; |
| 127 scoped_refptr<StrictMock<SSLClientAuthRequestorMock> > auth_requestor_; | 141 scoped_refptr<StrictMock<SSLClientAuthRequestorMock> > auth_requestor_; |
| 128 // The selector will be deleted when a cert is selected or the tab is closed. | 142 // The selector will be deleted when a cert is selected or the tab is closed. |
| 129 SSLClientCertificateSelector* selector_; | 143 SSLClientCertificateSelector* selector_; |
| 144 #if defined(USE_NSS) |
| 145 crypto::ScopedTestNSSDB test_nssdb_; |
| 146 #endif |
| 130 }; | 147 }; |
| 131 | 148 |
| 132 class SSLClientCertificateSelectorMultiTabTest | 149 class SSLClientCertificateSelectorMultiTabTest |
| 133 : public SSLClientCertificateSelectorTest { | 150 : public SSLClientCertificateSelectorTest { |
| 134 public: | 151 public: |
| 135 void SetUpInProcessBrowserTestFixture() override { | 152 void SetUpInProcessBrowserTestFixture() override { |
| 136 SSLClientCertificateSelectorTest::SetUpInProcessBrowserTestFixture(); | 153 SSLClientCertificateSelectorTest::SetUpInProcessBrowserTestFixture(); |
| 137 | 154 |
| 138 cert_request_info_1_ = new net::SSLCertRequestInfo; | 155 cert_request_info_1_ = new net::SSLCertRequestInfo; |
| 139 cert_request_info_1_->host_and_port = net::HostPortPair("bar", 123); | 156 cert_request_info_1_->host_and_port = net::HostPortPair("bar", 123); |
| 140 cert_request_info_1_->client_certs.push_back(mit_davidben_cert_); | 157 cert_request_info_1_->client_certs.push_back(client_cert_1_); |
| 141 cert_request_info_1_->client_certs.push_back(foaf_me_chromium_test_cert_); | 158 cert_request_info_1_->client_certs.push_back(client_cert_2_); |
| 142 | 159 |
| 143 cert_request_info_2_ = new net::SSLCertRequestInfo; | 160 cert_request_info_2_ = new net::SSLCertRequestInfo; |
| 144 cert_request_info_2_->host_and_port = net::HostPortPair("bar", 123); | 161 cert_request_info_2_->host_and_port = net::HostPortPair("bar", 123); |
| 145 cert_request_info_2_->client_certs.push_back(mit_davidben_cert_); | 162 cert_request_info_2_->client_certs.push_back(client_cert_1_); |
| 146 cert_request_info_2_->client_certs.push_back(foaf_me_chromium_test_cert_); | 163 cert_request_info_2_->client_certs.push_back(client_cert_2_); |
| 147 } | 164 } |
| 148 | 165 |
| 149 void SetUpOnMainThread() override { | 166 void SetUpOnMainThread() override { |
| 150 // Also calls SetUpOnIOThread. | 167 // Also calls SetUpOnIOThread. |
| 151 SSLClientCertificateSelectorTest::SetUpOnMainThread(); | 168 SSLClientCertificateSelectorTest::SetUpOnMainThread(); |
| 152 | 169 |
| 153 AddTabAtIndex(1, GURL("about:blank"), ui::PAGE_TRANSITION_LINK); | 170 AddTabAtIndex(1, GURL("about:blank"), ui::PAGE_TRANSITION_LINK); |
| 154 AddTabAtIndex(2, GURL("about:blank"), ui::PAGE_TRANSITION_LINK); | 171 AddTabAtIndex(2, GURL("about:blank"), ui::PAGE_TRANSITION_LINK); |
| 155 ASSERT_TRUE(NULL != browser()->tab_strip_model()->GetWebContentsAt(0)); | 172 ASSERT_TRUE(NULL != browser()->tab_strip_model()->GetWebContentsAt(0)); |
| 156 ASSERT_TRUE(NULL != browser()->tab_strip_model()->GetWebContentsAt(1)); | 173 ASSERT_TRUE(NULL != browser()->tab_strip_model()->GetWebContentsAt(1)); |
| 157 ASSERT_TRUE(NULL != browser()->tab_strip_model()->GetWebContentsAt(2)); | 174 ASSERT_TRUE(NULL != browser()->tab_strip_model()->GetWebContentsAt(2)); |
| 158 content::WaitForLoadStop(browser()->tab_strip_model()->GetWebContentsAt(1)); | 175 content::WaitForLoadStop(browser()->tab_strip_model()->GetWebContentsAt(1)); |
| 159 content::WaitForLoadStop(browser()->tab_strip_model()->GetWebContentsAt(2)); | 176 content::WaitForLoadStop(browser()->tab_strip_model()->GetWebContentsAt(2)); |
| 160 | 177 |
| 161 selector_1_ = new SSLClientCertificateSelector( | 178 selector_1_ = new SSLClientCertificateSelector( |
| 162 browser()->tab_strip_model()->GetWebContentsAt(1), | 179 browser()->tab_strip_model()->GetWebContentsAt(1), |
| 163 auth_requestor_1_->cert_request_info_, | 180 auth_requestor_1_->cert_request_info_, |
| 164 base::Bind(&SSLClientAuthRequestorMock::CertificateSelected, | 181 base::Bind(&SSLClientAuthRequestorMock::CertificateSelected, |
| 165 auth_requestor_1_)); | 182 auth_requestor_1_)); |
| 166 selector_1_->Init(); | 183 selector_1_->Init(); |
| 184 selector_1_->Show(); |
| 167 selector_2_ = new SSLClientCertificateSelector( | 185 selector_2_ = new SSLClientCertificateSelector( |
| 168 browser()->tab_strip_model()->GetWebContentsAt(2), | 186 browser()->tab_strip_model()->GetWebContentsAt(2), |
| 169 auth_requestor_2_->cert_request_info_, | 187 auth_requestor_2_->cert_request_info_, |
| 170 base::Bind(&SSLClientAuthRequestorMock::CertificateSelected, | 188 base::Bind(&SSLClientAuthRequestorMock::CertificateSelected, |
| 171 auth_requestor_2_)); | 189 auth_requestor_2_)); |
| 172 selector_2_->Init(); | 190 selector_2_->Init(); |
| 191 selector_2_->Show(); |
| 173 | 192 |
| 174 EXPECT_EQ(2, browser()->tab_strip_model()->active_index()); | 193 EXPECT_EQ(2, browser()->tab_strip_model()->active_index()); |
| 175 EXPECT_EQ(mit_davidben_cert_.get(), selector_1_->GetSelectedCert()); | 194 EXPECT_EQ(client_cert_1_.get(), selector_1_->GetSelectedCert()); |
| 176 EXPECT_EQ(mit_davidben_cert_.get(), selector_2_->GetSelectedCert()); | 195 EXPECT_EQ(client_cert_1_.get(), selector_2_->GetSelectedCert()); |
| 177 } | 196 } |
| 178 | 197 |
| 179 void SetUpOnIOThread() override { | 198 void SetUpOnIOThread() override { |
| 180 url_request_1_ = | 199 url_request_1_ = |
| 181 MakeURLRequest(url_request_context_getter_.get()).release(); | 200 MakeURLRequest(url_request_context_getter_.get()).release(); |
| 182 url_request_2_ = | 201 url_request_2_ = |
| 183 MakeURLRequest(url_request_context_getter_.get()).release(); | 202 MakeURLRequest(url_request_context_getter_.get()).release(); |
| 184 | 203 |
| 185 auth_requestor_1_ = new StrictMock<SSLClientAuthRequestorMock>( | 204 auth_requestor_1_ = new StrictMock<SSLClientAuthRequestorMock>( |
| 186 url_request_1_, | 205 url_request_1_, |
| (...skipping 29 matching lines...) Expand all Loading... |
| 216 }; | 235 }; |
| 217 | 236 |
| 218 class SSLClientCertificateSelectorMultiProfileTest | 237 class SSLClientCertificateSelectorMultiProfileTest |
| 219 : public SSLClientCertificateSelectorTest { | 238 : public SSLClientCertificateSelectorTest { |
| 220 public: | 239 public: |
| 221 void SetUpInProcessBrowserTestFixture() override { | 240 void SetUpInProcessBrowserTestFixture() override { |
| 222 SSLClientCertificateSelectorTest::SetUpInProcessBrowserTestFixture(); | 241 SSLClientCertificateSelectorTest::SetUpInProcessBrowserTestFixture(); |
| 223 | 242 |
| 224 cert_request_info_1_ = new net::SSLCertRequestInfo; | 243 cert_request_info_1_ = new net::SSLCertRequestInfo; |
| 225 cert_request_info_1_->host_and_port = net::HostPortPair("foo", 123); | 244 cert_request_info_1_->host_and_port = net::HostPortPair("foo", 123); |
| 226 cert_request_info_1_->client_certs.push_back(mit_davidben_cert_); | 245 cert_request_info_1_->client_certs.push_back(client_cert_1_); |
| 227 cert_request_info_1_->client_certs.push_back(foaf_me_chromium_test_cert_); | 246 cert_request_info_1_->client_certs.push_back(client_cert_2_); |
| 228 } | 247 } |
| 229 | 248 |
| 230 void SetUpOnMainThread() override { | 249 void SetUpOnMainThread() override { |
| 231 browser_1_ = CreateIncognitoBrowser(); | 250 browser_1_ = CreateIncognitoBrowser(); |
| 232 url_request_context_getter_1_ = browser_1_->profile()->GetRequestContext(); | 251 url_request_context_getter_1_ = browser_1_->profile()->GetRequestContext(); |
| 233 | 252 |
| 234 // Also calls SetUpOnIOThread. | 253 // Also calls SetUpOnIOThread. |
| 235 SSLClientCertificateSelectorTest::SetUpOnMainThread(); | 254 SSLClientCertificateSelectorTest::SetUpOnMainThread(); |
| 236 | 255 |
| 237 selector_1_ = new SSLClientCertificateSelector( | 256 selector_1_ = new SSLClientCertificateSelector( |
| 238 browser_1_->tab_strip_model()->GetActiveWebContents(), | 257 browser_1_->tab_strip_model()->GetActiveWebContents(), |
| 239 auth_requestor_1_->cert_request_info_, | 258 auth_requestor_1_->cert_request_info_, |
| 240 base::Bind(&SSLClientAuthRequestorMock::CertificateSelected, | 259 base::Bind(&SSLClientAuthRequestorMock::CertificateSelected, |
| 241 auth_requestor_1_)); | 260 auth_requestor_1_)); |
| 242 selector_1_->Init(); | 261 selector_1_->Init(); |
| 262 selector_1_->Show(); |
| 243 | 263 |
| 244 EXPECT_EQ(mit_davidben_cert_.get(), selector_1_->GetSelectedCert()); | 264 EXPECT_EQ(client_cert_1_.get(), selector_1_->GetSelectedCert()); |
| 245 } | 265 } |
| 246 | 266 |
| 247 void SetUpOnIOThread() override { | 267 void SetUpOnIOThread() override { |
| 248 url_request_1_ = | 268 url_request_1_ = |
| 249 MakeURLRequest(url_request_context_getter_1_.get()).release(); | 269 MakeURLRequest(url_request_context_getter_1_.get()).release(); |
| 250 | 270 |
| 251 auth_requestor_1_ = new StrictMock<SSLClientAuthRequestorMock>( | 271 auth_requestor_1_ = new StrictMock<SSLClientAuthRequestorMock>( |
| 252 url_request_1_, | 272 url_request_1_, |
| 253 cert_request_info_1_); | 273 cert_request_info_1_); |
| 254 | 274 |
| (...skipping 26 matching lines...) Expand all Loading... |
| 281 #define MAYBE_SelectNone SelectNone | 301 #define MAYBE_SelectNone SelectNone |
| 282 #endif | 302 #endif |
| 283 | 303 |
| 284 | 304 |
| 285 IN_PROC_BROWSER_TEST_F(SSLClientCertificateSelectorTest, MAYBE_SelectNone) { | 305 IN_PROC_BROWSER_TEST_F(SSLClientCertificateSelectorTest, MAYBE_SelectNone) { |
| 286 EXPECT_CALL(*auth_requestor_.get(), CertificateSelected(NULL)); | 306 EXPECT_CALL(*auth_requestor_.get(), CertificateSelected(NULL)); |
| 287 | 307 |
| 288 // Let the mock get checked on destruction. | 308 // Let the mock get checked on destruction. |
| 289 } | 309 } |
| 290 | 310 |
| 291 // http://crbug.com/121007 | 311 IN_PROC_BROWSER_TEST_F(SSLClientCertificateSelectorTest, Escape) { |
| 292 IN_PROC_BROWSER_TEST_F(SSLClientCertificateSelectorTest, DISABLED_Escape) { | |
| 293 EXPECT_CALL(*auth_requestor_.get(), CertificateSelected(NULL)); | 312 EXPECT_CALL(*auth_requestor_.get(), CertificateSelected(NULL)); |
| 294 | 313 |
| 295 EXPECT_TRUE(ui_test_utils::SendKeyPressSync( | 314 EXPECT_TRUE(ui_test_utils::SendKeyPressSync( |
| 296 browser(), ui::VKEY_ESCAPE, false, false, false, false)); | 315 browser(), ui::VKEY_ESCAPE, false, false, false, false)); |
| 297 | 316 |
| 298 Mock::VerifyAndClear(auth_requestor_.get()); | 317 Mock::VerifyAndClear(auth_requestor_.get()); |
| 299 } | 318 } |
| 300 | 319 |
| 301 // Flaky, http://crbug.com/103534 . | 320 IN_PROC_BROWSER_TEST_F(SSLClientCertificateSelectorTest, SelectDefault) { |
| 302 IN_PROC_BROWSER_TEST_F(SSLClientCertificateSelectorTest, | |
| 303 DISABLED_SelectDefault) { | |
| 304 EXPECT_CALL(*auth_requestor_.get(), | 321 EXPECT_CALL(*auth_requestor_.get(), |
| 305 CertificateSelected(mit_davidben_cert_.get())); | 322 CertificateSelected(client_cert_1_.get())); |
| 306 | 323 |
| 307 EXPECT_TRUE(ui_test_utils::SendKeyPressSync( | 324 EXPECT_TRUE(ui_test_utils::SendKeyPressSync( |
| 308 browser(), ui::VKEY_RETURN, false, false, false, false)); | 325 browser(), ui::VKEY_RETURN, false, false, false, false)); |
| 309 | 326 |
| 310 Mock::VerifyAndClear(auth_requestor_.get()); | 327 Mock::VerifyAndClear(auth_requestor_.get()); |
| 311 } | 328 } |
| 312 | 329 |
| 313 // http://crbug.com/121007 | 330 IN_PROC_BROWSER_TEST_F(SSLClientCertificateSelectorMultiTabTest, Escape) { |
| 314 IN_PROC_BROWSER_TEST_F(SSLClientCertificateSelectorMultiTabTest, | |
| 315 DISABLED_Escape) { | |
| 316 // auth_requestor_1_ should get selected automatically by the | 331 // auth_requestor_1_ should get selected automatically by the |
| 317 // SSLClientAuthObserver when selector_2_ is accepted, since both 1 & 2 have | 332 // SSLClientAuthObserver when selector_2_ is accepted, since both 1 & 2 have |
| 318 // the same host:port. | 333 // the same host:port. |
| 319 EXPECT_CALL(*auth_requestor_1_.get(), CertificateSelected(NULL)); | 334 EXPECT_CALL(*auth_requestor_1_.get(), CertificateSelected(NULL)); |
| 320 EXPECT_CALL(*auth_requestor_2_.get(), CertificateSelected(NULL)); | 335 EXPECT_CALL(*auth_requestor_2_.get(), CertificateSelected(NULL)); |
| 321 | 336 |
| 322 EXPECT_TRUE(ui_test_utils::SendKeyPressSync( | 337 EXPECT_TRUE(ui_test_utils::SendKeyPressSync( |
| 323 browser(), ui::VKEY_ESCAPE, false, false, false, false)); | 338 browser(), ui::VKEY_ESCAPE, false, false, false, false)); |
| 324 | 339 |
| 325 Mock::VerifyAndClear(auth_requestor_.get()); | 340 Mock::VerifyAndClear(auth_requestor_.get()); |
| 326 Mock::VerifyAndClear(auth_requestor_1_.get()); | 341 Mock::VerifyAndClear(auth_requestor_1_.get()); |
| 327 Mock::VerifyAndClear(auth_requestor_2_.get()); | 342 Mock::VerifyAndClear(auth_requestor_2_.get()); |
| 328 | 343 |
| 329 // Now let the default selection for auth_requestor_ mock get checked on | 344 // Now let the default selection for auth_requestor_ mock get checked on |
| 330 // destruction. | 345 // destruction. |
| 331 EXPECT_CALL(*auth_requestor_.get(), CertificateSelected(NULL)); | 346 EXPECT_CALL(*auth_requestor_.get(), CertificateSelected(NULL)); |
| 332 } | 347 } |
| 333 | 348 |
| 334 // http://crbug.com/121007 | 349 IN_PROC_BROWSER_TEST_F(SSLClientCertificateSelectorMultiTabTest, SelectSecond) { |
| 335 IN_PROC_BROWSER_TEST_F(SSLClientCertificateSelectorMultiTabTest, | |
| 336 DISABLED_SelectSecond) { | |
| 337 // auth_requestor_1_ should get selected automatically by the | 350 // auth_requestor_1_ should get selected automatically by the |
| 338 // SSLClientAuthObserver when selector_2_ is accepted, since both 1 & 2 have | 351 // SSLClientAuthObserver when selector_2_ is accepted, since both 1 & 2 have |
| 339 // the same host:port. | 352 // the same host:port. |
| 340 EXPECT_CALL(*auth_requestor_1_.get(), | 353 EXPECT_CALL(*auth_requestor_1_.get(), |
| 341 CertificateSelected(foaf_me_chromium_test_cert_.get())); | 354 CertificateSelected(client_cert_2_.get())); |
| 342 EXPECT_CALL(*auth_requestor_2_.get(), | 355 EXPECT_CALL(*auth_requestor_2_.get(), |
| 343 CertificateSelected(foaf_me_chromium_test_cert_.get())); | 356 CertificateSelected(client_cert_2_.get())); |
| 344 | 357 |
| 345 EXPECT_TRUE(ui_test_utils::SendKeyPressSync( | 358 EXPECT_TRUE(ui_test_utils::SendKeyPressSync( |
| 346 browser(), ui::VKEY_DOWN, false, false, false, false)); | 359 browser(), ui::VKEY_DOWN, false, false, false, false)); |
| 347 | 360 |
| 348 EXPECT_EQ(mit_davidben_cert_.get(), selector_->GetSelectedCert()); | 361 EXPECT_EQ(client_cert_1_.get(), selector_->GetSelectedCert()); |
| 349 EXPECT_EQ(mit_davidben_cert_.get(), selector_1_->GetSelectedCert()); | 362 EXPECT_EQ(client_cert_1_.get(), selector_1_->GetSelectedCert()); |
| 350 EXPECT_EQ(foaf_me_chromium_test_cert_.get(), selector_2_->GetSelectedCert()); | 363 EXPECT_EQ(client_cert_2_.get(), selector_2_->GetSelectedCert()); |
| 351 | 364 |
| 352 EXPECT_TRUE(ui_test_utils::SendKeyPressSync( | 365 EXPECT_TRUE(ui_test_utils::SendKeyPressSync( |
| 353 browser(), ui::VKEY_RETURN, false, false, false, false)); | 366 browser(), ui::VKEY_RETURN, false, false, false, false)); |
| 354 | 367 |
| 355 Mock::VerifyAndClear(auth_requestor_.get()); | 368 Mock::VerifyAndClear(auth_requestor_.get()); |
| 356 Mock::VerifyAndClear(auth_requestor_1_.get()); | 369 Mock::VerifyAndClear(auth_requestor_1_.get()); |
| 357 Mock::VerifyAndClear(auth_requestor_2_.get()); | 370 Mock::VerifyAndClear(auth_requestor_2_.get()); |
| 358 | 371 |
| 359 // Now let the default selection for auth_requestor_ mock get checked on | 372 // Now let the default selection for auth_requestor_ mock get checked on |
| 360 // destruction. | 373 // destruction. |
| 361 EXPECT_CALL(*auth_requestor_.get(), CertificateSelected(NULL)); | 374 EXPECT_CALL(*auth_requestor_.get(), CertificateSelected(NULL)); |
| 362 } | 375 } |
| 363 | 376 |
| 364 // http://crbug.com/103529 | 377 IN_PROC_BROWSER_TEST_F(SSLClientCertificateSelectorMultiProfileTest, Escape) { |
| 365 IN_PROC_BROWSER_TEST_F(SSLClientCertificateSelectorMultiProfileTest, | |
| 366 DISABLED_Escape) { | |
| 367 EXPECT_CALL(*auth_requestor_1_.get(), CertificateSelected(NULL)); | 378 EXPECT_CALL(*auth_requestor_1_.get(), CertificateSelected(NULL)); |
| 368 | 379 |
| 369 EXPECT_TRUE(ui_test_utils::SendKeyPressSync( | 380 EXPECT_TRUE(ui_test_utils::SendKeyPressSync( |
| 370 browser_1_, ui::VKEY_ESCAPE, false, false, false, false)); | 381 browser_1_, ui::VKEY_ESCAPE, false, false, false, false)); |
| 371 | 382 |
| 372 Mock::VerifyAndClear(auth_requestor_.get()); | 383 Mock::VerifyAndClear(auth_requestor_.get()); |
| 373 Mock::VerifyAndClear(auth_requestor_1_.get()); | 384 Mock::VerifyAndClear(auth_requestor_1_.get()); |
| 374 | 385 |
| 375 // Now let the default selection for auth_requestor_ mock get checked on | 386 // Now let the default selection for auth_requestor_ mock get checked on |
| 376 // destruction. | 387 // destruction. |
| 377 EXPECT_CALL(*auth_requestor_.get(), CertificateSelected(NULL)); | 388 EXPECT_CALL(*auth_requestor_.get(), CertificateSelected(NULL)); |
| 378 } | 389 } |
| 379 | 390 |
| 380 // http://crbug.com/103534 | |
| 381 IN_PROC_BROWSER_TEST_F(SSLClientCertificateSelectorMultiProfileTest, | 391 IN_PROC_BROWSER_TEST_F(SSLClientCertificateSelectorMultiProfileTest, |
| 382 DISABLED_SelectDefault) { | 392 SelectDefault) { |
| 383 EXPECT_CALL(*auth_requestor_1_.get(), | 393 EXPECT_CALL(*auth_requestor_1_.get(), |
| 384 CertificateSelected(mit_davidben_cert_.get())); | 394 CertificateSelected(client_cert_1_.get())); |
| 385 | 395 |
| 386 EXPECT_TRUE(ui_test_utils::SendKeyPressSync( | 396 EXPECT_TRUE(ui_test_utils::SendKeyPressSync( |
| 387 browser_1_, ui::VKEY_RETURN, false, false, false, false)); | 397 browser_1_, ui::VKEY_RETURN, false, false, false, false)); |
| 388 | 398 |
| 389 Mock::VerifyAndClear(auth_requestor_.get()); | 399 Mock::VerifyAndClear(auth_requestor_.get()); |
| 390 Mock::VerifyAndClear(auth_requestor_1_.get()); | 400 Mock::VerifyAndClear(auth_requestor_1_.get()); |
| 391 | 401 |
| 392 // Now let the default selection for auth_requestor_ mock get checked on | 402 // Now let the default selection for auth_requestor_ mock get checked on |
| 393 // destruction. | 403 // destruction. |
| 394 EXPECT_CALL(*auth_requestor_.get(), CertificateSelected(NULL)); | 404 EXPECT_CALL(*auth_requestor_.get(), CertificateSelected(NULL)); |
| 395 } | 405 } |
| OLD | NEW |