Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(209)

Side by Side Diff: chrome/browser/ui/views/ssl_client_certificate_selector_browsertest.cc

Issue 859213006: Cancel client auth requests when not promptable. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@client-auth-cancel-1
Patch Set: worker_common.js was missing a license header (also a rebase) Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « chrome/browser/ui/views/ssl_client_certificate_selector.cc ('k') | chrome/chrome_tests.gypi » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/client_certificate_delegate.h"
16 #include "content/public/browser/web_contents.h" 17 #include "content/public/browser/web_contents.h"
17 #include "content/public/test/browser_test_utils.h" 18 #include "content/public/test/browser_test_utils.h"
18 #include "net/base/request_priority.h" 19 #include "net/base/request_priority.h"
19 #include "net/base/test_data_directory.h" 20 #include "net/base/test_data_directory.h"
20 #include "net/cert/x509_certificate.h" 21 #include "net/cert/x509_certificate.h"
21 #include "net/http/http_transaction_factory.h" 22 #include "net/http/http_transaction_factory.h"
22 #include "net/ssl/ssl_cert_request_info.h" 23 #include "net/ssl/ssl_cert_request_info.h"
23 #include "net/test/cert_test_util.h" 24 #include "net/test/cert_test_util.h"
24 #include "net/url_request/url_request.h" 25 #include "net/url_request/url_request.h"
25 #include "net/url_request/url_request_context.h" 26 #include "net/url_request/url_request_context.h"
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
79 BrowserThread::PostTask( 80 BrowserThread::PostTask(
80 BrowserThread::IO, FROM_HERE, 81 BrowserThread::IO, FROM_HERE,
81 base::Bind(&SSLClientCertificateSelectorTest::SetUpOnIOThread, this)); 82 base::Bind(&SSLClientCertificateSelectorTest::SetUpOnIOThread, this));
82 83
83 io_loop_finished_event_.Wait(); 84 io_loop_finished_event_.Wait();
84 85
85 content::WaitForLoadStop( 86 content::WaitForLoadStop(
86 browser()->tab_strip_model()->GetActiveWebContents()); 87 browser()->tab_strip_model()->GetActiveWebContents());
87 selector_ = new SSLClientCertificateSelector( 88 selector_ = new SSLClientCertificateSelector(
88 browser()->tab_strip_model()->GetActiveWebContents(), 89 browser()->tab_strip_model()->GetActiveWebContents(),
89 auth_requestor_->cert_request_info_, 90 auth_requestor_->cert_request_info_, auth_requestor_->CreateDelegate());
90 base::Bind(&SSLClientAuthRequestorMock::CertificateSelected,
91 auth_requestor_));
92 selector_->Init(); 91 selector_->Init();
93 selector_->Show(); 92 selector_->Show();
94 93
95 EXPECT_EQ(client_cert_1_.get(), selector_->GetSelectedCert()); 94 EXPECT_EQ(client_cert_1_.get(), selector_->GetSelectedCert());
96 } 95 }
97 96
98 virtual void SetUpOnIOThread() { 97 virtual void SetUpOnIOThread() {
99 url_request_ = MakeURLRequest(url_request_context_getter_.get()).release(); 98 url_request_ = MakeURLRequest(url_request_context_getter_.get()).release();
100 99
101 auth_requestor_ = new StrictMock<SSLClientAuthRequestorMock>( 100 auth_requestor_ = new StrictMock<SSLClientAuthRequestorMock>(
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
171 AddTabAtIndex(2, GURL("about:blank"), ui::PAGE_TRANSITION_LINK); 170 AddTabAtIndex(2, GURL("about:blank"), ui::PAGE_TRANSITION_LINK);
172 ASSERT_TRUE(NULL != browser()->tab_strip_model()->GetWebContentsAt(0)); 171 ASSERT_TRUE(NULL != browser()->tab_strip_model()->GetWebContentsAt(0));
173 ASSERT_TRUE(NULL != browser()->tab_strip_model()->GetWebContentsAt(1)); 172 ASSERT_TRUE(NULL != browser()->tab_strip_model()->GetWebContentsAt(1));
174 ASSERT_TRUE(NULL != browser()->tab_strip_model()->GetWebContentsAt(2)); 173 ASSERT_TRUE(NULL != browser()->tab_strip_model()->GetWebContentsAt(2));
175 content::WaitForLoadStop(browser()->tab_strip_model()->GetWebContentsAt(1)); 174 content::WaitForLoadStop(browser()->tab_strip_model()->GetWebContentsAt(1));
176 content::WaitForLoadStop(browser()->tab_strip_model()->GetWebContentsAt(2)); 175 content::WaitForLoadStop(browser()->tab_strip_model()->GetWebContentsAt(2));
177 176
178 selector_1_ = new SSLClientCertificateSelector( 177 selector_1_ = new SSLClientCertificateSelector(
179 browser()->tab_strip_model()->GetWebContentsAt(1), 178 browser()->tab_strip_model()->GetWebContentsAt(1),
180 auth_requestor_1_->cert_request_info_, 179 auth_requestor_1_->cert_request_info_,
181 base::Bind(&SSLClientAuthRequestorMock::CertificateSelected, 180 auth_requestor_1_->CreateDelegate());
182 auth_requestor_1_));
183 selector_1_->Init(); 181 selector_1_->Init();
184 selector_1_->Show(); 182 selector_1_->Show();
185 selector_2_ = new SSLClientCertificateSelector( 183 selector_2_ = new SSLClientCertificateSelector(
186 browser()->tab_strip_model()->GetWebContentsAt(2), 184 browser()->tab_strip_model()->GetWebContentsAt(2),
187 auth_requestor_2_->cert_request_info_, 185 auth_requestor_2_->cert_request_info_,
188 base::Bind(&SSLClientAuthRequestorMock::CertificateSelected, 186 auth_requestor_2_->CreateDelegate());
189 auth_requestor_2_));
190 selector_2_->Init(); 187 selector_2_->Init();
191 selector_2_->Show(); 188 selector_2_->Show();
192 189
193 EXPECT_EQ(2, browser()->tab_strip_model()->active_index()); 190 EXPECT_EQ(2, browser()->tab_strip_model()->active_index());
194 EXPECT_EQ(client_cert_1_.get(), selector_1_->GetSelectedCert()); 191 EXPECT_EQ(client_cert_1_.get(), selector_1_->GetSelectedCert());
195 EXPECT_EQ(client_cert_1_.get(), selector_2_->GetSelectedCert()); 192 EXPECT_EQ(client_cert_1_.get(), selector_2_->GetSelectedCert());
196 } 193 }
197 194
198 void SetUpOnIOThread() override { 195 void SetUpOnIOThread() override {
199 url_request_1_ = 196 url_request_1_ =
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
249 void SetUpOnMainThread() override { 246 void SetUpOnMainThread() override {
250 browser_1_ = CreateIncognitoBrowser(); 247 browser_1_ = CreateIncognitoBrowser();
251 url_request_context_getter_1_ = browser_1_->profile()->GetRequestContext(); 248 url_request_context_getter_1_ = browser_1_->profile()->GetRequestContext();
252 249
253 // Also calls SetUpOnIOThread. 250 // Also calls SetUpOnIOThread.
254 SSLClientCertificateSelectorTest::SetUpOnMainThread(); 251 SSLClientCertificateSelectorTest::SetUpOnMainThread();
255 252
256 selector_1_ = new SSLClientCertificateSelector( 253 selector_1_ = new SSLClientCertificateSelector(
257 browser_1_->tab_strip_model()->GetActiveWebContents(), 254 browser_1_->tab_strip_model()->GetActiveWebContents(),
258 auth_requestor_1_->cert_request_info_, 255 auth_requestor_1_->cert_request_info_,
259 base::Bind(&SSLClientAuthRequestorMock::CertificateSelected, 256 auth_requestor_1_->CreateDelegate());
260 auth_requestor_1_));
261 selector_1_->Init(); 257 selector_1_->Init();
262 selector_1_->Show(); 258 selector_1_->Show();
263 259
264 EXPECT_EQ(client_cert_1_.get(), selector_1_->GetSelectedCert()); 260 EXPECT_EQ(client_cert_1_.get(), selector_1_->GetSelectedCert());
265 } 261 }
266 262
267 void SetUpOnIOThread() override { 263 void SetUpOnIOThread() override {
268 url_request_1_ = 264 url_request_1_ =
269 MakeURLRequest(url_request_context_getter_1_.get()).release(); 265 MakeURLRequest(url_request_context_getter_1_.get()).release();
270 266
(...skipping 25 matching lines...) Expand all
296 292
297 #if defined(OS_LINUX) && !defined(OS_CHROMEOS) && defined(USE_AURA) 293 #if defined(OS_LINUX) && !defined(OS_CHROMEOS) && defined(USE_AURA)
298 // TODO(erg): linux_aura bringup: http://crbug.com/163931 294 // TODO(erg): linux_aura bringup: http://crbug.com/163931
299 #define MAYBE_SelectNone DISABLED_SelectNone 295 #define MAYBE_SelectNone DISABLED_SelectNone
300 #else 296 #else
301 #define MAYBE_SelectNone SelectNone 297 #define MAYBE_SelectNone SelectNone
302 #endif 298 #endif
303 299
304 300
305 IN_PROC_BROWSER_TEST_F(SSLClientCertificateSelectorTest, MAYBE_SelectNone) { 301 IN_PROC_BROWSER_TEST_F(SSLClientCertificateSelectorTest, MAYBE_SelectNone) {
306 EXPECT_CALL(*auth_requestor_.get(), CertificateSelected(NULL)); 302 EXPECT_CALL(*auth_requestor_.get(), CancelCertificateSelection());
307 303
308 // Let the mock get checked on destruction. 304 // Let the mock get checked on destruction.
309 } 305 }
310 306
311 IN_PROC_BROWSER_TEST_F(SSLClientCertificateSelectorTest, Escape) { 307 IN_PROC_BROWSER_TEST_F(SSLClientCertificateSelectorTest, Escape) {
312 EXPECT_CALL(*auth_requestor_.get(), CertificateSelected(NULL)); 308 EXPECT_CALL(*auth_requestor_.get(), CertificateSelected(NULL));
313 309
314 EXPECT_TRUE(ui_test_utils::SendKeyPressSync( 310 EXPECT_TRUE(ui_test_utils::SendKeyPressSync(
315 browser(), ui::VKEY_ESCAPE, false, false, false, false)); 311 browser(), ui::VKEY_ESCAPE, false, false, false, false));
316 312
(...skipping 19 matching lines...) Expand all
336 332
337 EXPECT_TRUE(ui_test_utils::SendKeyPressSync( 333 EXPECT_TRUE(ui_test_utils::SendKeyPressSync(
338 browser(), ui::VKEY_ESCAPE, false, false, false, false)); 334 browser(), ui::VKEY_ESCAPE, false, false, false, false));
339 335
340 Mock::VerifyAndClear(auth_requestor_.get()); 336 Mock::VerifyAndClear(auth_requestor_.get());
341 Mock::VerifyAndClear(auth_requestor_1_.get()); 337 Mock::VerifyAndClear(auth_requestor_1_.get());
342 Mock::VerifyAndClear(auth_requestor_2_.get()); 338 Mock::VerifyAndClear(auth_requestor_2_.get());
343 339
344 // Now let the default selection for auth_requestor_ mock get checked on 340 // Now let the default selection for auth_requestor_ mock get checked on
345 // destruction. 341 // destruction.
346 EXPECT_CALL(*auth_requestor_.get(), CertificateSelected(NULL)); 342 EXPECT_CALL(*auth_requestor_.get(), CancelCertificateSelection());
347 } 343 }
348 344
349 IN_PROC_BROWSER_TEST_F(SSLClientCertificateSelectorMultiTabTest, SelectSecond) { 345 IN_PROC_BROWSER_TEST_F(SSLClientCertificateSelectorMultiTabTest, SelectSecond) {
350 // auth_requestor_1_ should get selected automatically by the 346 // auth_requestor_1_ should get selected automatically by the
351 // SSLClientAuthObserver when selector_2_ is accepted, since both 1 & 2 have 347 // SSLClientAuthObserver when selector_2_ is accepted, since both 1 & 2 have
352 // the same host:port. 348 // the same host:port.
353 EXPECT_CALL(*auth_requestor_1_.get(), 349 EXPECT_CALL(*auth_requestor_1_.get(),
354 CertificateSelected(client_cert_2_.get())); 350 CertificateSelected(client_cert_2_.get()));
355 EXPECT_CALL(*auth_requestor_2_.get(), 351 EXPECT_CALL(*auth_requestor_2_.get(),
356 CertificateSelected(client_cert_2_.get())); 352 CertificateSelected(client_cert_2_.get()));
357 353
358 EXPECT_TRUE(ui_test_utils::SendKeyPressSync( 354 EXPECT_TRUE(ui_test_utils::SendKeyPressSync(
359 browser(), ui::VKEY_DOWN, false, false, false, false)); 355 browser(), ui::VKEY_DOWN, false, false, false, false));
360 356
361 EXPECT_EQ(client_cert_1_.get(), selector_->GetSelectedCert()); 357 EXPECT_EQ(client_cert_1_.get(), selector_->GetSelectedCert());
362 EXPECT_EQ(client_cert_1_.get(), selector_1_->GetSelectedCert()); 358 EXPECT_EQ(client_cert_1_.get(), selector_1_->GetSelectedCert());
363 EXPECT_EQ(client_cert_2_.get(), selector_2_->GetSelectedCert()); 359 EXPECT_EQ(client_cert_2_.get(), selector_2_->GetSelectedCert());
364 360
365 EXPECT_TRUE(ui_test_utils::SendKeyPressSync( 361 EXPECT_TRUE(ui_test_utils::SendKeyPressSync(
366 browser(), ui::VKEY_RETURN, false, false, false, false)); 362 browser(), ui::VKEY_RETURN, false, false, false, false));
367 363
368 Mock::VerifyAndClear(auth_requestor_.get()); 364 Mock::VerifyAndClear(auth_requestor_.get());
369 Mock::VerifyAndClear(auth_requestor_1_.get()); 365 Mock::VerifyAndClear(auth_requestor_1_.get());
370 Mock::VerifyAndClear(auth_requestor_2_.get()); 366 Mock::VerifyAndClear(auth_requestor_2_.get());
371 367
372 // Now let the default selection for auth_requestor_ mock get checked on 368 // Now let the default selection for auth_requestor_ mock get checked on
373 // destruction. 369 // destruction.
374 EXPECT_CALL(*auth_requestor_.get(), CertificateSelected(NULL)); 370 EXPECT_CALL(*auth_requestor_.get(), CancelCertificateSelection());
375 } 371 }
376 372
377 IN_PROC_BROWSER_TEST_F(SSLClientCertificateSelectorMultiProfileTest, Escape) { 373 IN_PROC_BROWSER_TEST_F(SSLClientCertificateSelectorMultiProfileTest, Escape) {
378 EXPECT_CALL(*auth_requestor_1_.get(), CertificateSelected(NULL)); 374 EXPECT_CALL(*auth_requestor_1_.get(), CertificateSelected(NULL));
379 375
380 EXPECT_TRUE(ui_test_utils::SendKeyPressSync( 376 EXPECT_TRUE(ui_test_utils::SendKeyPressSync(
381 browser_1_, ui::VKEY_ESCAPE, false, false, false, false)); 377 browser_1_, ui::VKEY_ESCAPE, false, false, false, false));
382 378
383 Mock::VerifyAndClear(auth_requestor_.get()); 379 Mock::VerifyAndClear(auth_requestor_.get());
384 Mock::VerifyAndClear(auth_requestor_1_.get()); 380 Mock::VerifyAndClear(auth_requestor_1_.get());
385 381
386 // Now let the default selection for auth_requestor_ mock get checked on 382 // Now let the default selection for auth_requestor_ mock get checked on
387 // destruction. 383 // destruction.
388 EXPECT_CALL(*auth_requestor_.get(), CertificateSelected(NULL)); 384 EXPECT_CALL(*auth_requestor_.get(), CancelCertificateSelection());
389 } 385 }
390 386
391 IN_PROC_BROWSER_TEST_F(SSLClientCertificateSelectorMultiProfileTest, 387 IN_PROC_BROWSER_TEST_F(SSLClientCertificateSelectorMultiProfileTest,
392 SelectDefault) { 388 SelectDefault) {
393 EXPECT_CALL(*auth_requestor_1_.get(), 389 EXPECT_CALL(*auth_requestor_1_.get(),
394 CertificateSelected(client_cert_1_.get())); 390 CertificateSelected(client_cert_1_.get()));
395 391
396 EXPECT_TRUE(ui_test_utils::SendKeyPressSync( 392 EXPECT_TRUE(ui_test_utils::SendKeyPressSync(
397 browser_1_, ui::VKEY_RETURN, false, false, false, false)); 393 browser_1_, ui::VKEY_RETURN, false, false, false, false));
398 394
399 Mock::VerifyAndClear(auth_requestor_.get()); 395 Mock::VerifyAndClear(auth_requestor_.get());
400 Mock::VerifyAndClear(auth_requestor_1_.get()); 396 Mock::VerifyAndClear(auth_requestor_1_.get());
401 397
402 // Now let the default selection for auth_requestor_ mock get checked on 398 // Now let the default selection for auth_requestor_ mock get checked on
403 // destruction. 399 // destruction.
404 EXPECT_CALL(*auth_requestor_.get(), CertificateSelected(NULL)); 400 EXPECT_CALL(*auth_requestor_.get(), CancelCertificateSelection());
405 } 401 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/views/ssl_client_certificate_selector.cc ('k') | chrome/chrome_tests.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698