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

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

Issue 184483002: Set insecure content status also when there are other security issues. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Added browser test & set insecure content flag only in secure connection. Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | content/browser/ssl/ssl_policy.cc » ('j') | content/browser/ssl/ssl_policy.cc » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/command_line.h" 5 #include "base/command_line.h"
6 #include "base/path_service.h" 6 #include "base/path_service.h"
7 #include "base/prefs/pref_service.h" 7 #include "base/prefs/pref_service.h"
8 #include "base/strings/string_util.h" 8 #include "base/strings/string_util.h"
9 #include "base/strings/stringprintf.h" 9 #include "base/strings/stringprintf.h"
10 #include "base/strings/utf_string_conversions.h" 10 #include "base/strings/utf_string_conversions.h"
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after
139 void CheckAuthenticatedState(WebContents* tab, 139 void CheckAuthenticatedState(WebContents* tab,
140 bool expected_displayed_insecure_content) { 140 bool expected_displayed_insecure_content) {
141 CheckState(tab, content::SECURITY_STYLE_AUTHENTICATED, 141 CheckState(tab, content::SECURITY_STYLE_AUTHENTICATED,
142 expected_displayed_insecure_content, false); 142 expected_displayed_insecure_content, false);
143 } 143 }
144 144
145 void CheckUnauthenticatedState(WebContents* tab) { 145 void CheckUnauthenticatedState(WebContents* tab) {
146 CheckState(tab, content::SECURITY_STYLE_UNAUTHENTICATED, false, false); 146 CheckState(tab, content::SECURITY_STYLE_UNAUTHENTICATED, false, false);
147 } 147 }
148 148
149 void CheckBrokenAuthenticatedState(WebContents* tab) { 149 void CheckBrokenAuthenticatedState(WebContents* tab,
150 CheckState(tab, content::SECURITY_STYLE_AUTHENTICATION_BROKEN, false, true); 150 bool expected_displayed_insecure_content) {
151 CheckState(tab, content::SECURITY_STYLE_AUTHENTICATION_BROKEN,
152 expected_displayed_insecure_content, true);
151 } 153 }
152 154
153 void CheckAuthenticationBrokenState(WebContents* tab, 155 void CheckAuthenticationBrokenState(WebContents* tab,
154 net::CertStatus error, 156 net::CertStatus error,
157 bool displayed_insecure_content,
155 bool ran_insecure_content, 158 bool ran_insecure_content,
156 bool interstitial) { 159 bool interstitial) {
Ryan Sleevi 2014/03/11 01:46:55 I'm wondering whether we should change these three
157 ASSERT_FALSE(tab->IsCrashed()); 160 ASSERT_FALSE(tab->IsCrashed());
158 NavigationEntry* entry = tab->GetController().GetActiveEntry(); 161 NavigationEntry* entry = tab->GetController().GetActiveEntry();
159 ASSERT_TRUE(entry); 162 ASSERT_TRUE(entry);
160 EXPECT_EQ(interstitial ? 163 EXPECT_EQ(interstitial ?
161 content::PAGE_TYPE_INTERSTITIAL : content::PAGE_TYPE_NORMAL, 164 content::PAGE_TYPE_INTERSTITIAL : content::PAGE_TYPE_NORMAL,
162 entry->GetPageType()); 165 entry->GetPageType());
163 EXPECT_EQ(content::SECURITY_STYLE_AUTHENTICATION_BROKEN, 166 EXPECT_EQ(content::SECURITY_STYLE_AUTHENTICATION_BROKEN,
164 entry->GetSSL().security_style); 167 entry->GetSSL().security_style);
165 // CERT_STATUS_UNABLE_TO_CHECK_REVOCATION doesn't lower the security style 168 // CERT_STATUS_UNABLE_TO_CHECK_REVOCATION doesn't lower the security style
166 // to SECURITY_STYLE_AUTHENTICATION_BROKEN. 169 // to SECURITY_STYLE_AUTHENTICATION_BROKEN.
167 ASSERT_NE(net::CERT_STATUS_UNABLE_TO_CHECK_REVOCATION, error); 170 ASSERT_NE(net::CERT_STATUS_UNABLE_TO_CHECK_REVOCATION, error);
168 EXPECT_EQ(error, entry->GetSSL().cert_status & error); 171 EXPECT_EQ(error, entry->GetSSL().cert_status & error);
169 EXPECT_FALSE(!!(entry->GetSSL().content_status & 172 EXPECT_EQ(displayed_insecure_content,
170 SSLStatus::DISPLAYED_INSECURE_CONTENT)); 173 !!(entry->GetSSL().content_status &
174 SSLStatus::DISPLAYED_INSECURE_CONTENT));
171 EXPECT_EQ(ran_insecure_content, 175 EXPECT_EQ(ran_insecure_content,
172 !!(entry->GetSSL().content_status & SSLStatus::RAN_INSECURE_CONTENT)); 176 !!(entry->GetSSL().content_status & SSLStatus::RAN_INSECURE_CONTENT));
173 net::CertStatus extra_cert_errors = error ^ (entry->GetSSL().cert_status & 177 net::CertStatus extra_cert_errors = error ^ (entry->GetSSL().cert_status &
174 net::CERT_STATUS_ALL_ERRORS); 178 net::CERT_STATUS_ALL_ERRORS);
175 if (extra_cert_errors) 179 if (extra_cert_errors)
176 LOG(WARNING) << "Got unexpected cert error: " << extra_cert_errors; 180 LOG(WARNING) << "Got unexpected cert error: " << extra_cert_errors;
177 } 181 }
178 182
179 void CheckWorkerLoadResult(WebContents* tab, bool expected_load) { 183 void CheckWorkerLoadResult(WebContents* tab, bool expected_load) {
180 // Workers are async and we don't have notifications for them passing 184 // Workers are async and we don't have notifications for them passing
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after
358 https_server_expired_.host_port_pair(), 362 https_server_expired_.host_port_pair(),
359 &replacement_path)); 363 &replacement_path));
360 364
361 ui_test_utils::NavigateToURL( 365 ui_test_utils::NavigateToURL(
362 browser(), test_server()->GetURL(replacement_path)); 366 browser(), test_server()->GetURL(replacement_path));
363 367
364 CheckUnauthenticatedState( 368 CheckUnauthenticatedState(
365 browser()->tab_strip_model()->GetActiveWebContents()); 369 browser()->tab_strip_model()->GetActiveWebContents());
366 } 370 }
367 371
372 IN_PROC_BROWSER_TEST_F(SSLUITest, TestBrokenHTTPSWithInsecureContent) {
373 ASSERT_TRUE(test_server()->Start());
374 ASSERT_TRUE(https_server_expired_.Start());
375
376 std::string replacement_path;
377 ASSERT_TRUE(GetFilePathWithHostAndPortReplacement(
378 "files/ssl/page_displays_insecure_content.html",
379 test_server()->host_port_pair(),
380 &replacement_path));
381
382 ui_test_utils::NavigateToURL(browser(),
383 https_server_expired_.GetURL(replacement_path));
384
385 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents();
386 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_DATE_INVALID,
387 false, false, true);
388
389 ProceedThroughInterstitial(tab);
390
391 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_DATE_INVALID,
392 true, false, false);
393 }
394
368 // http://crbug.com/91745 395 // http://crbug.com/91745
369 #if defined(OS_CHROMEOS) 396 #if defined(OS_CHROMEOS)
370 #define MAYBE_TestOKHTTPS DISABLED_TestOKHTTPS 397 #define MAYBE_TestOKHTTPS DISABLED_TestOKHTTPS
371 #else 398 #else
372 #define MAYBE_TestOKHTTPS TestOKHTTPS 399 #define MAYBE_TestOKHTTPS TestOKHTTPS
373 #endif 400 #endif
374 401
375 // Visits a page over OK https: 402 // Visits a page over OK https:
376 IN_PROC_BROWSER_TEST_F(SSLUITest, MAYBE_TestOKHTTPS) { 403 IN_PROC_BROWSER_TEST_F(SSLUITest, MAYBE_TestOKHTTPS) {
377 ASSERT_TRUE(https_server_.Start()); 404 ASSERT_TRUE(https_server_.Start());
378 405
379 ui_test_utils::NavigateToURL(browser(), 406 ui_test_utils::NavigateToURL(browser(),
380 https_server_.GetURL("files/ssl/google.html")); 407 https_server_.GetURL("files/ssl/google.html"));
381 408
382 CheckAuthenticatedState( 409 CheckAuthenticatedState(
383 browser()->tab_strip_model()->GetActiveWebContents(), false); 410 browser()->tab_strip_model()->GetActiveWebContents(), false);
384 } 411 }
385 412
386 // Visits a page with https error and proceed: 413 // Visits a page with https error and proceed:
387 IN_PROC_BROWSER_TEST_F(SSLUITest, TestHTTPSExpiredCertAndProceed) { 414 IN_PROC_BROWSER_TEST_F(SSLUITest, TestHTTPSExpiredCertAndProceed) {
388 ASSERT_TRUE(https_server_expired_.Start()); 415 ASSERT_TRUE(https_server_expired_.Start());
389 416
390 ui_test_utils::NavigateToURL(browser(), 417 ui_test_utils::NavigateToURL(browser(),
391 https_server_expired_.GetURL("files/ssl/google.html")); 418 https_server_expired_.GetURL("files/ssl/google.html"));
392 419
393 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents(); 420 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents();
394 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_DATE_INVALID, false, 421 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_DATE_INVALID, false,
395 true); // Interstitial showing 422 false, true); // Interstitial showing
396 423
397 ProceedThroughInterstitial(tab); 424 ProceedThroughInterstitial(tab);
398 425
399 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_DATE_INVALID, false, 426 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_DATE_INVALID, false,
400 false); // No interstitial showing 427 false, false); // No interstitial showing
401 } 428 }
402 429
403 #ifndef NEDBUG 430 #ifndef NEDBUG
404 // Flaky on Windows debug (http://crbug.com/280537). 431 // Flaky on Windows debug (http://crbug.com/280537).
405 #define MAYBE_TestHTTPSExpiredCertAndDontProceed \ 432 #define MAYBE_TestHTTPSExpiredCertAndDontProceed \
406 DISABLED_TestHTTPSExpiredCertAndDontProceed 433 DISABLED_TestHTTPSExpiredCertAndDontProceed
407 #else 434 #else
408 #define MAYBE_TestHTTPSExpiredCertAndDontProceed \ 435 #define MAYBE_TestHTTPSExpiredCertAndDontProceed \
409 TestHTTPSExpiredCertAndDontProceed 436 TestHTTPSExpiredCertAndDontProceed
410 #endif 437 #endif
(...skipping 21 matching lines...) Expand all
432 GURL::Replacements replacements; 459 GURL::Replacements replacements;
433 std::string new_host("localhost"); 460 std::string new_host("localhost");
434 replacements.SetHostStr(new_host); 461 replacements.SetHostStr(new_host);
435 cross_site_url = cross_site_url.ReplaceComponents(replacements); 462 cross_site_url = cross_site_url.ReplaceComponents(replacements);
436 463
437 // Now go to a bad HTTPS page. 464 // Now go to a bad HTTPS page.
438 ui_test_utils::NavigateToURL(browser(), cross_site_url); 465 ui_test_utils::NavigateToURL(browser(), cross_site_url);
439 466
440 // An interstitial should be showing. 467 // An interstitial should be showing.
441 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_COMMON_NAME_INVALID, 468 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_COMMON_NAME_INVALID,
442 false, true); 469 false, false, true);
443 470
444 // Simulate user clicking "Take me back". 471 // Simulate user clicking "Take me back".
445 InterstitialPage* interstitial_page = tab->GetInterstitialPage(); 472 InterstitialPage* interstitial_page = tab->GetInterstitialPage();
446 ASSERT_TRUE(interstitial_page); 473 ASSERT_TRUE(interstitial_page);
447 interstitial_page->DontProceed(); 474 interstitial_page->DontProceed();
448 475
449 // We should be back to the original good page. 476 // We should be back to the original good page.
450 CheckAuthenticatedState(tab, false); 477 CheckAuthenticatedState(tab, false);
451 478
452 // Try to navigate to a new page. (to make sure bug 5800 is fixed). 479 // Try to navigate to a new page. (to make sure bug 5800 is fixed).
(...skipping 12 matching lines...) Expand all
465 ui_test_utils::NavigateToURL(browser(), 492 ui_test_utils::NavigateToURL(browser(),
466 test_server()->GetURL("files/ssl/google.html")); 493 test_server()->GetURL("files/ssl/google.html"));
467 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents(); 494 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents();
468 NavigationEntry* entry = tab->GetController().GetActiveEntry(); 495 NavigationEntry* entry = tab->GetController().GetActiveEntry();
469 ASSERT_TRUE(entry); 496 ASSERT_TRUE(entry);
470 497
471 // Now go to a bad HTTPS page that shows an interstitial. 498 // Now go to a bad HTTPS page that shows an interstitial.
472 ui_test_utils::NavigateToURL(browser(), 499 ui_test_utils::NavigateToURL(browser(),
473 https_server_expired_.GetURL("files/ssl/google.html")); 500 https_server_expired_.GetURL("files/ssl/google.html"));
474 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_DATE_INVALID, false, 501 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_DATE_INVALID, false,
475 true); // Interstitial showing 502 false, true); // Interstitial showing
476 503
477 ProvisionalLoadWaiter load_failed_observer(tab); 504 ProvisionalLoadWaiter load_failed_observer(tab);
478 505
479 // Simulate user clicking on back button (crbug.com/39248). 506 // Simulate user clicking on back button (crbug.com/39248).
480 chrome::GoBack(browser(), CURRENT_TAB); 507 chrome::GoBack(browser(), CURRENT_TAB);
481 508
482 // Wait until we hear the load failure, and make sure we haven't swapped out 509 // Wait until we hear the load failure, and make sure we haven't swapped out
483 // the previous page. Prevents regression of http://crbug.com/82667. 510 // the previous page. Prevents regression of http://crbug.com/82667.
484 load_failed_observer.Wait(); 511 load_failed_observer.Wait();
485 EXPECT_FALSE(content::RenderViewHostTester::IsRenderViewHostSwappedOut( 512 EXPECT_FALSE(content::RenderViewHostTester::IsRenderViewHostSwappedOut(
(...skipping 16 matching lines...) Expand all
502 ui_test_utils::NavigateToURL(browser(), 529 ui_test_utils::NavigateToURL(browser(),
503 test_server()->GetURL("files/ssl/google.html")); 530 test_server()->GetURL("files/ssl/google.html"));
504 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents(); 531 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents();
505 NavigationEntry* entry = tab->GetController().GetActiveEntry(); 532 NavigationEntry* entry = tab->GetController().GetActiveEntry();
506 ASSERT_TRUE(entry); 533 ASSERT_TRUE(entry);
507 534
508 // Now go to a bad HTTPS page that shows an interstitial. 535 // Now go to a bad HTTPS page that shows an interstitial.
509 ui_test_utils::NavigateToURL(browser(), 536 ui_test_utils::NavigateToURL(browser(),
510 https_server_expired_.GetURL("files/ssl/google.html")); 537 https_server_expired_.GetURL("files/ssl/google.html"));
511 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_DATE_INVALID, false, 538 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_DATE_INVALID, false,
512 true); // Interstitial showing 539 false, true); // Interstitial showing
513 540
514 // Simulate user clicking and holding on back button (crbug.com/37215). 541 // Simulate user clicking and holding on back button (crbug.com/37215).
515 tab->GetController().GoToOffset(-1); 542 tab->GetController().GoToOffset(-1);
516 543
517 // We should be back at the original good page. 544 // We should be back at the original good page.
518 EXPECT_FALSE(browser()->tab_strip_model()->GetActiveWebContents()-> 545 EXPECT_FALSE(browser()->tab_strip_model()->GetActiveWebContents()->
519 GetInterstitialPage()); 546 GetInterstitialPage());
520 CheckUnauthenticatedState(tab); 547 CheckUnauthenticatedState(tab);
521 } 548 }
522 549
(...skipping 22 matching lines...) Expand all
545 observer.Wait(); 572 observer.Wait();
546 } 573 }
547 ASSERT_TRUE(tab->GetController().CanGoForward()); 574 ASSERT_TRUE(tab->GetController().CanGoForward());
548 NavigationEntry* entry3 = tab->GetController().GetActiveEntry(); 575 NavigationEntry* entry3 = tab->GetController().GetActiveEntry();
549 ASSERT_TRUE(entry1 == entry3); 576 ASSERT_TRUE(entry1 == entry3);
550 577
551 // Now go to a bad HTTPS page that shows an interstitial. 578 // Now go to a bad HTTPS page that shows an interstitial.
552 ui_test_utils::NavigateToURL(browser(), 579 ui_test_utils::NavigateToURL(browser(),
553 https_server_expired_.GetURL("files/ssl/google.html")); 580 https_server_expired_.GetURL("files/ssl/google.html"));
554 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_DATE_INVALID, false, 581 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_DATE_INVALID, false,
555 true); // Interstitial showing 582 false, true); // Interstitial showing
556 583
557 // Simulate user clicking and holding on forward button. 584 // Simulate user clicking and holding on forward button.
558 { 585 {
559 content::WindowedNotificationObserver observer( 586 content::WindowedNotificationObserver observer(
560 content::NOTIFICATION_LOAD_STOP, 587 content::NOTIFICATION_LOAD_STOP,
561 content::Source<NavigationController>(&tab->GetController())); 588 content::Source<NavigationController>(&tab->GetController()));
562 tab->GetController().GoToOffset(1); 589 tab->GetController().GoToOffset(1);
563 observer.Wait(); 590 observer.Wait();
564 } 591 }
565 592
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
634 661
635 // Visit bad HTTPS page. 662 // Visit bad HTTPS page.
636 std::string scheme("https"); 663 std::string scheme("https");
637 GURL::Replacements replacements; 664 GURL::Replacements replacements;
638 replacements.SetSchemeStr(scheme); 665 replacements.SetSchemeStr(scheme);
639 ui_test_utils::NavigateToURL( 666 ui_test_utils::NavigateToURL(
640 browser(), 667 browser(),
641 wss_server_expired_.GetURL( 668 wss_server_expired_.GetURL(
642 "connect_check.html").ReplaceComponents(replacements)); 669 "connect_check.html").ReplaceComponents(replacements));
643 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_DATE_INVALID, false, 670 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_DATE_INVALID, false,
644 true); // Interstitial showing 671 false, true); // Interstitial showing
645 672
646 // Proceed anyway. 673 // Proceed anyway.
647 ProceedThroughInterstitial(tab); 674 ProceedThroughInterstitial(tab);
648 675
649 // Test page run a WebSocket wss connection test. The result will be shown 676 // Test page run a WebSocket wss connection test. The result will be shown
650 // as page title. 677 // as page title.
651 const base::string16 result = watcher.WaitAndGetTitle(); 678 const base::string16 result = watcher.WaitAndGetTitle();
652 EXPECT_TRUE(LowerCaseEqualsASCII(result, "pass")); 679 EXPECT_TRUE(LowerCaseEqualsASCII(result, "pass"));
653 } 680 }
654 681
(...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after
845 // Based on http://crbug.com/8706 872 // Based on http://crbug.com/8706
846 IN_PROC_BROWSER_TEST_F(SSLUITest, 873 IN_PROC_BROWSER_TEST_F(SSLUITest,
847 TestRunsInsecuredContentRandomizeHash) { 874 TestRunsInsecuredContentRandomizeHash) {
848 ASSERT_TRUE(test_server()->Start()); 875 ASSERT_TRUE(test_server()->Start());
849 ASSERT_TRUE(https_server_.Start()); 876 ASSERT_TRUE(https_server_.Start());
850 877
851 ui_test_utils::NavigateToURL(browser(), https_server_.GetURL( 878 ui_test_utils::NavigateToURL(browser(), https_server_.GetURL(
852 "files/ssl/page_runs_insecure_content.html")); 879 "files/ssl/page_runs_insecure_content.html"));
853 880
854 CheckAuthenticationBrokenState( 881 CheckAuthenticationBrokenState(
855 browser()->tab_strip_model()->GetActiveWebContents(), 0, true, false); 882 browser()->tab_strip_model()->GetActiveWebContents(),
883 0, true, true, false);
856 } 884 }
857 885
858 // Visits a page with unsafe content and make sure that: 886 // Visits a page with unsafe content and make sure that:
859 // - frames content is replaced with warning 887 // - frames content is replaced with warning
860 // - images and scripts are filtered out entirely 888 // - images and scripts are filtered out entirely
861 IN_PROC_BROWSER_TEST_F(SSLUITest, TestUnsafeContents) { 889 IN_PROC_BROWSER_TEST_F(SSLUITest, TestUnsafeContents) {
862 ASSERT_TRUE(https_server_.Start()); 890 ASSERT_TRUE(https_server_.Start());
863 ASSERT_TRUE(https_server_expired_.Start()); 891 ASSERT_TRUE(https_server_expired_.Start());
864 892
865 std::string replacement_path; 893 std::string replacement_path;
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after
1002 content::NOTIFICATION_LOAD_STOP, 1030 content::NOTIFICATION_LOAD_STOP,
1003 content::NotificationService::AllSources()); 1031 content::NotificationService::AllSources());
1004 chrome::Navigate(&params); 1032 chrome::Navigate(&params);
1005 WebContents* tab2 = params.target_contents; 1033 WebContents* tab2 = params.target_contents;
1006 observer.Wait(); 1034 observer.Wait();
1007 1035
1008 // Both tabs should have the same process. 1036 // Both tabs should have the same process.
1009 EXPECT_EQ(tab1->GetRenderProcessHost(), tab2->GetRenderProcessHost()); 1037 EXPECT_EQ(tab1->GetRenderProcessHost(), tab2->GetRenderProcessHost());
1010 1038
1011 // The new tab has insecure content. 1039 // The new tab has insecure content.
1012 CheckAuthenticationBrokenState(tab2, 0, true, false); 1040 CheckAuthenticationBrokenState(tab2, 0, true, true, false);
1013 1041
1014 // Which means the origin for the first tab has also been contaminated with 1042 // Which means the origin for the first tab has also been contaminated with
1015 // insecure content. 1043 // insecure content.
1016 CheckAuthenticationBrokenState(tab1, 0, true, false); 1044 CheckAuthenticationBrokenState(tab1, 0, false, true, false);
joleksy 2014/03/03 11:22:45 Note: RAN_INSECURE_CONTENT is stored at host level
Ryan Sleevi 2014/03/11 01:46:55 Right. Active content has the potential of corrupt
1017 } 1045 }
1018 1046
1019 // Visits a page with an image over http. Visits another page over https 1047 // Visits a page with an image over http. Visits another page over https
1020 // referencing that same image over http (hoping it is coming from the webcore 1048 // referencing that same image over http (hoping it is coming from the webcore
1021 // memory cache). 1049 // memory cache).
1022 IN_PROC_BROWSER_TEST_F(SSLUITest, TestDisplaysCachedInsecureContent) { 1050 IN_PROC_BROWSER_TEST_F(SSLUITest, TestDisplaysCachedInsecureContent) {
1023 ASSERT_TRUE(test_server()->Start()); 1051 ASSERT_TRUE(test_server()->Start());
1024 ASSERT_TRUE(https_server_.Start()); 1052 ASSERT_TRUE(https_server_.Start());
1025 1053
1026 std::string replacement_path; 1054 std::string replacement_path;
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
1066 // Load original page over HTTP. 1094 // Load original page over HTTP.
1067 const GURL url_http = test_server()->GetURL(replacement_path); 1095 const GURL url_http = test_server()->GetURL(replacement_path);
1068 ui_test_utils::NavigateToURL(browser(), url_http); 1096 ui_test_utils::NavigateToURL(browser(), url_http);
1069 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents(); 1097 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents();
1070 CheckUnauthenticatedState(tab); 1098 CheckUnauthenticatedState(tab);
1071 1099
1072 // Load again but over SSL. It should be marked as displaying insecure 1100 // Load again but over SSL. It should be marked as displaying insecure
1073 // content (even though the image comes from the WebCore memory cache). 1101 // content (even though the image comes from the WebCore memory cache).
1074 const GURL url_https = https_server_.GetURL(replacement_path); 1102 const GURL url_https = https_server_.GetURL(replacement_path);
1075 ui_test_utils::NavigateToURL(browser(), url_https); 1103 ui_test_utils::NavigateToURL(browser(), url_https);
1076 CheckAuthenticationBrokenState(tab, 0, true, false); 1104 CheckAuthenticationBrokenState(tab, 0, true, true, false);
1077 } 1105 }
1078 1106
1079 // This test ensures the CN invalid status does not 'stick' to a certificate 1107 // This test ensures the CN invalid status does not 'stick' to a certificate
1080 // (see bug #1044942) and that it depends on the host-name. 1108 // (see bug #1044942) and that it depends on the host-name.
1081 IN_PROC_BROWSER_TEST_F(SSLUITest, TestCNInvalidStickiness) { 1109 IN_PROC_BROWSER_TEST_F(SSLUITest, TestCNInvalidStickiness) {
1082 ASSERT_TRUE(https_server_.Start()); 1110 ASSERT_TRUE(https_server_.Start());
1083 ASSERT_TRUE(https_server_mismatched_.Start()); 1111 ASSERT_TRUE(https_server_mismatched_.Start());
1084 1112
1085 // First we hit the server with hostname, this generates an invalid policy 1113 // First we hit the server with hostname, this generates an invalid policy
1086 // error. 1114 // error.
1087 ui_test_utils::NavigateToURL(browser(), 1115 ui_test_utils::NavigateToURL(browser(),
1088 https_server_mismatched_.GetURL("files/ssl/google.html")); 1116 https_server_mismatched_.GetURL("files/ssl/google.html"));
1089 1117
1090 // We get an interstitial page as a result. 1118 // We get an interstitial page as a result.
1091 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents(); 1119 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents();
1092 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_COMMON_NAME_INVALID, 1120 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_COMMON_NAME_INVALID,
1093 false, true); // Interstitial showing. 1121 false, false, true); // Interstitial showing.
1094 ProceedThroughInterstitial(tab); 1122 ProceedThroughInterstitial(tab);
1095 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_COMMON_NAME_INVALID, 1123 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_COMMON_NAME_INVALID,
1096 false, false); // No interstitial showing. 1124 false, false, false); // No interstitial.
1097 1125
1098 // Now we try again with the right host name this time. 1126 // Now we try again with the right host name this time.
1099 GURL url(https_server_.GetURL("files/ssl/google.html")); 1127 GURL url(https_server_.GetURL("files/ssl/google.html"));
1100 ui_test_utils::NavigateToURL(browser(), url); 1128 ui_test_utils::NavigateToURL(browser(), url);
1101 1129
1102 // Security state should be OK. 1130 // Security state should be OK.
1103 CheckAuthenticatedState(tab, false); 1131 CheckAuthenticatedState(tab, false);
1104 1132
1105 // Now try again the broken one to make sure it is still broken. 1133 // Now try again the broken one to make sure it is still broken.
1106 ui_test_utils::NavigateToURL(browser(), 1134 ui_test_utils::NavigateToURL(browser(),
1107 https_server_mismatched_.GetURL("files/ssl/google.html")); 1135 https_server_mismatched_.GetURL("files/ssl/google.html"));
1108 1136
1109 // Since we OKed the interstitial last time, we get right to the page. 1137 // Since we OKed the interstitial last time, we get right to the page.
1110 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_COMMON_NAME_INVALID, 1138 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_COMMON_NAME_INVALID,
1111 false, false); // No interstitial showing. 1139 false, false, false); // No interstitial.
1112 } 1140 }
1113 1141
1114 #if defined(OS_CHROMEOS) 1142 #if defined(OS_CHROMEOS)
1115 // This test seems to be flaky and hang on chromiumos. 1143 // This test seems to be flaky and hang on chromiumos.
1116 // http://crbug.com/84419 1144 // http://crbug.com/84419
1117 #define MAYBE_TestRefNavigation DISABLED_TestRefNavigation 1145 #define MAYBE_TestRefNavigation DISABLED_TestRefNavigation
1118 #else 1146 #else
1119 #define MAYBE_TestRefNavigation TestRefNavigation 1147 #define MAYBE_TestRefNavigation TestRefNavigation
1120 #endif 1148 #endif
1121 1149
1122 // Test that navigating to a #ref does not change a bad security state. 1150 // Test that navigating to a #ref does not change a bad security state.
1123 IN_PROC_BROWSER_TEST_F(SSLUITest, TestRefNavigation) { 1151 IN_PROC_BROWSER_TEST_F(SSLUITest, TestRefNavigation) {
1124 ASSERT_TRUE(https_server_expired_.Start()); 1152 ASSERT_TRUE(https_server_expired_.Start());
1125 1153
1126 ui_test_utils::NavigateToURL(browser(), 1154 ui_test_utils::NavigateToURL(browser(),
1127 https_server_expired_.GetURL("files/ssl/page_with_refs.html")); 1155 https_server_expired_.GetURL("files/ssl/page_with_refs.html"));
1128 1156
1129 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents(); 1157 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents();
1130 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_DATE_INVALID, false, 1158 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_DATE_INVALID, false,
1131 true); // Interstitial showing. 1159 false, true); // Interstitial showing.
1132 1160
1133 ProceedThroughInterstitial(tab); 1161 ProceedThroughInterstitial(tab);
1134 1162
1135 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_DATE_INVALID, false, 1163 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_DATE_INVALID, false,
1136 false); // No interstitial showing. 1164 false, false); // No interstitial showing.
1137 1165
1138 // Now navigate to a ref in the page, the security state should not have 1166 // Now navigate to a ref in the page, the security state should not have
1139 // changed. 1167 // changed.
1140 ui_test_utils::NavigateToURL(browser(), 1168 ui_test_utils::NavigateToURL(browser(),
1141 https_server_expired_.GetURL("files/ssl/page_with_refs.html#jp")); 1169 https_server_expired_.GetURL("files/ssl/page_with_refs.html#jp"));
1142 1170
1143 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_DATE_INVALID, false, 1171 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_DATE_INVALID, false,
1144 false); // No interstitial showing. 1172 false, false); // No interstitial showing.
1145 } 1173 }
1146 1174
1147 // Tests that closing a page that has a unsafe pop-up does not crash the 1175 // Tests that closing a page that has a unsafe pop-up does not crash the
1148 // browser (bug #1966). 1176 // browser (bug #1966).
1149 // TODO(jcampan): http://crbug.com/2136 disabled because the popup is not 1177 // TODO(jcampan): http://crbug.com/2136 disabled because the popup is not
1150 // opened as it is not initiated by a user gesture. 1178 // opened as it is not initiated by a user gesture.
1151 IN_PROC_BROWSER_TEST_F(SSLUITest, DISABLED_TestCloseTabWithUnsafePopup) { 1179 IN_PROC_BROWSER_TEST_F(SSLUITest, DISABLED_TestCloseTabWithUnsafePopup) {
1152 ASSERT_TRUE(test_server()->Start()); 1180 ASSERT_TRUE(test_server()->Start());
1153 ASSERT_TRUE(https_server_expired_.Start()); 1181 ASSERT_TRUE(https_server_expired_.Start());
1154 1182
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
1194 ASSERT_TRUE(https_server_expired_.Start()); 1222 ASSERT_TRUE(https_server_expired_.Start());
1195 1223
1196 GURL url1 = https_server_expired_.GetURL("server-redirect?"); 1224 GURL url1 = https_server_expired_.GetURL("server-redirect?");
1197 GURL url2 = https_server_.GetURL("files/ssl/google.html"); 1225 GURL url2 = https_server_.GetURL("files/ssl/google.html");
1198 1226
1199 ui_test_utils::NavigateToURL(browser(), GURL(url1.spec() + url2.spec())); 1227 ui_test_utils::NavigateToURL(browser(), GURL(url1.spec() + url2.spec()));
1200 1228
1201 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents(); 1229 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents();
1202 1230
1203 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_DATE_INVALID, false, 1231 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_DATE_INVALID, false,
1204 true); // Interstitial showing. 1232 false, true); // Interstitial showing.
1205 1233
1206 ProceedThroughInterstitial(tab); 1234 ProceedThroughInterstitial(tab);
1207 1235
1208 // We have been redirected to the good page. 1236 // We have been redirected to the good page.
1209 CheckAuthenticatedState(tab, false); 1237 CheckAuthenticatedState(tab, false);
1210 } 1238 }
1211 1239
1212 // Visit a page over good https that is a redirect to a page with bad https. 1240 // Visit a page over good https that is a redirect to a page with bad https.
1213 IN_PROC_BROWSER_TEST_F(SSLUITest, TestRedirectGoodToBadHTTPS) { 1241 IN_PROC_BROWSER_TEST_F(SSLUITest, TestRedirectGoodToBadHTTPS) {
1214 ASSERT_TRUE(https_server_.Start()); 1242 ASSERT_TRUE(https_server_.Start());
1215 ASSERT_TRUE(https_server_expired_.Start()); 1243 ASSERT_TRUE(https_server_expired_.Start());
1216 1244
1217 GURL url1 = https_server_.GetURL("server-redirect?"); 1245 GURL url1 = https_server_.GetURL("server-redirect?");
1218 GURL url2 = https_server_expired_.GetURL("files/ssl/google.html"); 1246 GURL url2 = https_server_expired_.GetURL("files/ssl/google.html");
1219 ui_test_utils::NavigateToURL(browser(), GURL(url1.spec() + url2.spec())); 1247 ui_test_utils::NavigateToURL(browser(), GURL(url1.spec() + url2.spec()));
1220 1248
1221 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents(); 1249 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents();
1222 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_DATE_INVALID, false, 1250 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_DATE_INVALID, false,
1223 true); // Interstitial showing. 1251 false, true); // Interstitial showing.
1224 1252
1225 ProceedThroughInterstitial(tab); 1253 ProceedThroughInterstitial(tab);
1226 1254
1227 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_DATE_INVALID, false, 1255 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_DATE_INVALID, false,
1228 false); // No interstitial showing. 1256 false, false); // No interstitial showing.
1229 } 1257 }
1230 1258
1231 // Visit a page over http that is a redirect to a page with good HTTPS. 1259 // Visit a page over http that is a redirect to a page with good HTTPS.
1232 IN_PROC_BROWSER_TEST_F(SSLUITest, TestRedirectHTTPToGoodHTTPS) { 1260 IN_PROC_BROWSER_TEST_F(SSLUITest, TestRedirectHTTPToGoodHTTPS) {
1233 ASSERT_TRUE(test_server()->Start()); 1261 ASSERT_TRUE(test_server()->Start());
1234 ASSERT_TRUE(https_server_.Start()); 1262 ASSERT_TRUE(https_server_.Start());
1235 1263
1236 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents(); 1264 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents();
1237 1265
1238 // HTTP redirects to good HTTPS. 1266 // HTTP redirects to good HTTPS.
(...skipping 12 matching lines...) Expand all
1251 ASSERT_TRUE(https_server_expired_.Start()); 1279 ASSERT_TRUE(https_server_expired_.Start());
1252 1280
1253 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents(); 1281 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents();
1254 1282
1255 GURL http_url = test_server()->GetURL("server-redirect?"); 1283 GURL http_url = test_server()->GetURL("server-redirect?");
1256 GURL bad_https_url = 1284 GURL bad_https_url =
1257 https_server_expired_.GetURL("files/ssl/google.html"); 1285 https_server_expired_.GetURL("files/ssl/google.html");
1258 ui_test_utils::NavigateToURL(browser(), 1286 ui_test_utils::NavigateToURL(browser(),
1259 GURL(http_url.spec() + bad_https_url.spec())); 1287 GURL(http_url.spec() + bad_https_url.spec()));
1260 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_DATE_INVALID, false, 1288 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_DATE_INVALID, false,
1261 true); // Interstitial showing. 1289 false, true); // Interstitial showing.
1262 1290
1263 ProceedThroughInterstitial(tab); 1291 ProceedThroughInterstitial(tab);
1264 1292
1265 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_DATE_INVALID, false, 1293 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_DATE_INVALID, false,
1266 false); // No interstitial showing. 1294 false, false); // No interstitial showing.
1267 } 1295 }
1268 1296
1269 // Visit a page over https that is a redirect to a page with http (to make sure 1297 // Visit a page over https that is a redirect to a page with http (to make sure
1270 // we don't keep the secure state). 1298 // we don't keep the secure state).
1271 IN_PROC_BROWSER_TEST_F(SSLUITest, TestRedirectHTTPSToHTTP) { 1299 IN_PROC_BROWSER_TEST_F(SSLUITest, TestRedirectHTTPSToHTTP) {
1272 ASSERT_TRUE(test_server()->Start()); 1300 ASSERT_TRUE(test_server()->Start());
1273 ASSERT_TRUE(https_server_.Start()); 1301 ASSERT_TRUE(https_server_.Start());
1274 1302
1275 GURL https_url = https_server_.GetURL("server-redirect?"); 1303 GURL https_url = https_server_.GetURL("server-redirect?");
1276 GURL http_url = test_server()->GetURL("files/ssl/google.html"); 1304 GURL http_url = test_server()->GetURL("files/ssl/google.html");
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
1382 content::Source<NavigationController>(&tab->GetController())); 1410 content::Source<NavigationController>(&tab->GetController()));
1383 EXPECT_TRUE(content::ExecuteScriptAndExtractBool( 1411 EXPECT_TRUE(content::ExecuteScriptAndExtractBool(
1384 tab, 1412 tab,
1385 "window.domAutomationController.send(clickLink('HTTPLink'));", 1413 "window.domAutomationController.send(clickLink('HTTPLink'));",
1386 &success)); 1414 &success));
1387 ASSERT_TRUE(success); 1415 ASSERT_TRUE(success);
1388 observer.Wait(); 1416 observer.Wait();
1389 } 1417 }
1390 1418
1391 // Our state should be unathenticated (in the ran mixed script sense) 1419 // Our state should be unathenticated (in the ran mixed script sense)
1392 CheckBrokenAuthenticatedState(tab); 1420 CheckBrokenAuthenticatedState(tab, true);
1393 1421
1394 // Go back, our state should be unchanged. 1422 // Go back, our state should be unchanged.
1395 { 1423 {
1396 content::WindowedNotificationObserver observer( 1424 content::WindowedNotificationObserver observer(
1397 content::NOTIFICATION_LOAD_STOP, 1425 content::NOTIFICATION_LOAD_STOP,
1398 content::Source<NavigationController>(&tab->GetController())); 1426 content::Source<NavigationController>(&tab->GetController()));
1399 tab->GetController().GoBack(); 1427 tab->GetController().GoBack();
1400 observer.Wait(); 1428 observer.Wait();
1401 } 1429 }
1402 1430
1403 CheckBrokenAuthenticatedState(tab); 1431 CheckBrokenAuthenticatedState(tab, true);
1404 } 1432 }
1405 1433
1406 // From a bad HTTPS top frame: 1434 // From a bad HTTPS top frame:
1407 // - navigate to an OK HTTPS frame (expected to be still authentication broken). 1435 // - navigate to an OK HTTPS frame (expected to be still authentication broken).
1408 IN_PROC_BROWSER_TEST_F(SSLUITest, TestBadFrameNavigation) { 1436 IN_PROC_BROWSER_TEST_F(SSLUITest, TestBadFrameNavigation) {
1409 ASSERT_TRUE(https_server_.Start()); 1437 ASSERT_TRUE(https_server_.Start());
1410 ASSERT_TRUE(https_server_expired_.Start()); 1438 ASSERT_TRUE(https_server_expired_.Start());
1411 1439
1412 std::string top_frame_path; 1440 std::string top_frame_path;
1413 ASSERT_TRUE(GetTopFramePath(*test_server(), 1441 ASSERT_TRUE(GetTopFramePath(*test_server(),
1414 https_server_, 1442 https_server_,
1415 https_server_expired_, 1443 https_server_expired_,
1416 &top_frame_path)); 1444 &top_frame_path));
1417 1445
1418 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents(); 1446 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents();
1419 ui_test_utils::NavigateToURL(browser(), 1447 ui_test_utils::NavigateToURL(browser(),
1420 https_server_expired_.GetURL(top_frame_path)); 1448 https_server_expired_.GetURL(top_frame_path));
1421 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_DATE_INVALID, false, 1449 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_DATE_INVALID, false,
1422 true); // Interstitial showing 1450 false, true); // Interstitial showing
1423 1451
1424 ProceedThroughInterstitial(tab); 1452 ProceedThroughInterstitial(tab);
1425 1453
1426 // Navigate to a good frame. 1454 // Navigate to a good frame.
1427 bool success = false; 1455 bool success = false;
1428 content::WindowedNotificationObserver observer( 1456 content::WindowedNotificationObserver observer(
1429 content::NOTIFICATION_LOAD_STOP, 1457 content::NOTIFICATION_LOAD_STOP,
1430 content::Source<NavigationController>(&tab->GetController())); 1458 content::Source<NavigationController>(&tab->GetController()));
1431 EXPECT_TRUE(content::ExecuteScriptAndExtractBool( 1459 EXPECT_TRUE(content::ExecuteScriptAndExtractBool(
1432 tab, 1460 tab,
1433 "window.domAutomationController.send(clickLink('goodHTTPSLink'));", 1461 "window.domAutomationController.send(clickLink('goodHTTPSLink'));",
1434 &success)); 1462 &success));
1435 ASSERT_TRUE(success); 1463 ASSERT_TRUE(success);
1436 observer.Wait(); 1464 observer.Wait();
1437 1465
1438 // We should still be authentication broken. 1466 // We should still be authentication broken.
1439 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_DATE_INVALID, false, 1467 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_DATE_INVALID, false,
1440 false); 1468 false, false);
1441 } 1469 }
1442 1470
1443 // From an HTTP top frame, navigate to good and bad HTTPS (security state should 1471 // From an HTTP top frame, navigate to good and bad HTTPS (security state should
1444 // stay unauthenticated). 1472 // stay unauthenticated).
1445 // Disabled, flakily exceeds test timeout, http://crbug.com/43437. 1473 // Disabled, flakily exceeds test timeout, http://crbug.com/43437.
1446 IN_PROC_BROWSER_TEST_F(SSLUITest, DISABLED_TestUnauthenticatedFrameNavigation) { 1474 IN_PROC_BROWSER_TEST_F(SSLUITest, DISABLED_TestUnauthenticatedFrameNavigation) {
1447 ASSERT_TRUE(test_server()->Start()); 1475 ASSERT_TRUE(test_server()->Start());
1448 ASSERT_TRUE(https_server_.Start()); 1476 ASSERT_TRUE(https_server_.Start());
1449 ASSERT_TRUE(https_server_expired_.Start()); 1477 ASSERT_TRUE(https_server_expired_.Start());
1450 1478
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
1527 IN_PROC_BROWSER_TEST_F(SSLUITest, TestUnsafeContentsInWorker) { 1555 IN_PROC_BROWSER_TEST_F(SSLUITest, TestUnsafeContentsInWorker) {
1528 ASSERT_TRUE(https_server_.Start()); 1556 ASSERT_TRUE(https_server_.Start());
1529 ASSERT_TRUE(https_server_expired_.Start()); 1557 ASSERT_TRUE(https_server_expired_.Start());
1530 1558
1531 // Navigate to an unsafe site. Proceed with interstitial page to indicate 1559 // Navigate to an unsafe site. Proceed with interstitial page to indicate
1532 // the user approves the bad certificate. 1560 // the user approves the bad certificate.
1533 ui_test_utils::NavigateToURL(browser(), 1561 ui_test_utils::NavigateToURL(browser(),
1534 https_server_expired_.GetURL("files/ssl/blank_page.html")); 1562 https_server_expired_.GetURL("files/ssl/blank_page.html"));
1535 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents(); 1563 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents();
1536 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_DATE_INVALID, false, 1564 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_DATE_INVALID, false,
1537 true); // Interstitial showing 1565 false, true); // Interstitial showing
1538 ProceedThroughInterstitial(tab); 1566 ProceedThroughInterstitial(tab);
1539 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_DATE_INVALID, false, 1567 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_DATE_INVALID, false,
1540 false); // No Interstitial 1568 false, false); // No Interstitial
1541 1569
1542 // Navigate to safe page that has Worker loading unsafe content. 1570 // Navigate to safe page that has Worker loading unsafe content.
1543 // Expect content to load but be marked as auth broken due to running insecure 1571 // Expect content to load but be marked as auth broken due to running insecure
1544 // content. 1572 // content.
1545 std::string page_with_unsafe_worker_path; 1573 std::string page_with_unsafe_worker_path;
1546 ASSERT_TRUE(GetPageWithUnsafeWorkerPath(https_server_expired_, 1574 ASSERT_TRUE(GetPageWithUnsafeWorkerPath(https_server_expired_,
1547 &page_with_unsafe_worker_path)); 1575 &page_with_unsafe_worker_path));
1548 ui_test_utils::NavigateToURL(browser(), https_server_.GetURL( 1576 ui_test_utils::NavigateToURL(browser(), https_server_.GetURL(
1549 page_with_unsafe_worker_path)); 1577 page_with_unsafe_worker_path));
1550 CheckWorkerLoadResult(tab, true); // Worker loads insecure content 1578 CheckWorkerLoadResult(tab, true); // Worker loads insecure content
1551 CheckAuthenticationBrokenState(tab, 0, true, false); 1579 CheckAuthenticationBrokenState(tab, 0, false, true, false);
1552 } 1580 }
1553 1581
1554 // Test that when the browser blocks displaying insecure content (images), the 1582 // Test that when the browser blocks displaying insecure content (images), the
1555 // indicator shows a secure page, because the blocking made the otherwise 1583 // indicator shows a secure page, because the blocking made the otherwise
1556 // unsafe page safe (the notification of this state is handled by other means). 1584 // unsafe page safe (the notification of this state is handled by other means).
1557 IN_PROC_BROWSER_TEST_F(SSLUITestBlock, TestBlockDisplayingInsecureImage) { 1585 IN_PROC_BROWSER_TEST_F(SSLUITestBlock, TestBlockDisplayingInsecureImage) {
1558 ASSERT_TRUE(test_server()->Start()); 1586 ASSERT_TRUE(test_server()->Start());
1559 ASSERT_TRUE(https_server_.Start()); 1587 ASSERT_TRUE(https_server_.Start());
1560 1588
1561 std::string replacement_path; 1589 std::string replacement_path;
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
1645 // http://crbug.com/322948 1673 // http://crbug.com/322948
1646 IN_PROC_BROWSER_TEST_F(SSLUITest, InterstitialNotAffectedByContentSettings) { 1674 IN_PROC_BROWSER_TEST_F(SSLUITest, InterstitialNotAffectedByContentSettings) {
1647 browser()->profile()->GetHostContentSettingsMap()->SetDefaultContentSetting( 1675 browser()->profile()->GetHostContentSettingsMap()->SetDefaultContentSetting(
1648 CONTENT_SETTINGS_TYPE_JAVASCRIPT, CONTENT_SETTING_BLOCK); 1676 CONTENT_SETTINGS_TYPE_JAVASCRIPT, CONTENT_SETTING_BLOCK);
1649 1677
1650 ASSERT_TRUE(https_server_expired_.Start()); 1678 ASSERT_TRUE(https_server_expired_.Start());
1651 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents(); 1679 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents();
1652 ui_test_utils::NavigateToURL(browser(), 1680 ui_test_utils::NavigateToURL(browser(),
1653 https_server_expired_.GetURL("files/ssl/google.html")); 1681 https_server_expired_.GetURL("files/ssl/google.html"));
1654 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_DATE_INVALID, false, 1682 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_DATE_INVALID, false,
1655 true); // Interstitial showing 1683 false, true); // Interstitial showing
1656 1684
1657 InterstitialPage* interstitial_page = tab->GetInterstitialPage(); 1685 InterstitialPage* interstitial_page = tab->GetInterstitialPage();
1658 content::RenderViewHost* interstitial_rvh = 1686 content::RenderViewHost* interstitial_rvh =
1659 interstitial_page->GetRenderViewHostForTesting(); 1687 interstitial_page->GetRenderViewHostForTesting();
1660 bool result = false; 1688 bool result = false;
1661 ASSERT_TRUE(content::ExecuteScriptAndExtractBool( 1689 ASSERT_TRUE(content::ExecuteScriptAndExtractBool(
1662 interstitial_rvh, 1690 interstitial_rvh,
1663 "window.domAutomationController.send(true);", 1691 "window.domAutomationController.send(true);",
1664 &result)); 1692 &result));
1665 // The above will hang without the fix. 1693 // The above will hang without the fix.
1666 ASSERT_TRUE(result); 1694 ASSERT_TRUE(result);
1667 } 1695 }
1668 1696
1669 // TODO(jcampan): more tests to do below. 1697 // TODO(jcampan): more tests to do below.
1670 1698
1671 // Visit a page over https that contains a frame with a redirect. 1699 // Visit a page over https that contains a frame with a redirect.
1672 1700
1673 // XMLHttpRequest insecure content in synchronous mode. 1701 // XMLHttpRequest insecure content in synchronous mode.
1674 1702
1675 // XMLHttpRequest insecure content in asynchronous mode. 1703 // XMLHttpRequest insecure content in asynchronous mode.
1676 1704
1677 // XMLHttpRequest over bad ssl in synchronous mode. 1705 // XMLHttpRequest over bad ssl in synchronous mode.
1678 1706
1679 // XMLHttpRequest over OK ssl in synchronous mode. 1707 // XMLHttpRequest over OK ssl in synchronous mode.
OLDNEW
« no previous file with comments | « no previous file | content/browser/ssl/ssl_policy.cc » ('j') | content/browser/ssl/ssl_policy.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698