OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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/time.h" | 5 #include "base/time.h" |
6 #include "chrome/app/chrome_command_ids.h" | 6 #include "chrome/app/chrome_command_ids.h" |
7 #include "chrome/browser/prefs/pref_service.h" | 7 #include "chrome/browser/prefs/pref_service.h" |
8 #include "chrome/browser/profile.h" | 8 #include "chrome/browser/profile.h" |
9 #include "chrome/browser/tab_contents/interstitial_page.h" | 9 #include "chrome/browser/tab_contents/interstitial_page.h" |
10 #include "chrome/browser/tab_contents/navigation_entry.h" | 10 #include "chrome/browser/tab_contents/navigation_entry.h" |
11 #include "chrome/browser/tab_contents/tab_contents.h" | 11 #include "chrome/browser/tab_contents/tab_contents.h" |
| 12 #include "chrome/browser/tab_contents_wrapper.h" |
12 #include "chrome/browser/tabs/tab_strip_model.h" | 13 #include "chrome/browser/tabs/tab_strip_model.h" |
13 #include "chrome/browser/ui/browser.h" | 14 #include "chrome/browser/ui/browser.h" |
14 #include "chrome/browser/ui/browser_navigator.h" | 15 #include "chrome/browser/ui/browser_navigator.h" |
15 #include "chrome/common/pref_names.h" | 16 #include "chrome/common/pref_names.h" |
16 #include "chrome/test/in_process_browser_test.h" | 17 #include "chrome/test/in_process_browser_test.h" |
17 #include "chrome/test/ui_test_utils.h" | 18 #include "chrome/test/ui_test_utils.h" |
18 #include "net/base/cert_status_flags.h" | 19 #include "net/base/cert_status_flags.h" |
19 #include "net/test/test_server.h" | 20 #include "net/test/test_server.h" |
20 | 21 |
21 const FilePath::CharType kDocRoot[] = FILE_PATH_LITERAL("chrome/test/data"); | 22 const FilePath::CharType kDocRoot[] = FILE_PATH_LITERAL("chrome/test/data"); |
(...skipping 367 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
389 } | 390 } |
390 | 391 |
391 // Open a page with a HTTPS error in a tab with no prior navigation (through a | 392 // Open a page with a HTTPS error in a tab with no prior navigation (through a |
392 // link with a blank target). This is to test that the lack of navigation entry | 393 // link with a blank target). This is to test that the lack of navigation entry |
393 // does not cause any problems (it was causing a crasher, see | 394 // does not cause any problems (it was causing a crasher, see |
394 // http://crbug.com/19941). | 395 // http://crbug.com/19941). |
395 IN_PROC_BROWSER_TEST_F(SSLUITest, TestHTTPSErrorWithNoNavEntry) { | 396 IN_PROC_BROWSER_TEST_F(SSLUITest, TestHTTPSErrorWithNoNavEntry) { |
396 ASSERT_TRUE(https_server_expired_.Start()); | 397 ASSERT_TRUE(https_server_expired_.Start()); |
397 | 398 |
398 GURL url = https_server_expired_.GetURL("files/ssl/google.htm"); | 399 GURL url = https_server_expired_.GetURL("files/ssl/google.htm"); |
399 TabContents* tab2 = | 400 TabContentsWrapper* tab2 = |
400 browser()->AddSelectedTabWithURL(url, PageTransition::TYPED); | 401 browser()->AddSelectedTabWithURL(url, PageTransition::TYPED); |
401 ui_test_utils::WaitForLoadStop(&(tab2->controller())); | 402 ui_test_utils::WaitForLoadStop(&(tab2->controller())); |
402 | 403 |
403 // Verify our assumption that there was no prior navigation. | 404 // Verify our assumption that there was no prior navigation. |
404 EXPECT_FALSE(browser()->command_updater()->IsCommandEnabled(IDC_BACK)); | 405 EXPECT_FALSE(browser()->command_updater()->IsCommandEnabled(IDC_BACK)); |
405 | 406 |
406 // We should have an interstitial page showing. | 407 // We should have an interstitial page showing. |
407 ASSERT_TRUE(tab2->interstitial_page()); | 408 ASSERT_TRUE(tab2->tab_contents()->interstitial_page()); |
408 } | 409 } |
409 | 410 |
410 // | 411 // |
411 // Insecure content | 412 // Insecure content |
412 // | 413 // |
413 | 414 |
414 // Visits a page that displays insecure content. | 415 // Visits a page that displays insecure content. |
415 IN_PROC_BROWSER_TEST_F(SSLUITest, TestDisplaysInsecureContent) { | 416 IN_PROC_BROWSER_TEST_F(SSLUITest, TestDisplaysInsecureContent) { |
416 ASSERT_TRUE(test_server()->Start()); | 417 ASSERT_TRUE(test_server()->Start()); |
417 ASSERT_TRUE(https_server_.Start()); | 418 ASSERT_TRUE(https_server_.Start()); |
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
519 // Visits two pages from the same origin: one that displays insecure content and | 520 // Visits two pages from the same origin: one that displays insecure content and |
520 // one that doesn't. The test checks that we do not propagate the insecure | 521 // one that doesn't. The test checks that we do not propagate the insecure |
521 // content state from one to the other. | 522 // content state from one to the other. |
522 IN_PROC_BROWSER_TEST_F(SSLUITest, TestDisplaysInsecureContentTwoTabs) { | 523 IN_PROC_BROWSER_TEST_F(SSLUITest, TestDisplaysInsecureContentTwoTabs) { |
523 ASSERT_TRUE(test_server()->Start()); | 524 ASSERT_TRUE(test_server()->Start()); |
524 ASSERT_TRUE(https_server_.Start()); | 525 ASSERT_TRUE(https_server_.Start()); |
525 | 526 |
526 ui_test_utils::NavigateToURL(browser(), | 527 ui_test_utils::NavigateToURL(browser(), |
527 https_server_.GetURL("files/ssl/blank_page.html")); | 528 https_server_.GetURL("files/ssl/blank_page.html")); |
528 | 529 |
529 TabContents* tab1 = browser()->GetSelectedTabContents(); | 530 TabContentsWrapper* tab1 = browser()->GetSelectedTabContentsWrapper(); |
530 | 531 |
531 // This tab should be fine. | 532 // This tab should be fine. |
532 CheckAuthenticatedState(tab1, false); | 533 CheckAuthenticatedState(tab1->tab_contents(), false); |
533 | 534 |
534 // Create a new tab. | 535 // Create a new tab. |
535 std::string replacement_path; | 536 std::string replacement_path; |
536 ASSERT_TRUE(GetFilePathWithHostAndPortReplacement( | 537 ASSERT_TRUE(GetFilePathWithHostAndPortReplacement( |
537 "files/ssl/page_displays_insecure_content.html", | 538 "files/ssl/page_displays_insecure_content.html", |
538 test_server()->host_port_pair(), | 539 test_server()->host_port_pair(), |
539 &replacement_path)); | 540 &replacement_path)); |
540 | 541 |
541 GURL url = https_server_.GetURL(replacement_path); | 542 GURL url = https_server_.GetURL(replacement_path); |
542 browser::NavigateParams params(browser(), url, PageTransition::TYPED); | 543 browser::NavigateParams params(browser(), url, PageTransition::TYPED); |
543 params.disposition = NEW_FOREGROUND_TAB; | 544 params.disposition = NEW_FOREGROUND_TAB; |
544 params.tabstrip_index = 0; | 545 params.tabstrip_index = 0; |
545 params.source_contents = tab1; | 546 params.source_contents = tab1; |
546 browser::Navigate(¶ms); | 547 browser::Navigate(¶ms); |
547 TabContents* tab2 = params.target_contents; | 548 TabContentsWrapper* tab2 = params.target_contents; |
548 ui_test_utils::WaitForNavigation(&(tab2->controller())); | 549 ui_test_utils::WaitForNavigation(&(tab2->controller())); |
549 | 550 |
550 // The new tab has insecure content. | 551 // The new tab has insecure content. |
551 CheckAuthenticatedState(tab2, true); | 552 CheckAuthenticatedState(tab2->tab_contents(), true); |
552 | 553 |
553 // The original tab should not be contaminated. | 554 // The original tab should not be contaminated. |
554 CheckAuthenticatedState(tab1, false); | 555 CheckAuthenticatedState(tab1->tab_contents(), false); |
555 } | 556 } |
556 | 557 |
557 // Visits two pages from the same origin: one that runs insecure content and one | 558 // Visits two pages from the same origin: one that runs insecure content and one |
558 // that doesn't. The test checks that we propagate the insecure content state | 559 // that doesn't. The test checks that we propagate the insecure content state |
559 // from one to the other. | 560 // from one to the other. |
560 IN_PROC_BROWSER_TEST_F(SSLUITest, TestRunsInsecureContentTwoTabs) { | 561 IN_PROC_BROWSER_TEST_F(SSLUITest, TestRunsInsecureContentTwoTabs) { |
561 ASSERT_TRUE(test_server()->Start()); | 562 ASSERT_TRUE(test_server()->Start()); |
562 ASSERT_TRUE(https_server_.Start()); | 563 ASSERT_TRUE(https_server_.Start()); |
563 | 564 |
564 ui_test_utils::NavigateToURL(browser(), | 565 ui_test_utils::NavigateToURL(browser(), |
565 https_server_.GetURL("files/ssl/blank_page.html")); | 566 https_server_.GetURL("files/ssl/blank_page.html")); |
566 | 567 |
567 TabContents* tab1 = browser()->GetSelectedTabContents(); | 568 TabContentsWrapper* tab1 = browser()->GetSelectedTabContentsWrapper(); |
568 | 569 |
569 // This tab should be fine. | 570 // This tab should be fine. |
570 CheckAuthenticatedState(tab1, false); | 571 CheckAuthenticatedState(tab1->tab_contents(), false); |
571 | 572 |
572 std::string replacement_path; | 573 std::string replacement_path; |
573 ASSERT_TRUE(GetFilePathWithHostAndPortReplacement( | 574 ASSERT_TRUE(GetFilePathWithHostAndPortReplacement( |
574 "files/ssl/page_runs_insecure_content.html", | 575 "files/ssl/page_runs_insecure_content.html", |
575 test_server()->host_port_pair(), | 576 test_server()->host_port_pair(), |
576 &replacement_path)); | 577 &replacement_path)); |
577 | 578 |
578 // Create a new tab. | 579 // Create a new tab. |
579 GURL url = https_server_.GetURL(replacement_path); | 580 GURL url = https_server_.GetURL(replacement_path); |
580 browser::NavigateParams params(browser(), url, PageTransition::TYPED); | 581 browser::NavigateParams params(browser(), url, PageTransition::TYPED); |
581 params.disposition = NEW_FOREGROUND_TAB; | 582 params.disposition = NEW_FOREGROUND_TAB; |
582 params.source_contents = tab1; | 583 params.source_contents = tab1; |
583 browser::Navigate(¶ms); | 584 browser::Navigate(¶ms); |
584 TabContents* tab2 = params.target_contents; | 585 TabContentsWrapper* tab2 = params.target_contents; |
585 ui_test_utils::WaitForNavigation(&(tab2->controller())); | 586 ui_test_utils::WaitForNavigation(&(tab2->controller())); |
586 | 587 |
587 // The new tab has insecure content. | 588 // The new tab has insecure content. |
588 CheckAuthenticationBrokenState(tab2, 0, true, false); | 589 CheckAuthenticationBrokenState(tab2->tab_contents(), 0, true, false); |
589 | 590 |
590 // Which means the origin for the first tab has also been contaminated with | 591 // Which means the origin for the first tab has also been contaminated with |
591 // insecure content. | 592 // insecure content. |
592 CheckAuthenticationBrokenState(tab1, 0, true, false); | 593 CheckAuthenticationBrokenState(tab1->tab_contents(), 0, true, false); |
593 } | 594 } |
594 | 595 |
595 // Visits a page with an image over http. Visits another page over https | 596 // Visits a page with an image over http. Visits another page over https |
596 // referencing that same image over http (hoping it is coming from the webcore | 597 // referencing that same image over http (hoping it is coming from the webcore |
597 // memory cache). | 598 // memory cache). |
598 IN_PROC_BROWSER_TEST_F(SSLUITest, TestDisplaysCachedInsecureContent) { | 599 IN_PROC_BROWSER_TEST_F(SSLUITest, TestDisplaysCachedInsecureContent) { |
599 ASSERT_TRUE(test_server()->Start()); | 600 ASSERT_TRUE(test_server()->Start()); |
600 ASSERT_TRUE(https_server_.Start()); | 601 ASSERT_TRUE(https_server_.Start()); |
601 | 602 |
602 std::string replacement_path; | 603 std::string replacement_path; |
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
736 break; | 737 break; |
737 MessageLoop::current()->PostDelayedTask(FROM_HERE, | 738 MessageLoop::current()->PostDelayedTask(FROM_HERE, |
738 new MessageLoop::QuitTask(), 1000); | 739 new MessageLoop::QuitTask(), 1000); |
739 ui_test_utils::RunMessageLoop(); | 740 ui_test_utils::RunMessageLoop(); |
740 } | 741 } |
741 ASSERT_EQ(1, static_cast<int>(tab1->constrained_window_count())); | 742 ASSERT_EQ(1, static_cast<int>(tab1->constrained_window_count())); |
742 | 743 |
743 // Let's add another tab to make sure the browser does not exit when we close | 744 // Let's add another tab to make sure the browser does not exit when we close |
744 // the first tab. | 745 // the first tab. |
745 GURL url = test_server()->GetURL("files/ssl/google.html"); | 746 GURL url = test_server()->GetURL("files/ssl/google.html"); |
746 TabContents* tab2 = | 747 TabContentsWrapper* tab2 = |
747 browser()->AddSelectedTabWithURL(url, PageTransition::TYPED); | 748 browser()->AddSelectedTabWithURL(url, PageTransition::TYPED); |
748 ui_test_utils::WaitForNavigation(&(tab2->controller())); | 749 ui_test_utils::WaitForNavigation(&(tab2->controller())); |
749 | 750 |
750 // Close the first tab. | 751 // Close the first tab. |
751 browser()->CloseTabContents(tab1); | 752 browser()->CloseTabContents(tab1); |
752 } | 753 } |
753 | 754 |
754 // Visit a page over bad https that is a redirect to a page with good https. | 755 // Visit a page over bad https that is a redirect to a page with good https. |
755 // Marked as flaky, see bug 40932. | 756 // Marked as flaky, see bug 40932. |
756 IN_PROC_BROWSER_TEST_F(SSLUITest, FLAKY_TestRedirectBadToGoodHTTPS) { | 757 IN_PROC_BROWSER_TEST_F(SSLUITest, FLAKY_TestRedirectBadToGoodHTTPS) { |
(...skipping 323 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1080 | 1081 |
1081 // Visit a page over https that contains a frame with a redirect. | 1082 // Visit a page over https that contains a frame with a redirect. |
1082 | 1083 |
1083 // XMLHttpRequest insecure content in synchronous mode. | 1084 // XMLHttpRequest insecure content in synchronous mode. |
1084 | 1085 |
1085 // XMLHttpRequest insecure content in asynchronous mode. | 1086 // XMLHttpRequest insecure content in asynchronous mode. |
1086 | 1087 |
1087 // XMLHttpRequest over bad ssl in synchronous mode. | 1088 // XMLHttpRequest over bad ssl in synchronous mode. |
1088 | 1089 |
1089 // XMLHttpRequest over OK ssl in synchronous mode. | 1090 // XMLHttpRequest over OK ssl in synchronous mode. |
OLD | NEW |