| 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/stringprintf.h" | |
| 6 #include "base/time.h" | 5 #include "base/time.h" |
| 7 #include "chrome/app/chrome_command_ids.h" | 6 #include "chrome/app/chrome_command_ids.h" |
| 8 #include "chrome/browser/browser.h" | 7 #include "chrome/browser/browser.h" |
| 9 #include "chrome/browser/browser_navigator.h" | 8 #include "chrome/browser/browser_navigator.h" |
| 10 #include "chrome/browser/prefs/pref_service.h" | 9 #include "chrome/browser/prefs/pref_service.h" |
| 11 #include "chrome/browser/profile.h" | 10 #include "chrome/browser/profile.h" |
| 12 #include "chrome/browser/tab_contents/interstitial_page.h" | 11 #include "chrome/browser/tab_contents/interstitial_page.h" |
| 13 #include "chrome/browser/tab_contents/navigation_entry.h" | 12 #include "chrome/browser/tab_contents/navigation_entry.h" |
| 14 #include "chrome/browser/tab_contents/tab_contents.h" | 13 #include "chrome/browser/tab_contents/tab_contents.h" |
| 15 #include "chrome/browser/tabs/tab_strip_model.h" | 14 #include "chrome/browser/tabs/tab_strip_model.h" |
| (...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 110 } | 109 } |
| 111 | 110 |
| 112 void ProceedThroughInterstitial(TabContents* tab) { | 111 void ProceedThroughInterstitial(TabContents* tab) { |
| 113 InterstitialPage* interstitial_page = tab->interstitial_page(); | 112 InterstitialPage* interstitial_page = tab->interstitial_page(); |
| 114 ASSERT_TRUE(interstitial_page); | 113 ASSERT_TRUE(interstitial_page); |
| 115 interstitial_page->Proceed(); | 114 interstitial_page->Proceed(); |
| 116 // Wait for the navigation to be done. | 115 // Wait for the navigation to be done. |
| 117 ui_test_utils::WaitForNavigation(&(tab->controller())); | 116 ui_test_utils::WaitForNavigation(&(tab->controller())); |
| 118 } | 117 } |
| 119 | 118 |
| 120 std::string GetFileWithHostAndPortReplacement( | 119 static bool GetFilePathWithHostAndPortReplacement( |
| 121 const std::string& original_path, | 120 const std::string& original_file_path, |
| 122 const net::HostPortPair& host_port_pair) const { | 121 const net::HostPortPair& host_port_pair, |
| 123 return StringPrintf("%s?replace_orig=%s&replace_new=%s", | 122 std::string* replacement_path) { |
| 124 original_path.c_str(), | 123 std::vector<std::string> replacement_text; |
| 125 kReplaceText_, | 124 replacement_text.push_back("REPLACE_WITH_HOST_AND_PORT"); |
| 126 host_port_pair.ToString().c_str()); | 125 replacement_text.push_back(host_port_pair.ToString()); |
| 126 return net::TestServer::GetFilePathWithReplacements( |
| 127 original_file_path, replacement_text, replacement_path); |
| 128 } |
| 129 |
| 130 static bool GetTopFramePath(const net::TestServer& http_server, |
| 131 const net::TestServer& good_https_server, |
| 132 const net::TestServer& bad_https_server, |
| 133 std::string* top_frame_path) { |
| 134 // The "frame_left.html" page contained in the top_frame.html page contains |
| 135 // <a href>'s to three different servers. This sets up all of the |
| 136 // replacement text to work with test servers which listen on ephemeral |
| 137 // ports. |
| 138 GURL http_url = http_server.GetURL("files/ssl/google.html"); |
| 139 GURL good_https_url = good_https_server.GetURL("files/ssl/google.html"); |
| 140 GURL bad_https_url = bad_https_server.GetURL( |
| 141 "files/ssl/bad_iframe.html"); |
| 142 |
| 143 std::vector<std::string> replacement_text_frame_left; |
| 144 replacement_text_frame_left.push_back("REPLACE_WITH_HTTP_PAGE"); |
| 145 replacement_text_frame_left.push_back(http_url.spec()); |
| 146 replacement_text_frame_left.push_back("REPLACE_WITH_GOOD_HTTPS_PAGE"); |
| 147 replacement_text_frame_left.push_back(good_https_url.spec()); |
| 148 replacement_text_frame_left.push_back("REPLACE_WITH_BAD_HTTPS_PAGE"); |
| 149 replacement_text_frame_left.push_back(bad_https_url.spec()); |
| 150 std::string frame_left_path; |
| 151 if (!net::TestServer::GetFilePathWithReplacements( |
| 152 "frame_left.html", |
| 153 replacement_text_frame_left, |
| 154 &frame_left_path)) |
| 155 return false; |
| 156 |
| 157 // Substitute the generated frame_left URL into the top_frame page. |
| 158 std::vector<std::string> replacement_text_top_frame; |
| 159 replacement_text_top_frame.push_back("REPLACE_WITH_FRAME_LEFT_PATH"); |
| 160 replacement_text_top_frame.push_back(frame_left_path); |
| 161 return net::TestServer::GetFilePathWithReplacements( |
| 162 "files/ssl/top_frame.html", |
| 163 replacement_text_top_frame, |
| 164 top_frame_path); |
| 127 } | 165 } |
| 128 | 166 |
| 129 net::TestServer https_server_; | 167 net::TestServer https_server_; |
| 130 net::TestServer https_server_expired_; | 168 net::TestServer https_server_expired_; |
| 131 net::TestServer https_server_mismatched_; | 169 net::TestServer https_server_mismatched_; |
| 132 | 170 |
| 133 private: | 171 private: |
| 134 DISALLOW_COPY_AND_ASSIGN(SSLUITest); | 172 DISALLOW_COPY_AND_ASSIGN(SSLUITest); |
| 135 | |
| 136 static const char* const kReplaceText_; | |
| 137 }; | 173 }; |
| 138 | 174 |
| 139 // static | |
| 140 const char* const SSLUITest::kReplaceText_ = "REPLACE_WITH_HOST_AND_PORT"; | |
| 141 | |
| 142 // Visits a regular page over http. | 175 // Visits a regular page over http. |
| 143 IN_PROC_BROWSER_TEST_F(SSLUITest, TestHTTP) { | 176 IN_PROC_BROWSER_TEST_F(SSLUITest, TestHTTP) { |
| 144 ASSERT_TRUE(test_server()->Start()); | 177 ASSERT_TRUE(test_server()->Start()); |
| 145 | 178 |
| 146 ui_test_utils::NavigateToURL(browser(), | 179 ui_test_utils::NavigateToURL(browser(), |
| 147 test_server()->GetURL("files/ssl/google.html")); | 180 test_server()->GetURL("files/ssl/google.html")); |
| 148 | 181 |
| 149 CheckUnauthenticatedState(browser()->GetSelectedTabContents()); | 182 CheckUnauthenticatedState(browser()->GetSelectedTabContents()); |
| 150 } | 183 } |
| 151 | 184 |
| 152 // Visits a page over http which includes broken https resources (status should | 185 // Visits a page over http which includes broken https resources (status should |
| 153 // be OK). | 186 // be OK). |
| 154 // TODO(jcampan): test that bad HTTPS content is blocked (otherwise we'll give | 187 // TODO(jcampan): test that bad HTTPS content is blocked (otherwise we'll give |
| 155 // the secure cookies away!). | 188 // the secure cookies away!). |
| 156 IN_PROC_BROWSER_TEST_F(SSLUITest, TestHTTPWithBrokenHTTPSResource) { | 189 IN_PROC_BROWSER_TEST_F(SSLUITest, TestHTTPWithBrokenHTTPSResource) { |
| 157 ASSERT_TRUE(test_server()->Start()); | 190 ASSERT_TRUE(test_server()->Start()); |
| 158 ASSERT_TRUE(https_server_expired_.Start()); | 191 ASSERT_TRUE(https_server_expired_.Start()); |
| 159 | 192 |
| 160 std::string replacement_path = GetFileWithHostAndPortReplacement( | 193 std::string replacement_path; |
| 194 ASSERT_TRUE(GetFilePathWithHostAndPortReplacement( |
| 161 "files/ssl/page_with_unsafe_contents.html", | 195 "files/ssl/page_with_unsafe_contents.html", |
| 162 https_server_expired_.host_port_pair()); | 196 https_server_expired_.host_port_pair(), |
| 197 &replacement_path)); |
| 163 | 198 |
| 164 ui_test_utils::NavigateToURL( | 199 ui_test_utils::NavigateToURL( |
| 165 browser(), test_server()->GetURL(replacement_path)); | 200 browser(), test_server()->GetURL(replacement_path)); |
| 166 | 201 |
| 167 CheckUnauthenticatedState(browser()->GetSelectedTabContents()); | 202 CheckUnauthenticatedState(browser()->GetSelectedTabContents()); |
| 168 } | 203 } |
| 169 | 204 |
| 170 // Visits a page over OK https: | 205 // Visits a page over OK https: |
| 171 IN_PROC_BROWSER_TEST_F(SSLUITest, TestOKHTTPS) { | 206 IN_PROC_BROWSER_TEST_F(SSLUITest, TestOKHTTPS) { |
| 172 ASSERT_TRUE(https_server_.Start()); | 207 ASSERT_TRUE(https_server_.Start()); |
| (...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 375 | 410 |
| 376 // | 411 // |
| 377 // Insecure content | 412 // Insecure content |
| 378 // | 413 // |
| 379 | 414 |
| 380 // Visits a page that displays insecure content. | 415 // Visits a page that displays insecure content. |
| 381 IN_PROC_BROWSER_TEST_F(SSLUITest, TestDisplaysInsecureContent) { | 416 IN_PROC_BROWSER_TEST_F(SSLUITest, TestDisplaysInsecureContent) { |
| 382 ASSERT_TRUE(test_server()->Start()); | 417 ASSERT_TRUE(test_server()->Start()); |
| 383 ASSERT_TRUE(https_server_.Start()); | 418 ASSERT_TRUE(https_server_.Start()); |
| 384 | 419 |
| 385 std::string replacement_path = GetFileWithHostAndPortReplacement( | 420 std::string replacement_path; |
| 421 ASSERT_TRUE(GetFilePathWithHostAndPortReplacement( |
| 386 "files/ssl/page_displays_insecure_content.html", | 422 "files/ssl/page_displays_insecure_content.html", |
| 387 test_server()->host_port_pair()); | 423 test_server()->host_port_pair(), |
| 424 &replacement_path)); |
| 388 | 425 |
| 389 // Load a page that displays insecure content. | 426 // Load a page that displays insecure content. |
| 390 ui_test_utils::NavigateToURL(browser(), | 427 ui_test_utils::NavigateToURL(browser(), |
| 391 https_server_.GetURL(replacement_path)); | 428 https_server_.GetURL(replacement_path)); |
| 392 | 429 |
| 393 CheckAuthenticatedState(browser()->GetSelectedTabContents(), true); | 430 CheckAuthenticatedState(browser()->GetSelectedTabContents(), true); |
| 394 } | 431 } |
| 395 | 432 |
| 396 // Visits a page that runs insecure content and tries to suppress the insecure | 433 // Visits a page that runs insecure content and tries to suppress the insecure |
| 397 // content warnings by randomizing location.hash. | 434 // content warnings by randomizing location.hash. |
| (...skipping 12 matching lines...) Expand all Loading... |
| 410 } | 447 } |
| 411 | 448 |
| 412 // Visits a page with unsafe content and make sure that: | 449 // Visits a page with unsafe content and make sure that: |
| 413 // - frames content is replaced with warning | 450 // - frames content is replaced with warning |
| 414 // - images and scripts are filtered out entirely | 451 // - images and scripts are filtered out entirely |
| 415 // Marked as flaky, see bug 40932. | 452 // Marked as flaky, see bug 40932. |
| 416 IN_PROC_BROWSER_TEST_F(SSLUITest, FLAKY_TestUnsafeContents) { | 453 IN_PROC_BROWSER_TEST_F(SSLUITest, FLAKY_TestUnsafeContents) { |
| 417 ASSERT_TRUE(https_server_.Start()); | 454 ASSERT_TRUE(https_server_.Start()); |
| 418 ASSERT_TRUE(https_server_expired_.Start()); | 455 ASSERT_TRUE(https_server_expired_.Start()); |
| 419 | 456 |
| 420 std::string replacement_path = GetFileWithHostAndPortReplacement( | 457 std::string replacement_path; |
| 458 ASSERT_TRUE(GetFilePathWithHostAndPortReplacement( |
| 421 "files/ssl/page_with_unsafe_contents.html", | 459 "files/ssl/page_with_unsafe_contents.html", |
| 422 https_server_expired_.host_port_pair()); | 460 https_server_expired_.host_port_pair(), |
| 461 &replacement_path)); |
| 423 ui_test_utils::NavigateToURL(browser(), | 462 ui_test_utils::NavigateToURL(browser(), |
| 424 https_server_.GetURL(replacement_path)); | 463 https_server_.GetURL(replacement_path)); |
| 425 | 464 |
| 426 TabContents* tab = browser()->GetSelectedTabContents(); | 465 TabContents* tab = browser()->GetSelectedTabContents(); |
| 427 // When the bad content is filtered, the state is expected to be | 466 // When the bad content is filtered, the state is expected to be |
| 428 // authenticated. | 467 // authenticated. |
| 429 CheckAuthenticatedState(tab, false); | 468 CheckAuthenticatedState(tab, false); |
| 430 | 469 |
| 431 // Because of cross-frame scripting restrictions, we cannot access the iframe | 470 // Because of cross-frame scripting restrictions, we cannot access the iframe |
| 432 // content. So to know if the frame was loaded, we just check if a popup was | 471 // content. So to know if the frame was loaded, we just check if a popup was |
| (...skipping 17 matching lines...) Expand all Loading... |
| 450 L"window.domAutomationController.send(IsFooSet());", &js_result)); | 489 L"window.domAutomationController.send(IsFooSet());", &js_result)); |
| 451 EXPECT_FALSE(js_result); | 490 EXPECT_FALSE(js_result); |
| 452 } | 491 } |
| 453 | 492 |
| 454 // Visits a page with insecure content loaded by JS (after the initial page | 493 // Visits a page with insecure content loaded by JS (after the initial page |
| 455 // load). | 494 // load). |
| 456 IN_PROC_BROWSER_TEST_F(SSLUITest, TestDisplaysInsecureContentLoadedFromJS) { | 495 IN_PROC_BROWSER_TEST_F(SSLUITest, TestDisplaysInsecureContentLoadedFromJS) { |
| 457 ASSERT_TRUE(test_server()->Start()); | 496 ASSERT_TRUE(test_server()->Start()); |
| 458 ASSERT_TRUE(https_server_.Start()); | 497 ASSERT_TRUE(https_server_.Start()); |
| 459 | 498 |
| 460 std::string replacement_path = GetFileWithHostAndPortReplacement( | 499 std::string replacement_path; |
| 500 ASSERT_TRUE(GetFilePathWithHostAndPortReplacement( |
| 461 "files/ssl/page_with_dynamic_insecure_content.html", | 501 "files/ssl/page_with_dynamic_insecure_content.html", |
| 462 test_server()->host_port_pair()); | 502 test_server()->host_port_pair(), |
| 503 &replacement_path)); |
| 463 ui_test_utils::NavigateToURL(browser(), https_server_.GetURL( | 504 ui_test_utils::NavigateToURL(browser(), https_server_.GetURL( |
| 464 replacement_path)); | 505 replacement_path)); |
| 465 | 506 |
| 466 TabContents* tab = browser()->GetSelectedTabContents(); | 507 TabContents* tab = browser()->GetSelectedTabContents(); |
| 467 CheckAuthenticatedState(tab, false); | 508 CheckAuthenticatedState(tab, false); |
| 468 | 509 |
| 469 // Load the insecure image. | 510 // Load the insecure image. |
| 470 bool js_result = false; | 511 bool js_result = false; |
| 471 EXPECT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractBool( | 512 EXPECT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractBool( |
| 472 tab->render_view_host(), std::wstring(), L"loadBadImage();", &js_result)); | 513 tab->render_view_host(), std::wstring(), L"loadBadImage();", &js_result)); |
| (...skipping 12 matching lines...) Expand all Loading... |
| 485 | 526 |
| 486 ui_test_utils::NavigateToURL(browser(), | 527 ui_test_utils::NavigateToURL(browser(), |
| 487 https_server_.GetURL("files/ssl/blank_page.html")); | 528 https_server_.GetURL("files/ssl/blank_page.html")); |
| 488 | 529 |
| 489 TabContents* tab1 = browser()->GetSelectedTabContents(); | 530 TabContents* tab1 = browser()->GetSelectedTabContents(); |
| 490 | 531 |
| 491 // This tab should be fine. | 532 // This tab should be fine. |
| 492 CheckAuthenticatedState(tab1, false); | 533 CheckAuthenticatedState(tab1, false); |
| 493 | 534 |
| 494 // Create a new tab. | 535 // Create a new tab. |
| 495 std::string replacement_path = GetFileWithHostAndPortReplacement( | 536 std::string replacement_path; |
| 537 ASSERT_TRUE(GetFilePathWithHostAndPortReplacement( |
| 496 "files/ssl/page_displays_insecure_content.html", | 538 "files/ssl/page_displays_insecure_content.html", |
| 497 test_server()->host_port_pair()); | 539 test_server()->host_port_pair(), |
| 540 &replacement_path)); |
| 498 | 541 |
| 499 GURL url = https_server_.GetURL(replacement_path); | 542 GURL url = https_server_.GetURL(replacement_path); |
| 500 browser::NavigateParams params(browser(), url, PageTransition::TYPED); | 543 browser::NavigateParams params(browser(), url, PageTransition::TYPED); |
| 501 params.disposition = NEW_FOREGROUND_TAB; | 544 params.disposition = NEW_FOREGROUND_TAB; |
| 502 params.tabstrip_index = 0; | 545 params.tabstrip_index = 0; |
| 503 params.source_contents = tab1; | 546 params.source_contents = tab1; |
| 504 browser::Navigate(¶ms); | 547 browser::Navigate(¶ms); |
| 505 TabContents* tab2 = params.target_contents; | 548 TabContents* tab2 = params.target_contents; |
| 506 ui_test_utils::WaitForNavigation(&(tab2->controller())); | 549 ui_test_utils::WaitForNavigation(&(tab2->controller())); |
| 507 | 550 |
| (...skipping 12 matching lines...) Expand all Loading... |
| 520 ASSERT_TRUE(https_server_.Start()); | 563 ASSERT_TRUE(https_server_.Start()); |
| 521 | 564 |
| 522 ui_test_utils::NavigateToURL(browser(), | 565 ui_test_utils::NavigateToURL(browser(), |
| 523 https_server_.GetURL("files/ssl/blank_page.html")); | 566 https_server_.GetURL("files/ssl/blank_page.html")); |
| 524 | 567 |
| 525 TabContents* tab1 = browser()->GetSelectedTabContents(); | 568 TabContents* tab1 = browser()->GetSelectedTabContents(); |
| 526 | 569 |
| 527 // This tab should be fine. | 570 // This tab should be fine. |
| 528 CheckAuthenticatedState(tab1, false); | 571 CheckAuthenticatedState(tab1, false); |
| 529 | 572 |
| 530 std::string replacement_path = GetFileWithHostAndPortReplacement( | 573 std::string replacement_path; |
| 574 ASSERT_TRUE(GetFilePathWithHostAndPortReplacement( |
| 531 "files/ssl/page_runs_insecure_content.html", | 575 "files/ssl/page_runs_insecure_content.html", |
| 532 test_server()->host_port_pair()); | 576 test_server()->host_port_pair(), |
| 577 &replacement_path)); |
| 533 | 578 |
| 534 // Create a new tab. | 579 // Create a new tab. |
| 535 GURL url = https_server_.GetURL(replacement_path); | 580 GURL url = https_server_.GetURL(replacement_path); |
| 536 browser::NavigateParams params(browser(), url, PageTransition::TYPED); | 581 browser::NavigateParams params(browser(), url, PageTransition::TYPED); |
| 537 params.disposition = NEW_FOREGROUND_TAB; | 582 params.disposition = NEW_FOREGROUND_TAB; |
| 538 params.source_contents = tab1; | 583 params.source_contents = tab1; |
| 539 browser::Navigate(¶ms); | 584 browser::Navigate(¶ms); |
| 540 TabContents* tab2 = params.target_contents; | 585 TabContents* tab2 = params.target_contents; |
| 541 ui_test_utils::WaitForNavigation(&(tab2->controller())); | 586 ui_test_utils::WaitForNavigation(&(tab2->controller())); |
| 542 | 587 |
| 543 // The new tab has insecure content. | 588 // The new tab has insecure content. |
| 544 CheckAuthenticationBrokenState(tab2, 0, true, false); | 589 CheckAuthenticationBrokenState(tab2, 0, true, false); |
| 545 | 590 |
| 546 // 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 |
| 547 // insecure content. | 592 // insecure content. |
| 548 CheckAuthenticationBrokenState(tab1, 0, true, false); | 593 CheckAuthenticationBrokenState(tab1, 0, true, false); |
| 549 } | 594 } |
| 550 | 595 |
| 551 // 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 |
| 552 // 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 |
| 553 // memory cache). | 598 // memory cache). |
| 554 IN_PROC_BROWSER_TEST_F(SSLUITest, TestDisplaysCachedInsecureContent) { | 599 IN_PROC_BROWSER_TEST_F(SSLUITest, TestDisplaysCachedInsecureContent) { |
| 555 ASSERT_TRUE(test_server()->Start()); | 600 ASSERT_TRUE(test_server()->Start()); |
| 556 ASSERT_TRUE(https_server_.Start()); | 601 ASSERT_TRUE(https_server_.Start()); |
| 557 | 602 |
| 558 std::string replacement_path = GetFileWithHostAndPortReplacement( | 603 std::string replacement_path; |
| 604 ASSERT_TRUE(GetFilePathWithHostAndPortReplacement( |
| 559 "files/ssl/page_displays_insecure_content.html", | 605 "files/ssl/page_displays_insecure_content.html", |
| 560 test_server()->host_port_pair()); | 606 test_server()->host_port_pair(), |
| 607 &replacement_path)); |
| 561 | 608 |
| 562 // Load original page over HTTP. | 609 // Load original page over HTTP. |
| 563 const GURL url_http = test_server()->GetURL(replacement_path); | 610 const GURL url_http = test_server()->GetURL(replacement_path); |
| 564 ui_test_utils::NavigateToURL(browser(), url_http); | 611 ui_test_utils::NavigateToURL(browser(), url_http); |
| 565 TabContents* tab = browser()->GetSelectedTabContents(); | 612 TabContents* tab = browser()->GetSelectedTabContents(); |
| 566 CheckUnauthenticatedState(tab); | 613 CheckUnauthenticatedState(tab); |
| 567 | 614 |
| 568 // Load again but over SSL. It should be marked as displaying insecure | 615 // Load again but over SSL. It should be marked as displaying insecure |
| 569 // content (even though the image comes from the WebCore memory cache). | 616 // content (even though the image comes from the WebCore memory cache). |
| 570 const GURL url_https = https_server_.GetURL(replacement_path); | 617 const GURL url_https = https_server_.GetURL(replacement_path); |
| 571 ui_test_utils::NavigateToURL(browser(), url_https); | 618 ui_test_utils::NavigateToURL(browser(), url_https); |
| 572 CheckAuthenticatedState(tab, true); | 619 CheckAuthenticatedState(tab, true); |
| 573 } | 620 } |
| 574 | 621 |
| 575 // Visits a page with script over http. Visits another page over https | 622 // Visits a page with script over http. Visits another page over https |
| 576 // referencing that same script over http (hoping it is coming from the webcore | 623 // referencing that same script over http (hoping it is coming from the webcore |
| 577 // memory cache). | 624 // memory cache). |
| 578 IN_PROC_BROWSER_TEST_F(SSLUITest, TestRunsCachedInsecureContent) { | 625 IN_PROC_BROWSER_TEST_F(SSLUITest, TestRunsCachedInsecureContent) { |
| 579 ASSERT_TRUE(test_server()->Start()); | 626 ASSERT_TRUE(test_server()->Start()); |
| 580 ASSERT_TRUE(https_server_.Start()); | 627 ASSERT_TRUE(https_server_.Start()); |
| 581 | 628 |
| 582 std::string replacement_path = GetFileWithHostAndPortReplacement( | 629 std::string replacement_path; |
| 630 ASSERT_TRUE(GetFilePathWithHostAndPortReplacement( |
| 583 "files/ssl/page_runs_insecure_content.html", | 631 "files/ssl/page_runs_insecure_content.html", |
| 584 test_server()->host_port_pair()); | 632 test_server()->host_port_pair(), |
| 633 &replacement_path)); |
| 585 | 634 |
| 586 // Load original page over HTTP. | 635 // Load original page over HTTP. |
| 587 const GURL url_http = test_server()->GetURL(replacement_path); | 636 const GURL url_http = test_server()->GetURL(replacement_path); |
| 588 ui_test_utils::NavigateToURL(browser(), url_http); | 637 ui_test_utils::NavigateToURL(browser(), url_http); |
| 589 TabContents* tab = browser()->GetSelectedTabContents(); | 638 TabContents* tab = browser()->GetSelectedTabContents(); |
| 590 CheckUnauthenticatedState(tab); | 639 CheckUnauthenticatedState(tab); |
| 591 | 640 |
| 592 // Load again but over SSL. It should be marked as displaying insecure | 641 // Load again but over SSL. It should be marked as displaying insecure |
| 593 // content (even though the image comes from the WebCore memory cache). | 642 // content (even though the image comes from the WebCore memory cache). |
| 594 const GURL url_https = https_server_.GetURL(replacement_path); | 643 const GURL url_https = https_server_.GetURL(replacement_path); |
| (...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 664 } | 713 } |
| 665 | 714 |
| 666 // Tests that closing a page that has a unsafe pop-up does not crash the | 715 // Tests that closing a page that has a unsafe pop-up does not crash the |
| 667 // browser (bug #1966). | 716 // browser (bug #1966). |
| 668 // TODO(jcampan): http://crbug.com/2136 disabled because the popup is not | 717 // TODO(jcampan): http://crbug.com/2136 disabled because the popup is not |
| 669 // opened as it is not initiated by a user gesture. | 718 // opened as it is not initiated by a user gesture. |
| 670 IN_PROC_BROWSER_TEST_F(SSLUITest, DISABLED_TestCloseTabWithUnsafePopup) { | 719 IN_PROC_BROWSER_TEST_F(SSLUITest, DISABLED_TestCloseTabWithUnsafePopup) { |
| 671 ASSERT_TRUE(test_server()->Start()); | 720 ASSERT_TRUE(test_server()->Start()); |
| 672 ASSERT_TRUE(https_server_expired_.Start()); | 721 ASSERT_TRUE(https_server_expired_.Start()); |
| 673 | 722 |
| 674 std::string replacement_path = GetFileWithHostAndPortReplacement( | 723 std::string replacement_path; |
| 724 ASSERT_TRUE(GetFilePathWithHostAndPortReplacement( |
| 675 "files/ssl/page_with_unsafe_popup.html", | 725 "files/ssl/page_with_unsafe_popup.html", |
| 676 https_server_expired_.host_port_pair()); | 726 https_server_expired_.host_port_pair(), |
| 727 &replacement_path)); |
| 677 | 728 |
| 678 ui_test_utils::NavigateToURL(browser(), | 729 ui_test_utils::NavigateToURL(browser(), |
| 679 test_server()->GetURL(replacement_path)); | 730 test_server()->GetURL(replacement_path)); |
| 680 | 731 |
| 681 TabContents* tab1 = browser()->GetSelectedTabContents(); | 732 TabContents* tab1 = browser()->GetSelectedTabContents(); |
| 682 // It is probably overkill to add a notification for a popup-opening, let's | 733 // It is probably overkill to add a notification for a popup-opening, let's |
| 683 // just poll. | 734 // just poll. |
| 684 for (int i = 0; i < 10; i++) { | 735 for (int i = 0; i < 10; i++) { |
| 685 if (static_cast<int>(tab1->constrained_window_count()) > 0) | 736 if (static_cast<int>(tab1->constrained_window_count()) > 0) |
| 686 break; | 737 break; |
| (...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 815 // - navigate to an OK HTTPS frame | 866 // - navigate to an OK HTTPS frame |
| 816 // - navigate to a bad HTTPS (expect unsafe content and filtered frame), then | 867 // - navigate to a bad HTTPS (expect unsafe content and filtered frame), then |
| 817 // back | 868 // back |
| 818 // - navigate to HTTP (expect insecure content), then back | 869 // - navigate to HTTP (expect insecure content), then back |
| 819 // Disabled, http://crbug.com/18626. | 870 // Disabled, http://crbug.com/18626. |
| 820 IN_PROC_BROWSER_TEST_F(SSLUITest, DISABLED_TestGoodFrameNavigation) { | 871 IN_PROC_BROWSER_TEST_F(SSLUITest, DISABLED_TestGoodFrameNavigation) { |
| 821 ASSERT_TRUE(test_server()->Start()); | 872 ASSERT_TRUE(test_server()->Start()); |
| 822 ASSERT_TRUE(https_server_.Start()); | 873 ASSERT_TRUE(https_server_.Start()); |
| 823 ASSERT_TRUE(https_server_expired_.Start()); | 874 ASSERT_TRUE(https_server_expired_.Start()); |
| 824 | 875 |
| 876 std::string top_frame_path; |
| 877 ASSERT_TRUE(GetTopFramePath(*test_server(), |
| 878 https_server_, |
| 879 https_server_expired_, |
| 880 &top_frame_path)); |
| 881 |
| 825 TabContents* tab = browser()->GetSelectedTabContents(); | 882 TabContents* tab = browser()->GetSelectedTabContents(); |
| 826 ui_test_utils::NavigateToURL(browser(), | 883 ui_test_utils::NavigateToURL(browser(), |
| 827 https_server_.GetURL("files/ssl/top_frame.html")); | 884 https_server_.GetURL(top_frame_path)); |
| 828 | 885 |
| 829 CheckAuthenticatedState(tab, false); | 886 CheckAuthenticatedState(tab, false); |
| 830 | 887 |
| 831 bool success = false; | 888 bool success = false; |
| 832 // Now navigate inside the frame. | 889 // Now navigate inside the frame. |
| 833 EXPECT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractBool( | 890 EXPECT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractBool( |
| 834 tab->render_view_host(), std::wstring(), | 891 tab->render_view_host(), std::wstring(), |
| 835 L"window.domAutomationController.send(clickLink('goodHTTPSLink'));", | 892 L"window.domAutomationController.send(clickLink('goodHTTPSLink'));", |
| 836 &success)); | 893 &success)); |
| 837 EXPECT_TRUE(success); | 894 EXPECT_TRUE(success); |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 883 CheckAuthenticatedState(tab, true); | 940 CheckAuthenticatedState(tab, true); |
| 884 } | 941 } |
| 885 | 942 |
| 886 // From a bad HTTPS top frame: | 943 // From a bad HTTPS top frame: |
| 887 // - navigate to an OK HTTPS frame (expected to be still authentication broken). | 944 // - navigate to an OK HTTPS frame (expected to be still authentication broken). |
| 888 // Marked as flaky, see bug 40932. | 945 // Marked as flaky, see bug 40932. |
| 889 IN_PROC_BROWSER_TEST_F(SSLUITest, FLAKY_TestBadFrameNavigation) { | 946 IN_PROC_BROWSER_TEST_F(SSLUITest, FLAKY_TestBadFrameNavigation) { |
| 890 ASSERT_TRUE(https_server_.Start()); | 947 ASSERT_TRUE(https_server_.Start()); |
| 891 ASSERT_TRUE(https_server_expired_.Start()); | 948 ASSERT_TRUE(https_server_expired_.Start()); |
| 892 | 949 |
| 950 std::string top_frame_path; |
| 951 ASSERT_TRUE(GetTopFramePath(*test_server(), |
| 952 https_server_, |
| 953 https_server_expired_, |
| 954 &top_frame_path)); |
| 955 |
| 893 TabContents* tab = browser()->GetSelectedTabContents(); | 956 TabContents* tab = browser()->GetSelectedTabContents(); |
| 894 ui_test_utils::NavigateToURL(browser(), | 957 ui_test_utils::NavigateToURL(browser(), |
| 895 https_server_expired_.GetURL("files/ssl/top_frame.html")); | 958 https_server_expired_.GetURL(top_frame_path)); |
| 896 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_DATE_INVALID, false, | 959 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_DATE_INVALID, false, |
| 897 true); // Interstitial showing | 960 true); // Interstitial showing |
| 898 | 961 |
| 899 ProceedThroughInterstitial(tab); | 962 ProceedThroughInterstitial(tab); |
| 900 | 963 |
| 901 // Navigate to a good frame. | 964 // Navigate to a good frame. |
| 902 bool success = false; | 965 bool success = false; |
| 903 EXPECT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractBool( | 966 EXPECT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractBool( |
| 904 tab->render_view_host(), std::wstring(), | 967 tab->render_view_host(), std::wstring(), |
| 905 L"window.domAutomationController.send(clickLink('goodHTTPSLink'));", | 968 L"window.domAutomationController.send(clickLink('goodHTTPSLink'));", |
| (...skipping 15 matching lines...) Expand all Loading... |
| 921 #else | 984 #else |
| 922 // Marked as flaky, see bug 40932. | 985 // Marked as flaky, see bug 40932. |
| 923 #define MAYBE_TestUnauthenticatedFrameNavigation \ | 986 #define MAYBE_TestUnauthenticatedFrameNavigation \ |
| 924 FLAKY_TestUnauthenticatedFrameNavigation | 987 FLAKY_TestUnauthenticatedFrameNavigation |
| 925 #endif | 988 #endif |
| 926 IN_PROC_BROWSER_TEST_F(SSLUITest, MAYBE_TestUnauthenticatedFrameNavigation) { | 989 IN_PROC_BROWSER_TEST_F(SSLUITest, MAYBE_TestUnauthenticatedFrameNavigation) { |
| 927 ASSERT_TRUE(test_server()->Start()); | 990 ASSERT_TRUE(test_server()->Start()); |
| 928 ASSERT_TRUE(https_server_.Start()); | 991 ASSERT_TRUE(https_server_.Start()); |
| 929 ASSERT_TRUE(https_server_expired_.Start()); | 992 ASSERT_TRUE(https_server_expired_.Start()); |
| 930 | 993 |
| 994 std::string top_frame_path; |
| 995 ASSERT_TRUE(GetTopFramePath(*test_server(), |
| 996 https_server_, |
| 997 https_server_expired_, |
| 998 &top_frame_path)); |
| 999 |
| 931 TabContents* tab = browser()->GetSelectedTabContents(); | 1000 TabContents* tab = browser()->GetSelectedTabContents(); |
| 932 ui_test_utils::NavigateToURL(browser(), | 1001 ui_test_utils::NavigateToURL(browser(), |
| 933 test_server()->GetURL("files/ssl/top_frame.html")); | 1002 test_server()->GetURL(top_frame_path)); |
| 934 CheckUnauthenticatedState(tab); | 1003 CheckUnauthenticatedState(tab); |
| 935 | 1004 |
| 936 // Now navigate inside the frame to a secure HTTPS frame. | 1005 // Now navigate inside the frame to a secure HTTPS frame. |
| 937 bool success = false; | 1006 bool success = false; |
| 938 EXPECT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractBool( | 1007 EXPECT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractBool( |
| 939 tab->render_view_host(), std::wstring(), | 1008 tab->render_view_host(), std::wstring(), |
| 940 L"window.domAutomationController.send(clickLink('goodHTTPSLink'));", | 1009 L"window.domAutomationController.send(clickLink('goodHTTPSLink'));", |
| 941 &success)); | 1010 &success)); |
| 942 EXPECT_TRUE(success); | 1011 EXPECT_TRUE(success); |
| 943 ui_test_utils::WaitForNavigation(&tab->controller()); | 1012 ui_test_utils::WaitForNavigation(&tab->controller()); |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1012 | 1081 |
| 1013 // 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. |
| 1014 | 1083 |
| 1015 // XMLHttpRequest insecure content in synchronous mode. | 1084 // XMLHttpRequest insecure content in synchronous mode. |
| 1016 | 1085 |
| 1017 // XMLHttpRequest insecure content in asynchronous mode. | 1086 // XMLHttpRequest insecure content in asynchronous mode. |
| 1018 | 1087 |
| 1019 // XMLHttpRequest over bad ssl in synchronous mode. | 1088 // XMLHttpRequest over bad ssl in synchronous mode. |
| 1020 | 1089 |
| 1021 // XMLHttpRequest over OK ssl in synchronous mode. | 1090 // XMLHttpRequest over OK ssl in synchronous mode. |
| OLD | NEW |