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

Side by Side Diff: chrome/browser/ssl/ssl_browser_tests.cc

Issue 1378123003: Adding SSL ETS Tests (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@ets
Patch Set: Rebase. Created 5 years, 1 month 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
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/base_switches.h" 5 #include "base/base_switches.h"
6 #include "base/bind.h" 6 #include "base/bind.h"
7 #include "base/bind_helpers.h" 7 #include "base/bind_helpers.h"
8 #include "base/callback.h" 8 #include "base/callback.h"
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/location.h" 10 #include "base/location.h"
11 #include "base/metrics/field_trial.h" 11 #include "base/metrics/field_trial.h"
12 #include "base/prefs/pref_service.h" 12 #include "base/prefs/pref_service.h"
13 #include "base/single_thread_task_runner.h" 13 #include "base/single_thread_task_runner.h"
14 #include "base/strings/string_split.h"
14 #include "base/strings/string_util.h" 15 #include "base/strings/string_util.h"
15 #include "base/strings/stringprintf.h" 16 #include "base/strings/stringprintf.h"
16 #include "base/strings/utf_string_conversions.h" 17 #include "base/strings/utf_string_conversions.h"
17 #include "base/test/histogram_tester.h" 18 #include "base/test/histogram_tester.h"
18 #include "base/test/simple_test_clock.h" 19 #include "base/test/simple_test_clock.h"
19 #include "base/thread_task_runner_handle.h" 20 #include "base/thread_task_runner_handle.h"
20 #include "base/time/time.h" 21 #include "base/time/time.h"
21 #include "chrome/app/chrome_command_ids.h" 22 #include "chrome/app/chrome_command_ids.h"
22 #include "chrome/browser/browser_process.h" 23 #include "chrome/browser/browser_process.h"
23 #include "chrome/browser/chrome_notification_types.h" 24 #include "chrome/browser/chrome_notification_types.h"
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
69 #include "content/public/test/test_renderer_host.h" 70 #include "content/public/test/test_renderer_host.h"
70 #include "net/base/host_port_pair.h" 71 #include "net/base/host_port_pair.h"
71 #include "net/base/net_errors.h" 72 #include "net/base/net_errors.h"
72 #include "net/base/test_data_directory.h" 73 #include "net/base/test_data_directory.h"
73 #include "net/cert/cert_status_flags.h" 74 #include "net/cert/cert_status_flags.h"
74 #include "net/cert/mock_cert_verifier.h" 75 #include "net/cert/mock_cert_verifier.h"
75 #include "net/cert/x509_certificate.h" 76 #include "net/cert/x509_certificate.h"
76 #include "net/dns/mock_host_resolver.h" 77 #include "net/dns/mock_host_resolver.h"
77 #include "net/ssl/ssl_info.h" 78 #include "net/ssl/ssl_info.h"
78 #include "net/test/cert_test_util.h" 79 #include "net/test/cert_test_util.h"
79 #include "net/test/spawned_test_server/spawned_test_server.h" 80 #include "net/test/embedded_test_server/embedded_test_server.h"
81 #include "net/test/embedded_test_server/request_handler_util.h"
80 #include "net/test/test_certificate_data.h" 82 #include "net/test/test_certificate_data.h"
81 #include "net/url_request/url_request_context.h" 83 #include "net/url_request/url_request_context.h"
82 84
83 #if defined(USE_NSS_CERTS) 85 #if defined(USE_NSS_CERTS)
84 #include "chrome/browser/net/nss_context.h" 86 #include "chrome/browser/net/nss_context.h"
85 #include "net/base/crypto_module.h" 87 #include "net/base/crypto_module.h"
86 #include "net/cert/nss_cert_database.h" 88 #include "net/cert/nss_cert_database.h"
87 #endif // defined(USE_NSS_CERTS) 89 #endif // defined(USE_NSS_CERTS)
88 90
89 using base::ASCIIToUTF16; 91 using base::ASCIIToUTF16;
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after
261 two_without_cert_id.cert_id = 0; 263 two_without_cert_id.cert_id = 0;
262 EXPECT_TRUE(one_without_cert_id.Equals(two_without_cert_id)); 264 EXPECT_TRUE(one_without_cert_id.Equals(two_without_cert_id));
263 } 265 }
264 266
265 } // namespace 267 } // namespace
266 268
267 class SSLUITest 269 class SSLUITest
268 : public certificate_reporting_test_utils::CertificateReportingTest { 270 : public certificate_reporting_test_utils::CertificateReportingTest {
269 public: 271 public:
270 SSLUITest() 272 SSLUITest()
271 : https_server_(net::SpawnedTestServer::TYPE_HTTPS, 273 : https_server_(net::EmbeddedTestServer::TYPE_HTTPS),
272 SSLOptions(SSLOptions::CERT_OK), 274 https_server_expired_(net::EmbeddedTestServer::TYPE_HTTPS),
273 base::FilePath(kDocRoot)), 275 https_server_mismatched_(net::EmbeddedTestServer::TYPE_HTTPS),
274 https_server_expired_(net::SpawnedTestServer::TYPE_HTTPS,
275 SSLOptions(SSLOptions::CERT_EXPIRED),
276 base::FilePath(kDocRoot)),
277 https_server_mismatched_(net::SpawnedTestServer::TYPE_HTTPS,
278 SSLOptions(SSLOptions::CERT_MISMATCHED_NAME),
279 base::FilePath(kDocRoot)),
280 wss_server_expired_(net::SpawnedTestServer::TYPE_WSS, 276 wss_server_expired_(net::SpawnedTestServer::TYPE_WSS,
281 SSLOptions(SSLOptions::CERT_EXPIRED), 277 SSLOptions(SSLOptions::CERT_EXPIRED),
282 net::GetWebSocketTestDataDirectory()) {} 278 net::GetWebSocketTestDataDirectory()) {
279 https_server_.AddDefaultHandlers(base::FilePath(kDocRoot));
280
281 https_server_expired_.SetSSLConfig(net::EmbeddedTestServer::CERT_EXPIRED);
282 https_server_expired_.AddDefaultHandlers(base::FilePath(kDocRoot));
283
284 https_server_mismatched_.SetSSLConfig(
285 net::EmbeddedTestServer::CERT_MISMATCHED_NAME);
286 https_server_mismatched_.AddDefaultHandlers(base::FilePath(kDocRoot));
287 }
283 288
284 void SetUpCommandLine(base::CommandLine* command_line) override { 289 void SetUpCommandLine(base::CommandLine* command_line) override {
285 // Browser will both run and display insecure content. 290 // Browser will both run and display insecure content.
286 command_line->AppendSwitch(switches::kAllowRunningInsecureContent); 291 command_line->AppendSwitch(switches::kAllowRunningInsecureContent);
287 // Use process-per-site so that navigating to a same-site page in a 292 // Use process-per-site so that navigating to a same-site page in a
288 // new tab will use the same process. 293 // new tab will use the same process.
289 command_line->AppendSwitch(switches::kProcessPerSite); 294 command_line->AppendSwitch(switches::kProcessPerSite);
290 } 295 }
291 296
292 void CheckAuthenticatedState(WebContents* tab, 297 void CheckAuthenticatedState(WebContents* tab,
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
361 interstitial_page->Proceed(); 366 interstitial_page->Proceed();
362 observer.Wait(); 367 observer.Wait();
363 } 368 }
364 369
365 bool IsShowingWebContentsModalDialog() const { 370 bool IsShowingWebContentsModalDialog() const {
366 return WebContentsModalDialogManager::FromWebContents( 371 return WebContentsModalDialogManager::FromWebContents(
367 browser()->tab_strip_model()->GetActiveWebContents())-> 372 browser()->tab_strip_model()->GetActiveWebContents())->
368 IsDialogActive(); 373 IsDialogActive();
369 } 374 }
370 375
371 static bool GetFilePathWithHostAndPortReplacement( 376 static void GetFilePathWithHostAndPortReplacement(
372 const std::string& original_file_path, 377 const std::string& original_file_path,
373 const net::HostPortPair& host_port_pair, 378 const net::HostPortPair& host_port_pair,
374 std::string* replacement_path) { 379 std::string* replacement_path) {
375 std::vector<net::SpawnedTestServer::StringPair> replacement_text; 380 base::StringPairs replacement_text;
376 replacement_text.push_back( 381 replacement_text.push_back(
377 make_pair("REPLACE_WITH_HOST_AND_PORT", host_port_pair.ToString())); 382 make_pair("REPLACE_WITH_HOST_AND_PORT", host_port_pair.ToString()));
378 return net::SpawnedTestServer::GetFilePathWithReplacements( 383 net::test_server::GetFilePathWithReplacements(
379 original_file_path, replacement_text, replacement_path); 384 original_file_path, replacement_text, replacement_path);
380 } 385 }
381 386
382 static bool GetTopFramePath(const net::SpawnedTestServer& http_server, 387 static void GetTopFramePath(const net::EmbeddedTestServer& http_server,
383 const net::SpawnedTestServer& good_https_server, 388 const net::EmbeddedTestServer& good_https_server,
384 const net::SpawnedTestServer& bad_https_server, 389 const net::EmbeddedTestServer& bad_https_server,
385 std::string* top_frame_path) { 390 std::string* top_frame_path) {
386 // The "frame_left.html" page contained in the top_frame.html page contains 391 // The "frame_left.html" page contained in the top_frame.html page contains
387 // <a href>'s to three different servers. This sets up all of the 392 // <a href>'s to three different servers. This sets up all of the
388 // replacement text to work with test servers which listen on ephemeral 393 // replacement text to work with test servers which listen on ephemeral
389 // ports. 394 // ports.
390 GURL http_url = http_server.GetURL("files/ssl/google.html"); 395 GURL http_url = http_server.GetURL("/ssl/google.html");
391 GURL good_https_url = good_https_server.GetURL("files/ssl/google.html"); 396 GURL good_https_url = good_https_server.GetURL("/ssl/google.html");
392 GURL bad_https_url = bad_https_server.GetURL( 397 GURL bad_https_url = bad_https_server.GetURL("/ssl/bad_iframe.html");
393 "files/ssl/bad_iframe.html");
394 398
395 std::vector<net::SpawnedTestServer::StringPair> replacement_text_frame_left; 399 base::StringPairs replacement_text_frame_left;
396 replacement_text_frame_left.push_back( 400 replacement_text_frame_left.push_back(
397 make_pair("REPLACE_WITH_HTTP_PAGE", http_url.spec())); 401 make_pair("REPLACE_WITH_HTTP_PAGE", http_url.spec()));
398 replacement_text_frame_left.push_back( 402 replacement_text_frame_left.push_back(
399 make_pair("REPLACE_WITH_GOOD_HTTPS_PAGE", good_https_url.spec())); 403 make_pair("REPLACE_WITH_GOOD_HTTPS_PAGE", good_https_url.spec()));
400 replacement_text_frame_left.push_back( 404 replacement_text_frame_left.push_back(
401 make_pair("REPLACE_WITH_BAD_HTTPS_PAGE", bad_https_url.spec())); 405 make_pair("REPLACE_WITH_BAD_HTTPS_PAGE", bad_https_url.spec()));
402 std::string frame_left_path; 406 std::string frame_left_path;
403 if (!net::SpawnedTestServer::GetFilePathWithReplacements( 407 net::test_server::GetFilePathWithReplacements(
404 "frame_left.html", 408 "frame_left.html", replacement_text_frame_left, &frame_left_path);
405 replacement_text_frame_left,
406 &frame_left_path))
407 return false;
408 409
409 // Substitute the generated frame_left URL into the top_frame page. 410 // Substitute the generated frame_left URL into the top_frame page.
410 std::vector<net::SpawnedTestServer::StringPair> replacement_text_top_frame; 411 base::StringPairs replacement_text_top_frame;
411 replacement_text_top_frame.push_back( 412 replacement_text_top_frame.push_back(
412 make_pair("REPLACE_WITH_FRAME_LEFT_PATH", frame_left_path)); 413 make_pair("REPLACE_WITH_FRAME_LEFT_PATH", frame_left_path));
413 return net::SpawnedTestServer::GetFilePathWithReplacements( 414 net::test_server::GetFilePathWithReplacements(
414 "files/ssl/top_frame.html", 415 "/ssl/top_frame.html", replacement_text_top_frame, top_frame_path);
415 replacement_text_top_frame,
416 top_frame_path);
417 } 416 }
418 417
419 static bool GetPageWithUnsafeWorkerPath( 418 static void GetPageWithUnsafeWorkerPath(
420 const net::SpawnedTestServer& https_server, 419 const net::EmbeddedTestServer& https_server,
421 std::string* page_with_unsafe_worker_path) { 420 std::string* page_with_unsafe_worker_path) {
422 // Get the "imported.js" URL from the expired https server and 421 // Get the "imported.js" URL from the expired https server and
423 // substitute it into the unsafe_worker.js file. 422 // substitute it into the unsafe_worker.js file.
424 GURL imported_js_url = https_server.GetURL("files/ssl/imported.js"); 423 GURL imported_js_url = https_server.GetURL("/ssl/imported.js");
425 std::vector<net::SpawnedTestServer::StringPair> 424 base::StringPairs replacement_text_for_unsafe_worker;
426 replacement_text_for_unsafe_worker;
427 replacement_text_for_unsafe_worker.push_back( 425 replacement_text_for_unsafe_worker.push_back(
428 make_pair("REPLACE_WITH_IMPORTED_JS_URL", imported_js_url.spec())); 426 make_pair("REPLACE_WITH_IMPORTED_JS_URL", imported_js_url.spec()));
429 std::string unsafe_worker_path; 427 std::string unsafe_worker_path;
430 if (!net::SpawnedTestServer::GetFilePathWithReplacements( 428 net::test_server::GetFilePathWithReplacements(
431 "unsafe_worker.js", 429 "unsafe_worker.js", replacement_text_for_unsafe_worker,
432 replacement_text_for_unsafe_worker, 430 &unsafe_worker_path);
433 &unsafe_worker_path))
434 return false;
435 431
436 // Now, substitute this into the page with unsafe worker. 432 // Now, substitute this into the page with unsafe worker.
437 std::vector<net::SpawnedTestServer::StringPair> 433 base::StringPairs replacement_text_for_page_with_unsafe_worker;
438 replacement_text_for_page_with_unsafe_worker;
439 replacement_text_for_page_with_unsafe_worker.push_back( 434 replacement_text_for_page_with_unsafe_worker.push_back(
440 make_pair("REPLACE_WITH_UNSAFE_WORKER_PATH", unsafe_worker_path)); 435 make_pair("REPLACE_WITH_UNSAFE_WORKER_PATH", unsafe_worker_path));
441 return net::SpawnedTestServer::GetFilePathWithReplacements( 436 net::test_server::GetFilePathWithReplacements(
442 "files/ssl/page_with_unsafe_worker.html", 437 "/ssl/page_with_unsafe_worker.html",
443 replacement_text_for_page_with_unsafe_worker, 438 replacement_text_for_page_with_unsafe_worker,
444 page_with_unsafe_worker_path); 439 page_with_unsafe_worker_path);
445 } 440 }
446 441
447 // Helper function for testing invalid certificate chain reporting. 442 // Helper function for testing invalid certificate chain reporting.
448 void TestBrokenHTTPSReporting( 443 void TestBrokenHTTPSReporting(
449 certificate_reporting_test_utils::OptIn opt_in, 444 certificate_reporting_test_utils::OptIn opt_in,
450 ProceedDecision proceed, 445 ProceedDecision proceed,
451 certificate_reporting_test_utils::ExpectReport expect_report, 446 certificate_reporting_test_utils::ExpectReport expect_report,
452 Browser* browser) { 447 Browser* browser) {
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
543 // Check that the mock reporter received a request to send a report. 538 // Check that the mock reporter received a request to send a report.
544 run_loop.Run(); 539 run_loop.Run();
545 EXPECT_EQ(https_server_expired_.GetURL("/").host(), 540 EXPECT_EQ(https_server_expired_.GetURL("/").host(),
546 GetLatestHostnameReported()); 541 GetLatestHostnameReported());
547 } else { 542 } else {
548 base::RunLoop().RunUntilIdle(); 543 base::RunLoop().RunUntilIdle();
549 EXPECT_EQ(std::string(), GetLatestHostnameReported()); 544 EXPECT_EQ(std::string(), GetLatestHostnameReported());
550 } 545 }
551 } 546 }
552 547
553 net::SpawnedTestServer https_server_; 548 net::EmbeddedTestServer https_server_;
554 net::SpawnedTestServer https_server_expired_; 549 net::EmbeddedTestServer https_server_expired_;
555 net::SpawnedTestServer https_server_mismatched_; 550 net::EmbeddedTestServer https_server_mismatched_;
556 net::SpawnedTestServer wss_server_expired_; 551 net::SpawnedTestServer wss_server_expired_;
557 552
558 private: 553 private:
559 typedef net::SpawnedTestServer::SSLOptions SSLOptions; 554 typedef net::SpawnedTestServer::SSLOptions SSLOptions;
560 555
561 DISALLOW_COPY_AND_ASSIGN(SSLUITest); 556 DISALLOW_COPY_AND_ASSIGN(SSLUITest);
562 }; 557 };
563 558
564 class SSLUITestBlock : public SSLUITest { 559 class SSLUITestBlock : public SSLUITest {
565 public: 560 public:
(...skipping 25 matching lines...) Expand all
591 } 586 }
592 }; 587 };
593 588
594 class SSLUITestWithExtendedReporting : public SSLUITest { 589 class SSLUITestWithExtendedReporting : public SSLUITest {
595 public: 590 public:
596 SSLUITestWithExtendedReporting() : SSLUITest() {} 591 SSLUITestWithExtendedReporting() : SSLUITest() {}
597 }; 592 };
598 593
599 // Visits a regular page over http. 594 // Visits a regular page over http.
600 IN_PROC_BROWSER_TEST_F(SSLUITest, TestHTTP) { 595 IN_PROC_BROWSER_TEST_F(SSLUITest, TestHTTP) {
601 ASSERT_TRUE(test_server()->Start()); 596 ASSERT_TRUE(embedded_test_server()->Start());
602 597
603 ui_test_utils::NavigateToURL(browser(), 598 ui_test_utils::NavigateToURL(
604 test_server()->GetURL("files/ssl/google.html")); 599 browser(), embedded_test_server()->GetURL("/ssl/google.html"));
605 600
606 CheckUnauthenticatedState( 601 CheckUnauthenticatedState(
607 browser()->tab_strip_model()->GetActiveWebContents(), AuthState::NONE); 602 browser()->tab_strip_model()->GetActiveWebContents(), AuthState::NONE);
608 } 603 }
609 604
610 // Visits a page over http which includes broken https resources (status should 605 // Visits a page over http which includes broken https resources (status should
611 // be OK). 606 // be OK).
612 // TODO(jcampan): test that bad HTTPS content is blocked (otherwise we'll give 607 // TODO(jcampan): test that bad HTTPS content is blocked (otherwise we'll give
613 // the secure cookies away!). 608 // the secure cookies away!).
614 IN_PROC_BROWSER_TEST_F(SSLUITest, TestHTTPWithBrokenHTTPSResource) { 609 IN_PROC_BROWSER_TEST_F(SSLUITest, TestHTTPWithBrokenHTTPSResource) {
615 ASSERT_TRUE(test_server()->Start()); 610 ASSERT_TRUE(embedded_test_server()->Start());
616 ASSERT_TRUE(https_server_expired_.Start()); 611 ASSERT_TRUE(https_server_expired_.Start());
617 612
618 std::string replacement_path; 613 std::string replacement_path;
619 ASSERT_TRUE(GetFilePathWithHostAndPortReplacement( 614 GetFilePathWithHostAndPortReplacement("/ssl/page_with_unsafe_contents.html",
620 "files/ssl/page_with_unsafe_contents.html", 615 https_server_expired_.host_port_pair(),
621 https_server_expired_.host_port_pair(), 616 &replacement_path);
622 &replacement_path));
623 617
624 ui_test_utils::NavigateToURL( 618 ui_test_utils::NavigateToURL(
625 browser(), test_server()->GetURL(replacement_path)); 619 browser(), embedded_test_server()->GetURL(replacement_path));
626 620
627 CheckUnauthenticatedState( 621 CheckUnauthenticatedState(
628 browser()->tab_strip_model()->GetActiveWebContents(), AuthState::NONE); 622 browser()->tab_strip_model()->GetActiveWebContents(), AuthState::NONE);
629 } 623 }
630 624
631 IN_PROC_BROWSER_TEST_F(SSLUITest, TestBrokenHTTPSWithInsecureContent) { 625 IN_PROC_BROWSER_TEST_F(SSLUITest, TestBrokenHTTPSWithInsecureContent) {
632 ASSERT_TRUE(test_server()->Start()); 626 ASSERT_TRUE(embedded_test_server()->Start());
633 ASSERT_TRUE(https_server_expired_.Start()); 627 ASSERT_TRUE(https_server_expired_.Start());
634 628
635 std::string replacement_path; 629 std::string replacement_path;
636 ASSERT_TRUE(GetFilePathWithHostAndPortReplacement( 630 GetFilePathWithHostAndPortReplacement(
637 "files/ssl/page_displays_insecure_content.html", 631 "/ssl/page_displays_insecure_content.html",
638 test_server()->host_port_pair(), 632 embedded_test_server()->host_port_pair(), &replacement_path);
639 &replacement_path));
640 633
641 ui_test_utils::NavigateToURL(browser(), 634 ui_test_utils::NavigateToURL(browser(),
642 https_server_expired_.GetURL(replacement_path)); 635 https_server_expired_.GetURL(replacement_path));
643 636
644 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents(); 637 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents();
645 CheckAuthenticationBrokenState( 638 CheckAuthenticationBrokenState(
646 tab, net::CERT_STATUS_DATE_INVALID, AuthState::SHOWING_INTERSTITIAL); 639 tab, net::CERT_STATUS_DATE_INVALID, AuthState::SHOWING_INTERSTITIAL);
647 640
648 ProceedThroughInterstitial(tab); 641 ProceedThroughInterstitial(tab);
649 642
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
735 #define MAYBE_TestOKHTTPS DISABLED_TestOKHTTPS 728 #define MAYBE_TestOKHTTPS DISABLED_TestOKHTTPS
736 #else 729 #else
737 #define MAYBE_TestOKHTTPS TestOKHTTPS 730 #define MAYBE_TestOKHTTPS TestOKHTTPS
738 #endif 731 #endif
739 732
740 // Visits a page over OK https: 733 // Visits a page over OK https:
741 IN_PROC_BROWSER_TEST_F(SSLUITest, MAYBE_TestOKHTTPS) { 734 IN_PROC_BROWSER_TEST_F(SSLUITest, MAYBE_TestOKHTTPS) {
742 ASSERT_TRUE(https_server_.Start()); 735 ASSERT_TRUE(https_server_.Start());
743 736
744 ui_test_utils::NavigateToURL(browser(), 737 ui_test_utils::NavigateToURL(browser(),
745 https_server_.GetURL("files/ssl/google.html")); 738 https_server_.GetURL("/ssl/google.html"));
746 739
747 CheckAuthenticatedState(browser()->tab_strip_model()->GetActiveWebContents(), 740 CheckAuthenticatedState(browser()->tab_strip_model()->GetActiveWebContents(),
748 AuthState::NONE); 741 AuthState::NONE);
749 } 742 }
750 743
751 // Visits a page with https error and proceed: 744 // Visits a page with https error and proceed:
752 #if defined(OS_LINUX) 745 #if defined(OS_LINUX)
753 // flaky http://crbug.com/396462 746 // flaky http://crbug.com/396462
754 #define MAYBE_TestHTTPSExpiredCertAndProceed \ 747 #define MAYBE_TestHTTPSExpiredCertAndProceed \
755 DISABLED_TestHTTPSExpiredCertAndProceed 748 DISABLED_TestHTTPSExpiredCertAndProceed
756 #else 749 #else
757 #define MAYBE_TestHTTPSExpiredCertAndProceed TestHTTPSExpiredCertAndProceed 750 #define MAYBE_TestHTTPSExpiredCertAndProceed TestHTTPSExpiredCertAndProceed
758 #endif 751 #endif
759 IN_PROC_BROWSER_TEST_F(SSLUITest, MAYBE_TestHTTPSExpiredCertAndProceed) { 752 IN_PROC_BROWSER_TEST_F(SSLUITest, MAYBE_TestHTTPSExpiredCertAndProceed) {
760 ASSERT_TRUE(https_server_expired_.Start()); 753 ASSERT_TRUE(https_server_expired_.Start());
761 754
762 ui_test_utils::NavigateToURL(browser(), 755 ui_test_utils::NavigateToURL(
763 https_server_expired_.GetURL("files/ssl/google.html")); 756 browser(), https_server_expired_.GetURL("/ssl/google.html"));
764 757
765 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents(); 758 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents();
766 CheckAuthenticationBrokenState( 759 CheckAuthenticationBrokenState(
767 tab, net::CERT_STATUS_DATE_INVALID, AuthState::SHOWING_INTERSTITIAL); 760 tab, net::CERT_STATUS_DATE_INVALID, AuthState::SHOWING_INTERSTITIAL);
768 761
769 ProceedThroughInterstitial(tab); 762 ProceedThroughInterstitial(tab);
770 763
771 CheckAuthenticationBrokenState( 764 CheckAuthenticationBrokenState(
772 tab, net::CERT_STATUS_DATE_INVALID, AuthState::NONE); 765 tab, net::CERT_STATUS_DATE_INVALID, AuthState::NONE);
773 } 766 }
774 767
775 #ifndef NEDBUG 768 #ifndef NEDBUG
776 // Flaky on Windows debug (http://crbug.com/280537). 769 // Flaky on Windows debug (http://crbug.com/280537).
777 #define MAYBE_TestHTTPSExpiredCertAndDontProceed \ 770 #define MAYBE_TestHTTPSExpiredCertAndDontProceed \
778 DISABLED_TestHTTPSExpiredCertAndDontProceed 771 DISABLED_TestHTTPSExpiredCertAndDontProceed
779 #else 772 #else
780 #define MAYBE_TestHTTPSExpiredCertAndDontProceed \ 773 #define MAYBE_TestHTTPSExpiredCertAndDontProceed \
781 TestHTTPSExpiredCertAndDontProceed 774 TestHTTPSExpiredCertAndDontProceed
782 #endif 775 #endif
783 776
784 // Visits a page with https error and don't proceed (and ensure we can still 777 // Visits a page with https error and don't proceed (and ensure we can still
785 // navigate at that point): 778 // navigate at that point):
786 IN_PROC_BROWSER_TEST_F(SSLUITest, MAYBE_TestHTTPSExpiredCertAndDontProceed) { 779 IN_PROC_BROWSER_TEST_F(SSLUITest, MAYBE_TestHTTPSExpiredCertAndDontProceed) {
787 ASSERT_TRUE(test_server()->Start()); 780 ASSERT_TRUE(embedded_test_server()->Start());
788 ASSERT_TRUE(https_server_.Start()); 781 ASSERT_TRUE(https_server_.Start());
789 ASSERT_TRUE(https_server_expired_.Start()); 782 ASSERT_TRUE(https_server_expired_.Start());
790 783
791 // First navigate to an OK page. 784 // First navigate to an OK page.
792 ui_test_utils::NavigateToURL(browser(), 785 ui_test_utils::NavigateToURL(browser(),
793 https_server_.GetURL("files/ssl/google.html")); 786 https_server_.GetURL("/ssl/google.html"));
794 787
795 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents(); 788 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents();
796 NavigationEntry* entry = tab->GetController().GetActiveEntry(); 789 NavigationEntry* entry = tab->GetController().GetActiveEntry();
797 ASSERT_TRUE(entry); 790 ASSERT_TRUE(entry);
798 791
799 GURL cross_site_url = 792 GURL cross_site_url = https_server_expired_.GetURL("/ssl/google.html");
800 https_server_expired_.GetURL("files/ssl/google.html");
801 // Change the host name from 127.0.0.1 to localhost so it triggers a 793 // Change the host name from 127.0.0.1 to localhost so it triggers a
802 // cross-site navigation so we can test http://crbug.com/5800 is gone. 794 // cross-site navigation so we can test http://crbug.com/5800 is gone.
803 ASSERT_EQ("127.0.0.1", cross_site_url.host()); 795 ASSERT_EQ("127.0.0.1", cross_site_url.host());
804 GURL::Replacements replacements; 796 GURL::Replacements replacements;
805 replacements.SetHostStr("localhost"); 797 replacements.SetHostStr("localhost");
806 cross_site_url = cross_site_url.ReplaceComponents(replacements); 798 cross_site_url = cross_site_url.ReplaceComponents(replacements);
807 799
808 // Now go to a bad HTTPS page. 800 // Now go to a bad HTTPS page.
809 ui_test_utils::NavigateToURL(browser(), cross_site_url); 801 ui_test_utils::NavigateToURL(browser(), cross_site_url);
810 802
811 // An interstitial should be showing. 803 // An interstitial should be showing.
812 CheckAuthenticationBrokenState(tab, 804 CheckAuthenticationBrokenState(tab,
813 net::CERT_STATUS_COMMON_NAME_INVALID, 805 net::CERT_STATUS_COMMON_NAME_INVALID,
814 AuthState::SHOWING_INTERSTITIAL); 806 AuthState::SHOWING_INTERSTITIAL);
815 807
816 // Simulate user clicking "Take me back". 808 // Simulate user clicking "Take me back".
817 InterstitialPage* interstitial_page = tab->GetInterstitialPage(); 809 InterstitialPage* interstitial_page = tab->GetInterstitialPage();
818 ASSERT_TRUE(interstitial_page); 810 ASSERT_TRUE(interstitial_page);
819 ASSERT_EQ(SSLBlockingPage::kTypeForTesting, 811 ASSERT_EQ(SSLBlockingPage::kTypeForTesting,
820 interstitial_page->GetDelegateForTesting()->GetTypeForTesting()); 812 interstitial_page->GetDelegateForTesting()->GetTypeForTesting());
821 interstitial_page->DontProceed(); 813 interstitial_page->DontProceed();
822 814
823 // We should be back to the original good page. 815 // We should be back to the original good page.
824 CheckAuthenticatedState(tab, AuthState::NONE); 816 CheckAuthenticatedState(tab, AuthState::NONE);
825 817
826 // Try to navigate to a new page. (to make sure bug 5800 is fixed). 818 // Try to navigate to a new page. (to make sure bug 5800 is fixed).
827 ui_test_utils::NavigateToURL(browser(), 819 ui_test_utils::NavigateToURL(
828 test_server()->GetURL("files/ssl/google.html")); 820 browser(), embedded_test_server()->GetURL("/ssl/google.html"));
829 CheckUnauthenticatedState(tab, AuthState::NONE); 821 CheckUnauthenticatedState(tab, AuthState::NONE);
830 } 822 }
831 823
832 // Test that localhost pages don't show an interstitial. 824 // Test that localhost pages don't show an interstitial.
833 IN_PROC_BROWSER_TEST_F(SSLUITestIgnoreLocalhostCertErrors, 825 IN_PROC_BROWSER_TEST_F(SSLUITestIgnoreLocalhostCertErrors,
834 TestNoInterstitialOnLocalhost) { 826 TestNoInterstitialOnLocalhost) {
835 ASSERT_TRUE(https_server_.Start()); 827 ASSERT_TRUE(https_server_.Start());
836 828
837 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents(); 829 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents();
838 830
839 // Navigate to a localhost page. 831 // Navigate to a localhost page.
840 GURL url = https_server_.GetURL("files/ssl/page_with_subresource.html"); 832 GURL url = https_server_.GetURL("/ssl/page_with_subresource.html");
841 GURL::Replacements replacements; 833 GURL::Replacements replacements;
842 std::string new_host("localhost"); 834 std::string new_host("localhost");
843 replacements.SetHostStr(new_host); 835 replacements.SetHostStr(new_host);
844 url = url.ReplaceComponents(replacements); 836 url = url.ReplaceComponents(replacements);
845 837
846 ui_test_utils::NavigateToURL(browser(), url); 838 ui_test_utils::NavigateToURL(browser(), url);
847 839
848 // We should see no interstitial, but we should have an error 840 // We should see no interstitial, but we should have an error
849 // (red-crossed-out-https) in the URL bar. 841 // (red-crossed-out-https) in the URL bar.
850 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_COMMON_NAME_INVALID, 842 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_COMMON_NAME_INVALID,
(...skipping 23 matching lines...) Expand all
874 content::WaitForInterstitialAttach(clock_tab); 866 content::WaitForInterstitialAttach(clock_tab);
875 InterstitialPage* clock_interstitial = clock_tab->GetInterstitialPage(); 867 InterstitialPage* clock_interstitial = clock_tab->GetInterstitialPage();
876 ASSERT_TRUE(clock_interstitial); 868 ASSERT_TRUE(clock_interstitial);
877 EXPECT_EQ(BadClockBlockingPage::kTypeForTesting, 869 EXPECT_EQ(BadClockBlockingPage::kTypeForTesting,
878 clock_interstitial->GetDelegateForTesting()->GetTypeForTesting()); 870 clock_interstitial->GetDelegateForTesting()->GetTypeForTesting());
879 } 871 }
880 872
881 // Visits a page with https error and then goes back using Browser::GoBack. 873 // Visits a page with https error and then goes back using Browser::GoBack.
882 IN_PROC_BROWSER_TEST_F(SSLUITest, 874 IN_PROC_BROWSER_TEST_F(SSLUITest,
883 TestHTTPSExpiredCertAndGoBackViaButton) { 875 TestHTTPSExpiredCertAndGoBackViaButton) {
884 ASSERT_TRUE(test_server()->Start()); 876 ASSERT_TRUE(embedded_test_server()->Start());
885 ASSERT_TRUE(https_server_expired_.Start()); 877 ASSERT_TRUE(https_server_expired_.Start());
886 878
887 // First navigate to an HTTP page. 879 // First navigate to an HTTP page.
888 ui_test_utils::NavigateToURL(browser(), 880 ui_test_utils::NavigateToURL(
889 test_server()->GetURL("files/ssl/google.html")); 881 browser(), embedded_test_server()->GetURL("/ssl/google.html"));
890 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents(); 882 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents();
891 NavigationEntry* entry = tab->GetController().GetActiveEntry(); 883 NavigationEntry* entry = tab->GetController().GetActiveEntry();
892 ASSERT_TRUE(entry); 884 ASSERT_TRUE(entry);
893 885
894 // Now go to a bad HTTPS page that shows an interstitial. 886 // Now go to a bad HTTPS page that shows an interstitial.
895 ui_test_utils::NavigateToURL(browser(), 887 ui_test_utils::NavigateToURL(
896 https_server_expired_.GetURL("files/ssl/google.html")); 888 browser(), https_server_expired_.GetURL("/ssl/google.html"));
897 CheckAuthenticationBrokenState( 889 CheckAuthenticationBrokenState(
898 tab, net::CERT_STATUS_DATE_INVALID, AuthState::SHOWING_INTERSTITIAL); 890 tab, net::CERT_STATUS_DATE_INVALID, AuthState::SHOWING_INTERSTITIAL);
899 891
900 ProvisionalLoadWaiter load_failed_observer(tab); 892 ProvisionalLoadWaiter load_failed_observer(tab);
901 893
902 // Simulate user clicking on back button (crbug.com/39248). 894 // Simulate user clicking on back button (crbug.com/39248).
903 chrome::GoBack(browser(), CURRENT_TAB); 895 chrome::GoBack(browser(), CURRENT_TAB);
904 896
905 // Wait until we hear the load failure, and make sure we haven't swapped out 897 // Wait until we hear the load failure, and make sure we haven't swapped out
906 // the previous page. Prevents regression of http://crbug.com/82667. 898 // the previous page. Prevents regression of http://crbug.com/82667.
907 // TODO(creis/nick): Move the swapped-out part of this test into content 899 // TODO(creis/nick): Move the swapped-out part of this test into content
908 // and remove IsRenderViewHostSwappedOut from the public API. 900 // and remove IsRenderViewHostSwappedOut from the public API.
909 load_failed_observer.Wait(); 901 load_failed_observer.Wait();
910 EXPECT_FALSE(content::RenderFrameHostTester::IsRenderFrameHostSwappedOut( 902 EXPECT_FALSE(content::RenderFrameHostTester::IsRenderFrameHostSwappedOut(
911 tab->GetMainFrame())); 903 tab->GetMainFrame()));
912 904
913 // We should be back at the original good page. 905 // We should be back at the original good page.
914 EXPECT_FALSE(browser()->tab_strip_model()->GetActiveWebContents()-> 906 EXPECT_FALSE(browser()->tab_strip_model()->GetActiveWebContents()->
915 GetInterstitialPage()); 907 GetInterstitialPage());
916 CheckUnauthenticatedState(tab, AuthState::NONE); 908 CheckUnauthenticatedState(tab, AuthState::NONE);
917 } 909 }
918 910
919 // Visits a page with https error and then goes back using GoToOffset. 911 // Visits a page with https error and then goes back using GoToOffset.
920 // Disabled because its flaky: http://crbug.com/40932, http://crbug.com/43575. 912 // Disabled because its flaky: http://crbug.com/40932, http://crbug.com/43575.
921 IN_PROC_BROWSER_TEST_F(SSLUITest, 913 IN_PROC_BROWSER_TEST_F(SSLUITest,
922 TestHTTPSExpiredCertAndGoBackViaMenu) { 914 TestHTTPSExpiredCertAndGoBackViaMenu) {
923 ASSERT_TRUE(test_server()->Start()); 915 ASSERT_TRUE(embedded_test_server()->Start());
924 ASSERT_TRUE(https_server_expired_.Start()); 916 ASSERT_TRUE(https_server_expired_.Start());
925 917
926 // First navigate to an HTTP page. 918 // First navigate to an HTTP page.
927 ui_test_utils::NavigateToURL(browser(), 919 ui_test_utils::NavigateToURL(
928 test_server()->GetURL("files/ssl/google.html")); 920 browser(), embedded_test_server()->GetURL("/ssl/google.html"));
929 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents(); 921 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents();
930 NavigationEntry* entry = tab->GetController().GetActiveEntry(); 922 NavigationEntry* entry = tab->GetController().GetActiveEntry();
931 ASSERT_TRUE(entry); 923 ASSERT_TRUE(entry);
932 924
933 // Now go to a bad HTTPS page that shows an interstitial. 925 // Now go to a bad HTTPS page that shows an interstitial.
934 ui_test_utils::NavigateToURL(browser(), 926 ui_test_utils::NavigateToURL(
935 https_server_expired_.GetURL("files/ssl/google.html")); 927 browser(), https_server_expired_.GetURL("/ssl/google.html"));
936 CheckAuthenticationBrokenState( 928 CheckAuthenticationBrokenState(
937 tab, net::CERT_STATUS_DATE_INVALID, AuthState::SHOWING_INTERSTITIAL); 929 tab, net::CERT_STATUS_DATE_INVALID, AuthState::SHOWING_INTERSTITIAL);
938 930
939 // Simulate user clicking and holding on back button (crbug.com/37215). 931 // Simulate user clicking and holding on back button (crbug.com/37215).
940 tab->GetController().GoToOffset(-1); 932 tab->GetController().GoToOffset(-1);
941 933
942 // We should be back at the original good page. 934 // We should be back at the original good page.
943 EXPECT_FALSE(browser()->tab_strip_model()->GetActiveWebContents()-> 935 EXPECT_FALSE(browser()->tab_strip_model()->GetActiveWebContents()->
944 GetInterstitialPage()); 936 GetInterstitialPage());
945 CheckUnauthenticatedState(tab, AuthState::NONE); 937 CheckUnauthenticatedState(tab, AuthState::NONE);
946 } 938 }
947 939
948 // Visits a page with https error and then goes forward using GoToOffset. 940 // Visits a page with https error and then goes forward using GoToOffset.
949 IN_PROC_BROWSER_TEST_F(SSLUITest, TestHTTPSExpiredCertAndGoForward) { 941 IN_PROC_BROWSER_TEST_F(SSLUITest, TestHTTPSExpiredCertAndGoForward) {
950 ASSERT_TRUE(test_server()->Start()); 942 ASSERT_TRUE(embedded_test_server()->Start());
951 ASSERT_TRUE(https_server_expired_.Start()); 943 ASSERT_TRUE(https_server_expired_.Start());
952 944
953 // First navigate to two HTTP pages. 945 // First navigate to two HTTP pages.
954 ui_test_utils::NavigateToURL(browser(), 946 ui_test_utils::NavigateToURL(
955 test_server()->GetURL("files/ssl/google.html")); 947 browser(), embedded_test_server()->GetURL("/ssl/google.html"));
956 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents(); 948 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents();
957 NavigationEntry* entry1 = tab->GetController().GetActiveEntry(); 949 NavigationEntry* entry1 = tab->GetController().GetActiveEntry();
958 ASSERT_TRUE(entry1); 950 ASSERT_TRUE(entry1);
959 ui_test_utils::NavigateToURL(browser(), 951 ui_test_utils::NavigateToURL(
960 test_server()->GetURL("files/ssl/blank_page.html")); 952 browser(), embedded_test_server()->GetURL("/ssl/blank_page.html"));
961 NavigationEntry* entry2 = tab->GetController().GetActiveEntry(); 953 NavigationEntry* entry2 = tab->GetController().GetActiveEntry();
962 ASSERT_TRUE(entry2); 954 ASSERT_TRUE(entry2);
963 955
964 // Now go back so that a page is in the forward history. 956 // Now go back so that a page is in the forward history.
965 { 957 {
966 content::WindowedNotificationObserver observer( 958 content::WindowedNotificationObserver observer(
967 content::NOTIFICATION_LOAD_STOP, 959 content::NOTIFICATION_LOAD_STOP,
968 content::Source<NavigationController>(&tab->GetController())); 960 content::Source<NavigationController>(&tab->GetController()));
969 tab->GetController().GoBack(); 961 tab->GetController().GoBack();
970 observer.Wait(); 962 observer.Wait();
971 } 963 }
972 ASSERT_TRUE(tab->GetController().CanGoForward()); 964 ASSERT_TRUE(tab->GetController().CanGoForward());
973 NavigationEntry* entry3 = tab->GetController().GetActiveEntry(); 965 NavigationEntry* entry3 = tab->GetController().GetActiveEntry();
974 ASSERT_TRUE(entry1 == entry3); 966 ASSERT_TRUE(entry1 == entry3);
975 967
976 // Now go to a bad HTTPS page that shows an interstitial. 968 // Now go to a bad HTTPS page that shows an interstitial.
977 ui_test_utils::NavigateToURL(browser(), 969 ui_test_utils::NavigateToURL(
978 https_server_expired_.GetURL("files/ssl/google.html")); 970 browser(), https_server_expired_.GetURL("/ssl/google.html"));
979 CheckAuthenticationBrokenState( 971 CheckAuthenticationBrokenState(
980 tab, net::CERT_STATUS_DATE_INVALID, AuthState::SHOWING_INTERSTITIAL); 972 tab, net::CERT_STATUS_DATE_INVALID, AuthState::SHOWING_INTERSTITIAL);
981 973
982 // Simulate user clicking and holding on forward button. 974 // Simulate user clicking and holding on forward button.
983 { 975 {
984 content::WindowedNotificationObserver observer( 976 content::WindowedNotificationObserver observer(
985 content::NOTIFICATION_LOAD_STOP, 977 content::NOTIFICATION_LOAD_STOP,
986 content::Source<NavigationController>(&tab->GetController())); 978 content::Source<NavigationController>(&tab->GetController()));
987 tab->GetController().GoToOffset(1); 979 tab->GetController().GoToOffset(1);
988 observer.Wait(); 980 observer.Wait();
(...skipping 11 matching lines...) Expand all
1000 // Visit a HTTP page which request WSS connection to a server providing invalid 992 // Visit a HTTP page which request WSS connection to a server providing invalid
1001 // certificate. Close the page while WSS connection waits for SSLManager's 993 // certificate. Close the page while WSS connection waits for SSLManager's
1002 // response from UI thread. 994 // response from UI thread.
1003 // Disabled on Windows because it was flaking on XP Tests (1). crbug.com/165258 995 // Disabled on Windows because it was flaking on XP Tests (1). crbug.com/165258
1004 #if defined(OS_WIN) 996 #if defined(OS_WIN)
1005 #define MAYBE_TestWSSInvalidCertAndClose DISABLED_TestWSSInvalidCertAndClose 997 #define MAYBE_TestWSSInvalidCertAndClose DISABLED_TestWSSInvalidCertAndClose
1006 #else 998 #else
1007 #define MAYBE_TestWSSInvalidCertAndClose TestWSSInvalidCertAndClose 999 #define MAYBE_TestWSSInvalidCertAndClose TestWSSInvalidCertAndClose
1008 #endif 1000 #endif
1009 IN_PROC_BROWSER_TEST_F(SSLUITest, MAYBE_TestWSSInvalidCertAndClose) { 1001 IN_PROC_BROWSER_TEST_F(SSLUITest, MAYBE_TestWSSInvalidCertAndClose) {
1010 ASSERT_TRUE(test_server()->Start()); 1002 ASSERT_TRUE(embedded_test_server()->Start());
1011 ASSERT_TRUE(wss_server_expired_.Start()); 1003 ASSERT_TRUE(wss_server_expired_.Start());
1012 1004
1013 // Setup page title observer. 1005 // Setup page title observer.
1014 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents(); 1006 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents();
1015 content::TitleWatcher watcher(tab, ASCIIToUTF16("PASS")); 1007 content::TitleWatcher watcher(tab, ASCIIToUTF16("PASS"));
1016 watcher.AlsoWaitForTitle(ASCIIToUTF16("FAIL")); 1008 watcher.AlsoWaitForTitle(ASCIIToUTF16("FAIL"));
1017 1009
1018 // Create GURLs to test pages. 1010 // Create GURLs to test pages.
1019 std::string master_url_path = base::StringPrintf("%s?%d", 1011 std::string master_url_path = base::StringPrintf(
1020 test_server()->GetURL("files/ssl/wss_close.html").spec().c_str(), 1012 "%s?%d",
1013 embedded_test_server()->GetURL("/ssl/wss_close.html").spec().c_str(),
1021 wss_server_expired_.host_port_pair().port()); 1014 wss_server_expired_.host_port_pair().port());
1022 GURL master_url(master_url_path); 1015 GURL master_url(master_url_path);
1023 std::string slave_url_path = base::StringPrintf("%s?%d", 1016 std::string slave_url_path =
1024 test_server()->GetURL("files/ssl/wss_close_slave.html").spec().c_str(), 1017 base::StringPrintf("%s?%d", embedded_test_server()
1025 wss_server_expired_.host_port_pair().port()); 1018 ->GetURL("/ssl/wss_close_slave.html")
1019 .spec()
1020 .c_str(),
1021 wss_server_expired_.host_port_pair().port());
1026 GURL slave_url(slave_url_path); 1022 GURL slave_url(slave_url_path);
1027 1023
1028 // Create tabs and visit pages which keep on creating wss connections. 1024 // Create tabs and visit pages which keep on creating wss connections.
1029 WebContents* tabs[16]; 1025 WebContents* tabs[16];
1030 for (int i = 0; i < 16; ++i) { 1026 for (int i = 0; i < 16; ++i) {
1031 tabs[i] = chrome::AddSelectedTabWithURL(browser(), slave_url, 1027 tabs[i] = chrome::AddSelectedTabWithURL(browser(), slave_url,
1032 ui::PAGE_TRANSITION_LINK); 1028 ui::PAGE_TRANSITION_LINK);
1033 } 1029 }
1034 chrome::SelectNextTab(browser()); 1030 chrome::SelectNextTab(browser());
1035 1031
1036 // Visit a page which waits for one TLS handshake failure. 1032 // Visit a page which waits for one TLS handshake failure.
1037 // The title will be changed to 'PASS'. 1033 // The title will be changed to 'PASS'.
1038 ui_test_utils::NavigateToURL(browser(), master_url); 1034 ui_test_utils::NavigateToURL(browser(), master_url);
1039 const base::string16 result = watcher.WaitAndGetTitle(); 1035 const base::string16 result = watcher.WaitAndGetTitle();
1040 EXPECT_TRUE(base::LowerCaseEqualsASCII(result, "pass")); 1036 EXPECT_TRUE(base::LowerCaseEqualsASCII(result, "pass"));
1041 1037
1042 // Close tabs which contains the test page. 1038 // Close tabs which contains the test page.
1043 for (int i = 0; i < 16; ++i) 1039 for (int i = 0; i < 16; ++i)
1044 chrome::CloseWebContents(browser(), tabs[i], false); 1040 chrome::CloseWebContents(browser(), tabs[i], false);
1045 chrome::CloseWebContents(browser(), tab, false); 1041 chrome::CloseWebContents(browser(), tab, false);
1046 } 1042 }
1047 1043
1048 // Visit a HTTPS page and proceeds despite an invalid certificate. The page 1044 // Visit a HTTPS page and proceeds despite an invalid certificate. The page
1049 // requests WSS connection to the same origin host to check if WSS connection 1045 // requests WSS connection to the same origin host to check if WSS connection
1050 // share certificates policy with HTTPS correcly. 1046 // share certificates policy with HTTPS correcly.
1051 IN_PROC_BROWSER_TEST_F(SSLUITest, TestWSSInvalidCertAndGoForward) { 1047 IN_PROC_BROWSER_TEST_F(SSLUITest, TestWSSInvalidCertAndGoForward) {
1052 ASSERT_TRUE(test_server()->Start()); 1048 ASSERT_TRUE(embedded_test_server()->Start());
1053 ASSERT_TRUE(wss_server_expired_.Start()); 1049 ASSERT_TRUE(wss_server_expired_.Start());
1054 1050
1055 // Setup page title observer. 1051 // Setup page title observer.
1056 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents(); 1052 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents();
1057 content::TitleWatcher watcher(tab, ASCIIToUTF16("PASS")); 1053 content::TitleWatcher watcher(tab, ASCIIToUTF16("PASS"));
1058 watcher.AlsoWaitForTitle(ASCIIToUTF16("FAIL")); 1054 watcher.AlsoWaitForTitle(ASCIIToUTF16("FAIL"));
1059 1055
1060 // Visit bad HTTPS page. 1056 // Visit bad HTTPS page.
1061 GURL::Replacements replacements; 1057 GURL::Replacements replacements;
1062 replacements.SetSchemeStr("https"); 1058 replacements.SetSchemeStr("https");
1063 ui_test_utils::NavigateToURL( 1059 ui_test_utils::NavigateToURL(browser(),
1064 browser(), 1060 wss_server_expired_.GetURL("connect_check.html")
1065 wss_server_expired_.GetURL( 1061 .ReplaceComponents(replacements));
1066 "connect_check.html").ReplaceComponents(replacements));
1067 CheckAuthenticationBrokenState( 1062 CheckAuthenticationBrokenState(
1068 tab, net::CERT_STATUS_DATE_INVALID, AuthState::SHOWING_INTERSTITIAL); 1063 tab, net::CERT_STATUS_DATE_INVALID, AuthState::SHOWING_INTERSTITIAL);
1069 1064
1070 // Proceed anyway. 1065 // Proceed anyway.
1071 ProceedThroughInterstitial(tab); 1066 ProceedThroughInterstitial(tab);
1072 1067
1073 // Test page run a WebSocket wss connection test. The result will be shown 1068 // Test page run a WebSocket wss connection test. The result will be shown
1074 // as page title. 1069 // as page title.
1075 const base::string16 result = watcher.WaitAndGetTitle(); 1070 const base::string16 result = watcher.WaitAndGetTitle();
1076 EXPECT_TRUE(base::LowerCaseEqualsASCII(result, "pass")); 1071 EXPECT_TRUE(base::LowerCaseEqualsASCII(result, "pass"));
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
1154 options.request_client_certificate = true; 1149 options.request_client_certificate = true;
1155 base::FilePath ca_path = net::GetTestCertsDirectory().Append( 1150 base::FilePath ca_path = net::GetTestCertsDirectory().Append(
1156 FILE_PATH_LITERAL("websocket_cacert.pem")); 1151 FILE_PATH_LITERAL("websocket_cacert.pem"));
1157 options.client_authorities.push_back(ca_path); 1152 options.client_authorities.push_back(ca_path);
1158 net::SpawnedTestServer wss_server(net::SpawnedTestServer::TYPE_WSS, 1153 net::SpawnedTestServer wss_server(net::SpawnedTestServer::TYPE_WSS,
1159 options, 1154 options,
1160 net::GetWebSocketTestDataDirectory()); 1155 net::GetWebSocketTestDataDirectory());
1161 ASSERT_TRUE(wss_server.Start()); 1156 ASSERT_TRUE(wss_server.Start());
1162 GURL::Replacements replacements; 1157 GURL::Replacements replacements;
1163 replacements.SetSchemeStr("https"); 1158 replacements.SetSchemeStr("https");
1164 GURL url = wss_server.GetURL("connect_check.html").ReplaceComponents( 1159 GURL url =
1165 replacements); 1160 wss_server.GetURL("connect_check.html").ReplaceComponents(replacements);
1166 1161
1167 // Setup page title observer. 1162 // Setup page title observer.
1168 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents(); 1163 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents();
1169 content::TitleWatcher watcher(tab, ASCIIToUTF16("PASS")); 1164 content::TitleWatcher watcher(tab, ASCIIToUTF16("PASS"));
1170 watcher.AlsoWaitForTitle(ASCIIToUTF16("FAIL")); 1165 watcher.AlsoWaitForTitle(ASCIIToUTF16("FAIL"));
1171 1166
1172 // Add an entry into AutoSelectCertificateForUrls policy for automatic client 1167 // Add an entry into AutoSelectCertificateForUrls policy for automatic client
1173 // cert selection. 1168 // cert selection.
1174 Profile* profile = Profile::FromBrowserContext(tab->GetBrowserContext()); 1169 Profile* profile = Profile::FromBrowserContext(tab->GetBrowserContext());
1175 DCHECK(profile); 1170 DCHECK(profile);
(...skipping 25 matching lines...) Expand all
1201 #define MAYBE_TestHTTPSErrorWithNoNavEntry TestHTTPSErrorWithNoNavEntry 1196 #define MAYBE_TestHTTPSErrorWithNoNavEntry TestHTTPSErrorWithNoNavEntry
1202 #endif // defined(OS_CHROMEOS) 1197 #endif // defined(OS_CHROMEOS)
1203 1198
1204 // Open a page with a HTTPS error in a tab with no prior navigation (through a 1199 // Open a page with a HTTPS error in a tab with no prior navigation (through a
1205 // link with a blank target). This is to test that the lack of navigation entry 1200 // link with a blank target). This is to test that the lack of navigation entry
1206 // does not cause any problems (it was causing a crasher, see 1201 // does not cause any problems (it was causing a crasher, see
1207 // http://crbug.com/19941). 1202 // http://crbug.com/19941).
1208 IN_PROC_BROWSER_TEST_F(SSLUITest, MAYBE_TestHTTPSErrorWithNoNavEntry) { 1203 IN_PROC_BROWSER_TEST_F(SSLUITest, MAYBE_TestHTTPSErrorWithNoNavEntry) {
1209 ASSERT_TRUE(https_server_expired_.Start()); 1204 ASSERT_TRUE(https_server_expired_.Start());
1210 1205
1211 GURL url = https_server_expired_.GetURL("files/ssl/google.htm"); 1206 GURL url = https_server_expired_.GetURL("/ssl/google.htm");
1212 WebContents* tab2 = chrome::AddSelectedTabWithURL( 1207 WebContents* tab2 = chrome::AddSelectedTabWithURL(
1213 browser(), url, ui::PAGE_TRANSITION_TYPED); 1208 browser(), url, ui::PAGE_TRANSITION_TYPED);
1214 content::WaitForLoadStop(tab2); 1209 content::WaitForLoadStop(tab2);
1215 1210
1216 // Verify our assumption that there was no prior navigation. 1211 // Verify our assumption that there was no prior navigation.
1217 EXPECT_FALSE(chrome::CanGoBack(browser())); 1212 EXPECT_FALSE(chrome::CanGoBack(browser()));
1218 1213
1219 // We should have an interstitial page showing. 1214 // We should have an interstitial page showing.
1220 ASSERT_TRUE(tab2->GetInterstitialPage()); 1215 ASSERT_TRUE(tab2->GetInterstitialPage());
1221 ASSERT_EQ(SSLBlockingPage::kTypeForTesting, tab2->GetInterstitialPage() 1216 ASSERT_EQ(SSLBlockingPage::kTypeForTesting, tab2->GetInterstitialPage()
1222 ->GetDelegateForTesting() 1217 ->GetDelegateForTesting()
1223 ->GetTypeForTesting()); 1218 ->GetTypeForTesting());
1224 } 1219 }
1225 1220
1226 IN_PROC_BROWSER_TEST_F(SSLUITest, TestBadHTTPSDownload) { 1221 IN_PROC_BROWSER_TEST_F(SSLUITest, TestBadHTTPSDownload) {
1227 ASSERT_TRUE(test_server()->Start()); 1222 ASSERT_TRUE(embedded_test_server()->Start());
1228 ASSERT_TRUE(https_server_expired_.Start()); 1223 ASSERT_TRUE(https_server_expired_.Start());
1229 GURL url_non_dangerous = test_server()->GetURL(std::string()); 1224 GURL url_non_dangerous = embedded_test_server()->GetURL("/");
1230 GURL url_dangerous = 1225 GURL url_dangerous =
1231 https_server_expired_.GetURL("files/downloads/dangerous/dangerous.exe"); 1226 https_server_expired_.GetURL("/downloads/dangerous/dangerous.exe");
1232 base::ScopedTempDir downloads_directory_; 1227 base::ScopedTempDir downloads_directory_;
1233 1228
1234 // Need empty temp dir to avoid having Chrome ask us for a new filename 1229 // Need empty temp dir to avoid having Chrome ask us for a new filename
1235 // when we've downloaded dangerous.exe one hundred times. 1230 // when we've downloaded dangerous.exe one hundred times.
1236 ASSERT_TRUE(downloads_directory_.CreateUniqueTempDir()); 1231 ASSERT_TRUE(downloads_directory_.CreateUniqueTempDir());
1237 1232
1238 browser()->profile()->GetPrefs()->SetFilePath( 1233 browser()->profile()->GetPrefs()->SetFilePath(
1239 prefs::kDownloadDefaultDirectory, 1234 prefs::kDownloadDefaultDirectory,
1240 downloads_directory_.path()); 1235 downloads_directory_.path());
1241 1236
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
1296 1291
1297 #if defined(OS_WIN) 1292 #if defined(OS_WIN)
1298 // http://crbug.com/152940 Flaky on win. 1293 // http://crbug.com/152940 Flaky on win.
1299 #define MAYBE_TestDisplaysInsecureContent DISABLED_TestDisplaysInsecureContent 1294 #define MAYBE_TestDisplaysInsecureContent DISABLED_TestDisplaysInsecureContent
1300 #else 1295 #else
1301 #define MAYBE_TestDisplaysInsecureContent TestDisplaysInsecureContent 1296 #define MAYBE_TestDisplaysInsecureContent TestDisplaysInsecureContent
1302 #endif 1297 #endif
1303 1298
1304 // Visits a page that displays insecure content. 1299 // Visits a page that displays insecure content.
1305 IN_PROC_BROWSER_TEST_F(SSLUITest, MAYBE_TestDisplaysInsecureContent) { 1300 IN_PROC_BROWSER_TEST_F(SSLUITest, MAYBE_TestDisplaysInsecureContent) {
1306 ASSERT_TRUE(test_server()->Start()); 1301 ASSERT_TRUE(embedded_test_server()->Start());
1307 ASSERT_TRUE(https_server_.Start()); 1302 ASSERT_TRUE(https_server_.Start());
1308 1303
1309 std::string replacement_path; 1304 std::string replacement_path;
1310 ASSERT_TRUE(GetFilePathWithHostAndPortReplacement( 1305 GetFilePathWithHostAndPortReplacement(
1311 "files/ssl/page_displays_insecure_content.html", 1306 "/ssl/page_displays_insecure_content.html",
1312 test_server()->host_port_pair(), 1307 embedded_test_server()->host_port_pair(), &replacement_path);
1313 &replacement_path));
1314 1308
1315 // Load a page that displays insecure content. 1309 // Load a page that displays insecure content.
1316 ui_test_utils::NavigateToURL(browser(), 1310 ui_test_utils::NavigateToURL(browser(),
1317 https_server_.GetURL(replacement_path)); 1311 https_server_.GetURL(replacement_path));
1318 1312
1319 CheckAuthenticatedState(browser()->tab_strip_model()->GetActiveWebContents(), 1313 CheckAuthenticatedState(browser()->tab_strip_model()->GetActiveWebContents(),
1320 AuthState::DISPLAYED_INSECURE_CONTENT); 1314 AuthState::DISPLAYED_INSECURE_CONTENT);
1321 } 1315 }
1322 1316
1323 // Test that if the user proceeds and the checkbox is checked, a report 1317 // Test that if the user proceeds and the checkbox is checked, a report
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
1417 TestBadClockReporting( 1411 TestBadClockReporting(
1418 certificate_reporting_test_utils::EXTENDED_REPORTING_OPT_IN, 1412 certificate_reporting_test_utils::EXTENDED_REPORTING_OPT_IN,
1419 expect_report, browser()); 1413 expect_report, browser());
1420 } 1414 }
1421 1415
1422 // Visits a page that runs insecure content and tries to suppress the insecure 1416 // Visits a page that runs insecure content and tries to suppress the insecure
1423 // content warnings by randomizing location.hash. 1417 // content warnings by randomizing location.hash.
1424 // Based on http://crbug.com/8706 1418 // Based on http://crbug.com/8706
1425 IN_PROC_BROWSER_TEST_F(SSLUITest, 1419 IN_PROC_BROWSER_TEST_F(SSLUITest,
1426 TestRunsInsecuredContentRandomizeHash) { 1420 TestRunsInsecuredContentRandomizeHash) {
1427 ASSERT_TRUE(test_server()->Start()); 1421 ASSERT_TRUE(embedded_test_server()->Start());
1428 ASSERT_TRUE(https_server_.Start()); 1422 ASSERT_TRUE(https_server_.Start());
1429 1423
1430 ui_test_utils::NavigateToURL(browser(), https_server_.GetURL( 1424 ui_test_utils::NavigateToURL(
1431 "files/ssl/page_runs_insecure_content.html")); 1425 browser(), https_server_.GetURL("/ssl/page_runs_insecure_content.html"));
1432 1426
1433 CheckAuthenticationBrokenState( 1427 CheckAuthenticationBrokenState(
1434 browser()->tab_strip_model()->GetActiveWebContents(), CertError::NONE, 1428 browser()->tab_strip_model()->GetActiveWebContents(), CertError::NONE,
1435 AuthState::RAN_INSECURE_CONTENT); 1429 AuthState::RAN_INSECURE_CONTENT);
1436 } 1430 }
1437 1431
1438 // Visits a page with unsafe content and make sure that: 1432 // Visits a page with unsafe content and make sure that:
1439 // - frames content is replaced with warning 1433 // - frames content is replaced with warning
1440 // - images and scripts are filtered out entirely 1434 // - images and scripts are filtered out entirely
1441 IN_PROC_BROWSER_TEST_F(SSLUITest, TestUnsafeContents) { 1435 IN_PROC_BROWSER_TEST_F(SSLUITest, TestUnsafeContents) {
1442 ASSERT_TRUE(https_server_.Start()); 1436 ASSERT_TRUE(https_server_.Start());
1443 ASSERT_TRUE(https_server_expired_.Start()); 1437 ASSERT_TRUE(https_server_expired_.Start());
1444 1438
1445 std::string replacement_path; 1439 std::string replacement_path;
1446 ASSERT_TRUE(GetFilePathWithHostAndPortReplacement( 1440 GetFilePathWithHostAndPortReplacement("/ssl/page_with_unsafe_contents.html",
1447 "files/ssl/page_with_unsafe_contents.html", 1441 https_server_expired_.host_port_pair(),
1448 https_server_expired_.host_port_pair(), 1442 &replacement_path);
1449 &replacement_path));
1450 ui_test_utils::NavigateToURL(browser(), 1443 ui_test_utils::NavigateToURL(browser(),
1451 https_server_.GetURL(replacement_path)); 1444 https_server_.GetURL(replacement_path));
1452 1445
1453 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents(); 1446 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents();
1454 // When the bad content is filtered, the state is expected to be 1447 // When the bad content is filtered, the state is expected to be
1455 // authenticated. 1448 // authenticated.
1456 CheckAuthenticatedState(tab, AuthState::NONE); 1449 CheckAuthenticatedState(tab, AuthState::NONE);
1457 1450
1458 // Because of cross-frame scripting restrictions, we cannot access the iframe 1451 // Because of cross-frame scripting restrictions, we cannot access the iframe
1459 // content. So to know if the frame was loaded, we just check if a popup was 1452 // content. So to know if the frame was loaded, we just check if a popup was
(...skipping 25 matching lines...) Expand all
1485 #if defined(OS_LINUX) 1478 #if defined(OS_LINUX)
1486 // flaky http://crbug.com/396462 1479 // flaky http://crbug.com/396462
1487 #define MAYBE_TestDisplaysInsecureContentLoadedFromJS \ 1480 #define MAYBE_TestDisplaysInsecureContentLoadedFromJS \
1488 DISABLED_TestDisplaysInsecureContentLoadedFromJS 1481 DISABLED_TestDisplaysInsecureContentLoadedFromJS
1489 #else 1482 #else
1490 #define MAYBE_TestDisplaysInsecureContentLoadedFromJS \ 1483 #define MAYBE_TestDisplaysInsecureContentLoadedFromJS \
1491 TestDisplaysInsecureContentLoadedFromJS 1484 TestDisplaysInsecureContentLoadedFromJS
1492 #endif 1485 #endif
1493 IN_PROC_BROWSER_TEST_F(SSLUITest, 1486 IN_PROC_BROWSER_TEST_F(SSLUITest,
1494 MAYBE_TestDisplaysInsecureContentLoadedFromJS) { 1487 MAYBE_TestDisplaysInsecureContentLoadedFromJS) {
1495 ASSERT_TRUE(test_server()->Start()); 1488 ASSERT_TRUE(embedded_test_server()->Start());
1496 ASSERT_TRUE(https_server_.Start()); 1489 ASSERT_TRUE(https_server_.Start());
1497 1490
1498 std::string replacement_path; 1491 std::string replacement_path;
1499 ASSERT_TRUE(GetFilePathWithHostAndPortReplacement( 1492 GetFilePathWithHostAndPortReplacement(
1500 "files/ssl/page_with_dynamic_insecure_content.html", 1493 "/ssl/page_with_dynamic_insecure_content.html",
1501 test_server()->host_port_pair(), 1494 embedded_test_server()->host_port_pair(), &replacement_path);
1502 &replacement_path));
1503 ui_test_utils::NavigateToURL(browser(), https_server_.GetURL( 1495 ui_test_utils::NavigateToURL(browser(), https_server_.GetURL(
1504 replacement_path)); 1496 replacement_path));
1505 1497
1506 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents(); 1498 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents();
1507 CheckAuthenticatedState(tab, AuthState::NONE); 1499 CheckAuthenticatedState(tab, AuthState::NONE);
1508 1500
1509 // Load the insecure image. 1501 // Load the insecure image.
1510 bool js_result = false; 1502 bool js_result = false;
1511 EXPECT_TRUE(content::ExecuteScriptAndExtractBool( 1503 EXPECT_TRUE(content::ExecuteScriptAndExtractBool(
1512 tab, 1504 tab,
1513 "loadBadImage();", 1505 "loadBadImage();",
1514 &js_result)); 1506 &js_result));
1515 EXPECT_TRUE(js_result); 1507 EXPECT_TRUE(js_result);
1516 1508
1517 // We should now have insecure content. 1509 // We should now have insecure content.
1518 CheckAuthenticatedState(tab, AuthState::DISPLAYED_INSECURE_CONTENT); 1510 CheckAuthenticatedState(tab, AuthState::DISPLAYED_INSECURE_CONTENT);
1519 } 1511 }
1520 1512
1521 // Visits two pages from the same origin: one that displays insecure content and 1513 // Visits two pages from the same origin: one that displays insecure content and
1522 // one that doesn't. The test checks that we do not propagate the insecure 1514 // one that doesn't. The test checks that we do not propagate the insecure
1523 // content state from one to the other. 1515 // content state from one to the other.
1524 IN_PROC_BROWSER_TEST_F(SSLUITest, TestDisplaysInsecureContentTwoTabs) { 1516 IN_PROC_BROWSER_TEST_F(SSLUITest, TestDisplaysInsecureContentTwoTabs) {
1525 ASSERT_TRUE(test_server()->Start()); 1517 ASSERT_TRUE(embedded_test_server()->Start());
1526 ASSERT_TRUE(https_server_.Start()); 1518 ASSERT_TRUE(https_server_.Start());
1527 1519
1528 ui_test_utils::NavigateToURL(browser(), 1520 ui_test_utils::NavigateToURL(browser(),
1529 https_server_.GetURL("files/ssl/blank_page.html")); 1521 https_server_.GetURL("/ssl/blank_page.html"));
1530 1522
1531 WebContents* tab1 = browser()->tab_strip_model()->GetActiveWebContents(); 1523 WebContents* tab1 = browser()->tab_strip_model()->GetActiveWebContents();
1532 1524
1533 // This tab should be fine. 1525 // This tab should be fine.
1534 CheckAuthenticatedState(tab1, AuthState::NONE); 1526 CheckAuthenticatedState(tab1, AuthState::NONE);
1535 1527
1536 // Create a new tab. 1528 // Create a new tab.
1537 std::string replacement_path; 1529 std::string replacement_path;
1538 ASSERT_TRUE(GetFilePathWithHostAndPortReplacement( 1530 GetFilePathWithHostAndPortReplacement(
1539 "files/ssl/page_displays_insecure_content.html", 1531 "/ssl/page_displays_insecure_content.html",
1540 test_server()->host_port_pair(), 1532 embedded_test_server()->host_port_pair(), &replacement_path);
1541 &replacement_path));
1542 1533
1543 GURL url = https_server_.GetURL(replacement_path); 1534 GURL url = https_server_.GetURL(replacement_path);
1544 chrome::NavigateParams params(browser(), url, ui::PAGE_TRANSITION_TYPED); 1535 chrome::NavigateParams params(browser(), url, ui::PAGE_TRANSITION_TYPED);
1545 params.disposition = NEW_FOREGROUND_TAB; 1536 params.disposition = NEW_FOREGROUND_TAB;
1546 params.tabstrip_index = 0; 1537 params.tabstrip_index = 0;
1547 params.source_contents = tab1; 1538 params.source_contents = tab1;
1548 content::WindowedNotificationObserver observer( 1539 content::WindowedNotificationObserver observer(
1549 content::NOTIFICATION_LOAD_STOP, 1540 content::NOTIFICATION_LOAD_STOP,
1550 content::NotificationService::AllSources()); 1541 content::NotificationService::AllSources());
1551 chrome::Navigate(&params); 1542 chrome::Navigate(&params);
1552 WebContents* tab2 = params.target_contents; 1543 WebContents* tab2 = params.target_contents;
1553 observer.Wait(); 1544 observer.Wait();
1554 1545
1555 // The new tab has insecure content. 1546 // The new tab has insecure content.
1556 CheckAuthenticatedState(tab2, AuthState::DISPLAYED_INSECURE_CONTENT); 1547 CheckAuthenticatedState(tab2, AuthState::DISPLAYED_INSECURE_CONTENT);
1557 1548
1558 // The original tab should not be contaminated. 1549 // The original tab should not be contaminated.
1559 CheckAuthenticatedState(tab1, AuthState::NONE); 1550 CheckAuthenticatedState(tab1, AuthState::NONE);
1560 } 1551 }
1561 1552
1562 // Visits two pages from the same origin: one that runs insecure content and one 1553 // Visits two pages from the same origin: one that runs insecure content and one
1563 // that doesn't. The test checks that we propagate the insecure content state 1554 // that doesn't. The test checks that we propagate the insecure content state
1564 // from one to the other. 1555 // from one to the other.
1565 IN_PROC_BROWSER_TEST_F(SSLUITest, TestRunsInsecureContentTwoTabs) { 1556 IN_PROC_BROWSER_TEST_F(SSLUITest, TestRunsInsecureContentTwoTabs) {
1566 ASSERT_TRUE(test_server()->Start()); 1557 ASSERT_TRUE(embedded_test_server()->Start());
1567 ASSERT_TRUE(https_server_.Start()); 1558 ASSERT_TRUE(https_server_.Start());
1568 1559
1569 ui_test_utils::NavigateToURL(browser(), 1560 ui_test_utils::NavigateToURL(browser(),
1570 https_server_.GetURL("files/ssl/blank_page.html")); 1561 https_server_.GetURL("/ssl/blank_page.html"));
1571 1562
1572 WebContents* tab1 = browser()->tab_strip_model()->GetActiveWebContents(); 1563 WebContents* tab1 = browser()->tab_strip_model()->GetActiveWebContents();
1573 1564
1574 // This tab should be fine. 1565 // This tab should be fine.
1575 CheckAuthenticatedState(tab1, AuthState::NONE); 1566 CheckAuthenticatedState(tab1, AuthState::NONE);
1576 1567
1577 std::string replacement_path; 1568 std::string replacement_path;
1578 ASSERT_TRUE(GetFilePathWithHostAndPortReplacement( 1569 GetFilePathWithHostAndPortReplacement(
1579 "files/ssl/page_runs_insecure_content.html", 1570 "/ssl/page_runs_insecure_content.html",
1580 test_server()->host_port_pair(), 1571 embedded_test_server()->host_port_pair(), &replacement_path);
1581 &replacement_path));
1582 1572
1583 // Create a new tab in the same process. Using a NEW_FOREGROUND_TAB 1573 // Create a new tab in the same process. Using a NEW_FOREGROUND_TAB
1584 // disposition won't usually stay in the same process, but this works 1574 // disposition won't usually stay in the same process, but this works
1585 // because we are using process-per-site in SetUpCommandLine. 1575 // because we are using process-per-site in SetUpCommandLine.
1586 GURL url = https_server_.GetURL(replacement_path); 1576 GURL url = https_server_.GetURL(replacement_path);
1587 chrome::NavigateParams params(browser(), url, ui::PAGE_TRANSITION_TYPED); 1577 chrome::NavigateParams params(browser(), url, ui::PAGE_TRANSITION_TYPED);
1588 params.disposition = NEW_FOREGROUND_TAB; 1578 params.disposition = NEW_FOREGROUND_TAB;
1589 params.source_contents = tab1; 1579 params.source_contents = tab1;
1590 content::WindowedNotificationObserver observer( 1580 content::WindowedNotificationObserver observer(
1591 content::NOTIFICATION_LOAD_STOP, 1581 content::NOTIFICATION_LOAD_STOP,
(...skipping 12 matching lines...) Expand all
1604 // Which means the origin for the first tab has also been contaminated with 1594 // Which means the origin for the first tab has also been contaminated with
1605 // insecure content. 1595 // insecure content.
1606 CheckAuthenticationBrokenState( 1596 CheckAuthenticationBrokenState(
1607 tab1, CertError::NONE, AuthState::RAN_INSECURE_CONTENT); 1597 tab1, CertError::NONE, AuthState::RAN_INSECURE_CONTENT);
1608 } 1598 }
1609 1599
1610 // Visits a page with an image over http. Visits another page over https 1600 // Visits a page with an image over http. Visits another page over https
1611 // referencing that same image over http (hoping it is coming from the webcore 1601 // referencing that same image over http (hoping it is coming from the webcore
1612 // memory cache). 1602 // memory cache).
1613 IN_PROC_BROWSER_TEST_F(SSLUITest, TestDisplaysCachedInsecureContent) { 1603 IN_PROC_BROWSER_TEST_F(SSLUITest, TestDisplaysCachedInsecureContent) {
1614 ASSERT_TRUE(test_server()->Start()); 1604 ASSERT_TRUE(embedded_test_server()->Start());
1615 ASSERT_TRUE(https_server_.Start()); 1605 ASSERT_TRUE(https_server_.Start());
1616 1606
1617 std::string replacement_path; 1607 std::string replacement_path;
1618 ASSERT_TRUE(GetFilePathWithHostAndPortReplacement( 1608 GetFilePathWithHostAndPortReplacement(
1619 "files/ssl/page_displays_insecure_content.html", 1609 "/ssl/page_displays_insecure_content.html",
1620 test_server()->host_port_pair(), 1610 embedded_test_server()->host_port_pair(), &replacement_path);
1621 &replacement_path));
1622 1611
1623 // Load original page over HTTP. 1612 // Load original page over HTTP.
1624 const GURL url_http = test_server()->GetURL(replacement_path); 1613 const GURL url_http = embedded_test_server()->GetURL(replacement_path);
1625 ui_test_utils::NavigateToURL(browser(), url_http); 1614 ui_test_utils::NavigateToURL(browser(), url_http);
1626 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents(); 1615 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents();
1627 CheckUnauthenticatedState(tab, AuthState::NONE); 1616 CheckUnauthenticatedState(tab, AuthState::NONE);
1628 1617
1629 // Load again but over SSL. It should be marked as displaying insecure 1618 // Load again but over SSL. It should be marked as displaying insecure
1630 // content (even though the image comes from the WebCore memory cache). 1619 // content (even though the image comes from the WebCore memory cache).
1631 const GURL url_https = https_server_.GetURL(replacement_path); 1620 const GURL url_https = https_server_.GetURL(replacement_path);
1632 ui_test_utils::NavigateToURL(browser(), url_https); 1621 ui_test_utils::NavigateToURL(browser(), url_https);
1633 CheckAuthenticatedState(tab, AuthState::DISPLAYED_INSECURE_CONTENT); 1622 CheckAuthenticatedState(tab, AuthState::DISPLAYED_INSECURE_CONTENT);
1634 } 1623 }
1635 1624
1636 // http://crbug.com/84729 1625 // http://crbug.com/84729
1637 #if defined(OS_CHROMEOS) 1626 #if defined(OS_CHROMEOS)
1638 #define MAYBE_TestRunsCachedInsecureContent \ 1627 #define MAYBE_TestRunsCachedInsecureContent \
1639 DISABLED_TestRunsCachedInsecureContent 1628 DISABLED_TestRunsCachedInsecureContent
1640 #else 1629 #else
1641 #define MAYBE_TestRunsCachedInsecureContent TestRunsCachedInsecureContent 1630 #define MAYBE_TestRunsCachedInsecureContent TestRunsCachedInsecureContent
1642 #endif // defined(OS_CHROMEOS) 1631 #endif // defined(OS_CHROMEOS)
1643 1632
1644 // Visits a page with script over http. Visits another page over https 1633 // Visits a page with script over http. Visits another page over https
1645 // referencing that same script over http (hoping it is coming from the webcore 1634 // referencing that same script over http (hoping it is coming from the webcore
1646 // memory cache). 1635 // memory cache).
1647 IN_PROC_BROWSER_TEST_F(SSLUITest, MAYBE_TestRunsCachedInsecureContent) { 1636 IN_PROC_BROWSER_TEST_F(SSLUITest, MAYBE_TestRunsCachedInsecureContent) {
1648 ASSERT_TRUE(test_server()->Start()); 1637 ASSERT_TRUE(embedded_test_server()->Start());
1649 ASSERT_TRUE(https_server_.Start()); 1638 ASSERT_TRUE(https_server_.Start());
1650 1639
1651 std::string replacement_path; 1640 std::string replacement_path;
1652 ASSERT_TRUE(GetFilePathWithHostAndPortReplacement( 1641 GetFilePathWithHostAndPortReplacement(
1653 "files/ssl/page_runs_insecure_content.html", 1642 "/ssl/page_runs_insecure_content.html",
1654 test_server()->host_port_pair(), 1643 embedded_test_server()->host_port_pair(), &replacement_path);
1655 &replacement_path));
1656 1644
1657 // Load original page over HTTP. 1645 // Load original page over HTTP.
1658 const GURL url_http = test_server()->GetURL(replacement_path); 1646 const GURL url_http = embedded_test_server()->GetURL(replacement_path);
1659 ui_test_utils::NavigateToURL(browser(), url_http); 1647 ui_test_utils::NavigateToURL(browser(), url_http);
1660 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents(); 1648 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents();
1661 CheckUnauthenticatedState(tab, AuthState::NONE); 1649 CheckUnauthenticatedState(tab, AuthState::NONE);
1662 1650
1663 // Load again but over SSL. It should be marked as displaying insecure 1651 // Load again but over SSL. It should be marked as displaying insecure
1664 // content (even though the image comes from the WebCore memory cache). 1652 // content (even though the image comes from the WebCore memory cache).
1665 const GURL url_https = https_server_.GetURL(replacement_path); 1653 const GURL url_https = https_server_.GetURL(replacement_path);
1666 ui_test_utils::NavigateToURL(browser(), url_https); 1654 ui_test_utils::NavigateToURL(browser(), url_https);
1667 CheckAuthenticationBrokenState(tab, CertError::NONE, 1655 CheckAuthenticationBrokenState(tab, CertError::NONE,
1668 AuthState::RAN_INSECURE_CONTENT); 1656 AuthState::RAN_INSECURE_CONTENT);
1669 } 1657 }
1670 1658
1671 // This test ensures the CN invalid status does not 'stick' to a certificate 1659 // This test ensures the CN invalid status does not 'stick' to a certificate
1672 // (see bug #1044942) and that it depends on the host-name. 1660 // (see bug #1044942) and that it depends on the host-name.
1673 // Test if disabled due to flakiness http://crbug.com/368280 . 1661 // Test if disabled due to flakiness http://crbug.com/368280 .
1674 IN_PROC_BROWSER_TEST_F(SSLUITest, DISABLED_TestCNInvalidStickiness) { 1662 IN_PROC_BROWSER_TEST_F(SSLUITest, DISABLED_TestCNInvalidStickiness) {
1675 ASSERT_TRUE(https_server_.Start()); 1663 ASSERT_TRUE(https_server_.Start());
1676 ASSERT_TRUE(https_server_mismatched_.Start()); 1664 ASSERT_TRUE(https_server_mismatched_.Start());
1677 1665
1678 // First we hit the server with hostname, this generates an invalid policy 1666 // First we hit the server with hostname, this generates an invalid policy
1679 // error. 1667 // error.
1680 ui_test_utils::NavigateToURL(browser(), 1668 ui_test_utils::NavigateToURL(
1681 https_server_mismatched_.GetURL("files/ssl/google.html")); 1669 browser(), https_server_mismatched_.GetURL("/ssl/google.html"));
1682 1670
1683 // We get an interstitial page as a result. 1671 // We get an interstitial page as a result.
1684 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents(); 1672 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents();
1685 CheckAuthenticationBrokenState(tab, 1673 CheckAuthenticationBrokenState(tab,
1686 net::CERT_STATUS_COMMON_NAME_INVALID, 1674 net::CERT_STATUS_COMMON_NAME_INVALID,
1687 AuthState::SHOWING_INTERSTITIAL); 1675 AuthState::SHOWING_INTERSTITIAL);
1688 ProceedThroughInterstitial(tab); 1676 ProceedThroughInterstitial(tab);
1689 CheckAuthenticationBrokenState( 1677 CheckAuthenticationBrokenState(
1690 tab, net::CERT_STATUS_COMMON_NAME_INVALID, AuthState::NONE); 1678 tab, net::CERT_STATUS_COMMON_NAME_INVALID, AuthState::NONE);
1691 1679
1692 // Now we try again with the right host name this time. 1680 // Now we try again with the right host name this time.
1693 GURL url(https_server_.GetURL("files/ssl/google.html")); 1681 GURL url(https_server_.GetURL("/ssl/google.html"));
1694 ui_test_utils::NavigateToURL(browser(), url); 1682 ui_test_utils::NavigateToURL(browser(), url);
1695 1683
1696 // Security state should be OK. 1684 // Security state should be OK.
1697 CheckAuthenticatedState(tab, AuthState::NONE); 1685 CheckAuthenticatedState(tab, AuthState::NONE);
1698 1686
1699 // Now try again the broken one to make sure it is still broken. 1687 // Now try again the broken one to make sure it is still broken.
1700 ui_test_utils::NavigateToURL(browser(), 1688 ui_test_utils::NavigateToURL(
1701 https_server_mismatched_.GetURL("files/ssl/google.html")); 1689 browser(), https_server_mismatched_.GetURL("/ssl/google.html"));
1702 1690
1703 // Since we OKed the interstitial last time, we get right to the page. 1691 // Since we OKed the interstitial last time, we get right to the page.
1704 CheckAuthenticationBrokenState( 1692 CheckAuthenticationBrokenState(
1705 tab, net::CERT_STATUS_COMMON_NAME_INVALID, AuthState::NONE); 1693 tab, net::CERT_STATUS_COMMON_NAME_INVALID, AuthState::NONE);
1706 } 1694 }
1707 1695
1708 #if defined(OS_CHROMEOS) 1696 #if defined(OS_CHROMEOS)
1709 // This test seems to be flaky and hang on chromiumos. 1697 // This test seems to be flaky and hang on chromiumos.
1710 // http://crbug.com/84419 1698 // http://crbug.com/84419
1711 #define MAYBE_TestRefNavigation DISABLED_TestRefNavigation 1699 #define MAYBE_TestRefNavigation DISABLED_TestRefNavigation
1712 #else 1700 #else
1713 #define MAYBE_TestRefNavigation TestRefNavigation 1701 #define MAYBE_TestRefNavigation TestRefNavigation
1714 #endif 1702 #endif
1715 1703
1716 // Test that navigating to a #ref does not change a bad security state. 1704 // Test that navigating to a #ref does not change a bad security state.
1717 IN_PROC_BROWSER_TEST_F(SSLUITest, TestRefNavigation) { 1705 IN_PROC_BROWSER_TEST_F(SSLUITest, TestRefNavigation) {
1718 ASSERT_TRUE(https_server_expired_.Start()); 1706 ASSERT_TRUE(https_server_expired_.Start());
1719 1707
1720 ui_test_utils::NavigateToURL(browser(), 1708 ui_test_utils::NavigateToURL(
1721 https_server_expired_.GetURL("files/ssl/page_with_refs.html")); 1709 browser(), https_server_expired_.GetURL("/ssl/page_with_refs.html"));
1722 1710
1723 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents(); 1711 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents();
1724 CheckAuthenticationBrokenState( 1712 CheckAuthenticationBrokenState(
1725 tab, net::CERT_STATUS_DATE_INVALID, AuthState::SHOWING_INTERSTITIAL); 1713 tab, net::CERT_STATUS_DATE_INVALID, AuthState::SHOWING_INTERSTITIAL);
1726 1714
1727 ProceedThroughInterstitial(tab); 1715 ProceedThroughInterstitial(tab);
1728 1716
1729 CheckAuthenticationBrokenState( 1717 CheckAuthenticationBrokenState(
1730 tab, net::CERT_STATUS_DATE_INVALID, AuthState::NONE); 1718 tab, net::CERT_STATUS_DATE_INVALID, AuthState::NONE);
1731 // Now navigate to a ref in the page, the security state should not have 1719 // Now navigate to a ref in the page, the security state should not have
1732 // changed. 1720 // changed.
1733 ui_test_utils::NavigateToURL(browser(), 1721 ui_test_utils::NavigateToURL(
1734 https_server_expired_.GetURL("files/ssl/page_with_refs.html#jp")); 1722 browser(), https_server_expired_.GetURL("/ssl/page_with_refs.html#jp"));
1735 1723
1736 CheckAuthenticationBrokenState( 1724 CheckAuthenticationBrokenState(
1737 tab, net::CERT_STATUS_DATE_INVALID, AuthState::NONE); 1725 tab, net::CERT_STATUS_DATE_INVALID, AuthState::NONE);
1738 } 1726 }
1739 1727
1740 // Tests that closing a page that has a unsafe pop-up does not crash the 1728 // Tests that closing a page that has a unsafe pop-up does not crash the
1741 // browser (bug #1966). 1729 // browser (bug #1966).
1742 // TODO(jcampan): http://crbug.com/2136 disabled because the popup is not 1730 // TODO(jcampan): http://crbug.com/2136 disabled because the popup is not
1743 // opened as it is not initiated by a user gesture. 1731 // opened as it is not initiated by a user gesture.
1744 IN_PROC_BROWSER_TEST_F(SSLUITest, DISABLED_TestCloseTabWithUnsafePopup) { 1732 IN_PROC_BROWSER_TEST_F(SSLUITest, DISABLED_TestCloseTabWithUnsafePopup) {
1745 ASSERT_TRUE(test_server()->Start()); 1733 ASSERT_TRUE(embedded_test_server()->Start());
1746 ASSERT_TRUE(https_server_expired_.Start()); 1734 ASSERT_TRUE(https_server_expired_.Start());
1747 1735
1748 std::string replacement_path; 1736 std::string replacement_path;
1749 ASSERT_TRUE(GetFilePathWithHostAndPortReplacement( 1737 GetFilePathWithHostAndPortReplacement("/ssl/page_with_unsafe_popup.html",
1750 "files/ssl/page_with_unsafe_popup.html", 1738 https_server_expired_.host_port_pair(),
1751 https_server_expired_.host_port_pair(), 1739 &replacement_path);
1752 &replacement_path));
1753 1740
1754 ui_test_utils::NavigateToURL(browser(), 1741 ui_test_utils::NavigateToURL(
1755 test_server()->GetURL(replacement_path)); 1742 browser(), embedded_test_server()->GetURL(replacement_path));
1756 1743
1757 WebContents* tab1 = browser()->tab_strip_model()->GetActiveWebContents(); 1744 WebContents* tab1 = browser()->tab_strip_model()->GetActiveWebContents();
1758 // It is probably overkill to add a notification for a popup-opening, let's 1745 // It is probably overkill to add a notification for a popup-opening, let's
1759 // just poll. 1746 // just poll.
1760 for (int i = 0; i < 10; i++) { 1747 for (int i = 0; i < 10; i++) {
1761 if (IsShowingWebContentsModalDialog()) 1748 if (IsShowingWebContentsModalDialog())
1762 break; 1749 break;
1763 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( 1750 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
1764 FROM_HERE, base::MessageLoop::QuitWhenIdleClosure(), 1751 FROM_HERE, base::MessageLoop::QuitWhenIdleClosure(),
1765 base::TimeDelta::FromSeconds(1)); 1752 base::TimeDelta::FromSeconds(1));
1766 content::RunMessageLoop(); 1753 content::RunMessageLoop();
1767 } 1754 }
1768 ASSERT_TRUE(IsShowingWebContentsModalDialog()); 1755 ASSERT_TRUE(IsShowingWebContentsModalDialog());
1769 1756
1770 // Let's add another tab to make sure the browser does not exit when we close 1757 // Let's add another tab to make sure the browser does not exit when we close
1771 // the first tab. 1758 // the first tab.
1772 GURL url = test_server()->GetURL("files/ssl/google.html"); 1759 GURL url = embedded_test_server()->GetURL("/ssl/google.html");
1773 content::WindowedNotificationObserver observer( 1760 content::WindowedNotificationObserver observer(
1774 content::NOTIFICATION_LOAD_STOP, 1761 content::NOTIFICATION_LOAD_STOP,
1775 content::NotificationService::AllSources()); 1762 content::NotificationService::AllSources());
1776 chrome::AddSelectedTabWithURL(browser(), url, ui::PAGE_TRANSITION_TYPED); 1763 chrome::AddSelectedTabWithURL(browser(), url, ui::PAGE_TRANSITION_TYPED);
1777 observer.Wait(); 1764 observer.Wait();
1778 1765
1779 // Close the first tab. 1766 // Close the first tab.
1780 chrome::CloseWebContents(browser(), tab1, false); 1767 chrome::CloseWebContents(browser(), tab1, false);
1781 } 1768 }
1782 1769
1783 // Visit a page over bad https that is a redirect to a page with good https. 1770 // Visit a page over bad https that is a redirect to a page with good https.
1784 IN_PROC_BROWSER_TEST_F(SSLUITest, TestRedirectBadToGoodHTTPS) { 1771 IN_PROC_BROWSER_TEST_F(SSLUITest, TestRedirectBadToGoodHTTPS) {
1785 ASSERT_TRUE(https_server_.Start()); 1772 ASSERT_TRUE(https_server_.Start());
1786 ASSERT_TRUE(https_server_expired_.Start()); 1773 ASSERT_TRUE(https_server_expired_.Start());
1787 1774
1788 GURL url1 = https_server_expired_.GetURL("server-redirect?"); 1775 GURL url1 = https_server_expired_.GetURL("/server-redirect?");
1789 GURL url2 = https_server_.GetURL("files/ssl/google.html"); 1776 GURL url2 = https_server_.GetURL("/ssl/google.html");
1790 1777
1791 ui_test_utils::NavigateToURL(browser(), GURL(url1.spec() + url2.spec())); 1778 ui_test_utils::NavigateToURL(browser(), GURL(url1.spec() + url2.spec()));
1792 1779
1793 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents(); 1780 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents();
1794 1781
1795 CheckAuthenticationBrokenState( 1782 CheckAuthenticationBrokenState(
1796 tab, net::CERT_STATUS_DATE_INVALID, AuthState::SHOWING_INTERSTITIAL); 1783 tab, net::CERT_STATUS_DATE_INVALID, AuthState::SHOWING_INTERSTITIAL);
1797 1784
1798 ProceedThroughInterstitial(tab); 1785 ProceedThroughInterstitial(tab);
1799 1786
1800 // We have been redirected to the good page. 1787 // We have been redirected to the good page.
1801 CheckAuthenticatedState(tab, AuthState::NONE); 1788 CheckAuthenticatedState(tab, AuthState::NONE);
1802 } 1789 }
1803 1790
1804 // Flaky on Linux. http://crbug.com/368280. 1791 // Flaky on Linux. http://crbug.com/368280.
1805 #if defined(OS_LINUX) 1792 #if defined(OS_LINUX)
1806 #define MAYBE_TestRedirectGoodToBadHTTPS DISABLED_TestRedirectGoodToBadHTTPS 1793 #define MAYBE_TestRedirectGoodToBadHTTPS DISABLED_TestRedirectGoodToBadHTTPS
1807 #else 1794 #else
1808 #define MAYBE_TestRedirectGoodToBadHTTPS TestRedirectGoodToBadHTTPS 1795 #define MAYBE_TestRedirectGoodToBadHTTPS TestRedirectGoodToBadHTTPS
1809 #endif 1796 #endif
1810 1797
1811 // Visit a page over good https that is a redirect to a page with bad https. 1798 // Visit a page over good https that is a redirect to a page with bad https.
1812 IN_PROC_BROWSER_TEST_F(SSLUITest, MAYBE_TestRedirectGoodToBadHTTPS) { 1799 IN_PROC_BROWSER_TEST_F(SSLUITest, MAYBE_TestRedirectGoodToBadHTTPS) {
1813 ASSERT_TRUE(https_server_.Start()); 1800 ASSERT_TRUE(https_server_.Start());
1814 ASSERT_TRUE(https_server_expired_.Start()); 1801 ASSERT_TRUE(https_server_expired_.Start());
1815 1802
1816 GURL url1 = https_server_.GetURL("server-redirect?"); 1803 GURL url1 = https_server_.GetURL("/server-redirect?");
1817 GURL url2 = https_server_expired_.GetURL("files/ssl/google.html"); 1804 GURL url2 = https_server_expired_.GetURL("/ssl/google.html");
1818 ui_test_utils::NavigateToURL(browser(), GURL(url1.spec() + url2.spec())); 1805 ui_test_utils::NavigateToURL(browser(), GURL(url1.spec() + url2.spec()));
1819 1806
1820 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents(); 1807 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents();
1821 CheckAuthenticationBrokenState( 1808 CheckAuthenticationBrokenState(
1822 tab, net::CERT_STATUS_DATE_INVALID, AuthState::SHOWING_INTERSTITIAL); 1809 tab, net::CERT_STATUS_DATE_INVALID, AuthState::SHOWING_INTERSTITIAL);
1823 1810
1824 ProceedThroughInterstitial(tab); 1811 ProceedThroughInterstitial(tab);
1825 1812
1826 CheckAuthenticationBrokenState( 1813 CheckAuthenticationBrokenState(
1827 tab, net::CERT_STATUS_DATE_INVALID, AuthState::NONE); 1814 tab, net::CERT_STATUS_DATE_INVALID, AuthState::NONE);
1828 } 1815 }
1829 1816
1830 // Visit a page over http that is a redirect to a page with good HTTPS. 1817 // Visit a page over http that is a redirect to a page with good HTTPS.
1831 IN_PROC_BROWSER_TEST_F(SSLUITest, TestRedirectHTTPToGoodHTTPS) { 1818 IN_PROC_BROWSER_TEST_F(SSLUITest, TestRedirectHTTPToGoodHTTPS) {
1832 ASSERT_TRUE(test_server()->Start()); 1819 ASSERT_TRUE(embedded_test_server()->Start());
1833 ASSERT_TRUE(https_server_.Start()); 1820 ASSERT_TRUE(https_server_.Start());
1834 1821
1835 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents(); 1822 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents();
1836 1823
1837 // HTTP redirects to good HTTPS. 1824 // HTTP redirects to good HTTPS.
1838 GURL http_url = test_server()->GetURL("server-redirect?"); 1825 GURL http_url = embedded_test_server()->GetURL("/server-redirect?");
1839 GURL good_https_url = 1826 GURL good_https_url = https_server_.GetURL("/ssl/google.html");
1840 https_server_.GetURL("files/ssl/google.html");
1841 1827
1842 ui_test_utils::NavigateToURL(browser(), 1828 ui_test_utils::NavigateToURL(browser(),
1843 GURL(http_url.spec() + good_https_url.spec())); 1829 GURL(http_url.spec() + good_https_url.spec()));
1844 CheckAuthenticatedState(tab, AuthState::NONE); 1830 CheckAuthenticatedState(tab, AuthState::NONE);
1845 } 1831 }
1846 1832
1847 // Flaky on Linux. http://crbug.com/368280. 1833 // Flaky on Linux. http://crbug.com/368280.
1848 #if defined(OS_LINUX) 1834 #if defined(OS_LINUX)
1849 #define MAYBE_TestRedirectHTTPToBadHTTPS DISABLED_TestRedirectHTTPToBadHTTPS 1835 #define MAYBE_TestRedirectHTTPToBadHTTPS DISABLED_TestRedirectHTTPToBadHTTPS
1850 #else 1836 #else
1851 #define MAYBE_TestRedirectHTTPToBadHTTPS TestRedirectHTTPToBadHTTPS 1837 #define MAYBE_TestRedirectHTTPToBadHTTPS TestRedirectHTTPToBadHTTPS
1852 #endif 1838 #endif
1853 1839
1854 // Visit a page over http that is a redirect to a page with bad HTTPS. 1840 // Visit a page over http that is a redirect to a page with bad HTTPS.
1855 IN_PROC_BROWSER_TEST_F(SSLUITest, MAYBE_TestRedirectHTTPToBadHTTPS) { 1841 IN_PROC_BROWSER_TEST_F(SSLUITest, MAYBE_TestRedirectHTTPToBadHTTPS) {
1856 ASSERT_TRUE(test_server()->Start()); 1842 ASSERT_TRUE(embedded_test_server()->Start());
1857 ASSERT_TRUE(https_server_expired_.Start()); 1843 ASSERT_TRUE(https_server_expired_.Start());
1858 1844
1859 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents(); 1845 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents();
1860 1846
1861 GURL http_url = test_server()->GetURL("server-redirect?"); 1847 GURL http_url = embedded_test_server()->GetURL("/server-redirect?");
1862 GURL bad_https_url = 1848 GURL bad_https_url = https_server_expired_.GetURL("/ssl/google.html");
1863 https_server_expired_.GetURL("files/ssl/google.html");
1864 ui_test_utils::NavigateToURL(browser(), 1849 ui_test_utils::NavigateToURL(browser(),
1865 GURL(http_url.spec() + bad_https_url.spec())); 1850 GURL(http_url.spec() + bad_https_url.spec()));
1866 CheckAuthenticationBrokenState( 1851 CheckAuthenticationBrokenState(
1867 tab, net::CERT_STATUS_DATE_INVALID, AuthState::SHOWING_INTERSTITIAL); 1852 tab, net::CERT_STATUS_DATE_INVALID, AuthState::SHOWING_INTERSTITIAL);
1868 1853
1869 ProceedThroughInterstitial(tab); 1854 ProceedThroughInterstitial(tab);
1870 1855
1871 CheckAuthenticationBrokenState( 1856 CheckAuthenticationBrokenState(
1872 tab, net::CERT_STATUS_DATE_INVALID, AuthState::NONE); 1857 tab, net::CERT_STATUS_DATE_INVALID, AuthState::NONE);
1873 } 1858 }
1874 1859
1875 // Visit a page over https that is a redirect to a page with http (to make sure 1860 // Visit a page over https that is a redirect to a page with http (to make sure
1876 // we don't keep the secure state). 1861 // we don't keep the secure state).
1877 IN_PROC_BROWSER_TEST_F(SSLUITest, TestRedirectHTTPSToHTTP) { 1862 IN_PROC_BROWSER_TEST_F(SSLUITest, TestRedirectHTTPSToHTTP) {
1878 ASSERT_TRUE(test_server()->Start()); 1863 ASSERT_TRUE(embedded_test_server()->Start());
1879 ASSERT_TRUE(https_server_.Start()); 1864 ASSERT_TRUE(https_server_.Start());
1880 1865
1881 GURL https_url = https_server_.GetURL("server-redirect?"); 1866 GURL https_url = https_server_.GetURL("/server-redirect?");
1882 GURL http_url = test_server()->GetURL("files/ssl/google.html"); 1867 GURL http_url = embedded_test_server()->GetURL("/ssl/google.html");
1883 1868
1884 ui_test_utils::NavigateToURL(browser(), 1869 ui_test_utils::NavigateToURL(browser(),
1885 GURL(https_url.spec() + http_url.spec())); 1870 GURL(https_url.spec() + http_url.spec()));
1886 CheckUnauthenticatedState( 1871 CheckUnauthenticatedState(
1887 browser()->tab_strip_model()->GetActiveWebContents(), AuthState::NONE); 1872 browser()->tab_strip_model()->GetActiveWebContents(), AuthState::NONE);
1888 } 1873 }
1889 1874
1890 // Visits a page to which we could not connect (bad port) over http and https 1875 // Visits a page to which we could not connect (bad port) over http and https
1891 // and make sure the security style is correct. 1876 // and make sure the security style is correct.
1892 IN_PROC_BROWSER_TEST_F(SSLUITest, TestConnectToBadPort) { 1877 IN_PROC_BROWSER_TEST_F(SSLUITest, TestConnectToBadPort) {
(...skipping 12 matching lines...) Expand all
1905 // 1890 //
1906 // Frame navigation 1891 // Frame navigation
1907 // 1892 //
1908 1893
1909 // From a good HTTPS top frame: 1894 // From a good HTTPS top frame:
1910 // - navigate to an OK HTTPS frame 1895 // - navigate to an OK HTTPS frame
1911 // - navigate to a bad HTTPS (expect unsafe content and filtered frame), then 1896 // - navigate to a bad HTTPS (expect unsafe content and filtered frame), then
1912 // back 1897 // back
1913 // - navigate to HTTP (expect insecure content), then back 1898 // - navigate to HTTP (expect insecure content), then back
1914 IN_PROC_BROWSER_TEST_F(SSLUITest, TestGoodFrameNavigation) { 1899 IN_PROC_BROWSER_TEST_F(SSLUITest, TestGoodFrameNavigation) {
1915 ASSERT_TRUE(test_server()->Start()); 1900 ASSERT_TRUE(embedded_test_server()->Start());
1916 ASSERT_TRUE(https_server_.Start()); 1901 ASSERT_TRUE(https_server_.Start());
1917 ASSERT_TRUE(https_server_expired_.Start()); 1902 ASSERT_TRUE(https_server_expired_.Start());
1918 1903
1919 std::string top_frame_path; 1904 std::string top_frame_path;
1920 ASSERT_TRUE(GetTopFramePath(*test_server(), 1905 GetTopFramePath(*embedded_test_server(), https_server_, https_server_expired_,
1921 https_server_, 1906 &top_frame_path);
1922 https_server_expired_,
1923 &top_frame_path));
1924 1907
1925 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents(); 1908 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents();
1926 ui_test_utils::NavigateToURL(browser(), 1909 ui_test_utils::NavigateToURL(browser(),
1927 https_server_.GetURL(top_frame_path)); 1910 https_server_.GetURL(top_frame_path));
1928 1911
1929 CheckAuthenticatedState(tab, AuthState::NONE); 1912 CheckAuthenticatedState(tab, AuthState::NONE);
1930 1913
1931 bool success = false; 1914 bool success = false;
1932 // Now navigate inside the frame. 1915 // Now navigate inside the frame.
1933 { 1916 {
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
2012 1995
2013 CheckAuthenticationBrokenState( 1996 CheckAuthenticationBrokenState(
2014 tab, 1997 tab,
2015 CertError::NONE, 1998 CertError::NONE,
2016 AuthState::DISPLAYED_INSECURE_CONTENT | AuthState::RAN_INSECURE_CONTENT); 1999 AuthState::DISPLAYED_INSECURE_CONTENT | AuthState::RAN_INSECURE_CONTENT);
2017 } 2000 }
2018 2001
2019 // From a bad HTTPS top frame: 2002 // From a bad HTTPS top frame:
2020 // - navigate to an OK HTTPS frame (expected to be still authentication broken). 2003 // - navigate to an OK HTTPS frame (expected to be still authentication broken).
2021 IN_PROC_BROWSER_TEST_F(SSLUITest, TestBadFrameNavigation) { 2004 IN_PROC_BROWSER_TEST_F(SSLUITest, TestBadFrameNavigation) {
2005 ASSERT_TRUE(embedded_test_server()->Start());
2022 ASSERT_TRUE(https_server_.Start()); 2006 ASSERT_TRUE(https_server_.Start());
2023 ASSERT_TRUE(https_server_expired_.Start()); 2007 ASSERT_TRUE(https_server_expired_.Start());
2024 2008
2025 std::string top_frame_path; 2009 std::string top_frame_path;
2026 ASSERT_TRUE(GetTopFramePath(*test_server(), 2010 GetTopFramePath(*embedded_test_server(), https_server_, https_server_expired_,
2027 https_server_, 2011 &top_frame_path);
2028 https_server_expired_,
2029 &top_frame_path));
2030 2012
2031 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents(); 2013 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents();
2032 ui_test_utils::NavigateToURL(browser(), 2014 ui_test_utils::NavigateToURL(browser(),
2033 https_server_expired_.GetURL(top_frame_path)); 2015 https_server_expired_.GetURL(top_frame_path));
2034 CheckAuthenticationBrokenState( 2016 CheckAuthenticationBrokenState(
2035 tab, net::CERT_STATUS_DATE_INVALID, AuthState::SHOWING_INTERSTITIAL); 2017 tab, net::CERT_STATUS_DATE_INVALID, AuthState::SHOWING_INTERSTITIAL);
2036 2018
2037 ProceedThroughInterstitial(tab); 2019 ProceedThroughInterstitial(tab);
2038 2020
2039 // Navigate to a good frame. 2021 // Navigate to a good frame.
(...skipping 10 matching lines...) Expand all
2050 2032
2051 // We should still be authentication broken. 2033 // We should still be authentication broken.
2052 CheckAuthenticationBrokenState( 2034 CheckAuthenticationBrokenState(
2053 tab, net::CERT_STATUS_DATE_INVALID, AuthState::NONE); 2035 tab, net::CERT_STATUS_DATE_INVALID, AuthState::NONE);
2054 } 2036 }
2055 2037
2056 // From an HTTP top frame, navigate to good and bad HTTPS (security state should 2038 // From an HTTP top frame, navigate to good and bad HTTPS (security state should
2057 // stay unauthenticated). 2039 // stay unauthenticated).
2058 // Disabled, flakily exceeds test timeout, http://crbug.com/43437. 2040 // Disabled, flakily exceeds test timeout, http://crbug.com/43437.
2059 IN_PROC_BROWSER_TEST_F(SSLUITest, DISABLED_TestUnauthenticatedFrameNavigation) { 2041 IN_PROC_BROWSER_TEST_F(SSLUITest, DISABLED_TestUnauthenticatedFrameNavigation) {
2060 ASSERT_TRUE(test_server()->Start()); 2042 ASSERT_TRUE(embedded_test_server()->Start());
2061 ASSERT_TRUE(https_server_.Start()); 2043 ASSERT_TRUE(https_server_.Start());
2062 ASSERT_TRUE(https_server_expired_.Start()); 2044 ASSERT_TRUE(https_server_expired_.Start());
2063 2045
2064 std::string top_frame_path; 2046 std::string top_frame_path;
2065 ASSERT_TRUE(GetTopFramePath(*test_server(), 2047 GetTopFramePath(*embedded_test_server(), https_server_, https_server_expired_,
2066 https_server_, 2048 &top_frame_path);
2067 https_server_expired_,
2068 &top_frame_path));
2069 2049
2070 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents(); 2050 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents();
2071 ui_test_utils::NavigateToURL(browser(), 2051 ui_test_utils::NavigateToURL(browser(),
2072 test_server()->GetURL(top_frame_path)); 2052 embedded_test_server()->GetURL(top_frame_path));
2073 CheckUnauthenticatedState(tab, AuthState::NONE); 2053 CheckUnauthenticatedState(tab, AuthState::NONE);
2074 2054
2075 // Now navigate inside the frame to a secure HTTPS frame. 2055 // Now navigate inside the frame to a secure HTTPS frame.
2076 { 2056 {
2077 bool success = false; 2057 bool success = false;
2078 content::WindowedNotificationObserver observer( 2058 content::WindowedNotificationObserver observer(
2079 content::NOTIFICATION_LOAD_STOP, 2059 content::NOTIFICATION_LOAD_STOP,
2080 content::Source<NavigationController>(&tab->GetController())); 2060 content::Source<NavigationController>(&tab->GetController()));
2081 EXPECT_TRUE(content::ExecuteScriptAndExtractBool( 2061 EXPECT_TRUE(content::ExecuteScriptAndExtractBool(
2082 tab, 2062 tab,
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
2118 EXPECT_FALSE(is_content_evil); 2098 EXPECT_FALSE(is_content_evil);
2119 } 2099 }
2120 2100
2121 IN_PROC_BROWSER_TEST_F(SSLUITest, TestUnsafeContentsInWorkerFiltered) { 2101 IN_PROC_BROWSER_TEST_F(SSLUITest, TestUnsafeContentsInWorkerFiltered) {
2122 ASSERT_TRUE(https_server_.Start()); 2102 ASSERT_TRUE(https_server_.Start());
2123 ASSERT_TRUE(https_server_expired_.Start()); 2103 ASSERT_TRUE(https_server_expired_.Start());
2124 2104
2125 // This page will spawn a Worker which will try to load content from 2105 // This page will spawn a Worker which will try to load content from
2126 // BadCertServer. 2106 // BadCertServer.
2127 std::string page_with_unsafe_worker_path; 2107 std::string page_with_unsafe_worker_path;
2128 ASSERT_TRUE(GetPageWithUnsafeWorkerPath(https_server_expired_, 2108 GetPageWithUnsafeWorkerPath(https_server_expired_,
2129 &page_with_unsafe_worker_path)); 2109 &page_with_unsafe_worker_path);
2130 ui_test_utils::NavigateToURL(browser(), https_server_.GetURL( 2110 ui_test_utils::NavigateToURL(browser(), https_server_.GetURL(
2131 page_with_unsafe_worker_path)); 2111 page_with_unsafe_worker_path));
2132 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents(); 2112 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents();
2133 // Expect Worker not to load insecure content. 2113 // Expect Worker not to load insecure content.
2134 CheckWorkerLoadResult(tab, false); 2114 CheckWorkerLoadResult(tab, false);
2135 // The bad content is filtered, expect the state to be authenticated. 2115 // The bad content is filtered, expect the state to be authenticated.
2136 CheckAuthenticatedState(tab, AuthState::NONE); 2116 CheckAuthenticatedState(tab, AuthState::NONE);
2137 } 2117 }
2138 2118
2139 // This test, and the related test TestUnsafeContentsWithUserException, verify 2119 // This test, and the related test TestUnsafeContentsWithUserException, verify
2140 // that if unsafe content is loaded but the host of that unsafe content has a 2120 // that if unsafe content is loaded but the host of that unsafe content has a
2141 // user exception, the content runs and the security style remains 2121 // user exception, the content runs and the security style remains
2142 // authenticated. This is not necessarily the behavior that should exist, but it 2122 // authenticated. This is not necessarily the behavior that should exist, but it
2143 // is verification that it does behave that way. See https://crbug.com/477868 2123 // is verification that it does behave that way. See https://crbug.com/477868
2144 // for more inforamtion on this. 2124 // for more inforamtion on this.
2145 IN_PROC_BROWSER_TEST_F(SSLUITest, TestUnsafeContentsInWorkerWithUserException) { 2125 IN_PROC_BROWSER_TEST_F(SSLUITest, TestUnsafeContentsInWorkerWithUserException) {
2146 ASSERT_TRUE(https_server_.Start()); 2126 ASSERT_TRUE(https_server_.Start());
2147 // Note that it is necessary to user https_server_mismatched_ here over the 2127 // Note that it is necessary to user https_server_mismatched_ here over the
2148 // other invalid cert servers. This is because the test relies on the two 2128 // other invalid cert servers. This is because the test relies on the two
2149 // servers having different hosts since SSL exceptions are per-host, not per 2129 // servers having different hosts since SSL exceptions are per-host, not per
2150 // origin, and https_server_mismatched_ uses 'localhost' rather than 2130 // origin, and https_server_mismatched_ uses 'localhost' rather than
2151 // '127.0.0.1'. 2131 // '127.0.0.1'.
2152 ASSERT_TRUE(https_server_mismatched_.Start()); 2132 ASSERT_TRUE(https_server_mismatched_.Start());
2153 2133
2154 // Navigate to an unsafe site. Proceed with interstitial page to indicate 2134 // Navigate to an unsafe site. Proceed with interstitial page to indicate
2155 // the user approves the bad certificate. 2135 // the user approves the bad certificate.
2156 ui_test_utils::NavigateToURL( 2136 ui_test_utils::NavigateToURL(
2157 browser(), https_server_mismatched_.GetURL("files/ssl/blank_page.html")); 2137 browser(), https_server_mismatched_.GetURL("/ssl/blank_page.html"));
2158 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents(); 2138 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents();
2159 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_COMMON_NAME_INVALID, 2139 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_COMMON_NAME_INVALID,
2160 AuthState::SHOWING_INTERSTITIAL); 2140 AuthState::SHOWING_INTERSTITIAL);
2161 ProceedThroughInterstitial(tab); 2141 ProceedThroughInterstitial(tab);
2162 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_COMMON_NAME_INVALID, 2142 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_COMMON_NAME_INVALID,
2163 AuthState::NONE); 2143 AuthState::NONE);
2164 2144
2165 // Navigate to safe page that has Worker loading unsafe content. 2145 // Navigate to safe page that has Worker loading unsafe content.
2166 // Expect content to load but be marked as auth broken due to running insecure 2146 // Expect content to load but be marked as auth broken due to running insecure
2167 // content. 2147 // content.
2168 std::string page_with_unsafe_worker_path; 2148 std::string page_with_unsafe_worker_path;
2169 ASSERT_TRUE(GetPageWithUnsafeWorkerPath(https_server_mismatched_, 2149 GetPageWithUnsafeWorkerPath(https_server_mismatched_,
2170 &page_with_unsafe_worker_path)); 2150 &page_with_unsafe_worker_path);
2171 ui_test_utils::NavigateToURL( 2151 ui_test_utils::NavigateToURL(
2172 browser(), https_server_.GetURL(page_with_unsafe_worker_path)); 2152 browser(), https_server_.GetURL(page_with_unsafe_worker_path));
2173 CheckWorkerLoadResult(tab, true); // Worker loads insecure content 2153 CheckWorkerLoadResult(tab, true); // Worker loads insecure content
2174 CheckAuthenticatedState(tab, CertError::NONE); 2154 CheckAuthenticatedState(tab, CertError::NONE);
2175 } 2155 }
2176 2156
2177 // Visits a page with unsafe content and makes sure that if a user exception to 2157 // Visits a page with unsafe content and makes sure that if a user exception to
2178 // the certificate error is present, the image is loaded and script executes. 2158 // the certificate error is present, the image is loaded and script executes.
2179 // 2159 //
2180 // See the comment above SSLUITest.TestUnsafeContentsInWorkerWithUserException 2160 // See the comment above SSLUITest.TestUnsafeContentsInWorkerWithUserException
2181 // for a discussion about the desired behavior. 2161 // for a discussion about the desired behavior.
2182 IN_PROC_BROWSER_TEST_F(SSLUITest, TestUnsafeContentsWithUserException) { 2162 IN_PROC_BROWSER_TEST_F(SSLUITest, TestUnsafeContentsWithUserException) {
2183 ASSERT_TRUE(https_server_.Start()); 2163 ASSERT_TRUE(https_server_.Start());
2184 // Note that it is necessary to user https_server_mismatched_ here over the 2164 // Note that it is necessary to user https_server_mismatched_ here over the
2185 // other invalid cert servers. This is because the test relies on the two 2165 // other invalid cert servers. This is because the test relies on the two
2186 // servers having different hosts since SSL exceptions are per-host, not per 2166 // servers having different hosts since SSL exceptions are per-host, not per
2187 // origin, and https_server_mismatched_ uses 'localhost' rather than 2167 // origin, and https_server_mismatched_ uses 'localhost' rather than
2188 // '127.0.0.1'. 2168 // '127.0.0.1'.
2189 ASSERT_TRUE(https_server_mismatched_.Start()); 2169 ASSERT_TRUE(https_server_mismatched_.Start());
2190 2170
2191 // Navigate to an unsafe site. Proceed with interstitial page to indicate 2171 // Navigate to an unsafe site. Proceed with interstitial page to indicate
2192 // the user approves the bad certificate. 2172 // the user approves the bad certificate.
2193 ui_test_utils::NavigateToURL( 2173 ui_test_utils::NavigateToURL(
2194 browser(), https_server_mismatched_.GetURL("files/ssl/blank_page.html")); 2174 browser(), https_server_mismatched_.GetURL("/ssl/blank_page.html"));
2195 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents(); 2175 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents();
2196 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_COMMON_NAME_INVALID, 2176 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_COMMON_NAME_INVALID,
2197 AuthState::SHOWING_INTERSTITIAL); 2177 AuthState::SHOWING_INTERSTITIAL);
2198 ProceedThroughInterstitial(tab); 2178 ProceedThroughInterstitial(tab);
2199 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_COMMON_NAME_INVALID, 2179 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_COMMON_NAME_INVALID,
2200 AuthState::NONE); 2180 AuthState::NONE);
2201 2181
2202 std::string replacement_path; 2182 std::string replacement_path;
2203 ASSERT_TRUE(GetFilePathWithHostAndPortReplacement( 2183 GetFilePathWithHostAndPortReplacement(
2204 "files/ssl/page_with_unsafe_contents.html", 2184 "/ssl/page_with_unsafe_contents.html",
2205 https_server_mismatched_.host_port_pair(), &replacement_path)); 2185 https_server_mismatched_.host_port_pair(), &replacement_path);
2206 ui_test_utils::NavigateToURL(browser(), 2186 ui_test_utils::NavigateToURL(browser(),
2207 https_server_.GetURL(replacement_path)); 2187 https_server_.GetURL(replacement_path));
2208 2188
2209 // When the bad content is filtered, the state is expected to be 2189 // When the bad content is filtered, the state is expected to be
2210 // authenticated. 2190 // authenticated.
2211 CheckAuthenticatedState(tab, AuthState::NONE); 2191 CheckAuthenticatedState(tab, AuthState::NONE);
2212 2192
2213 int img_width; 2193 int img_width;
2214 EXPECT_TRUE(content::ExecuteScriptAndExtractInt( 2194 EXPECT_TRUE(content::ExecuteScriptAndExtractInt(
2215 tab, "window.domAutomationController.send(ImageWidth());", &img_width)); 2195 tab, "window.domAutomationController.send(ImageWidth());", &img_width));
2216 // In order to check that the image was loaded, we check its width. 2196 // In order to check that the image was loaded, we check its width.
2217 // The actual image (Google logo) is 114 pixels wide, so we assume a good 2197 // The actual image (Google logo) is 114 pixels wide, so we assume a good
2218 // image is greater than 100. 2198 // image is greater than 100.
2219 EXPECT_GT(img_width, 100); 2199 EXPECT_GT(img_width, 100);
2220 2200
2221 bool js_result = false; 2201 bool js_result = false;
2222 EXPECT_TRUE(content::ExecuteScriptAndExtractBool( 2202 EXPECT_TRUE(content::ExecuteScriptAndExtractBool(
2223 tab, "window.domAutomationController.send(IsFooSet());", &js_result)); 2203 tab, "window.domAutomationController.send(IsFooSet());", &js_result));
2224 EXPECT_TRUE(js_result); 2204 EXPECT_TRUE(js_result);
2225 CheckAuthenticatedState(tab, CertError::NONE); 2205 CheckAuthenticatedState(tab, CertError::NONE);
2226 } 2206 }
2227 2207
2228 // Test that when the browser blocks displaying insecure content (images), the 2208 // Test that when the browser blocks displaying insecure content (images), the
2229 // indicator shows a secure page, because the blocking made the otherwise 2209 // indicator shows a secure page, because the blocking made the otherwise
2230 // unsafe page safe (the notification of this state is handled by other means). 2210 // unsafe page safe (the notification of this state is handled by other means).
2231 IN_PROC_BROWSER_TEST_F(SSLUITestBlock, TestBlockDisplayingInsecureImage) { 2211 IN_PROC_BROWSER_TEST_F(SSLUITestBlock, TestBlockDisplayingInsecureImage) {
2232 ASSERT_TRUE(test_server()->Start()); 2212 ASSERT_TRUE(embedded_test_server()->Start());
2233 ASSERT_TRUE(https_server_.Start()); 2213 ASSERT_TRUE(https_server_.Start());
2234 2214
2235 std::string replacement_path; 2215 std::string replacement_path;
2236 ASSERT_TRUE(GetFilePathWithHostAndPortReplacement( 2216 GetFilePathWithHostAndPortReplacement(
2237 "files/ssl/page_displays_insecure_content.html", 2217 "/ssl/page_displays_insecure_content.html",
2238 test_server()->host_port_pair(), 2218 embedded_test_server()->host_port_pair(), &replacement_path);
2239 &replacement_path));
2240 2219
2241 ui_test_utils::NavigateToURL(browser(), 2220 ui_test_utils::NavigateToURL(browser(),
2242 https_server_.GetURL(replacement_path)); 2221 https_server_.GetURL(replacement_path));
2243 2222
2244 CheckAuthenticatedState(browser()->tab_strip_model()->GetActiveWebContents(), 2223 CheckAuthenticatedState(browser()->tab_strip_model()->GetActiveWebContents(),
2245 AuthState::NONE); 2224 AuthState::NONE);
2246 } 2225 }
2247 2226
2248 // Test that when the browser blocks displaying insecure content (iframes), the 2227 // Test that when the browser blocks displaying insecure content (iframes), the
2249 // indicator shows a secure page, because the blocking made the otherwise 2228 // indicator shows a secure page, because the blocking made the otherwise
2250 // unsafe page safe (the notification of this state is handled by other means) 2229 // unsafe page safe (the notification of this state is handled by other means)
2251 IN_PROC_BROWSER_TEST_F(SSLUITestBlock, TestBlockDisplayingInsecureIframe) { 2230 IN_PROC_BROWSER_TEST_F(SSLUITestBlock, TestBlockDisplayingInsecureIframe) {
2252 ASSERT_TRUE(test_server()->Start()); 2231 ASSERT_TRUE(embedded_test_server()->Start());
2253 ASSERT_TRUE(https_server_.Start()); 2232 ASSERT_TRUE(https_server_.Start());
2254 2233
2255 std::string replacement_path; 2234 std::string replacement_path;
2256 ASSERT_TRUE(GetFilePathWithHostAndPortReplacement( 2235 GetFilePathWithHostAndPortReplacement(
2257 "files/ssl/page_displays_insecure_iframe.html", 2236 "/ssl/page_displays_insecure_iframe.html",
2258 test_server()->host_port_pair(), 2237 embedded_test_server()->host_port_pair(), &replacement_path);
2259 &replacement_path));
2260 2238
2261 ui_test_utils::NavigateToURL(browser(), 2239 ui_test_utils::NavigateToURL(browser(),
2262 https_server_.GetURL(replacement_path)); 2240 https_server_.GetURL(replacement_path));
2263 2241
2264 CheckAuthenticatedState(browser()->tab_strip_model()->GetActiveWebContents(), 2242 CheckAuthenticatedState(browser()->tab_strip_model()->GetActiveWebContents(),
2265 AuthState::NONE); 2243 AuthState::NONE);
2266 } 2244 }
2267 2245
2268 // Test that when the browser blocks running insecure content, the 2246 // Test that when the browser blocks running insecure content, the
2269 // indicator shows a secure page, because the blocking made the otherwise 2247 // indicator shows a secure page, because the blocking made the otherwise
2270 // unsafe page safe (the notification of this state is handled by other means). 2248 // unsafe page safe (the notification of this state is handled by other means).
2271 IN_PROC_BROWSER_TEST_F(SSLUITestBlock, TestBlockRunningInsecureContent) { 2249 IN_PROC_BROWSER_TEST_F(SSLUITestBlock, TestBlockRunningInsecureContent) {
2272 ASSERT_TRUE(test_server()->Start()); 2250 ASSERT_TRUE(embedded_test_server()->Start());
2273 ASSERT_TRUE(https_server_.Start()); 2251 ASSERT_TRUE(https_server_.Start());
2274 2252
2275 std::string replacement_path; 2253 std::string replacement_path;
2276 ASSERT_TRUE(GetFilePathWithHostAndPortReplacement( 2254 GetFilePathWithHostAndPortReplacement(
2277 "files/ssl/page_runs_insecure_content.html", 2255 "/ssl/page_runs_insecure_content.html",
2278 test_server()->host_port_pair(), 2256 embedded_test_server()->host_port_pair(), &replacement_path);
2279 &replacement_path));
2280 2257
2281 ui_test_utils::NavigateToURL(browser(), 2258 ui_test_utils::NavigateToURL(browser(),
2282 https_server_.GetURL(replacement_path)); 2259 https_server_.GetURL(replacement_path));
2283 2260
2284 CheckAuthenticatedState(browser()->tab_strip_model()->GetActiveWebContents(), 2261 CheckAuthenticatedState(browser()->tab_strip_model()->GetActiveWebContents(),
2285 AuthState::NONE); 2262 AuthState::NONE);
2286 } 2263 }
2287 2264
2288 // Visit a page and establish a WebSocket connection over bad https with 2265 // Visit a page and establish a WebSocket connection over bad https with
2289 // --ignore-certificate-errors. The connection should be established without 2266 // --ignore-certificate-errors. The connection should be established without
2290 // interstitial page showing. 2267 // interstitial page showing.
2291 IN_PROC_BROWSER_TEST_F(SSLUITestIgnoreCertErrors, TestWSS) { 2268 IN_PROC_BROWSER_TEST_F(SSLUITestIgnoreCertErrors, TestWSS) {
2292 ASSERT_TRUE(test_server()->Start()); 2269 ASSERT_TRUE(embedded_test_server()->Start());
2293 ASSERT_TRUE(wss_server_expired_.Start()); 2270 ASSERT_TRUE(wss_server_expired_.Start());
2294 2271
2295 // Setup page title observer. 2272 // Setup page title observer.
2296 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents(); 2273 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents();
2297 content::TitleWatcher watcher(tab, ASCIIToUTF16("PASS")); 2274 content::TitleWatcher watcher(tab, ASCIIToUTF16("PASS"));
2298 watcher.AlsoWaitForTitle(ASCIIToUTF16("FAIL")); 2275 watcher.AlsoWaitForTitle(ASCIIToUTF16("FAIL"));
2299 2276
2300 // Visit bad HTTPS page. 2277 // Visit bad HTTPS page.
2301 GURL::Replacements replacements; 2278 GURL::Replacements replacements;
2302 replacements.SetSchemeStr("https"); 2279 replacements.SetSchemeStr("https");
2303 ui_test_utils::NavigateToURL( 2280 ui_test_utils::NavigateToURL(browser(),
2304 browser(), 2281 wss_server_expired_.GetURL("connect_check.html")
2305 wss_server_expired_.GetURL( 2282 .ReplaceComponents(replacements));
2306 "connect_check.html").ReplaceComponents(replacements));
2307 2283
2308 // We shouldn't have an interstitial page showing here. 2284 // We shouldn't have an interstitial page showing here.
2309 2285
2310 // Test page run a WebSocket wss connection test. The result will be shown 2286 // Test page run a WebSocket wss connection test. The result will be shown
2311 // as page title. 2287 // as page title.
2312 const base::string16 result = watcher.WaitAndGetTitle(); 2288 const base::string16 result = watcher.WaitAndGetTitle();
2313 EXPECT_TRUE(base::LowerCaseEqualsASCII(result, "pass")); 2289 EXPECT_TRUE(base::LowerCaseEqualsASCII(result, "pass"));
2314 } 2290 }
2315 2291
2316 // Verifies that the interstitial can proceed, even if JavaScript is disabled. 2292 // Verifies that the interstitial can proceed, even if JavaScript is disabled.
2317 // http://crbug.com/322948 2293 // http://crbug.com/322948
2318 #if defined(OS_LINUX) 2294 #if defined(OS_LINUX)
2319 // flaky http://crbug.com/396458 2295 // flaky http://crbug.com/396458
2320 #define MAYBE_TestInterstitialJavaScriptProceeds \ 2296 #define MAYBE_TestInterstitialJavaScriptProceeds \
2321 DISABLED_TestInterstitialJavaScriptProceeds 2297 DISABLED_TestInterstitialJavaScriptProceeds
2322 #else 2298 #else
2323 #define MAYBE_TestInterstitialJavaScriptProceeds \ 2299 #define MAYBE_TestInterstitialJavaScriptProceeds \
2324 TestInterstitialJavaScriptProceeds 2300 TestInterstitialJavaScriptProceeds
2325 #endif 2301 #endif
2326 IN_PROC_BROWSER_TEST_F(SSLUITest, MAYBE_TestInterstitialJavaScriptProceeds) { 2302 IN_PROC_BROWSER_TEST_F(SSLUITest, MAYBE_TestInterstitialJavaScriptProceeds) {
2327 HostContentSettingsMapFactory::GetForProfile(browser()->profile()) 2303 HostContentSettingsMapFactory::GetForProfile(browser()->profile())
2328 ->SetDefaultContentSetting(CONTENT_SETTINGS_TYPE_JAVASCRIPT, 2304 ->SetDefaultContentSetting(CONTENT_SETTINGS_TYPE_JAVASCRIPT,
2329 CONTENT_SETTING_BLOCK); 2305 CONTENT_SETTING_BLOCK);
2330 2306
2331 ASSERT_TRUE(https_server_expired_.Start()); 2307 ASSERT_TRUE(https_server_expired_.Start());
2332 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents(); 2308 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents();
2333 ui_test_utils::NavigateToURL(browser(), 2309 ui_test_utils::NavigateToURL(
2334 https_server_expired_.GetURL("files/ssl/google.html")); 2310 browser(), https_server_expired_.GetURL("/ssl/google.html"));
2335 CheckAuthenticationBrokenState( 2311 CheckAuthenticationBrokenState(
2336 tab, net::CERT_STATUS_DATE_INVALID, AuthState::SHOWING_INTERSTITIAL); 2312 tab, net::CERT_STATUS_DATE_INVALID, AuthState::SHOWING_INTERSTITIAL);
2337 2313
2338 content::WindowedNotificationObserver observer( 2314 content::WindowedNotificationObserver observer(
2339 content::NOTIFICATION_LOAD_STOP, 2315 content::NOTIFICATION_LOAD_STOP,
2340 content::Source<NavigationController>(&tab->GetController())); 2316 content::Source<NavigationController>(&tab->GetController()));
2341 InterstitialPage* interstitial_page = tab->GetInterstitialPage(); 2317 InterstitialPage* interstitial_page = tab->GetInterstitialPage();
2342 ASSERT_EQ(SSLBlockingPage::kTypeForTesting, 2318 ASSERT_EQ(SSLBlockingPage::kTypeForTesting,
2343 interstitial_page->GetDelegateForTesting()->GetTypeForTesting()); 2319 interstitial_page->GetDelegateForTesting()->GetTypeForTesting());
2344 content::RenderViewHost* interstitial_rvh = 2320 content::RenderViewHost* interstitial_rvh =
(...skipping 13 matching lines...) Expand all
2358 2334
2359 // Verifies that the interstitial can go back, even if JavaScript is disabled. 2335 // Verifies that the interstitial can go back, even if JavaScript is disabled.
2360 // http://crbug.com/322948 2336 // http://crbug.com/322948
2361 IN_PROC_BROWSER_TEST_F(SSLUITest, TestInterstitialJavaScriptGoesBack) { 2337 IN_PROC_BROWSER_TEST_F(SSLUITest, TestInterstitialJavaScriptGoesBack) {
2362 HostContentSettingsMapFactory::GetForProfile(browser()->profile()) 2338 HostContentSettingsMapFactory::GetForProfile(browser()->profile())
2363 ->SetDefaultContentSetting(CONTENT_SETTINGS_TYPE_JAVASCRIPT, 2339 ->SetDefaultContentSetting(CONTENT_SETTINGS_TYPE_JAVASCRIPT,
2364 CONTENT_SETTING_BLOCK); 2340 CONTENT_SETTING_BLOCK);
2365 2341
2366 ASSERT_TRUE(https_server_expired_.Start()); 2342 ASSERT_TRUE(https_server_expired_.Start());
2367 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents(); 2343 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents();
2368 ui_test_utils::NavigateToURL(browser(), 2344 ui_test_utils::NavigateToURL(
2369 https_server_expired_.GetURL("files/ssl/google.html")); 2345 browser(), https_server_expired_.GetURL("/ssl/google.html"));
2370 CheckAuthenticationBrokenState( 2346 CheckAuthenticationBrokenState(
2371 tab, net::CERT_STATUS_DATE_INVALID, AuthState::SHOWING_INTERSTITIAL); 2347 tab, net::CERT_STATUS_DATE_INVALID, AuthState::SHOWING_INTERSTITIAL);
2372 2348
2373 content::WindowedNotificationObserver observer( 2349 content::WindowedNotificationObserver observer(
2374 content::NOTIFICATION_RENDER_WIDGET_HOST_DESTROYED, 2350 content::NOTIFICATION_RENDER_WIDGET_HOST_DESTROYED,
2375 content::NotificationService::AllSources()); 2351 content::NotificationService::AllSources());
2376 InterstitialPage* interstitial_page = tab->GetInterstitialPage(); 2352 InterstitialPage* interstitial_page = tab->GetInterstitialPage();
2377 ASSERT_EQ(SSLBlockingPage::kTypeForTesting, 2353 ASSERT_EQ(SSLBlockingPage::kTypeForTesting,
2378 interstitial_page->GetDelegateForTesting()->GetTypeForTesting()); 2354 interstitial_page->GetDelegateForTesting()->GetTypeForTesting());
2379 content::RenderViewHost* interstitial_rvh = 2355 content::RenderViewHost* interstitial_rvh =
2380 interstitial_page->GetMainFrame()->GetRenderViewHost(); 2356 interstitial_page->GetMainFrame()->GetRenderViewHost();
2381 int result = -1; 2357 int result = -1;
2382 std::string javascript = base::StringPrintf( 2358 std::string javascript = base::StringPrintf(
2383 "window.domAutomationController.send(%d);", 2359 "window.domAutomationController.send(%d);",
2384 SecurityInterstitialPage::CMD_DONT_PROCEED); 2360 SecurityInterstitialPage::CMD_DONT_PROCEED);
2385 ASSERT_TRUE(content::ExecuteScriptAndExtractInt( 2361 ASSERT_TRUE(content::ExecuteScriptAndExtractInt(
2386 interstitial_rvh, javascript, &result)); 2362 interstitial_rvh, javascript, &result));
2387 // The above will hang without the fix. 2363 // The above will hang without the fix.
2388 EXPECT_EQ(0, result); 2364 EXPECT_EQ(0, result);
2389 observer.Wait(); 2365 observer.Wait();
2390 EXPECT_EQ("about:blank", tab->GetVisibleURL().spec()); 2366 EXPECT_EQ("about:blank", tab->GetVisibleURL().spec());
2391 } 2367 }
2392 2368
2393 // Verifies that switching tabs, while showing interstitial page, will not 2369 // Verifies that switching tabs, while showing interstitial page, will not
2394 // affect the visibility of the interestitial. 2370 // affect the visibility of the interestitial.
2395 // https://crbug.com/381439 2371 // https://crbug.com/381439
2396 IN_PROC_BROWSER_TEST_F(SSLUITest, InterstitialNotAffectedByHideShow) { 2372 IN_PROC_BROWSER_TEST_F(SSLUITest, InterstitialNotAffectedByHideShow) {
2397 ASSERT_TRUE(https_server_expired_.Start()); 2373 ASSERT_TRUE(https_server_expired_.Start());
2374 ASSERT_TRUE(https_server_.Start());
2375
2398 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents(); 2376 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents();
2399 EXPECT_TRUE(tab->GetRenderWidgetHostView()->IsShowing()); 2377 EXPECT_TRUE(tab->GetRenderWidgetHostView()->IsShowing());
2400 ui_test_utils::NavigateToURL( 2378 ui_test_utils::NavigateToURL(
2401 browser(), https_server_expired_.GetURL("files/ssl/google.html")); 2379 browser(), https_server_expired_.GetURL("/ssl/google.html"));
2402 CheckAuthenticationBrokenState( 2380 CheckAuthenticationBrokenState(
2403 tab, net::CERT_STATUS_DATE_INVALID, AuthState::SHOWING_INTERSTITIAL); 2381 tab, net::CERT_STATUS_DATE_INVALID, AuthState::SHOWING_INTERSTITIAL);
2404 EXPECT_TRUE(tab->GetRenderWidgetHostView()->IsShowing()); 2382 EXPECT_TRUE(tab->GetRenderWidgetHostView()->IsShowing());
2405 2383
2406 AddTabAtIndex(0, 2384 AddTabAtIndex(0, https_server_.GetURL("/ssl/google.html"),
2407 https_server_.GetURL("files/ssl/google.html"),
2408 ui::PAGE_TRANSITION_TYPED); 2385 ui::PAGE_TRANSITION_TYPED);
2409 EXPECT_EQ(2, browser()->tab_strip_model()->count()); 2386 EXPECT_EQ(2, browser()->tab_strip_model()->count());
2410 EXPECT_EQ(0, browser()->tab_strip_model()->active_index()); 2387 EXPECT_EQ(0, browser()->tab_strip_model()->active_index());
2411 EXPECT_EQ(tab, browser()->tab_strip_model()->GetWebContentsAt(1)); 2388 EXPECT_EQ(tab, browser()->tab_strip_model()->GetWebContentsAt(1));
2412 EXPECT_FALSE(tab->GetRenderWidgetHostView()->IsShowing()); 2389 EXPECT_FALSE(tab->GetRenderWidgetHostView()->IsShowing());
2413 2390
2414 browser()->tab_strip_model()->ActivateTabAt(1, true); 2391 browser()->tab_strip_model()->ActivateTabAt(1, true);
2415 EXPECT_TRUE(tab->GetRenderWidgetHostView()->IsShowing()); 2392 EXPECT_TRUE(tab->GetRenderWidgetHostView()->IsShowing());
2416 } 2393 }
2417 2394
2418 // Verifies that if a bad certificate is seen for a host and the user proceeds 2395 // Verifies that if a bad certificate is seen for a host and the user proceeds
2419 // through the interstitial, the decision to proceed is initially remembered. 2396 // through the interstitial, the decision to proceed is initially remembered.
2420 // However, if this is followed by another visit, and a good certificate 2397 // However, if this is followed by another visit, and a good certificate
2421 // is seen for the same host, the original exception is forgotten. 2398 // is seen for the same host, the original exception is forgotten.
2422 IN_PROC_BROWSER_TEST_F(SSLUITest, BadCertFollowedByGoodCert) { 2399 IN_PROC_BROWSER_TEST_F(SSLUITest, BadCertFollowedByGoodCert) {
2423 // It is necessary to use |https_server_expired_| rather than 2400 // It is necessary to use |https_server_expired_| rather than
2424 // |https_server_mismatched| because the former shares a host with 2401 // |https_server_mismatched| because the former shares a host with
2425 // |https_server_| and cert exceptions are per host. 2402 // |https_server_| and cert exceptions are per host.
2426 ASSERT_TRUE(https_server_expired_.Start()); 2403 ASSERT_TRUE(https_server_expired_.Start());
2427 ASSERT_TRUE(https_server_.Start()); 2404 ASSERT_TRUE(https_server_.Start());
2428 2405
2429 std::string https_server_expired_host = 2406 std::string https_server_expired_host =
2430 https_server_.GetURL("files/ssl/google.html").host(); 2407 https_server_.GetURL("/ssl/google.html").host();
2431 std::string https_server_host = 2408 std::string https_server_host =
2432 https_server_.GetURL("files/ssl/google.html").host(); 2409 https_server_.GetURL("/ssl/google.html").host();
2433 ASSERT_EQ(https_server_expired_host, https_server_host); 2410 ASSERT_EQ(https_server_expired_host, https_server_host);
2434 2411
2435 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents(); 2412 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents();
2436 2413
2437 Profile* profile = Profile::FromBrowserContext(tab->GetBrowserContext()); 2414 Profile* profile = Profile::FromBrowserContext(tab->GetBrowserContext());
2438 ChromeSSLHostStateDelegate* state = 2415 ChromeSSLHostStateDelegate* state =
2439 reinterpret_cast<ChromeSSLHostStateDelegate*>( 2416 reinterpret_cast<ChromeSSLHostStateDelegate*>(
2440 profile->GetSSLHostStateDelegate()); 2417 profile->GetSSLHostStateDelegate());
2441 2418
2442 ui_test_utils::NavigateToURL( 2419 ui_test_utils::NavigateToURL(
2443 browser(), https_server_expired_.GetURL("files/ssl/google.html")); 2420 browser(), https_server_expired_.GetURL("/ssl/google.html"));
2444 2421
2445 ProceedThroughInterstitial(tab); 2422 ProceedThroughInterstitial(tab);
2446 EXPECT_TRUE(state->HasAllowException(https_server_host)); 2423 EXPECT_TRUE(state->HasAllowException(https_server_host));
2447 2424
2448 ui_test_utils::NavigateToURL(browser(), 2425 ui_test_utils::NavigateToURL(browser(),
2449 https_server_.GetURL("files/ssl/google.html")); 2426 https_server_.GetURL("/ssl/google.html"));
2450 ASSERT_FALSE(tab->GetInterstitialPage()); 2427 ASSERT_FALSE(tab->GetInterstitialPage());
2451 EXPECT_FALSE(state->HasAllowException(https_server_host)); 2428 EXPECT_FALSE(state->HasAllowException(https_server_host));
2452 } 2429 }
2453 2430
2454 // Tests that the SSLStatus of a navigation entry for an SSL 2431 // Tests that the SSLStatus of a navigation entry for an SSL
2455 // interstitial matches the navigation entry once the interstitial is 2432 // interstitial matches the navigation entry once the interstitial is
2456 // clicked through. https://crbug.com/529456 2433 // clicked through. https://crbug.com/529456
2457 IN_PROC_BROWSER_TEST_F(SSLUITest, 2434 IN_PROC_BROWSER_TEST_F(SSLUITest,
2458 SSLStatusMatchesOnInterstitialAndAfterProceed) { 2435 SSLStatusMatchesOnInterstitialAndAfterProceed) {
2459 ASSERT_TRUE(https_server_expired_.Start()); 2436 ASSERT_TRUE(https_server_expired_.Start());
2460 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents(); 2437 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents();
2461 ASSERT_TRUE(tab); 2438 ASSERT_TRUE(tab);
2462 2439
2463 ui_test_utils::NavigateToURL( 2440 ui_test_utils::NavigateToURL(
2464 browser(), https_server_expired_.GetURL("files/ssl/google.html")); 2441 browser(), https_server_expired_.GetURL("/ssl/google.html"));
2465 content::WaitForInterstitialAttach(tab); 2442 content::WaitForInterstitialAttach(tab);
2466 EXPECT_TRUE(tab->ShowingInterstitialPage()); 2443 EXPECT_TRUE(tab->ShowingInterstitialPage());
2467 2444
2468 content::NavigationEntry* entry = tab->GetController().GetActiveEntry(); 2445 content::NavigationEntry* entry = tab->GetController().GetActiveEntry();
2469 ASSERT_TRUE(entry); 2446 ASSERT_TRUE(entry);
2470 content::SSLStatus interstitial_ssl_status = entry->GetSSL(); 2447 content::SSLStatus interstitial_ssl_status = entry->GetSSL();
2471 2448
2472 ProceedThroughInterstitial(tab); 2449 ProceedThroughInterstitial(tab);
2473 EXPECT_FALSE(tab->ShowingInterstitialPage()); 2450 EXPECT_FALSE(tab->ShowingInterstitialPage());
2474 entry = tab->GetController().GetActiveEntry(); 2451 entry = tab->GetController().GetActiveEntry();
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
2539 command_line->AppendSwitchASCII(switches::kForceFieldTrials, 2516 command_line->AppendSwitchASCII(switches::kForceFieldTrials,
2540 "SSLCommonNameMismatchHandling/Enabled/"); 2517 "SSLCommonNameMismatchHandling/Enabled/");
2541 } 2518 }
2542 }; 2519 };
2543 2520
2544 // Visit the URL www.mail.example.com on a server that presents a valid 2521 // Visit the URL www.mail.example.com on a server that presents a valid
2545 // certificate for mail.example.com. Verify that the page navigates to 2522 // certificate for mail.example.com. Verify that the page navigates to
2546 // mail.example.com. 2523 // mail.example.com.
2547 IN_PROC_BROWSER_TEST_F(CommonNameMismatchBrowserTest, 2524 IN_PROC_BROWSER_TEST_F(CommonNameMismatchBrowserTest,
2548 ShouldShowWWWSubdomainMismatchInterstitial) { 2525 ShouldShowWWWSubdomainMismatchInterstitial) {
2549 net::SpawnedTestServer https_server_example_domain_( 2526 net::EmbeddedTestServer https_server_example_domain_(
2550 net::SpawnedTestServer::TYPE_HTTPS, 2527 net::EmbeddedTestServer::TYPE_HTTPS);
2551 net::SpawnedTestServer::SSLOptions( 2528 https_server_example_domain_.ServeFilesFromSourceDirectory(
2552 net::SpawnedTestServer::SSLOptions::CERT_OK),
2553 base::FilePath(kDocRoot)); 2529 base::FilePath(kDocRoot));
2554 ASSERT_TRUE(https_server_example_domain_.Start()); 2530 ASSERT_TRUE(https_server_example_domain_.Start());
2555 2531
2556 host_resolver()->AddRule( 2532 host_resolver()->AddRule(
2557 "mail.example.com", https_server_example_domain_.host_port_pair().host()); 2533 "mail.example.com", https_server_example_domain_.host_port_pair().host());
2558 host_resolver()->AddRule( 2534 host_resolver()->AddRule(
2559 "www.mail.example.com", 2535 "www.mail.example.com",
2560 https_server_example_domain_.host_port_pair().host()); 2536 https_server_example_domain_.host_port_pair().host());
2561 2537
2562 scoped_refptr<net::X509Certificate> cert = 2538 scoped_refptr<net::X509Certificate> cert =
(...skipping 15 matching lines...) Expand all
2578 net::CertVerifyResult verify_result_valid; 2554 net::CertVerifyResult verify_result_valid;
2579 verify_result_valid.verified_cert = 2555 verify_result_valid.verified_cert =
2580 net::ImportCertFromFile(net::GetTestCertsDirectory(), "spdy_pooling.pem"); 2556 net::ImportCertFromFile(net::GetTestCertsDirectory(), "spdy_pooling.pem");
2581 // Request to "www.mail.example.com" should not result in any error. 2557 // Request to "www.mail.example.com" should not result in any error.
2582 mock_cert_verifier()->AddResultForCertAndHost(cert.get(), "mail.example.com", 2558 mock_cert_verifier()->AddResultForCertAndHost(cert.get(), "mail.example.com",
2583 verify_result_valid, net::OK); 2559 verify_result_valid, net::OK);
2584 2560
2585 // Use a complex URL to ensure the path, etc., are preserved. The path itself 2561 // Use a complex URL to ensure the path, etc., are preserved. The path itself
2586 // does not matter. 2562 // does not matter.
2587 GURL https_server_url = 2563 GURL https_server_url =
2588 https_server_example_domain_.GetURL("files/ssl/google.html?a=b#anchor"); 2564 https_server_example_domain_.GetURL("/ssl/google.html?a=b#anchor");
2589 GURL::Replacements replacements; 2565 GURL::Replacements replacements;
2590 replacements.SetHostStr("www.mail.example.com"); 2566 replacements.SetHostStr("www.mail.example.com");
2591 GURL https_server_mismatched_url = 2567 GURL https_server_mismatched_url =
2592 https_server_url.ReplaceComponents(replacements); 2568 https_server_url.ReplaceComponents(replacements);
2593 2569
2594 WebContents* contents = browser()->tab_strip_model()->GetActiveWebContents(); 2570 WebContents* contents = browser()->tab_strip_model()->GetActiveWebContents();
2595 content::TestNavigationObserver observer(contents, 2); 2571 content::TestNavigationObserver observer(contents, 2);
2596 ui_test_utils::NavigateToURL(browser(), https_server_mismatched_url); 2572 ui_test_utils::NavigateToURL(browser(), https_server_mismatched_url);
2597 observer.Wait(); 2573 observer.Wait();
2598 2574
2599 CheckSecurityState(contents, CertError::NONE, 2575 CheckSecurityState(contents, CertError::NONE,
2600 content::SECURITY_STYLE_AUTHENTICATED, AuthState::NONE); 2576 content::SECURITY_STYLE_AUTHENTICATED, AuthState::NONE);
2601 replacements.SetHostStr("mail.example.com"); 2577 replacements.SetHostStr("mail.example.com");
2602 GURL https_server_new_url = https_server_url.ReplaceComponents(replacements); 2578 GURL https_server_new_url = https_server_url.ReplaceComponents(replacements);
2603 // Verify that the current URL is the suggested URL. 2579 // Verify that the current URL is the suggested URL.
2604 EXPECT_EQ(https_server_new_url.spec(), 2580 EXPECT_EQ(https_server_new_url.spec(),
2605 contents->GetLastCommittedURL().spec()); 2581 contents->GetLastCommittedURL().spec());
2606 } 2582 }
2607 2583
2608 // Visit the URL example.org on a server that presents a valid certificate 2584 // Visit the URL example.org on a server that presents a valid certificate
2609 // for www.example.org. Verify that the page redirects to www.example.org. 2585 // for www.example.org. Verify that the page redirects to www.example.org.
2610 IN_PROC_BROWSER_TEST_F(CommonNameMismatchBrowserTest, 2586 IN_PROC_BROWSER_TEST_F(CommonNameMismatchBrowserTest,
2611 CheckWWWSubdomainMismatchInverse) { 2587 CheckWWWSubdomainMismatchInverse) {
2612 net::SpawnedTestServer https_server_example_domain_( 2588 net::EmbeddedTestServer https_server_example_domain_(
2613 net::SpawnedTestServer::TYPE_HTTPS, 2589 net::EmbeddedTestServer::TYPE_HTTPS);
2614 net::SpawnedTestServer::SSLOptions( 2590 https_server_example_domain_.ServeFilesFromSourceDirectory(
2615 net::SpawnedTestServer::SSLOptions::CERT_OK),
2616 base::FilePath(kDocRoot)); 2591 base::FilePath(kDocRoot));
2617 ASSERT_TRUE(https_server_example_domain_.Start()); 2592 ASSERT_TRUE(https_server_example_domain_.Start());
2618 2593
2619 host_resolver()->AddRule( 2594 host_resolver()->AddRule(
2620 "www.example.org", https_server_example_domain_.host_port_pair().host()); 2595 "www.example.org", https_server_example_domain_.host_port_pair().host());
2621 host_resolver()->AddRule( 2596 host_resolver()->AddRule(
2622 "example.org", https_server_example_domain_.host_port_pair().host()); 2597 "example.org", https_server_example_domain_.host_port_pair().host());
2623 2598
2624 scoped_refptr<net::X509Certificate> cert = 2599 scoped_refptr<net::X509Certificate> cert =
2625 https_server_example_domain_.GetCertificate(); 2600 https_server_example_domain_.GetCertificate();
2626 2601
2627 net::CertVerifyResult verify_result; 2602 net::CertVerifyResult verify_result;
2628 verify_result.verified_cert = 2603 verify_result.verified_cert =
2629 net::ImportCertFromFile(net::GetTestCertsDirectory(), "spdy_pooling.pem"); 2604 net::ImportCertFromFile(net::GetTestCertsDirectory(), "spdy_pooling.pem");
2630 verify_result.cert_status = net::CERT_STATUS_COMMON_NAME_INVALID; 2605 verify_result.cert_status = net::CERT_STATUS_COMMON_NAME_INVALID;
2631 2606
2632 mock_cert_verifier()->AddResultForCertAndHost( 2607 mock_cert_verifier()->AddResultForCertAndHost(
2633 cert.get(), "example.org", verify_result, 2608 cert.get(), "example.org", verify_result,
2634 net::ERR_CERT_COMMON_NAME_INVALID); 2609 net::ERR_CERT_COMMON_NAME_INVALID);
2635 2610
2636 net::CertVerifyResult verify_result_valid; 2611 net::CertVerifyResult verify_result_valid;
2637 verify_result_valid.verified_cert = 2612 verify_result_valid.verified_cert =
2638 net::ImportCertFromFile(net::GetTestCertsDirectory(), "spdy_pooling.pem"); 2613 net::ImportCertFromFile(net::GetTestCertsDirectory(), "spdy_pooling.pem");
2639 mock_cert_verifier()->AddResultForCertAndHost(cert.get(), "www.example.org", 2614 mock_cert_verifier()->AddResultForCertAndHost(cert.get(), "www.example.org",
2640 verify_result_valid, net::OK); 2615 verify_result_valid, net::OK);
2641 2616
2642 GURL https_server_url = 2617 GURL https_server_url =
2643 https_server_example_domain_.GetURL("files/ssl/google.html?a=b"); 2618 https_server_example_domain_.GetURL("/ssl/google.html?a=b");
2644 GURL::Replacements replacements; 2619 GURL::Replacements replacements;
2645 replacements.SetHostStr("example.org"); 2620 replacements.SetHostStr("example.org");
2646 GURL https_server_mismatched_url = 2621 GURL https_server_mismatched_url =
2647 https_server_url.ReplaceComponents(replacements); 2622 https_server_url.ReplaceComponents(replacements);
2648 2623
2649 WebContents* contents = browser()->tab_strip_model()->GetActiveWebContents(); 2624 WebContents* contents = browser()->tab_strip_model()->GetActiveWebContents();
2650 content::TestNavigationObserver observer(contents, 2); 2625 content::TestNavigationObserver observer(contents, 2);
2651 ui_test_utils::NavigateToURL(browser(), https_server_mismatched_url); 2626 ui_test_utils::NavigateToURL(browser(), https_server_mismatched_url);
2652 observer.Wait(); 2627 observer.Wait();
2653 2628
2654 CheckSecurityState(contents, CertError::NONE, 2629 CheckSecurityState(contents, CertError::NONE,
2655 content::SECURITY_STYLE_AUTHENTICATED, AuthState::NONE); 2630 content::SECURITY_STYLE_AUTHENTICATED, AuthState::NONE);
2656 } 2631 }
2657 2632
2658 // Tests this scenario: 2633 // Tests this scenario:
2659 // - |CommonNameMismatchHandler| does not give a callback as it's set into the 2634 // - |CommonNameMismatchHandler| does not give a callback as it's set into the
2660 // state |IGNORE_REQUESTS_FOR_TESTING|. So no suggested URL check result can 2635 // state |IGNORE_REQUESTS_FOR_TESTING|. So no suggested URL check result can
2661 // arrive. 2636 // arrive.
2662 // - A cert error triggers an interstitial timer with a very long timeout. 2637 // - A cert error triggers an interstitial timer with a very long timeout.
2663 // - No suggested URL check results arrive, causing the tab to appear as loading 2638 // - No suggested URL check results arrive, causing the tab to appear as loading
2664 // indefinitely (also because the timer has a long timeout). 2639 // indefinitely (also because the timer has a long timeout).
2665 // - Stopping the page load shouldn't result in any interstitials. 2640 // - Stopping the page load shouldn't result in any interstitials.
2666 IN_PROC_BROWSER_TEST_F(CommonNameMismatchBrowserTest, 2641 IN_PROC_BROWSER_TEST_F(CommonNameMismatchBrowserTest,
2667 InterstitialStopNavigationWhileLoading) { 2642 InterstitialStopNavigationWhileLoading) {
2668 net::SpawnedTestServer https_server_example_domain_( 2643 net::EmbeddedTestServer https_server_example_domain_(
2669 net::SpawnedTestServer::TYPE_HTTPS, 2644 net::EmbeddedTestServer::TYPE_HTTPS);
2670 net::SpawnedTestServer::SSLOptions( 2645 https_server_example_domain_.ServeFilesFromSourceDirectory(
2671 net::SpawnedTestServer::SSLOptions::CERT_OK),
2672 base::FilePath(kDocRoot)); 2646 base::FilePath(kDocRoot));
2673 ASSERT_TRUE(https_server_example_domain_.Start()); 2647 ASSERT_TRUE(https_server_example_domain_.Start());
2674 2648
2675 host_resolver()->AddRule( 2649 host_resolver()->AddRule(
2676 "mail.example.com", https_server_example_domain_.host_port_pair().host()); 2650 "mail.example.com", https_server_example_domain_.host_port_pair().host());
2677 host_resolver()->AddRule( 2651 host_resolver()->AddRule(
2678 "www.mail.example.com", 2652 "www.mail.example.com",
2679 https_server_example_domain_.host_port_pair().host()); 2653 https_server_example_domain_.host_port_pair().host());
2680 2654
2681 scoped_refptr<net::X509Certificate> cert = 2655 scoped_refptr<net::X509Certificate> cert =
2682 https_server_example_domain_.GetCertificate(); 2656 https_server_example_domain_.GetCertificate();
2683 2657
2684 net::CertVerifyResult verify_result; 2658 net::CertVerifyResult verify_result;
2685 verify_result.verified_cert = 2659 verify_result.verified_cert =
2686 net::ImportCertFromFile(net::GetTestCertsDirectory(), "spdy_pooling.pem"); 2660 net::ImportCertFromFile(net::GetTestCertsDirectory(), "spdy_pooling.pem");
2687 verify_result.cert_status = net::CERT_STATUS_COMMON_NAME_INVALID; 2661 verify_result.cert_status = net::CERT_STATUS_COMMON_NAME_INVALID;
2688 2662
2689 mock_cert_verifier()->AddResultForCertAndHost( 2663 mock_cert_verifier()->AddResultForCertAndHost(
2690 cert.get(), "www.mail.example.com", verify_result, 2664 cert.get(), "www.mail.example.com", verify_result,
2691 net::ERR_CERT_COMMON_NAME_INVALID); 2665 net::ERR_CERT_COMMON_NAME_INVALID);
2692 2666
2693 net::CertVerifyResult verify_result_valid; 2667 net::CertVerifyResult verify_result_valid;
2694 verify_result_valid.verified_cert = 2668 verify_result_valid.verified_cert =
2695 net::ImportCertFromFile(net::GetTestCertsDirectory(), "spdy_pooling.pem"); 2669 net::ImportCertFromFile(net::GetTestCertsDirectory(), "spdy_pooling.pem");
2696 mock_cert_verifier()->AddResultForCertAndHost(cert.get(), "mail.example.com", 2670 mock_cert_verifier()->AddResultForCertAndHost(cert.get(), "mail.example.com",
2697 verify_result_valid, net::OK); 2671 verify_result_valid, net::OK);
2698 2672
2699 GURL https_server_url = 2673 GURL https_server_url =
2700 https_server_example_domain_.GetURL("files/ssl/google.html?a=b"); 2674 https_server_example_domain_.GetURL("/ssl/google.html?a=b");
2701 GURL::Replacements replacements; 2675 GURL::Replacements replacements;
2702 replacements.SetHostStr("www.mail.example.com"); 2676 replacements.SetHostStr("www.mail.example.com");
2703 GURL https_server_mismatched_url = 2677 GURL https_server_mismatched_url =
2704 https_server_url.ReplaceComponents(replacements); 2678 https_server_url.ReplaceComponents(replacements);
2705 2679
2706 WebContents* contents = browser()->tab_strip_model()->GetActiveWebContents(); 2680 WebContents* contents = browser()->tab_strip_model()->GetActiveWebContents();
2707 CommonNameMismatchHandler::set_state_for_testing( 2681 CommonNameMismatchHandler::set_state_for_testing(
2708 CommonNameMismatchHandler::IGNORE_REQUESTS_FOR_TESTING); 2682 CommonNameMismatchHandler::IGNORE_REQUESTS_FOR_TESTING);
2709 // Set delay long enough so that the page appears loading. 2683 // Set delay long enough so that the page appears loading.
2710 SSLErrorHandler::SetInterstitialDelayForTest(base::TimeDelta::FromHours(1)); 2684 SSLErrorHandler::SetInterstitialDelayForTest(base::TimeDelta::FromHours(1));
(...skipping 16 matching lines...) Expand all
2727 // Make sure that the |SSLErrorHandler| is deleted. 2701 // Make sure that the |SSLErrorHandler| is deleted.
2728 EXPECT_FALSE(ssl_error_handler); 2702 EXPECT_FALSE(ssl_error_handler);
2729 EXPECT_FALSE(contents->ShowingInterstitialPage()); 2703 EXPECT_FALSE(contents->ShowingInterstitialPage());
2730 EXPECT_FALSE(contents->IsLoading()); 2704 EXPECT_FALSE(contents->IsLoading());
2731 } 2705 }
2732 2706
2733 // Same as above, but instead of stopping, the loading page is reloaded. The end 2707 // Same as above, but instead of stopping, the loading page is reloaded. The end
2734 // result is the same. (i.e. page load stops, no interstitials shown) 2708 // result is the same. (i.e. page load stops, no interstitials shown)
2735 IN_PROC_BROWSER_TEST_F(CommonNameMismatchBrowserTest, 2709 IN_PROC_BROWSER_TEST_F(CommonNameMismatchBrowserTest,
2736 InterstitialReloadNavigationWhileLoading) { 2710 InterstitialReloadNavigationWhileLoading) {
2737 net::SpawnedTestServer https_server_example_domain_( 2711 net::EmbeddedTestServer https_server_example_domain_(
2738 net::SpawnedTestServer::TYPE_HTTPS, 2712 net::EmbeddedTestServer::TYPE_HTTPS);
2739 net::SpawnedTestServer::SSLOptions( 2713 https_server_example_domain_.ServeFilesFromSourceDirectory(
2740 net::SpawnedTestServer::SSLOptions::CERT_OK),
2741 base::FilePath(kDocRoot)); 2714 base::FilePath(kDocRoot));
2742 ASSERT_TRUE(https_server_example_domain_.Start()); 2715 ASSERT_TRUE(https_server_example_domain_.Start());
2743 2716
2744 host_resolver()->AddRule( 2717 host_resolver()->AddRule(
2745 "mail.example.com", https_server_example_domain_.host_port_pair().host()); 2718 "mail.example.com", https_server_example_domain_.host_port_pair().host());
2746 host_resolver()->AddRule( 2719 host_resolver()->AddRule(
2747 "www.mail.example.com", 2720 "www.mail.example.com",
2748 https_server_example_domain_.host_port_pair().host()); 2721 https_server_example_domain_.host_port_pair().host());
2749 2722
2750 scoped_refptr<net::X509Certificate> cert = 2723 scoped_refptr<net::X509Certificate> cert =
2751 https_server_example_domain_.GetCertificate(); 2724 https_server_example_domain_.GetCertificate();
2752 2725
2753 net::CertVerifyResult verify_result; 2726 net::CertVerifyResult verify_result;
2754 verify_result.verified_cert = 2727 verify_result.verified_cert =
2755 net::ImportCertFromFile(net::GetTestCertsDirectory(), "spdy_pooling.pem"); 2728 net::ImportCertFromFile(net::GetTestCertsDirectory(), "spdy_pooling.pem");
2756 verify_result.cert_status = net::CERT_STATUS_COMMON_NAME_INVALID; 2729 verify_result.cert_status = net::CERT_STATUS_COMMON_NAME_INVALID;
2757 2730
2758 mock_cert_verifier()->AddResultForCertAndHost( 2731 mock_cert_verifier()->AddResultForCertAndHost(
2759 cert.get(), "www.mail.example.com", verify_result, 2732 cert.get(), "www.mail.example.com", verify_result,
2760 net::ERR_CERT_COMMON_NAME_INVALID); 2733 net::ERR_CERT_COMMON_NAME_INVALID);
2761 2734
2762 net::CertVerifyResult verify_result_valid; 2735 net::CertVerifyResult verify_result_valid;
2763 verify_result_valid.verified_cert = 2736 verify_result_valid.verified_cert =
2764 net::ImportCertFromFile(net::GetTestCertsDirectory(), "spdy_pooling.pem"); 2737 net::ImportCertFromFile(net::GetTestCertsDirectory(), "spdy_pooling.pem");
2765 mock_cert_verifier()->AddResultForCertAndHost(cert.get(), "mail.example.com", 2738 mock_cert_verifier()->AddResultForCertAndHost(cert.get(), "mail.example.com",
2766 verify_result_valid, net::OK); 2739 verify_result_valid, net::OK);
2767 2740
2768 GURL https_server_url = 2741 GURL https_server_url =
2769 https_server_example_domain_.GetURL("files/ssl/google.html?a=b"); 2742 https_server_example_domain_.GetURL("/ssl/google.html?a=b");
2770 GURL::Replacements replacements; 2743 GURL::Replacements replacements;
2771 replacements.SetHostStr("www.mail.example.com"); 2744 replacements.SetHostStr("www.mail.example.com");
2772 GURL https_server_mismatched_url = 2745 GURL https_server_mismatched_url =
2773 https_server_url.ReplaceComponents(replacements); 2746 https_server_url.ReplaceComponents(replacements);
2774 2747
2775 WebContents* contents = browser()->tab_strip_model()->GetActiveWebContents(); 2748 WebContents* contents = browser()->tab_strip_model()->GetActiveWebContents();
2776 CommonNameMismatchHandler::set_state_for_testing( 2749 CommonNameMismatchHandler::set_state_for_testing(
2777 CommonNameMismatchHandler::IGNORE_REQUESTS_FOR_TESTING); 2750 CommonNameMismatchHandler::IGNORE_REQUESTS_FOR_TESTING);
2778 // Set delay long enough so that the page appears loading. 2751 // Set delay long enough so that the page appears loading.
2779 SSLErrorHandler::SetInterstitialDelayForTest(base::TimeDelta::FromHours(1)); 2752 SSLErrorHandler::SetInterstitialDelayForTest(base::TimeDelta::FromHours(1));
(...skipping 14 matching lines...) Expand all
2794 // Make sure that the |SSLErrorHandler| is deleted. 2767 // Make sure that the |SSLErrorHandler| is deleted.
2795 EXPECT_FALSE(ssl_error_handler); 2768 EXPECT_FALSE(ssl_error_handler);
2796 EXPECT_FALSE(contents->ShowingInterstitialPage()); 2769 EXPECT_FALSE(contents->ShowingInterstitialPage());
2797 EXPECT_FALSE(contents->IsLoading()); 2770 EXPECT_FALSE(contents->IsLoading());
2798 } 2771 }
2799 2772
2800 // Same as above, but instead of reloading, the page is navigated away. The 2773 // Same as above, but instead of reloading, the page is navigated away. The
2801 // new page should load, and no interstitials should be shown. 2774 // new page should load, and no interstitials should be shown.
2802 IN_PROC_BROWSER_TEST_F(CommonNameMismatchBrowserTest, 2775 IN_PROC_BROWSER_TEST_F(CommonNameMismatchBrowserTest,
2803 InterstitialNavigateAwayWhileLoading) { 2776 InterstitialNavigateAwayWhileLoading) {
2804 net::SpawnedTestServer https_server_example_domain_( 2777 net::EmbeddedTestServer https_server_example_domain_(
2805 net::SpawnedTestServer::TYPE_HTTPS, 2778 net::EmbeddedTestServer::TYPE_HTTPS);
2806 net::SpawnedTestServer::SSLOptions( 2779 https_server_example_domain_.ServeFilesFromSourceDirectory(
2807 net::SpawnedTestServer::SSLOptions::CERT_OK),
2808 base::FilePath(kDocRoot)); 2780 base::FilePath(kDocRoot));
2809 ASSERT_TRUE(https_server_example_domain_.Start()); 2781 ASSERT_TRUE(https_server_example_domain_.Start());
2810 2782
2811 host_resolver()->AddRule( 2783 host_resolver()->AddRule(
2812 "mail.example.com", https_server_example_domain_.host_port_pair().host()); 2784 "mail.example.com", https_server_example_domain_.host_port_pair().host());
2813 host_resolver()->AddRule( 2785 host_resolver()->AddRule(
2814 "www.mail.example.com", 2786 "www.mail.example.com",
2815 https_server_example_domain_.host_port_pair().host()); 2787 https_server_example_domain_.host_port_pair().host());
2816 2788
2817 scoped_refptr<net::X509Certificate> cert = 2789 scoped_refptr<net::X509Certificate> cert =
2818 https_server_example_domain_.GetCertificate(); 2790 https_server_example_domain_.GetCertificate();
2819 2791
2820 net::CertVerifyResult verify_result; 2792 net::CertVerifyResult verify_result;
2821 verify_result.verified_cert = 2793 verify_result.verified_cert =
2822 net::ImportCertFromFile(net::GetTestCertsDirectory(), "spdy_pooling.pem"); 2794 net::ImportCertFromFile(net::GetTestCertsDirectory(), "spdy_pooling.pem");
2823 verify_result.cert_status = net::CERT_STATUS_COMMON_NAME_INVALID; 2795 verify_result.cert_status = net::CERT_STATUS_COMMON_NAME_INVALID;
2824 2796
2825 mock_cert_verifier()->AddResultForCertAndHost( 2797 mock_cert_verifier()->AddResultForCertAndHost(
2826 cert.get(), "www.mail.example.com", verify_result, 2798 cert.get(), "www.mail.example.com", verify_result,
2827 net::ERR_CERT_COMMON_NAME_INVALID); 2799 net::ERR_CERT_COMMON_NAME_INVALID);
2828 2800
2829 net::CertVerifyResult verify_result_valid; 2801 net::CertVerifyResult verify_result_valid;
2830 verify_result_valid.verified_cert = 2802 verify_result_valid.verified_cert =
2831 net::ImportCertFromFile(net::GetTestCertsDirectory(), "spdy_pooling.pem"); 2803 net::ImportCertFromFile(net::GetTestCertsDirectory(), "spdy_pooling.pem");
2832 mock_cert_verifier()->AddResultForCertAndHost(cert.get(), "mail.example.com", 2804 mock_cert_verifier()->AddResultForCertAndHost(cert.get(), "mail.example.com",
2833 verify_result_valid, net::OK); 2805 verify_result_valid, net::OK);
2834 2806
2835 GURL https_server_url = 2807 GURL https_server_url =
2836 https_server_example_domain_.GetURL("files/ssl/google.html?a=b"); 2808 https_server_example_domain_.GetURL("/ssl/google.html?a=b");
2837 GURL::Replacements replacements; 2809 GURL::Replacements replacements;
2838 replacements.SetHostStr("www.mail.example.com"); 2810 replacements.SetHostStr("www.mail.example.com");
2839 GURL https_server_mismatched_url = 2811 GURL https_server_mismatched_url =
2840 https_server_url.ReplaceComponents(replacements); 2812 https_server_url.ReplaceComponents(replacements);
2841 2813
2842 WebContents* contents = browser()->tab_strip_model()->GetActiveWebContents(); 2814 WebContents* contents = browser()->tab_strip_model()->GetActiveWebContents();
2843 CommonNameMismatchHandler::set_state_for_testing( 2815 CommonNameMismatchHandler::set_state_for_testing(
2844 CommonNameMismatchHandler::IGNORE_REQUESTS_FOR_TESTING); 2816 CommonNameMismatchHandler::IGNORE_REQUESTS_FOR_TESTING);
2845 // Set delay long enough so that the page appears loading. 2817 // Set delay long enough so that the page appears loading.
2846 SSLErrorHandler::SetInterstitialDelayForTest(base::TimeDelta::FromHours(1)); 2818 SSLErrorHandler::SetInterstitialDelayForTest(base::TimeDelta::FromHours(1));
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
2879 contents, net::ERR_CERT_CONTAINS_ERRORS, ssl_info, request_url, 0, 2851 contents, net::ERR_CERT_CONTAINS_ERRORS, ssl_info, request_url, 0,
2880 base::Time::NowFromSystemTime(), nullptr, base::Callback<void(bool)>()); 2852 base::Time::NowFromSystemTime(), nullptr, base::Callback<void(bool)>());
2881 } 2853 }
2882 }; 2854 };
2883 2855
2884 IN_PROC_BROWSER_TEST_F(SSLBlockingPageIDNTest, SSLBlockingPageDecodesIDN) { 2856 IN_PROC_BROWSER_TEST_F(SSLBlockingPageIDNTest, SSLBlockingPageDecodesIDN) {
2885 EXPECT_TRUE(VerifyIDNDecoded()); 2857 EXPECT_TRUE(VerifyIDNDecoded());
2886 } 2858 }
2887 2859
2888 IN_PROC_BROWSER_TEST_F(CertVerifierBrowserTest, MockCertVerifierSmokeTest) { 2860 IN_PROC_BROWSER_TEST_F(CertVerifierBrowserTest, MockCertVerifierSmokeTest) {
2889 net::SpawnedTestServer https_server( 2861 net::EmbeddedTestServer https_server(net::EmbeddedTestServer::TYPE_HTTPS);
2890 net::SpawnedTestServer::TYPE_HTTPS, 2862 https_server.ServeFilesFromSourceDirectory(base::FilePath(kDocRoot));
2891 net::SpawnedTestServer::SSLOptions(
2892 net::SpawnedTestServer::SSLOptions::CERT_OK),
2893 base::FilePath(kDocRoot));
2894 ASSERT_TRUE(https_server.Start()); 2863 ASSERT_TRUE(https_server.Start());
2895 2864
2896 mock_cert_verifier()->set_default_result( 2865 mock_cert_verifier()->set_default_result(
2897 net::ERR_CERT_NAME_CONSTRAINT_VIOLATION); 2866 net::ERR_CERT_NAME_CONSTRAINT_VIOLATION);
2898 2867
2899 ui_test_utils::NavigateToURL(browser(), 2868 ui_test_utils::NavigateToURL(browser(),
2900 https_server.GetURL("files/ssl/google.html")); 2869 https_server.GetURL("/ssl/google.html"));
2901 2870
2902 CheckSecurityState(browser()->tab_strip_model()->GetActiveWebContents(), 2871 CheckSecurityState(browser()->tab_strip_model()->GetActiveWebContents(),
2903 net::CERT_STATUS_NAME_CONSTRAINT_VIOLATION, 2872 net::CERT_STATUS_NAME_CONSTRAINT_VIOLATION,
2904 content::SECURITY_STYLE_AUTHENTICATION_BROKEN, 2873 content::SECURITY_STYLE_AUTHENTICATION_BROKEN,
2905 AuthState::SHOWING_INTERSTITIAL); 2874 AuthState::SHOWING_INTERSTITIAL);
2906 } 2875 }
2907 2876
2908 // TODO(jcampan): more tests to do below. 2877 // TODO(jcampan): more tests to do below.
2909 2878
2910 // Visit a page over https that contains a frame with a redirect. 2879 // Visit a page over https that contains a frame with a redirect.
2911 2880
2912 // XMLHttpRequest insecure content in synchronous mode. 2881 // XMLHttpRequest insecure content in synchronous mode.
2913 2882
2914 // XMLHttpRequest insecure content in asynchronous mode. 2883 // XMLHttpRequest insecure content in asynchronous mode.
2915 2884
2916 // XMLHttpRequest over bad ssl in synchronous mode. 2885 // XMLHttpRequest over bad ssl in synchronous mode.
2917 2886
2918 // XMLHttpRequest over OK ssl in synchronous mode. 2887 // XMLHttpRequest over OK ssl in synchronous mode.
OLDNEW
« no previous file with comments | « chrome/browser/ssl/security_state_model_browser_tests.cc ('k') | chrome/browser/storage/durable_storage_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698