OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "base/bind.h" | 5 #include "base/bind.h" |
6 #include "base/bind_helpers.h" | 6 #include "base/bind_helpers.h" |
7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
8 #include "base/path_service.h" | 8 #include "base/path_service.h" |
9 #include "base/prefs/pref_service.h" | 9 #include "base/prefs/pref_service.h" |
10 #include "base/strings/string_util.h" | 10 #include "base/strings/string_util.h" |
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
92 bool waiting_; | 92 bool waiting_; |
93 bool seen_; | 93 bool seen_; |
94 }; | 94 }; |
95 | 95 |
96 namespace AuthState { | 96 namespace AuthState { |
97 | 97 |
98 enum AuthStateFlags { | 98 enum AuthStateFlags { |
99 NONE = 0, | 99 NONE = 0, |
100 DISPLAYED_INSECURE_CONTENT = 1 << 0, | 100 DISPLAYED_INSECURE_CONTENT = 1 << 0, |
101 RAN_INSECURE_CONTENT = 1 << 1, | 101 RAN_INSECURE_CONTENT = 1 << 1, |
102 SHOWING_INTERSTITIAL = 1 << 2 | 102 SHOWING_INTERSTITIAL = 1 << 2, |
| 103 SHOWING_ERROR = 1 << 3 |
103 }; | 104 }; |
104 | 105 |
105 void Check(const NavigationEntry& entry, int expected_authentication_state) { | 106 void Check(const NavigationEntry& entry, int expected_authentication_state) { |
106 EXPECT_EQ(!!(expected_authentication_state & AuthState::SHOWING_INTERSTITIAL) | 107 if (expected_authentication_state == AuthState::SHOWING_ERROR) { |
107 ? content::PAGE_TYPE_INTERSTITIAL | 108 EXPECT_EQ(content::PAGE_TYPE_ERROR, entry.GetPageType()); |
108 : content::PAGE_TYPE_NORMAL, | 109 } else { |
109 entry.GetPageType()); | 110 EXPECT_EQ( |
| 111 !!(expected_authentication_state & AuthState::SHOWING_INTERSTITIAL) |
| 112 ? content::PAGE_TYPE_INTERSTITIAL |
| 113 : content::PAGE_TYPE_NORMAL, |
| 114 entry.GetPageType()); |
| 115 } |
110 | 116 |
111 bool displayed_insecure_content = | 117 bool displayed_insecure_content = |
112 !!(entry.GetSSL().content_status & SSLStatus::DISPLAYED_INSECURE_CONTENT); | 118 !!(entry.GetSSL().content_status & SSLStatus::DISPLAYED_INSECURE_CONTENT); |
113 EXPECT_EQ( | 119 EXPECT_EQ( |
114 !!(expected_authentication_state & AuthState::DISPLAYED_INSECURE_CONTENT), | 120 !!(expected_authentication_state & AuthState::DISPLAYED_INSECURE_CONTENT), |
115 displayed_insecure_content); | 121 displayed_insecure_content); |
116 | 122 |
117 bool ran_insecure_content = | 123 bool ran_insecure_content = |
118 !!(entry.GetSSL().content_status & SSLStatus::RAN_INSECURE_CONTENT); | 124 !!(entry.GetSSL().content_status & SSLStatus::RAN_INSECURE_CONTENT); |
119 EXPECT_EQ(!!(expected_authentication_state & AuthState::RAN_INSECURE_CONTENT), | 125 EXPECT_EQ(!!(expected_authentication_state & AuthState::RAN_INSECURE_CONTENT), |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
190 } | 196 } |
191 | 197 |
192 void CheckAuthenticatedState(WebContents* tab, | 198 void CheckAuthenticatedState(WebContents* tab, |
193 int expected_authentication_state) { | 199 int expected_authentication_state) { |
194 CheckSecurityState(tab, | 200 CheckSecurityState(tab, |
195 CertError::NONE, | 201 CertError::NONE, |
196 content::SECURITY_STYLE_AUTHENTICATED, | 202 content::SECURITY_STYLE_AUTHENTICATED, |
197 expected_authentication_state); | 203 expected_authentication_state); |
198 } | 204 } |
199 | 205 |
200 void CheckUnauthenticatedState(WebContents* tab) { | 206 void CheckUnauthenticatedState(WebContents* tab, |
| 207 int expected_authentication_state) { |
201 CheckSecurityState(tab, | 208 CheckSecurityState(tab, |
202 CertError::NONE, | 209 CertError::NONE, |
203 content::SECURITY_STYLE_UNAUTHENTICATED, | 210 content::SECURITY_STYLE_UNAUTHENTICATED, |
204 AuthState::NONE); | 211 expected_authentication_state); |
205 } | 212 } |
206 | 213 |
207 void CheckAuthenticationBrokenState(WebContents* tab, | 214 void CheckAuthenticationBrokenState(WebContents* tab, |
208 net::CertStatus error, | 215 net::CertStatus error, |
209 int expected_authentication_state) { | 216 int expected_authentication_state) { |
210 CheckSecurityState(tab, | 217 CheckSecurityState(tab, |
211 error, | 218 error, |
212 content::SECURITY_STYLE_AUTHENTICATION_BROKEN, | 219 content::SECURITY_STYLE_AUTHENTICATION_BROKEN, |
213 expected_authentication_state); | 220 expected_authentication_state); |
214 // CERT_STATUS_UNABLE_TO_CHECK_REVOCATION doesn't lower the security style | 221 // CERT_STATUS_UNABLE_TO_CHECK_REVOCATION doesn't lower the security style |
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
374 }; | 381 }; |
375 | 382 |
376 // Visits a regular page over http. | 383 // Visits a regular page over http. |
377 IN_PROC_BROWSER_TEST_F(SSLUITest, TestHTTP) { | 384 IN_PROC_BROWSER_TEST_F(SSLUITest, TestHTTP) { |
378 ASSERT_TRUE(test_server()->Start()); | 385 ASSERT_TRUE(test_server()->Start()); |
379 | 386 |
380 ui_test_utils::NavigateToURL(browser(), | 387 ui_test_utils::NavigateToURL(browser(), |
381 test_server()->GetURL("files/ssl/google.html")); | 388 test_server()->GetURL("files/ssl/google.html")); |
382 | 389 |
383 CheckUnauthenticatedState( | 390 CheckUnauthenticatedState( |
384 browser()->tab_strip_model()->GetActiveWebContents()); | 391 browser()->tab_strip_model()->GetActiveWebContents(), AuthState::NONE); |
385 } | 392 } |
386 | 393 |
387 // Visits a page over http which includes broken https resources (status should | 394 // Visits a page over http which includes broken https resources (status should |
388 // be OK). | 395 // be OK). |
389 // TODO(jcampan): test that bad HTTPS content is blocked (otherwise we'll give | 396 // TODO(jcampan): test that bad HTTPS content is blocked (otherwise we'll give |
390 // the secure cookies away!). | 397 // the secure cookies away!). |
391 IN_PROC_BROWSER_TEST_F(SSLUITest, TestHTTPWithBrokenHTTPSResource) { | 398 IN_PROC_BROWSER_TEST_F(SSLUITest, TestHTTPWithBrokenHTTPSResource) { |
392 ASSERT_TRUE(test_server()->Start()); | 399 ASSERT_TRUE(test_server()->Start()); |
393 ASSERT_TRUE(https_server_expired_.Start()); | 400 ASSERT_TRUE(https_server_expired_.Start()); |
394 | 401 |
395 std::string replacement_path; | 402 std::string replacement_path; |
396 ASSERT_TRUE(GetFilePathWithHostAndPortReplacement( | 403 ASSERT_TRUE(GetFilePathWithHostAndPortReplacement( |
397 "files/ssl/page_with_unsafe_contents.html", | 404 "files/ssl/page_with_unsafe_contents.html", |
398 https_server_expired_.host_port_pair(), | 405 https_server_expired_.host_port_pair(), |
399 &replacement_path)); | 406 &replacement_path)); |
400 | 407 |
401 ui_test_utils::NavigateToURL( | 408 ui_test_utils::NavigateToURL( |
402 browser(), test_server()->GetURL(replacement_path)); | 409 browser(), test_server()->GetURL(replacement_path)); |
403 | 410 |
404 CheckUnauthenticatedState( | 411 CheckUnauthenticatedState( |
405 browser()->tab_strip_model()->GetActiveWebContents()); | 412 browser()->tab_strip_model()->GetActiveWebContents(), AuthState::NONE); |
406 } | 413 } |
407 | 414 |
408 IN_PROC_BROWSER_TEST_F(SSLUITest, TestBrokenHTTPSWithInsecureContent) { | 415 IN_PROC_BROWSER_TEST_F(SSLUITest, TestBrokenHTTPSWithInsecureContent) { |
409 ASSERT_TRUE(test_server()->Start()); | 416 ASSERT_TRUE(test_server()->Start()); |
410 ASSERT_TRUE(https_server_expired_.Start()); | 417 ASSERT_TRUE(https_server_expired_.Start()); |
411 | 418 |
412 std::string replacement_path; | 419 std::string replacement_path; |
413 ASSERT_TRUE(GetFilePathWithHostAndPortReplacement( | 420 ASSERT_TRUE(GetFilePathWithHostAndPortReplacement( |
414 "files/ssl/page_displays_insecure_content.html", | 421 "files/ssl/page_displays_insecure_content.html", |
415 test_server()->host_port_pair(), | 422 test_server()->host_port_pair(), |
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
517 InterstitialPage* interstitial_page = tab->GetInterstitialPage(); | 524 InterstitialPage* interstitial_page = tab->GetInterstitialPage(); |
518 ASSERT_TRUE(interstitial_page); | 525 ASSERT_TRUE(interstitial_page); |
519 interstitial_page->DontProceed(); | 526 interstitial_page->DontProceed(); |
520 | 527 |
521 // We should be back to the original good page. | 528 // We should be back to the original good page. |
522 CheckAuthenticatedState(tab, AuthState::NONE); | 529 CheckAuthenticatedState(tab, AuthState::NONE); |
523 | 530 |
524 // Try to navigate to a new page. (to make sure bug 5800 is fixed). | 531 // Try to navigate to a new page. (to make sure bug 5800 is fixed). |
525 ui_test_utils::NavigateToURL(browser(), | 532 ui_test_utils::NavigateToURL(browser(), |
526 test_server()->GetURL("files/ssl/google.html")); | 533 test_server()->GetURL("files/ssl/google.html")); |
527 CheckUnauthenticatedState(tab); | 534 CheckUnauthenticatedState(tab, AuthState::NONE); |
528 } | 535 } |
529 | 536 |
530 // Visits a page with https error and then goes back using Browser::GoBack. | 537 // Visits a page with https error and then goes back using Browser::GoBack. |
531 IN_PROC_BROWSER_TEST_F(SSLUITest, | 538 IN_PROC_BROWSER_TEST_F(SSLUITest, |
532 TestHTTPSExpiredCertAndGoBackViaButton) { | 539 TestHTTPSExpiredCertAndGoBackViaButton) { |
533 ASSERT_TRUE(test_server()->Start()); | 540 ASSERT_TRUE(test_server()->Start()); |
534 ASSERT_TRUE(https_server_expired_.Start()); | 541 ASSERT_TRUE(https_server_expired_.Start()); |
535 | 542 |
536 // First navigate to an HTTP page. | 543 // First navigate to an HTTP page. |
537 ui_test_utils::NavigateToURL(browser(), | 544 ui_test_utils::NavigateToURL(browser(), |
(...skipping 15 matching lines...) Expand all Loading... |
553 | 560 |
554 // Wait until we hear the load failure, and make sure we haven't swapped out | 561 // Wait until we hear the load failure, and make sure we haven't swapped out |
555 // the previous page. Prevents regression of http://crbug.com/82667. | 562 // the previous page. Prevents regression of http://crbug.com/82667. |
556 load_failed_observer.Wait(); | 563 load_failed_observer.Wait(); |
557 EXPECT_FALSE(content::RenderViewHostTester::IsRenderViewHostSwappedOut( | 564 EXPECT_FALSE(content::RenderViewHostTester::IsRenderViewHostSwappedOut( |
558 tab->GetRenderViewHost())); | 565 tab->GetRenderViewHost())); |
559 | 566 |
560 // We should be back at the original good page. | 567 // We should be back at the original good page. |
561 EXPECT_FALSE(browser()->tab_strip_model()->GetActiveWebContents()-> | 568 EXPECT_FALSE(browser()->tab_strip_model()->GetActiveWebContents()-> |
562 GetInterstitialPage()); | 569 GetInterstitialPage()); |
563 CheckUnauthenticatedState(tab); | 570 CheckUnauthenticatedState(tab, AuthState::NONE); |
564 } | 571 } |
565 | 572 |
566 // Visits a page with https error and then goes back using GoToOffset. | 573 // Visits a page with https error and then goes back using GoToOffset. |
567 // Disabled because its flaky: http://crbug.com/40932, http://crbug.com/43575. | 574 // Disabled because its flaky: http://crbug.com/40932, http://crbug.com/43575. |
568 IN_PROC_BROWSER_TEST_F(SSLUITest, | 575 IN_PROC_BROWSER_TEST_F(SSLUITest, |
569 TestHTTPSExpiredCertAndGoBackViaMenu) { | 576 TestHTTPSExpiredCertAndGoBackViaMenu) { |
570 ASSERT_TRUE(test_server()->Start()); | 577 ASSERT_TRUE(test_server()->Start()); |
571 ASSERT_TRUE(https_server_expired_.Start()); | 578 ASSERT_TRUE(https_server_expired_.Start()); |
572 | 579 |
573 // First navigate to an HTTP page. | 580 // First navigate to an HTTP page. |
574 ui_test_utils::NavigateToURL(browser(), | 581 ui_test_utils::NavigateToURL(browser(), |
575 test_server()->GetURL("files/ssl/google.html")); | 582 test_server()->GetURL("files/ssl/google.html")); |
576 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents(); | 583 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents(); |
577 NavigationEntry* entry = tab->GetController().GetActiveEntry(); | 584 NavigationEntry* entry = tab->GetController().GetActiveEntry(); |
578 ASSERT_TRUE(entry); | 585 ASSERT_TRUE(entry); |
579 | 586 |
580 // Now go to a bad HTTPS page that shows an interstitial. | 587 // Now go to a bad HTTPS page that shows an interstitial. |
581 ui_test_utils::NavigateToURL(browser(), | 588 ui_test_utils::NavigateToURL(browser(), |
582 https_server_expired_.GetURL("files/ssl/google.html")); | 589 https_server_expired_.GetURL("files/ssl/google.html")); |
583 CheckAuthenticationBrokenState( | 590 CheckAuthenticationBrokenState( |
584 tab, net::CERT_STATUS_DATE_INVALID, AuthState::SHOWING_INTERSTITIAL); | 591 tab, net::CERT_STATUS_DATE_INVALID, AuthState::SHOWING_INTERSTITIAL); |
585 | 592 |
586 // Simulate user clicking and holding on back button (crbug.com/37215). | 593 // Simulate user clicking and holding on back button (crbug.com/37215). |
587 tab->GetController().GoToOffset(-1); | 594 tab->GetController().GoToOffset(-1); |
588 | 595 |
589 // We should be back at the original good page. | 596 // We should be back at the original good page. |
590 EXPECT_FALSE(browser()->tab_strip_model()->GetActiveWebContents()-> | 597 EXPECT_FALSE(browser()->tab_strip_model()->GetActiveWebContents()-> |
591 GetInterstitialPage()); | 598 GetInterstitialPage()); |
592 CheckUnauthenticatedState(tab); | 599 CheckUnauthenticatedState(tab, AuthState::NONE); |
593 } | 600 } |
594 | 601 |
595 // Visits a page with https error and then goes forward using GoToOffset. | 602 // Visits a page with https error and then goes forward using GoToOffset. |
596 IN_PROC_BROWSER_TEST_F(SSLUITest, TestHTTPSExpiredCertAndGoForward) { | 603 IN_PROC_BROWSER_TEST_F(SSLUITest, TestHTTPSExpiredCertAndGoForward) { |
597 ASSERT_TRUE(test_server()->Start()); | 604 ASSERT_TRUE(test_server()->Start()); |
598 ASSERT_TRUE(https_server_expired_.Start()); | 605 ASSERT_TRUE(https_server_expired_.Start()); |
599 | 606 |
600 // First navigate to two HTTP pages. | 607 // First navigate to two HTTP pages. |
601 ui_test_utils::NavigateToURL(browser(), | 608 ui_test_utils::NavigateToURL(browser(), |
602 test_server()->GetURL("files/ssl/google.html")); | 609 test_server()->GetURL("files/ssl/google.html")); |
(...skipping 28 matching lines...) Expand all Loading... |
631 content::WindowedNotificationObserver observer( | 638 content::WindowedNotificationObserver observer( |
632 content::NOTIFICATION_LOAD_STOP, | 639 content::NOTIFICATION_LOAD_STOP, |
633 content::Source<NavigationController>(&tab->GetController())); | 640 content::Source<NavigationController>(&tab->GetController())); |
634 tab->GetController().GoToOffset(1); | 641 tab->GetController().GoToOffset(1); |
635 observer.Wait(); | 642 observer.Wait(); |
636 } | 643 } |
637 | 644 |
638 // We should be showing the second good page. | 645 // We should be showing the second good page. |
639 EXPECT_FALSE(browser()->tab_strip_model()->GetActiveWebContents()-> | 646 EXPECT_FALSE(browser()->tab_strip_model()->GetActiveWebContents()-> |
640 GetInterstitialPage()); | 647 GetInterstitialPage()); |
641 CheckUnauthenticatedState(tab); | 648 CheckUnauthenticatedState(tab, AuthState::NONE); |
642 EXPECT_FALSE(tab->GetController().CanGoForward()); | 649 EXPECT_FALSE(tab->GetController().CanGoForward()); |
643 NavigationEntry* entry4 = tab->GetController().GetActiveEntry(); | 650 NavigationEntry* entry4 = tab->GetController().GetActiveEntry(); |
644 EXPECT_TRUE(entry2 == entry4); | 651 EXPECT_TRUE(entry2 == entry4); |
645 } | 652 } |
646 | 653 |
647 // Visit a HTTP page which request WSS connection to a server providing invalid | 654 // Visit a HTTP page which request WSS connection to a server providing invalid |
648 // certificate. Close the page while WSS connection waits for SSLManager's | 655 // certificate. Close the page while WSS connection waits for SSLManager's |
649 // response from UI thread. | 656 // response from UI thread. |
650 // Disabled on Windows because it was flaking on XP Tests (1). crbug.com/165258 | 657 // Disabled on Windows because it was flaking on XP Tests (1). crbug.com/165258 |
651 #if defined(OS_WIN) | 658 #if defined(OS_WIN) |
(...skipping 480 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1132 std::string replacement_path; | 1139 std::string replacement_path; |
1133 ASSERT_TRUE(GetFilePathWithHostAndPortReplacement( | 1140 ASSERT_TRUE(GetFilePathWithHostAndPortReplacement( |
1134 "files/ssl/page_displays_insecure_content.html", | 1141 "files/ssl/page_displays_insecure_content.html", |
1135 test_server()->host_port_pair(), | 1142 test_server()->host_port_pair(), |
1136 &replacement_path)); | 1143 &replacement_path)); |
1137 | 1144 |
1138 // Load original page over HTTP. | 1145 // Load original page over HTTP. |
1139 const GURL url_http = test_server()->GetURL(replacement_path); | 1146 const GURL url_http = test_server()->GetURL(replacement_path); |
1140 ui_test_utils::NavigateToURL(browser(), url_http); | 1147 ui_test_utils::NavigateToURL(browser(), url_http); |
1141 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents(); | 1148 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents(); |
1142 CheckUnauthenticatedState(tab); | 1149 CheckUnauthenticatedState(tab, AuthState::NONE); |
1143 | 1150 |
1144 // Load again but over SSL. It should be marked as displaying insecure | 1151 // Load again but over SSL. It should be marked as displaying insecure |
1145 // content (even though the image comes from the WebCore memory cache). | 1152 // content (even though the image comes from the WebCore memory cache). |
1146 const GURL url_https = https_server_.GetURL(replacement_path); | 1153 const GURL url_https = https_server_.GetURL(replacement_path); |
1147 ui_test_utils::NavigateToURL(browser(), url_https); | 1154 ui_test_utils::NavigateToURL(browser(), url_https); |
1148 CheckAuthenticatedState(tab, AuthState::DISPLAYED_INSECURE_CONTENT); | 1155 CheckAuthenticatedState(tab, AuthState::DISPLAYED_INSECURE_CONTENT); |
1149 } | 1156 } |
1150 | 1157 |
1151 // http://crbug.com/84729 | 1158 // http://crbug.com/84729 |
1152 #if defined(OS_CHROMEOS) | 1159 #if defined(OS_CHROMEOS) |
(...skipping 13 matching lines...) Expand all Loading... |
1166 std::string replacement_path; | 1173 std::string replacement_path; |
1167 ASSERT_TRUE(GetFilePathWithHostAndPortReplacement( | 1174 ASSERT_TRUE(GetFilePathWithHostAndPortReplacement( |
1168 "files/ssl/page_runs_insecure_content.html", | 1175 "files/ssl/page_runs_insecure_content.html", |
1169 test_server()->host_port_pair(), | 1176 test_server()->host_port_pair(), |
1170 &replacement_path)); | 1177 &replacement_path)); |
1171 | 1178 |
1172 // Load original page over HTTP. | 1179 // Load original page over HTTP. |
1173 const GURL url_http = test_server()->GetURL(replacement_path); | 1180 const GURL url_http = test_server()->GetURL(replacement_path); |
1174 ui_test_utils::NavigateToURL(browser(), url_http); | 1181 ui_test_utils::NavigateToURL(browser(), url_http); |
1175 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents(); | 1182 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents(); |
1176 CheckUnauthenticatedState(tab); | 1183 CheckUnauthenticatedState(tab, AuthState::NONE); |
1177 | 1184 |
1178 // Load again but over SSL. It should be marked as displaying insecure | 1185 // Load again but over SSL. It should be marked as displaying insecure |
1179 // content (even though the image comes from the WebCore memory cache). | 1186 // content (even though the image comes from the WebCore memory cache). |
1180 const GURL url_https = https_server_.GetURL(replacement_path); | 1187 const GURL url_https = https_server_.GetURL(replacement_path); |
1181 ui_test_utils::NavigateToURL(browser(), url_https); | 1188 ui_test_utils::NavigateToURL(browser(), url_https); |
1182 CheckAuthenticationBrokenState( | 1189 CheckAuthenticationBrokenState( |
1183 tab, | 1190 tab, |
1184 CertError::NONE, | 1191 CertError::NONE, |
1185 AuthState::DISPLAYED_INSECURE_CONTENT | AuthState::RAN_INSECURE_CONTENT); | 1192 AuthState::DISPLAYED_INSECURE_CONTENT | AuthState::RAN_INSECURE_CONTENT); |
1186 } | 1193 } |
(...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1395 IN_PROC_BROWSER_TEST_F(SSLUITest, TestRedirectHTTPSToHTTP) { | 1402 IN_PROC_BROWSER_TEST_F(SSLUITest, TestRedirectHTTPSToHTTP) { |
1396 ASSERT_TRUE(test_server()->Start()); | 1403 ASSERT_TRUE(test_server()->Start()); |
1397 ASSERT_TRUE(https_server_.Start()); | 1404 ASSERT_TRUE(https_server_.Start()); |
1398 | 1405 |
1399 GURL https_url = https_server_.GetURL("server-redirect?"); | 1406 GURL https_url = https_server_.GetURL("server-redirect?"); |
1400 GURL http_url = test_server()->GetURL("files/ssl/google.html"); | 1407 GURL http_url = test_server()->GetURL("files/ssl/google.html"); |
1401 | 1408 |
1402 ui_test_utils::NavigateToURL(browser(), | 1409 ui_test_utils::NavigateToURL(browser(), |
1403 GURL(https_url.spec() + http_url.spec())); | 1410 GURL(https_url.spec() + http_url.spec())); |
1404 CheckUnauthenticatedState( | 1411 CheckUnauthenticatedState( |
1405 browser()->tab_strip_model()->GetActiveWebContents()); | 1412 browser()->tab_strip_model()->GetActiveWebContents(), AuthState::NONE); |
1406 } | 1413 } |
1407 | 1414 |
1408 // Visits a page to which we could not connect (bad port) over http and https | 1415 // Visits a page to which we could not connect (bad port) over http and https |
1409 // and make sure the security style is correct. | 1416 // and make sure the security style is correct. |
1410 IN_PROC_BROWSER_TEST_F(SSLUITest, TestConnectToBadPort) { | 1417 IN_PROC_BROWSER_TEST_F(SSLUITest, TestConnectToBadPort) { |
1411 ui_test_utils::NavigateToURL(browser(), GURL("http://localhost:17")); | 1418 ui_test_utils::NavigateToURL(browser(), GURL("http://localhost:17")); |
1412 CheckUnauthenticatedState( | 1419 CheckUnauthenticatedState( |
1413 browser()->tab_strip_model()->GetActiveWebContents()); | 1420 browser()->tab_strip_model()->GetActiveWebContents(), |
| 1421 AuthState::SHOWING_ERROR); |
1414 | 1422 |
1415 // Same thing over HTTPS. | 1423 // Same thing over HTTPS. |
1416 ui_test_utils::NavigateToURL(browser(), GURL("https://localhost:17")); | 1424 ui_test_utils::NavigateToURL(browser(), GURL("https://localhost:17")); |
1417 CheckUnauthenticatedState( | 1425 CheckUnauthenticatedState( |
1418 browser()->tab_strip_model()->GetActiveWebContents()); | 1426 browser()->tab_strip_model()->GetActiveWebContents(), |
| 1427 AuthState::SHOWING_ERROR); |
1419 } | 1428 } |
1420 | 1429 |
1421 // | 1430 // |
1422 // Frame navigation | 1431 // Frame navigation |
1423 // | 1432 // |
1424 | 1433 |
1425 // From a good HTTPS top frame: | 1434 // From a good HTTPS top frame: |
1426 // - navigate to an OK HTTPS frame | 1435 // - navigate to an OK HTTPS frame |
1427 // - navigate to a bad HTTPS (expect unsafe content and filtered frame), then | 1436 // - navigate to a bad HTTPS (expect unsafe content and filtered frame), then |
1428 // back | 1437 // back |
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1579 | 1588 |
1580 std::string top_frame_path; | 1589 std::string top_frame_path; |
1581 ASSERT_TRUE(GetTopFramePath(*test_server(), | 1590 ASSERT_TRUE(GetTopFramePath(*test_server(), |
1582 https_server_, | 1591 https_server_, |
1583 https_server_expired_, | 1592 https_server_expired_, |
1584 &top_frame_path)); | 1593 &top_frame_path)); |
1585 | 1594 |
1586 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents(); | 1595 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents(); |
1587 ui_test_utils::NavigateToURL(browser(), | 1596 ui_test_utils::NavigateToURL(browser(), |
1588 test_server()->GetURL(top_frame_path)); | 1597 test_server()->GetURL(top_frame_path)); |
1589 CheckUnauthenticatedState(tab); | 1598 CheckUnauthenticatedState(tab, AuthState::NONE); |
1590 | 1599 |
1591 // Now navigate inside the frame to a secure HTTPS frame. | 1600 // Now navigate inside the frame to a secure HTTPS frame. |
1592 { | 1601 { |
1593 bool success = false; | 1602 bool success = false; |
1594 content::WindowedNotificationObserver observer( | 1603 content::WindowedNotificationObserver observer( |
1595 content::NOTIFICATION_LOAD_STOP, | 1604 content::NOTIFICATION_LOAD_STOP, |
1596 content::Source<NavigationController>(&tab->GetController())); | 1605 content::Source<NavigationController>(&tab->GetController())); |
1597 EXPECT_TRUE(content::ExecuteScriptAndExtractBool( | 1606 EXPECT_TRUE(content::ExecuteScriptAndExtractBool( |
1598 tab, | 1607 tab, |
1599 "window.domAutomationController.send(clickLink('goodHTTPSLink'));", | 1608 "window.domAutomationController.send(clickLink('goodHTTPSLink'));", |
1600 &success)); | 1609 &success)); |
1601 ASSERT_TRUE(success); | 1610 ASSERT_TRUE(success); |
1602 observer.Wait(); | 1611 observer.Wait(); |
1603 } | 1612 } |
1604 | 1613 |
1605 // We should still be unauthenticated. | 1614 // We should still be unauthenticated. |
1606 CheckUnauthenticatedState(tab); | 1615 CheckUnauthenticatedState(tab, AuthState::NONE); |
1607 | 1616 |
1608 // Now navigate to a bad HTTPS frame. | 1617 // Now navigate to a bad HTTPS frame. |
1609 { | 1618 { |
1610 bool success = false; | 1619 bool success = false; |
1611 content::WindowedNotificationObserver observer( | 1620 content::WindowedNotificationObserver observer( |
1612 content::NOTIFICATION_LOAD_STOP, | 1621 content::NOTIFICATION_LOAD_STOP, |
1613 content::Source<NavigationController>(&tab->GetController())); | 1622 content::Source<NavigationController>(&tab->GetController())); |
1614 EXPECT_TRUE(content::ExecuteScriptAndExtractBool( | 1623 EXPECT_TRUE(content::ExecuteScriptAndExtractBool( |
1615 tab, | 1624 tab, |
1616 "window.domAutomationController.send(clickLink('badHTTPSLink'));", | 1625 "window.domAutomationController.send(clickLink('badHTTPSLink'));", |
1617 &success)); | 1626 &success)); |
1618 ASSERT_TRUE(success); | 1627 ASSERT_TRUE(success); |
1619 observer.Wait(); | 1628 observer.Wait(); |
1620 } | 1629 } |
1621 | 1630 |
1622 // State should not have changed. | 1631 // State should not have changed. |
1623 CheckUnauthenticatedState(tab); | 1632 CheckUnauthenticatedState(tab, AuthState::NONE); |
1624 | 1633 |
1625 // And the frame should have been blocked (see bug #2316). | 1634 // And the frame should have been blocked (see bug #2316). |
1626 bool is_content_evil = true; | 1635 bool is_content_evil = true; |
1627 content::RenderFrameHost* content_frame = content::FrameMatchingPredicate( | 1636 content::RenderFrameHost* content_frame = content::FrameMatchingPredicate( |
1628 tab, base::Bind(&content::FrameMatchesName, "contentFrame")); | 1637 tab, base::Bind(&content::FrameMatchesName, "contentFrame")); |
1629 std::string is_evil_js("window.domAutomationController.send(" | 1638 std::string is_evil_js("window.domAutomationController.send(" |
1630 "document.getElementById('evilDiv') != null);"); | 1639 "document.getElementById('evilDiv') != null);"); |
1631 EXPECT_TRUE(content::ExecuteScriptAndExtractBool(content_frame, | 1640 EXPECT_TRUE(content::ExecuteScriptAndExtractBool(content_frame, |
1632 is_evil_js, | 1641 is_evil_js, |
1633 &is_content_evil)); | 1642 &is_content_evil)); |
(...skipping 235 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1869 | 1878 |
1870 // Visit a page over https that contains a frame with a redirect. | 1879 // Visit a page over https that contains a frame with a redirect. |
1871 | 1880 |
1872 // XMLHttpRequest insecure content in synchronous mode. | 1881 // XMLHttpRequest insecure content in synchronous mode. |
1873 | 1882 |
1874 // XMLHttpRequest insecure content in asynchronous mode. | 1883 // XMLHttpRequest insecure content in asynchronous mode. |
1875 | 1884 |
1876 // XMLHttpRequest over bad ssl in synchronous mode. | 1885 // XMLHttpRequest over bad ssl in synchronous mode. |
1877 | 1886 |
1878 // XMLHttpRequest over OK ssl in synchronous mode. | 1887 // XMLHttpRequest over OK ssl in synchronous mode. |
OLD | NEW |