| 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 <utility> | 5 #include <utility> |
| 6 | 6 |
| 7 #include "base/base_switches.h" | 7 #include "base/base_switches.h" |
| 8 #include "base/bind.h" | 8 #include "base/bind.h" |
| 9 #include "base/bind_helpers.h" | 9 #include "base/bind_helpers.h" |
| 10 #include "base/callback.h" | 10 #include "base/callback.h" |
| (...skipping 14 matching lines...) Expand all Loading... |
| 25 #include "chrome/app/chrome_command_ids.h" | 25 #include "chrome/app/chrome_command_ids.h" |
| 26 #include "chrome/browser/browser_process.h" | 26 #include "chrome/browser/browser_process.h" |
| 27 #include "chrome/browser/chrome_notification_types.h" | 27 #include "chrome/browser/chrome_notification_types.h" |
| 28 #include "chrome/browser/content_settings/host_content_settings_map_factory.h" | 28 #include "chrome/browser/content_settings/host_content_settings_map_factory.h" |
| 29 #include "chrome/browser/interstitials/security_interstitial_page_test_utils.h" | 29 #include "chrome/browser/interstitials/security_interstitial_page_test_utils.h" |
| 30 #include "chrome/browser/profiles/profile.h" | 30 #include "chrome/browser/profiles/profile.h" |
| 31 #include "chrome/browser/ssl/bad_clock_blocking_page.h" | 31 #include "chrome/browser/ssl/bad_clock_blocking_page.h" |
| 32 #include "chrome/browser/ssl/cert_report_helper.h" | 32 #include "chrome/browser/ssl/cert_report_helper.h" |
| 33 #include "chrome/browser/ssl/cert_verifier_browser_test.h" | 33 #include "chrome/browser/ssl/cert_verifier_browser_test.h" |
| 34 #include "chrome/browser/ssl/certificate_reporting_test_utils.h" | 34 #include "chrome/browser/ssl/certificate_reporting_test_utils.h" |
| 35 #include "chrome/browser/ssl/chrome_security_state_model_client.h" | |
| 36 #include "chrome/browser/ssl/chrome_ssl_host_state_delegate.h" | 35 #include "chrome/browser/ssl/chrome_ssl_host_state_delegate.h" |
| 37 #include "chrome/browser/ssl/common_name_mismatch_handler.h" | 36 #include "chrome/browser/ssl/common_name_mismatch_handler.h" |
| 37 #include "chrome/browser/ssl/security_state_tab_helper.h" |
| 38 #include "chrome/browser/ssl/ssl_blocking_page.h" | 38 #include "chrome/browser/ssl/ssl_blocking_page.h" |
| 39 #include "chrome/browser/ssl/ssl_error_handler.h" | 39 #include "chrome/browser/ssl/ssl_error_handler.h" |
| 40 #include "chrome/browser/ui/browser.h" | 40 #include "chrome/browser/ui/browser.h" |
| 41 #include "chrome/browser/ui/browser_commands.h" | 41 #include "chrome/browser/ui/browser_commands.h" |
| 42 #include "chrome/browser/ui/browser_finder.h" | 42 #include "chrome/browser/ui/browser_finder.h" |
| 43 #include "chrome/browser/ui/browser_navigator.h" | 43 #include "chrome/browser/ui/browser_navigator.h" |
| 44 #include "chrome/browser/ui/browser_navigator_params.h" | 44 #include "chrome/browser/ui/browser_navigator_params.h" |
| 45 #include "chrome/browser/ui/browser_tabstrip.h" | 45 #include "chrome/browser/ui/browser_tabstrip.h" |
| 46 #include "chrome/browser/ui/tabs/tab_strip_model.h" | 46 #include "chrome/browser/ui/tabs/tab_strip_model.h" |
| 47 #include "chrome/common/chrome_paths.h" | 47 #include "chrome/common/chrome_paths.h" |
| 48 #include "chrome/common/chrome_switches.h" | 48 #include "chrome/common/chrome_switches.h" |
| 49 #include "chrome/common/pref_names.h" | 49 #include "chrome/common/pref_names.h" |
| 50 #include "chrome/test/base/in_process_browser_test.h" | 50 #include "chrome/test/base/in_process_browser_test.h" |
| 51 #include "chrome/test/base/ui_test_utils.h" | 51 #include "chrome/test/base/ui_test_utils.h" |
| 52 #include "components/content_settings/core/browser/host_content_settings_map.h" | 52 #include "components/content_settings/core/browser/host_content_settings_map.h" |
| 53 #include "components/network_time/network_time_tracker.h" | 53 #include "components/network_time/network_time_tracker.h" |
| 54 #include "components/prefs/pref_service.h" | 54 #include "components/prefs/pref_service.h" |
| 55 #include "components/security_interstitials/core/controller_client.h" | 55 #include "components/security_interstitials/core/controller_client.h" |
| 56 #include "components/security_interstitials/core/metrics_helper.h" | 56 #include "components/security_interstitials/core/metrics_helper.h" |
| 57 #include "components/security_state/security_state_model.h" | 57 #include "components/security_state/core/security_state.h" |
| 58 #include "components/security_state/switches.h" | 58 #include "components/security_state/core/switches.h" |
| 59 #include "components/ssl_errors/error_classification.h" | 59 #include "components/ssl_errors/error_classification.h" |
| 60 #include "components/variations/variations_associated_data.h" | 60 #include "components/variations/variations_associated_data.h" |
| 61 #include "components/web_modal/web_contents_modal_dialog_manager.h" | 61 #include "components/web_modal/web_contents_modal_dialog_manager.h" |
| 62 #include "content/public/browser/browser_context.h" | 62 #include "content/public/browser/browser_context.h" |
| 63 #include "content/public/browser/interstitial_page.h" | 63 #include "content/public/browser/interstitial_page.h" |
| 64 #include "content/public/browser/navigation_controller.h" | 64 #include "content/public/browser/navigation_controller.h" |
| 65 #include "content/public/browser/navigation_entry.h" | 65 #include "content/public/browser/navigation_entry.h" |
| 66 #include "content/public/browser/notification_details.h" | 66 #include "content/public/browser/notification_details.h" |
| 67 #include "content/public/browser/notification_service.h" | 67 #include "content/public/browser/notification_service.h" |
| 68 #include "content/public/browser/render_frame_host.h" | 68 #include "content/public/browser/render_frame_host.h" |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 152 bool ran_insecure_content = | 152 bool ran_insecure_content = |
| 153 !!(entry.GetSSL().content_status & SSLStatus::RAN_INSECURE_CONTENT); | 153 !!(entry.GetSSL().content_status & SSLStatus::RAN_INSECURE_CONTENT); |
| 154 EXPECT_EQ(!!(expected_authentication_state & AuthState::RAN_INSECURE_CONTENT), | 154 EXPECT_EQ(!!(expected_authentication_state & AuthState::RAN_INSECURE_CONTENT), |
| 155 ran_insecure_content); | 155 ran_insecure_content); |
| 156 } | 156 } |
| 157 | 157 |
| 158 } // namespace AuthState | 158 } // namespace AuthState |
| 159 | 159 |
| 160 namespace SecurityStyle { | 160 namespace SecurityStyle { |
| 161 | 161 |
| 162 void Check( | 162 void Check(WebContents* tab, |
| 163 WebContents* tab, | 163 security_state::SecurityLevel expected_security_level) { |
| 164 security_state::SecurityStateModel::SecurityLevel expected_security_level) { | 164 SecurityStateTabHelper* helper = SecurityStateTabHelper::FromWebContents(tab); |
| 165 ChromeSecurityStateModelClient* model_client = | 165 security_state::SecurityInfo security_info; |
| 166 ChromeSecurityStateModelClient::FromWebContents(tab); | 166 helper->GetSecurityInfo(&security_info); |
| 167 security_state::SecurityStateModel::SecurityInfo security_info; | |
| 168 model_client->GetSecurityInfo(&security_info); | |
| 169 EXPECT_EQ(expected_security_level, security_info.security_level); | 167 EXPECT_EQ(expected_security_level, security_info.security_level); |
| 170 } | 168 } |
| 171 | 169 |
| 172 } // namespace SecurityStyle | 170 } // namespace SecurityStyle |
| 173 | 171 |
| 174 namespace CertError { | 172 namespace CertError { |
| 175 | 173 |
| 176 enum CertErrorFlags { | 174 enum CertErrorFlags { |
| 177 NONE = 0 | 175 NONE = 0 |
| 178 }; | 176 }; |
| 179 | 177 |
| 180 void Check(const NavigationEntry& entry, net::CertStatus error) { | 178 void Check(const NavigationEntry& entry, net::CertStatus error) { |
| 181 if (error) { | 179 if (error) { |
| 182 EXPECT_EQ(error, entry.GetSSL().cert_status & error); | 180 EXPECT_EQ(error, entry.GetSSL().cert_status & error); |
| 183 net::CertStatus extra_cert_errors = | 181 net::CertStatus extra_cert_errors = |
| 184 error ^ (entry.GetSSL().cert_status & net::CERT_STATUS_ALL_ERRORS); | 182 error ^ (entry.GetSSL().cert_status & net::CERT_STATUS_ALL_ERRORS); |
| 185 EXPECT_FALSE(extra_cert_errors) << "Got unexpected cert error: " | 183 EXPECT_FALSE(extra_cert_errors) << "Got unexpected cert error: " |
| 186 << extra_cert_errors; | 184 << extra_cert_errors; |
| 187 } else { | 185 } else { |
| 188 EXPECT_EQ(0U, entry.GetSSL().cert_status & net::CERT_STATUS_ALL_ERRORS); | 186 EXPECT_EQ(0U, entry.GetSSL().cert_status & net::CERT_STATUS_ALL_ERRORS); |
| 189 } | 187 } |
| 190 } | 188 } |
| 191 | 189 |
| 192 } // namespace CertError | 190 } // namespace CertError |
| 193 | 191 |
| 194 void CheckSecurityState( | 192 void CheckSecurityState(WebContents* tab, |
| 195 WebContents* tab, | 193 net::CertStatus expected_error, |
| 196 net::CertStatus expected_error, | 194 security_state::SecurityLevel expected_security_level, |
| 197 security_state::SecurityStateModel::SecurityLevel expected_security_level, | 195 int expected_authentication_state) { |
| 198 int expected_authentication_state) { | |
| 199 ASSERT_FALSE(tab->IsCrashed()); | 196 ASSERT_FALSE(tab->IsCrashed()); |
| 200 NavigationEntry* entry = tab->GetController().GetActiveEntry(); | 197 NavigationEntry* entry = tab->GetController().GetActiveEntry(); |
| 201 ASSERT_TRUE(entry); | 198 ASSERT_TRUE(entry); |
| 202 CertError::Check(*entry, expected_error); | 199 CertError::Check(*entry, expected_error); |
| 203 SecurityStyle::Check(tab, expected_security_level); | 200 SecurityStyle::Check(tab, expected_security_level); |
| 204 AuthState::Check(*entry, expected_authentication_state); | 201 AuthState::Check(*entry, expected_authentication_state); |
| 205 } | 202 } |
| 206 | 203 |
| 207 // This observer waits for the SSLErrorHandler to start an interstitial timer | 204 // This observer waits for the SSLErrorHandler to start an interstitial timer |
| 208 // for the given web contents. | 205 // for the given web contents. |
| (...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 309 void SetUpCommandLine(base::CommandLine* command_line) override { | 306 void SetUpCommandLine(base::CommandLine* command_line) override { |
| 310 // Browser will both run and display insecure content. | 307 // Browser will both run and display insecure content. |
| 311 command_line->AppendSwitch(switches::kAllowRunningInsecureContent); | 308 command_line->AppendSwitch(switches::kAllowRunningInsecureContent); |
| 312 // Use process-per-site so that navigating to a same-site page in a | 309 // Use process-per-site so that navigating to a same-site page in a |
| 313 // new tab will use the same process. | 310 // new tab will use the same process. |
| 314 command_line->AppendSwitch(switches::kProcessPerSite); | 311 command_line->AppendSwitch(switches::kProcessPerSite); |
| 315 } | 312 } |
| 316 | 313 |
| 317 void CheckAuthenticatedState(WebContents* tab, | 314 void CheckAuthenticatedState(WebContents* tab, |
| 318 int expected_authentication_state) { | 315 int expected_authentication_state) { |
| 319 CheckSecurityState(tab, CertError::NONE, | 316 CheckSecurityState(tab, CertError::NONE, security_state::SECURE, |
| 320 security_state::SecurityStateModel::SECURE, | |
| 321 expected_authentication_state); | 317 expected_authentication_state); |
| 322 } | 318 } |
| 323 | 319 |
| 324 void CheckUnauthenticatedState(WebContents* tab, | 320 void CheckUnauthenticatedState(WebContents* tab, |
| 325 int expected_authentication_state) { | 321 int expected_authentication_state) { |
| 326 CheckSecurityState(tab, CertError::NONE, | 322 CheckSecurityState(tab, CertError::NONE, security_state::NONE, |
| 327 security_state::SecurityStateModel::NONE, | |
| 328 expected_authentication_state); | 323 expected_authentication_state); |
| 329 } | 324 } |
| 330 | 325 |
| 331 void CheckAuthenticationBrokenState(WebContents* tab, | 326 void CheckAuthenticationBrokenState(WebContents* tab, |
| 332 net::CertStatus error, | 327 net::CertStatus error, |
| 333 int expected_authentication_state) { | 328 int expected_authentication_state) { |
| 334 CheckSecurityState(tab, error, | 329 CheckSecurityState(tab, error, security_state::DANGEROUS, |
| 335 security_state::SecurityStateModel::DANGEROUS, | |
| 336 expected_authentication_state); | 330 expected_authentication_state); |
| 337 // CERT_STATUS_UNABLE_TO_CHECK_REVOCATION doesn't lower the security level | 331 // CERT_STATUS_UNABLE_TO_CHECK_REVOCATION doesn't lower the security level |
| 338 // to DANGEROUS. | 332 // to DANGEROUS. |
| 339 ASSERT_NE(net::CERT_STATUS_UNABLE_TO_CHECK_REVOCATION, error); | 333 ASSERT_NE(net::CERT_STATUS_UNABLE_TO_CHECK_REVOCATION, error); |
| 340 } | 334 } |
| 341 | 335 |
| 342 void CheckWorkerLoadResult(WebContents* tab, bool expected_load) { | 336 void CheckWorkerLoadResult(WebContents* tab, bool expected_load) { |
| 343 // Workers are async and we don't have notifications for them passing | 337 // Workers are async and we don't have notifications for them passing |
| 344 // messages since they do it between renderer and worker processes. | 338 // messages since they do it between renderer and worker processes. |
| 345 // So have a polling loop, check every 200ms, timeout at 30s. | 339 // So have a polling loop, check every 200ms, timeout at 30s. |
| (...skipping 618 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 964 | 958 |
| 965 ui_test_utils::NavigateToURL(browser(), | 959 ui_test_utils::NavigateToURL(browser(), |
| 966 https_server_expired_.GetURL("/title1.html")); | 960 https_server_expired_.GetURL("/title1.html")); |
| 967 WebContents* clock_tab = browser()->tab_strip_model()->GetActiveWebContents(); | 961 WebContents* clock_tab = browser()->tab_strip_model()->GetActiveWebContents(); |
| 968 content::WaitForInterstitialAttach(clock_tab); | 962 content::WaitForInterstitialAttach(clock_tab); |
| 969 InterstitialPage* clock_interstitial = clock_tab->GetInterstitialPage(); | 963 InterstitialPage* clock_interstitial = clock_tab->GetInterstitialPage(); |
| 970 ASSERT_TRUE(clock_interstitial); | 964 ASSERT_TRUE(clock_interstitial); |
| 971 EXPECT_EQ(BadClockBlockingPage::kTypeForTesting, | 965 EXPECT_EQ(BadClockBlockingPage::kTypeForTesting, |
| 972 clock_interstitial->GetDelegateForTesting()->GetTypeForTesting()); | 966 clock_interstitial->GetDelegateForTesting()->GetTypeForTesting()); |
| 973 CheckSecurityState(clock_tab, net::CERT_STATUS_DATE_INVALID, | 967 CheckSecurityState(clock_tab, net::CERT_STATUS_DATE_INVALID, |
| 974 security_state::SecurityStateModel::DANGEROUS, | 968 security_state::DANGEROUS, |
| 975 AuthState::SHOWING_INTERSTITIAL); | 969 AuthState::SHOWING_INTERSTITIAL); |
| 976 } | 970 } |
| 977 | 971 |
| 978 IN_PROC_BROWSER_TEST_F(SSLUITest, TestHTTPSErrorCausedByClockUsingNetwork) { | 972 IN_PROC_BROWSER_TEST_F(SSLUITest, TestHTTPSErrorCausedByClockUsingNetwork) { |
| 979 ASSERT_TRUE(https_server_expired_.Start()); | 973 ASSERT_TRUE(https_server_expired_.Start()); |
| 980 | 974 |
| 981 // Set network forward ten minutes, which is sufficient to trigger | 975 // Set network forward ten minutes, which is sufficient to trigger |
| 982 // the interstitial. | 976 // the interstitial. |
| 983 g_browser_process->network_time_tracker()->UpdateNetworkTime( | 977 g_browser_process->network_time_tracker()->UpdateNetworkTime( |
| 984 base::Time::Now() + base::TimeDelta::FromMinutes(10), | 978 base::Time::Now() + base::TimeDelta::FromMinutes(10), |
| 985 base::TimeDelta::FromMilliseconds(1), /* resolution */ | 979 base::TimeDelta::FromMilliseconds(1), /* resolution */ |
| 986 base::TimeDelta::FromMilliseconds(500), /* latency */ | 980 base::TimeDelta::FromMilliseconds(500), /* latency */ |
| 987 base::TimeTicks::Now() /* posting time of this update */); | 981 base::TimeTicks::Now() /* posting time of this update */); |
| 988 | 982 |
| 989 ui_test_utils::NavigateToURL(browser(), | 983 ui_test_utils::NavigateToURL(browser(), |
| 990 https_server_expired_.GetURL("/title1.html")); | 984 https_server_expired_.GetURL("/title1.html")); |
| 991 WebContents* clock_tab = browser()->tab_strip_model()->GetActiveWebContents(); | 985 WebContents* clock_tab = browser()->tab_strip_model()->GetActiveWebContents(); |
| 992 content::WaitForInterstitialAttach(clock_tab); | 986 content::WaitForInterstitialAttach(clock_tab); |
| 993 InterstitialPage* clock_interstitial = clock_tab->GetInterstitialPage(); | 987 InterstitialPage* clock_interstitial = clock_tab->GetInterstitialPage(); |
| 994 ASSERT_TRUE(clock_interstitial); | 988 ASSERT_TRUE(clock_interstitial); |
| 995 EXPECT_EQ(BadClockBlockingPage::kTypeForTesting, | 989 EXPECT_EQ(BadClockBlockingPage::kTypeForTesting, |
| 996 clock_interstitial->GetDelegateForTesting()->GetTypeForTesting()); | 990 clock_interstitial->GetDelegateForTesting()->GetTypeForTesting()); |
| 997 CheckSecurityState(clock_tab, net::CERT_STATUS_DATE_INVALID, | 991 CheckSecurityState(clock_tab, net::CERT_STATUS_DATE_INVALID, |
| 998 security_state::SecurityStateModel::DANGEROUS, | 992 security_state::DANGEROUS, |
| 999 AuthState::SHOWING_INTERSTITIAL); | 993 AuthState::SHOWING_INTERSTITIAL); |
| 1000 } | 994 } |
| 1001 | 995 |
| 1002 // Visits a page with https error and then goes back using Browser::GoBack. | 996 // Visits a page with https error and then goes back using Browser::GoBack. |
| 1003 IN_PROC_BROWSER_TEST_F(SSLUITest, | 997 IN_PROC_BROWSER_TEST_F(SSLUITest, |
| 1004 TestHTTPSExpiredCertAndGoBackViaButton) { | 998 TestHTTPSExpiredCertAndGoBackViaButton) { |
| 1005 ASSERT_TRUE(embedded_test_server()->Start()); | 999 ASSERT_TRUE(embedded_test_server()->Start()); |
| 1006 ASSERT_TRUE(https_server_expired_.Start()); | 1000 ASSERT_TRUE(https_server_expired_.Start()); |
| 1007 | 1001 |
| 1008 // First navigate to an HTTP page. | 1002 // First navigate to an HTTP page. |
| (...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1194 // MarkNonSecureAs field trial is enabled. | 1188 // MarkNonSecureAs field trial is enabled. |
| 1195 IN_PROC_BROWSER_TEST_F(SSLUITest, MarkFileAsNonSecure) { | 1189 IN_PROC_BROWSER_TEST_F(SSLUITest, MarkFileAsNonSecure) { |
| 1196 scoped_refptr<base::FieldTrial> trial = | 1190 scoped_refptr<base::FieldTrial> trial = |
| 1197 base::FieldTrialList::CreateFieldTrial( | 1191 base::FieldTrialList::CreateFieldTrial( |
| 1198 "MarkNonSecureAs", security_state::switches::kMarkHttpAsDangerous); | 1192 "MarkNonSecureAs", security_state::switches::kMarkHttpAsDangerous); |
| 1199 | 1193 |
| 1200 content::WebContents* contents = | 1194 content::WebContents* contents = |
| 1201 browser()->tab_strip_model()->GetActiveWebContents(); | 1195 browser()->tab_strip_model()->GetActiveWebContents(); |
| 1202 ASSERT_TRUE(contents); | 1196 ASSERT_TRUE(contents); |
| 1203 | 1197 |
| 1204 ChromeSecurityStateModelClient* model_client = | 1198 SecurityStateTabHelper* helper = |
| 1205 ChromeSecurityStateModelClient::FromWebContents(contents); | 1199 SecurityStateTabHelper::FromWebContents(contents); |
| 1206 ASSERT_TRUE(model_client); | 1200 ASSERT_TRUE(helper); |
| 1207 | 1201 |
| 1208 ui_test_utils::NavigateToURL(browser(), GURL("file:///")); | 1202 ui_test_utils::NavigateToURL(browser(), GURL("file:///")); |
| 1209 security_state::SecurityStateModel::SecurityInfo security_info; | 1203 security_state::SecurityInfo security_info; |
| 1210 model_client->GetSecurityInfo(&security_info); | 1204 helper->GetSecurityInfo(&security_info); |
| 1211 EXPECT_EQ(security_state::SecurityStateModel::NONE, | 1205 EXPECT_EQ(security_state::NONE, security_info.security_level); |
| 1212 security_info.security_level); | |
| 1213 } | 1206 } |
| 1214 | 1207 |
| 1215 IN_PROC_BROWSER_TEST_F(SSLUITest, MarkAboutAsNonSecure) { | 1208 IN_PROC_BROWSER_TEST_F(SSLUITest, MarkAboutAsNonSecure) { |
| 1216 scoped_refptr<base::FieldTrial> trial = | 1209 scoped_refptr<base::FieldTrial> trial = |
| 1217 base::FieldTrialList::CreateFieldTrial( | 1210 base::FieldTrialList::CreateFieldTrial( |
| 1218 "MarkNonSecureAs", security_state::switches::kMarkHttpAsDangerous); | 1211 "MarkNonSecureAs", security_state::switches::kMarkHttpAsDangerous); |
| 1219 | 1212 |
| 1220 content::WebContents* contents = | 1213 content::WebContents* contents = |
| 1221 browser()->tab_strip_model()->GetActiveWebContents(); | 1214 browser()->tab_strip_model()->GetActiveWebContents(); |
| 1222 ASSERT_TRUE(contents); | 1215 ASSERT_TRUE(contents); |
| 1223 | 1216 |
| 1224 ChromeSecurityStateModelClient* model_client = | 1217 SecurityStateTabHelper* helper = |
| 1225 ChromeSecurityStateModelClient::FromWebContents(contents); | 1218 SecurityStateTabHelper::FromWebContents(contents); |
| 1226 ASSERT_TRUE(model_client); | 1219 ASSERT_TRUE(helper); |
| 1227 | 1220 |
| 1228 ui_test_utils::NavigateToURL(browser(), GURL("about:blank")); | 1221 ui_test_utils::NavigateToURL(browser(), GURL("about:blank")); |
| 1229 security_state::SecurityStateModel::SecurityInfo security_info; | 1222 security_state::SecurityInfo security_info; |
| 1230 model_client->GetSecurityInfo(&security_info); | 1223 helper->GetSecurityInfo(&security_info); |
| 1231 EXPECT_EQ(security_state::SecurityStateModel::NONE, | 1224 EXPECT_EQ(security_state::NONE, security_info.security_level); |
| 1232 security_info.security_level); | |
| 1233 } | 1225 } |
| 1234 | 1226 |
| 1235 IN_PROC_BROWSER_TEST_F(SSLUITest, MarkDataAsNonSecure) { | 1227 IN_PROC_BROWSER_TEST_F(SSLUITest, MarkDataAsNonSecure) { |
| 1236 scoped_refptr<base::FieldTrial> trial = | 1228 scoped_refptr<base::FieldTrial> trial = |
| 1237 base::FieldTrialList::CreateFieldTrial( | 1229 base::FieldTrialList::CreateFieldTrial( |
| 1238 "MarkNonSecureAs", security_state::switches::kMarkHttpAsDangerous); | 1230 "MarkNonSecureAs", security_state::switches::kMarkHttpAsDangerous); |
| 1239 | 1231 |
| 1240 content::WebContents* contents = | 1232 content::WebContents* contents = |
| 1241 browser()->tab_strip_model()->GetActiveWebContents(); | 1233 browser()->tab_strip_model()->GetActiveWebContents(); |
| 1242 ASSERT_TRUE(contents); | 1234 ASSERT_TRUE(contents); |
| 1243 | 1235 |
| 1244 ChromeSecurityStateModelClient* model_client = | 1236 SecurityStateTabHelper* helper = |
| 1245 ChromeSecurityStateModelClient::FromWebContents(contents); | 1237 SecurityStateTabHelper::FromWebContents(contents); |
| 1246 ASSERT_TRUE(model_client); | 1238 ASSERT_TRUE(helper); |
| 1247 | 1239 |
| 1248 ui_test_utils::NavigateToURL(browser(), GURL("data:text/plain,hello")); | 1240 ui_test_utils::NavigateToURL(browser(), GURL("data:text/plain,hello")); |
| 1249 security_state::SecurityStateModel::SecurityInfo security_info; | 1241 security_state::SecurityInfo security_info; |
| 1250 model_client->GetSecurityInfo(&security_info); | 1242 helper->GetSecurityInfo(&security_info); |
| 1251 EXPECT_EQ(security_state::SecurityStateModel::NONE, | 1243 EXPECT_EQ(security_state::NONE, security_info.security_level); |
| 1252 security_info.security_level); | |
| 1253 } | 1244 } |
| 1254 | 1245 |
| 1255 IN_PROC_BROWSER_TEST_F(SSLUITest, MarkBlobAsNonSecure) { | 1246 IN_PROC_BROWSER_TEST_F(SSLUITest, MarkBlobAsNonSecure) { |
| 1256 scoped_refptr<base::FieldTrial> trial = | 1247 scoped_refptr<base::FieldTrial> trial = |
| 1257 base::FieldTrialList::CreateFieldTrial( | 1248 base::FieldTrialList::CreateFieldTrial( |
| 1258 "MarkNonSecureAs", security_state::switches::kMarkHttpAsDangerous); | 1249 "MarkNonSecureAs", security_state::switches::kMarkHttpAsDangerous); |
| 1259 | 1250 |
| 1260 content::WebContents* contents = | 1251 content::WebContents* contents = |
| 1261 browser()->tab_strip_model()->GetActiveWebContents(); | 1252 browser()->tab_strip_model()->GetActiveWebContents(); |
| 1262 ASSERT_TRUE(contents); | 1253 ASSERT_TRUE(contents); |
| 1263 | 1254 |
| 1264 ChromeSecurityStateModelClient* model_client = | 1255 SecurityStateTabHelper* helper = |
| 1265 ChromeSecurityStateModelClient::FromWebContents(contents); | 1256 SecurityStateTabHelper::FromWebContents(contents); |
| 1266 ASSERT_TRUE(model_client); | 1257 ASSERT_TRUE(helper); |
| 1267 | 1258 |
| 1268 ui_test_utils::NavigateToURL( | 1259 ui_test_utils::NavigateToURL( |
| 1269 browser(), | 1260 browser(), |
| 1270 GURL("blob:chrome://newtab/49a463bb-fac8-476c-97bf-5d7076c3ea1a")); | 1261 GURL("blob:chrome://newtab/49a463bb-fac8-476c-97bf-5d7076c3ea1a")); |
| 1271 security_state::SecurityStateModel::SecurityInfo security_info; | 1262 security_state::SecurityInfo security_info; |
| 1272 model_client->GetSecurityInfo(&security_info); | 1263 helper->GetSecurityInfo(&security_info); |
| 1273 EXPECT_EQ(security_state::SecurityStateModel::NONE, | 1264 EXPECT_EQ(security_state::NONE, security_info.security_level); |
| 1274 security_info.security_level); | |
| 1275 } | 1265 } |
| 1276 | 1266 |
| 1277 #if defined(USE_NSS_CERTS) | 1267 #if defined(USE_NSS_CERTS) |
| 1278 class SSLUITestWithClientCert : public SSLUITest { | 1268 class SSLUITestWithClientCert : public SSLUITest { |
| 1279 public: | 1269 public: |
| 1280 SSLUITestWithClientCert() : cert_db_(NULL) {} | 1270 SSLUITestWithClientCert() : cert_db_(NULL) {} |
| 1281 | 1271 |
| 1282 void SetUpOnMainThread() override { | 1272 void SetUpOnMainThread() override { |
| 1283 SSLUITest::SetUpOnMainThread(); | 1273 SSLUITest::SetUpOnMainThread(); |
| 1284 | 1274 |
| (...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1475 std::string replacement_path; | 1465 std::string replacement_path; |
| 1476 GetFilePathWithHostAndPortReplacement( | 1466 GetFilePathWithHostAndPortReplacement( |
| 1477 "/ssl/page_displays_insecure_content.html", | 1467 "/ssl/page_displays_insecure_content.html", |
| 1478 embedded_test_server()->host_port_pair(), &replacement_path); | 1468 embedded_test_server()->host_port_pair(), &replacement_path); |
| 1479 | 1469 |
| 1480 // Load a page that displays insecure content. | 1470 // Load a page that displays insecure content. |
| 1481 ui_test_utils::NavigateToURL(browser(), | 1471 ui_test_utils::NavigateToURL(browser(), |
| 1482 https_server_.GetURL(replacement_path)); | 1472 https_server_.GetURL(replacement_path)); |
| 1483 | 1473 |
| 1484 CheckSecurityState(browser()->tab_strip_model()->GetActiveWebContents(), | 1474 CheckSecurityState(browser()->tab_strip_model()->GetActiveWebContents(), |
| 1485 CertError::NONE, security_state::SecurityStateModel::NONE, | 1475 CertError::NONE, security_state::NONE, |
| 1486 AuthState::DISPLAYED_INSECURE_CONTENT); | 1476 AuthState::DISPLAYED_INSECURE_CONTENT); |
| 1487 } | 1477 } |
| 1488 | 1478 |
| 1489 // Test that if the user proceeds and the checkbox is checked, a report | 1479 // Test that if the user proceeds and the checkbox is checked, a report |
| 1490 // is sent or not sent depending on the Finch config. | 1480 // is sent or not sent depending on the Finch config. |
| 1491 IN_PROC_BROWSER_TEST_F(SSLUITestWithExtendedReporting, | 1481 IN_PROC_BROWSER_TEST_F(SSLUITestWithExtendedReporting, |
| 1492 TestBrokenHTTPSProceedReporting) { | 1482 TestBrokenHTTPSProceedReporting) { |
| 1493 certificate_reporting_test_utils::ExpectReport expect_report = | 1483 certificate_reporting_test_utils::ExpectReport expect_report = |
| 1494 certificate_reporting_test_utils::GetReportExpectedFromFinch(); | 1484 certificate_reporting_test_utils::GetReportExpectedFromFinch(); |
| 1495 TestBrokenHTTPSReporting( | 1485 TestBrokenHTTPSReporting( |
| (...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1705 | 1695 |
| 1706 // Load the insecure image. | 1696 // Load the insecure image. |
| 1707 bool js_result = false; | 1697 bool js_result = false; |
| 1708 EXPECT_TRUE(content::ExecuteScriptAndExtractBool( | 1698 EXPECT_TRUE(content::ExecuteScriptAndExtractBool( |
| 1709 tab, | 1699 tab, |
| 1710 "loadBadImage();", | 1700 "loadBadImage();", |
| 1711 &js_result)); | 1701 &js_result)); |
| 1712 EXPECT_TRUE(js_result); | 1702 EXPECT_TRUE(js_result); |
| 1713 | 1703 |
| 1714 // We should now have insecure content. | 1704 // We should now have insecure content. |
| 1715 CheckSecurityState(tab, CertError::NONE, | 1705 CheckSecurityState(tab, CertError::NONE, security_state::NONE, |
| 1716 security_state::SecurityStateModel::NONE, | |
| 1717 AuthState::DISPLAYED_INSECURE_CONTENT); | 1706 AuthState::DISPLAYED_INSECURE_CONTENT); |
| 1718 } | 1707 } |
| 1719 | 1708 |
| 1720 // Visits two pages from the same origin: one that displays insecure content and | 1709 // Visits two pages from the same origin: one that displays insecure content and |
| 1721 // one that doesn't. The test checks that we do not propagate the insecure | 1710 // one that doesn't. The test checks that we do not propagate the insecure |
| 1722 // content state from one to the other. | 1711 // content state from one to the other. |
| 1723 IN_PROC_BROWSER_TEST_F(SSLUITest, TestDisplaysInsecureContentTwoTabs) { | 1712 IN_PROC_BROWSER_TEST_F(SSLUITest, TestDisplaysInsecureContentTwoTabs) { |
| 1724 ASSERT_TRUE(embedded_test_server()->Start()); | 1713 ASSERT_TRUE(embedded_test_server()->Start()); |
| 1725 ASSERT_TRUE(https_server_.Start()); | 1714 ASSERT_TRUE(https_server_.Start()); |
| 1726 | 1715 |
| (...skipping 17 matching lines...) Expand all Loading... |
| 1744 params.tabstrip_index = 0; | 1733 params.tabstrip_index = 0; |
| 1745 params.source_contents = tab1; | 1734 params.source_contents = tab1; |
| 1746 content::WindowedNotificationObserver observer( | 1735 content::WindowedNotificationObserver observer( |
| 1747 content::NOTIFICATION_LOAD_STOP, | 1736 content::NOTIFICATION_LOAD_STOP, |
| 1748 content::NotificationService::AllSources()); | 1737 content::NotificationService::AllSources()); |
| 1749 chrome::Navigate(¶ms); | 1738 chrome::Navigate(¶ms); |
| 1750 WebContents* tab2 = params.target_contents; | 1739 WebContents* tab2 = params.target_contents; |
| 1751 observer.Wait(); | 1740 observer.Wait(); |
| 1752 | 1741 |
| 1753 // The new tab has insecure content. | 1742 // The new tab has insecure content. |
| 1754 CheckSecurityState(tab2, CertError::NONE, | 1743 CheckSecurityState(tab2, CertError::NONE, security_state::NONE, |
| 1755 security_state::SecurityStateModel::NONE, | |
| 1756 AuthState::DISPLAYED_INSECURE_CONTENT); | 1744 AuthState::DISPLAYED_INSECURE_CONTENT); |
| 1757 | 1745 |
| 1758 // The original tab should not be contaminated. | 1746 // The original tab should not be contaminated. |
| 1759 CheckAuthenticatedState(tab1, AuthState::NONE); | 1747 CheckAuthenticatedState(tab1, AuthState::NONE); |
| 1760 } | 1748 } |
| 1761 | 1749 |
| 1762 // Visits two pages from the same origin: one that runs insecure content and one | 1750 // Visits two pages from the same origin: one that runs insecure content and one |
| 1763 // that doesn't. The test checks that we propagate the insecure content state | 1751 // that doesn't. The test checks that we propagate the insecure content state |
| 1764 // from one to the other. | 1752 // from one to the other. |
| 1765 IN_PROC_BROWSER_TEST_F(SSLUITest, TestRunsInsecureContentTwoTabs) { | 1753 IN_PROC_BROWSER_TEST_F(SSLUITest, TestRunsInsecureContentTwoTabs) { |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1821 // Load original page over HTTP. | 1809 // Load original page over HTTP. |
| 1822 const GURL url_http = embedded_test_server()->GetURL(replacement_path); | 1810 const GURL url_http = embedded_test_server()->GetURL(replacement_path); |
| 1823 ui_test_utils::NavigateToURL(browser(), url_http); | 1811 ui_test_utils::NavigateToURL(browser(), url_http); |
| 1824 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents(); | 1812 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents(); |
| 1825 CheckUnauthenticatedState(tab, AuthState::NONE); | 1813 CheckUnauthenticatedState(tab, AuthState::NONE); |
| 1826 | 1814 |
| 1827 // Load again but over SSL. It should be marked as displaying insecure | 1815 // Load again but over SSL. It should be marked as displaying insecure |
| 1828 // content (even though the image comes from the WebCore memory cache). | 1816 // content (even though the image comes from the WebCore memory cache). |
| 1829 const GURL url_https = https_server_.GetURL(replacement_path); | 1817 const GURL url_https = https_server_.GetURL(replacement_path); |
| 1830 ui_test_utils::NavigateToURL(browser(), url_https); | 1818 ui_test_utils::NavigateToURL(browser(), url_https); |
| 1831 CheckSecurityState(tab, CertError::NONE, | 1819 CheckSecurityState(tab, CertError::NONE, security_state::NONE, |
| 1832 security_state::SecurityStateModel::NONE, | |
| 1833 AuthState::DISPLAYED_INSECURE_CONTENT); | 1820 AuthState::DISPLAYED_INSECURE_CONTENT); |
| 1834 } | 1821 } |
| 1835 | 1822 |
| 1836 // http://crbug.com/84729 | 1823 // http://crbug.com/84729 |
| 1837 #if defined(OS_CHROMEOS) | 1824 #if defined(OS_CHROMEOS) |
| 1838 #define MAYBE_TestRunsCachedInsecureContent \ | 1825 #define MAYBE_TestRunsCachedInsecureContent \ |
| 1839 DISABLED_TestRunsCachedInsecureContent | 1826 DISABLED_TestRunsCachedInsecureContent |
| 1840 #else | 1827 #else |
| 1841 #define MAYBE_TestRunsCachedInsecureContent TestRunsCachedInsecureContent | 1828 #define MAYBE_TestRunsCachedInsecureContent TestRunsCachedInsecureContent |
| 1842 #endif // defined(OS_CHROMEOS) | 1829 #endif // defined(OS_CHROMEOS) |
| (...skipping 328 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2171 " window.domAutomationController.setAutomationId(0);" | 2158 " window.domAutomationController.setAutomationId(0);" |
| 2172 " window.domAutomationController.send('mixed-image-loaded');" | 2159 " window.domAutomationController.send('mixed-image-loaded');" |
| 2173 "};" | 2160 "};" |
| 2174 "var img = document.createElement('img');" | 2161 "var img = document.createElement('img');" |
| 2175 "img.onload = loaded;" | 2162 "img.onload = loaded;" |
| 2176 "img.src = '" + | 2163 "img.src = '" + |
| 2177 https_url.spec() + "';" | 2164 https_url.spec() + "';" |
| 2178 "document.body.appendChild(img);")); | 2165 "document.body.appendChild(img);")); |
| 2179 | 2166 |
| 2180 run_loop.Run(); | 2167 run_loop.Run(); |
| 2181 CheckSecurityState(tab, CertError::NONE, | 2168 CheckSecurityState(tab, CertError::NONE, security_state::NONE, |
| 2182 security_state::SecurityStateModel::NONE, | |
| 2183 AuthState::DISPLAYED_INSECURE_CONTENT); | 2169 AuthState::DISPLAYED_INSECURE_CONTENT); |
| 2184 } | 2170 } |
| 2185 | 2171 |
| 2186 // Visits a page to which we could not connect (bad port) over http and https | 2172 // Visits a page to which we could not connect (bad port) over http and https |
| 2187 // and make sure the security style is correct. | 2173 // and make sure the security style is correct. |
| 2188 IN_PROC_BROWSER_TEST_F(SSLUITest, TestConnectToBadPort) { | 2174 IN_PROC_BROWSER_TEST_F(SSLUITest, TestConnectToBadPort) { |
| 2189 ui_test_utils::NavigateToURL(browser(), GURL("http://localhost:17")); | 2175 ui_test_utils::NavigateToURL(browser(), GURL("http://localhost:17")); |
| 2190 CheckUnauthenticatedState( | 2176 CheckUnauthenticatedState( |
| 2191 browser()->tab_strip_model()->GetActiveWebContents(), | 2177 browser()->tab_strip_model()->GetActiveWebContents(), |
| 2192 AuthState::SHOWING_ERROR); | 2178 AuthState::SHOWING_ERROR); |
| (...skipping 259 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2452 // the user approves the bad certificate. | 2438 // the user approves the bad certificate. |
| 2453 ui_test_utils::NavigateToURL( | 2439 ui_test_utils::NavigateToURL( |
| 2454 browser(), https_server_mismatched_.GetURL("/ssl/blank_page.html")); | 2440 browser(), https_server_mismatched_.GetURL("/ssl/blank_page.html")); |
| 2455 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents(); | 2441 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents(); |
| 2456 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_COMMON_NAME_INVALID, | 2442 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_COMMON_NAME_INVALID, |
| 2457 AuthState::SHOWING_INTERSTITIAL); | 2443 AuthState::SHOWING_INTERSTITIAL); |
| 2458 ProceedThroughInterstitial(tab); | 2444 ProceedThroughInterstitial(tab); |
| 2459 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_COMMON_NAME_INVALID, | 2445 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_COMMON_NAME_INVALID, |
| 2460 AuthState::NONE); | 2446 AuthState::NONE); |
| 2461 | 2447 |
| 2462 ChromeSecurityStateModelClient* client = | 2448 SecurityStateTabHelper* helper = SecurityStateTabHelper::FromWebContents(tab); |
| 2463 ChromeSecurityStateModelClient::FromWebContents(tab); | 2449 ASSERT_TRUE(helper); |
| 2464 ASSERT_TRUE(client); | 2450 security_state::SecurityInfo security_info; |
| 2465 security_state::SecurityStateModel::SecurityInfo security_info; | 2451 helper->GetSecurityInfo(&security_info); |
| 2466 client->GetSecurityInfo(&security_info); | 2452 EXPECT_EQ(security_state::CONTENT_STATUS_NONE, |
| 2467 EXPECT_EQ(security_state::SecurityStateModel::CONTENT_STATUS_NONE, | |
| 2468 security_info.mixed_content_status); | 2453 security_info.mixed_content_status); |
| 2469 EXPECT_EQ(security_state::SecurityStateModel::CONTENT_STATUS_NONE, | 2454 EXPECT_EQ(security_state::CONTENT_STATUS_NONE, |
| 2470 security_info.content_with_cert_errors_status); | 2455 security_info.content_with_cert_errors_status); |
| 2471 | 2456 |
| 2472 // Navigate to safe page that has Worker loading unsafe content. | 2457 // Navigate to safe page that has Worker loading unsafe content. |
| 2473 // Expect content to load but be marked as auth broken due to running insecure | 2458 // Expect content to load but be marked as auth broken due to running insecure |
| 2474 // content. | 2459 // content. |
| 2475 std::string page_with_unsafe_worker_path; | 2460 std::string page_with_unsafe_worker_path; |
| 2476 GetPageWithUnsafeWorkerPath(https_server_mismatched_, | 2461 GetPageWithUnsafeWorkerPath(https_server_mismatched_, |
| 2477 &page_with_unsafe_worker_path); | 2462 &page_with_unsafe_worker_path); |
| 2478 ui_test_utils::NavigateToURL( | 2463 ui_test_utils::NavigateToURL( |
| 2479 browser(), https_server_.GetURL(page_with_unsafe_worker_path)); | 2464 browser(), https_server_.GetURL(page_with_unsafe_worker_path)); |
| 2480 CheckWorkerLoadResult(tab, true); // Worker loads insecure content | 2465 CheckWorkerLoadResult(tab, true); // Worker loads insecure content |
| 2481 CheckAuthenticationBrokenState(tab, CertError::NONE, AuthState::NONE); | 2466 CheckAuthenticationBrokenState(tab, CertError::NONE, AuthState::NONE); |
| 2482 | 2467 |
| 2483 client->GetSecurityInfo(&security_info); | 2468 helper->GetSecurityInfo(&security_info); |
| 2484 EXPECT_EQ(security_state::SecurityStateModel::CONTENT_STATUS_NONE, | 2469 EXPECT_EQ(security_state::CONTENT_STATUS_NONE, |
| 2485 security_info.mixed_content_status); | 2470 security_info.mixed_content_status); |
| 2486 EXPECT_EQ(security_state::SecurityStateModel::CONTENT_STATUS_RAN, | 2471 EXPECT_EQ(security_state::CONTENT_STATUS_RAN, |
| 2487 security_info.content_with_cert_errors_status); | 2472 security_info.content_with_cert_errors_status); |
| 2488 } | 2473 } |
| 2489 | 2474 |
| 2490 // Visits a page with unsafe content and makes sure that if a user exception to | 2475 // Visits a page with unsafe content and makes sure that if a user exception to |
| 2491 // the certificate error is present, the image is loaded and script executes. | 2476 // the certificate error is present, the image is loaded and script executes. |
| 2492 IN_PROC_BROWSER_TEST_F(SSLUITest, TestUnsafeContentsWithUserException) { | 2477 IN_PROC_BROWSER_TEST_F(SSLUITest, TestUnsafeContentsWithUserException) { |
| 2493 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents(); | 2478 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents(); |
| 2494 ASSERT_NO_FATAL_FAILURE(SetUpUnsafeContentsWithUserException( | 2479 ASSERT_NO_FATAL_FAILURE(SetUpUnsafeContentsWithUserException( |
| 2495 "/ssl/page_with_unsafe_contents.html")); | 2480 "/ssl/page_with_unsafe_contents.html")); |
| 2496 CheckAuthenticationBrokenState(tab, CertError::NONE, AuthState::NONE); | 2481 CheckAuthenticationBrokenState(tab, CertError::NONE, AuthState::NONE); |
| 2497 | 2482 |
| 2498 ChromeSecurityStateModelClient* client = | 2483 SecurityStateTabHelper* helper = SecurityStateTabHelper::FromWebContents(tab); |
| 2499 ChromeSecurityStateModelClient::FromWebContents(tab); | 2484 ASSERT_TRUE(helper); |
| 2500 ASSERT_TRUE(client); | 2485 security_state::SecurityInfo security_info; |
| 2501 security_state::SecurityStateModel::SecurityInfo security_info; | 2486 helper->GetSecurityInfo(&security_info); |
| 2502 client->GetSecurityInfo(&security_info); | 2487 EXPECT_EQ(security_state::CONTENT_STATUS_NONE, |
| 2503 EXPECT_EQ(security_state::SecurityStateModel::CONTENT_STATUS_NONE, | |
| 2504 security_info.mixed_content_status); | 2488 security_info.mixed_content_status); |
| 2505 EXPECT_EQ( | 2489 EXPECT_EQ(security_state::CONTENT_STATUS_DISPLAYED_AND_RAN, |
| 2506 security_state::SecurityStateModel::CONTENT_STATUS_DISPLAYED_AND_RAN, | 2490 security_info.content_with_cert_errors_status); |
| 2507 security_info.content_with_cert_errors_status); | |
| 2508 | 2491 |
| 2509 int img_width; | 2492 int img_width; |
| 2510 EXPECT_TRUE(content::ExecuteScriptAndExtractInt( | 2493 EXPECT_TRUE(content::ExecuteScriptAndExtractInt( |
| 2511 tab, "window.domAutomationController.send(ImageWidth());", &img_width)); | 2494 tab, "window.domAutomationController.send(ImageWidth());", &img_width)); |
| 2512 // In order to check that the image was loaded, we check its width. | 2495 // In order to check that the image was loaded, we check its width. |
| 2513 // The actual image (Google logo) is 114 pixels wide, so we assume a good | 2496 // The actual image (Google logo) is 114 pixels wide, so we assume a good |
| 2514 // image is greater than 100. | 2497 // image is greater than 100. |
| 2515 EXPECT_GT(img_width, 100); | 2498 EXPECT_GT(img_width, 100); |
| 2516 | 2499 |
| 2517 bool js_result = false; | 2500 bool js_result = false; |
| 2518 EXPECT_TRUE(content::ExecuteScriptAndExtractBool( | 2501 EXPECT_TRUE(content::ExecuteScriptAndExtractBool( |
| 2519 tab, "window.domAutomationController.send(IsFooSet());", &js_result)); | 2502 tab, "window.domAutomationController.send(IsFooSet());", &js_result)); |
| 2520 EXPECT_TRUE(js_result); | 2503 EXPECT_TRUE(js_result); |
| 2521 | 2504 |
| 2522 // Test that active subresources with the same certificate errors as | 2505 // Test that active subresources with the same certificate errors as |
| 2523 // the main resources also get noted in |content_with_cert_errors_status|. | 2506 // the main resources also get noted in |content_with_cert_errors_status|. |
| 2524 std::string replacement_path; | 2507 std::string replacement_path; |
| 2525 GetFilePathWithHostAndPortReplacement( | 2508 GetFilePathWithHostAndPortReplacement( |
| 2526 "/ssl/page_with_unsafe_contents.html", | 2509 "/ssl/page_with_unsafe_contents.html", |
| 2527 https_server_mismatched_.host_port_pair(), &replacement_path); | 2510 https_server_mismatched_.host_port_pair(), &replacement_path); |
| 2528 ui_test_utils::NavigateToURL( | 2511 ui_test_utils::NavigateToURL( |
| 2529 browser(), https_server_mismatched_.GetURL(replacement_path)); | 2512 browser(), https_server_mismatched_.GetURL(replacement_path)); |
| 2530 js_result = false; | 2513 js_result = false; |
| 2531 EXPECT_TRUE(content::ExecuteScriptAndExtractBool( | 2514 EXPECT_TRUE(content::ExecuteScriptAndExtractBool( |
| 2532 tab, "window.domAutomationController.send(IsFooSet());", &js_result)); | 2515 tab, "window.domAutomationController.send(IsFooSet());", &js_result)); |
| 2533 EXPECT_TRUE(js_result); | 2516 EXPECT_TRUE(js_result); |
| 2534 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_COMMON_NAME_INVALID, | 2517 CheckAuthenticationBrokenState(tab, net::CERT_STATUS_COMMON_NAME_INVALID, |
| 2535 AuthState::NONE); | 2518 AuthState::NONE); |
| 2536 | 2519 |
| 2537 client->GetSecurityInfo(&security_info); | 2520 helper->GetSecurityInfo(&security_info); |
| 2538 EXPECT_EQ(security_state::SecurityStateModel::CONTENT_STATUS_NONE, | 2521 EXPECT_EQ(security_state::CONTENT_STATUS_NONE, |
| 2539 security_info.mixed_content_status); | 2522 security_info.mixed_content_status); |
| 2540 EXPECT_EQ( | 2523 EXPECT_EQ(security_state::CONTENT_STATUS_DISPLAYED_AND_RAN, |
| 2541 security_state::SecurityStateModel::CONTENT_STATUS_DISPLAYED_AND_RAN, | 2524 security_info.content_with_cert_errors_status); |
| 2542 security_info.content_with_cert_errors_status); | |
| 2543 } | 2525 } |
| 2544 | 2526 |
| 2545 // Like the test above, but only displaying inactive content (an image). | 2527 // Like the test above, but only displaying inactive content (an image). |
| 2546 IN_PROC_BROWSER_TEST_F(SSLUITest, TestUnsafeImageWithUserException) { | 2528 IN_PROC_BROWSER_TEST_F(SSLUITest, TestUnsafeImageWithUserException) { |
| 2547 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents(); | 2529 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents(); |
| 2548 ASSERT_NO_FATAL_FAILURE( | 2530 ASSERT_NO_FATAL_FAILURE( |
| 2549 SetUpUnsafeContentsWithUserException("/ssl/page_with_unsafe_image.html")); | 2531 SetUpUnsafeContentsWithUserException("/ssl/page_with_unsafe_image.html")); |
| 2550 | 2532 |
| 2551 ChromeSecurityStateModelClient* client = | 2533 SecurityStateTabHelper* helper = SecurityStateTabHelper::FromWebContents(tab); |
| 2552 ChromeSecurityStateModelClient::FromWebContents(tab); | 2534 ASSERT_TRUE(helper); |
| 2553 ASSERT_TRUE(client); | 2535 security_state::SecurityInfo security_info; |
| 2554 security_state::SecurityStateModel::SecurityInfo security_info; | 2536 helper->GetSecurityInfo(&security_info); |
| 2555 client->GetSecurityInfo(&security_info); | 2537 EXPECT_EQ(security_state::CONTENT_STATUS_NONE, |
| 2556 EXPECT_EQ(security_state::SecurityStateModel::CONTENT_STATUS_NONE, | |
| 2557 security_info.mixed_content_status); | 2538 security_info.mixed_content_status); |
| 2558 EXPECT_EQ(security_state::SecurityStateModel::CONTENT_STATUS_DISPLAYED, | 2539 EXPECT_EQ(security_state::CONTENT_STATUS_DISPLAYED, |
| 2559 security_info.content_with_cert_errors_status); | 2540 security_info.content_with_cert_errors_status); |
| 2560 EXPECT_EQ(security_state::SecurityStateModel::NONE, | 2541 EXPECT_EQ(security_state::NONE, security_info.security_level); |
| 2561 security_info.security_level); | |
| 2562 EXPECT_EQ(0u, security_info.cert_status); | 2542 EXPECT_EQ(0u, security_info.cert_status); |
| 2563 | 2543 |
| 2564 int img_width; | 2544 int img_width; |
| 2565 EXPECT_TRUE(content::ExecuteScriptAndExtractInt( | 2545 EXPECT_TRUE(content::ExecuteScriptAndExtractInt( |
| 2566 tab, "window.domAutomationController.send(ImageWidth());", &img_width)); | 2546 tab, "window.domAutomationController.send(ImageWidth());", &img_width)); |
| 2567 // In order to check that the image was loaded, we check its width. | 2547 // In order to check that the image was loaded, we check its width. |
| 2568 // The actual image (Google logo) is 114 pixels wide, so we assume a good | 2548 // The actual image (Google logo) is 114 pixels wide, so we assume a good |
| 2569 // image is greater than 100. | 2549 // image is greater than 100. |
| 2570 EXPECT_GT(img_width, 100); | 2550 EXPECT_GT(img_width, 100); |
| 2571 } | 2551 } |
| (...skipping 344 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2916 | 2896 |
| 2917 WebContents* contents = browser()->tab_strip_model()->GetActiveWebContents(); | 2897 WebContents* contents = browser()->tab_strip_model()->GetActiveWebContents(); |
| 2918 content::TestNavigationObserver observer( | 2898 content::TestNavigationObserver observer( |
| 2919 contents, | 2899 contents, |
| 2920 // With PlzNavigate, the renderer only sees one navigation (i.e. not the | 2900 // With PlzNavigate, the renderer only sees one navigation (i.e. not the |
| 2921 // redirect, since that happens in the browser). | 2901 // redirect, since that happens in the browser). |
| 2922 content::IsBrowserSideNavigationEnabled() ? 1 : 2); | 2902 content::IsBrowserSideNavigationEnabled() ? 1 : 2); |
| 2923 ui_test_utils::NavigateToURL(browser(), https_server_mismatched_url); | 2903 ui_test_utils::NavigateToURL(browser(), https_server_mismatched_url); |
| 2924 observer.Wait(); | 2904 observer.Wait(); |
| 2925 | 2905 |
| 2926 CheckSecurityState(contents, CertError::NONE, | 2906 CheckSecurityState(contents, CertError::NONE, security_state::SECURE, |
| 2927 security_state::SecurityStateModel::SECURE, | |
| 2928 AuthState::NONE); | 2907 AuthState::NONE); |
| 2929 replacements.SetHostStr("mail.example.com"); | 2908 replacements.SetHostStr("mail.example.com"); |
| 2930 GURL https_server_new_url = https_server_url.ReplaceComponents(replacements); | 2909 GURL https_server_new_url = https_server_url.ReplaceComponents(replacements); |
| 2931 // Verify that the current URL is the suggested URL. | 2910 // Verify that the current URL is the suggested URL. |
| 2932 EXPECT_EQ(https_server_new_url.spec(), | 2911 EXPECT_EQ(https_server_new_url.spec(), |
| 2933 contents->GetLastCommittedURL().spec()); | 2912 contents->GetLastCommittedURL().spec()); |
| 2934 } | 2913 } |
| 2935 | 2914 |
| 2936 // Visit the URL example.org on a server that presents a valid certificate | 2915 // Visit the URL example.org on a server that presents a valid certificate |
| 2937 // for www.example.org. Verify that the page redirects to www.example.org. | 2916 // for www.example.org. Verify that the page redirects to www.example.org. |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2975 | 2954 |
| 2976 WebContents* contents = browser()->tab_strip_model()->GetActiveWebContents(); | 2955 WebContents* contents = browser()->tab_strip_model()->GetActiveWebContents(); |
| 2977 content::TestNavigationObserver observer( | 2956 content::TestNavigationObserver observer( |
| 2978 contents, | 2957 contents, |
| 2979 // With PlzNavigate, the renderer only sees one navigation (i.e. not the | 2958 // With PlzNavigate, the renderer only sees one navigation (i.e. not the |
| 2980 // redirect, since that happens in the browser). | 2959 // redirect, since that happens in the browser). |
| 2981 content::IsBrowserSideNavigationEnabled() ? 1 : 2); | 2960 content::IsBrowserSideNavigationEnabled() ? 1 : 2); |
| 2982 ui_test_utils::NavigateToURL(browser(), https_server_mismatched_url); | 2961 ui_test_utils::NavigateToURL(browser(), https_server_mismatched_url); |
| 2983 observer.Wait(); | 2962 observer.Wait(); |
| 2984 | 2963 |
| 2985 CheckSecurityState(contents, CertError::NONE, | 2964 CheckSecurityState(contents, CertError::NONE, security_state::SECURE, |
| 2986 security_state::SecurityStateModel::SECURE, | |
| 2987 AuthState::NONE); | 2965 AuthState::NONE); |
| 2988 } | 2966 } |
| 2989 | 2967 |
| 2990 // Tests this scenario: | 2968 // Tests this scenario: |
| 2991 // - |CommonNameMismatchHandler| does not give a callback as it's set into the | 2969 // - |CommonNameMismatchHandler| does not give a callback as it's set into the |
| 2992 // state |IGNORE_REQUESTS_FOR_TESTING|. So no suggested URL check result can | 2970 // state |IGNORE_REQUESTS_FOR_TESTING|. So no suggested URL check result can |
| 2993 // arrive. | 2971 // arrive. |
| 2994 // - A cert error triggers an interstitial timer with a very long timeout. | 2972 // - A cert error triggers an interstitial timer with a very long timeout. |
| 2995 // - No suggested URL check results arrive, causing the tab to appear as loading | 2973 // - No suggested URL check results arrive, causing the tab to appear as loading |
| 2996 // indefinitely (also because the timer has a long timeout). | 2974 // indefinitely (also because the timer has a long timeout). |
| (...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3221 ASSERT_TRUE(https_server.Start()); | 3199 ASSERT_TRUE(https_server.Start()); |
| 3222 | 3200 |
| 3223 mock_cert_verifier()->set_default_result( | 3201 mock_cert_verifier()->set_default_result( |
| 3224 net::ERR_CERT_NAME_CONSTRAINT_VIOLATION); | 3202 net::ERR_CERT_NAME_CONSTRAINT_VIOLATION); |
| 3225 | 3203 |
| 3226 ui_test_utils::NavigateToURL(browser(), | 3204 ui_test_utils::NavigateToURL(browser(), |
| 3227 https_server.GetURL("/ssl/google.html")); | 3205 https_server.GetURL("/ssl/google.html")); |
| 3228 | 3206 |
| 3229 CheckSecurityState(browser()->tab_strip_model()->GetActiveWebContents(), | 3207 CheckSecurityState(browser()->tab_strip_model()->GetActiveWebContents(), |
| 3230 net::CERT_STATUS_NAME_CONSTRAINT_VIOLATION, | 3208 net::CERT_STATUS_NAME_CONSTRAINT_VIOLATION, |
| 3231 security_state::SecurityStateModel::DANGEROUS, | 3209 security_state::DANGEROUS, |
| 3232 AuthState::SHOWING_INTERSTITIAL); | 3210 AuthState::SHOWING_INTERSTITIAL); |
| 3233 } | 3211 } |
| 3234 | 3212 |
| 3235 IN_PROC_BROWSER_TEST_F(SSLUITest, RestoreHasSSLState) { | 3213 IN_PROC_BROWSER_TEST_F(SSLUITest, RestoreHasSSLState) { |
| 3236 ASSERT_TRUE(https_server_.Start()); | 3214 ASSERT_TRUE(https_server_.Start()); |
| 3237 GURL url(https_server_.GetURL("/ssl/google.html")); | 3215 GURL url(https_server_.GetURL("/ssl/google.html")); |
| 3238 ui_test_utils::NavigateToURL(browser(), url); | 3216 ui_test_utils::NavigateToURL(browser(), url); |
| 3239 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents(); | 3217 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents(); |
| 3240 CheckAuthenticatedState(tab, AuthState::NONE); | 3218 CheckAuthenticatedState(tab, AuthState::NONE); |
| 3241 | 3219 |
| (...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3340 ASSERT_TRUE(embedded_test_server()->Start()); | 3318 ASSERT_TRUE(embedded_test_server()->Start()); |
| 3341 ASSERT_TRUE(https_server_.Start()); | 3319 ASSERT_TRUE(https_server_.Start()); |
| 3342 | 3320 |
| 3343 GURL url = | 3321 GURL url = |
| 3344 GURL(https_server_.GetURL("/ssl/redirect.html").spec() | 3322 GURL(https_server_.GetURL("/ssl/redirect.html").spec() |
| 3345 + "?" + | 3323 + "?" + |
| 3346 https_server_.GetURL("/ssl/page_displays_insecure_content.html").spec()); | 3324 https_server_.GetURL("/ssl/page_displays_insecure_content.html").spec()); |
| 3347 | 3325 |
| 3348 ui_test_utils::NavigateToURLBlockUntilNavigationsComplete(browser(), url, 2); | 3326 ui_test_utils::NavigateToURLBlockUntilNavigationsComplete(browser(), url, 2); |
| 3349 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents(); | 3327 WebContents* tab = browser()->tab_strip_model()->GetActiveWebContents(); |
| 3350 CheckSecurityState(tab, CertError::NONE, | 3328 CheckSecurityState(tab, CertError::NONE, security_state::NONE, |
| 3351 security_state::SecurityStateModel::NONE, | |
| 3352 AuthState::DISPLAYED_INSECURE_CONTENT); | 3329 AuthState::DISPLAYED_INSECURE_CONTENT); |
| 3353 } | 3330 } |
| 3354 | 3331 |
| 3355 // Checks that in-page navigations during page load preserves SSL state. | 3332 // Checks that in-page navigations during page load preserves SSL state. |
| 3356 IN_PROC_BROWSER_TEST_F(SSLUITest, InPageNavigationDuringLoadSSLState) { | 3333 IN_PROC_BROWSER_TEST_F(SSLUITest, InPageNavigationDuringLoadSSLState) { |
| 3357 ASSERT_TRUE(https_server_.Start()); | 3334 ASSERT_TRUE(https_server_.Start()); |
| 3358 | 3335 |
| 3359 ui_test_utils::NavigateToURL( | 3336 ui_test_utils::NavigateToURL( |
| 3360 browser(), | 3337 browser(), |
| 3361 https_server_.GetURL("/ssl/in_page_navigation_during_load.html")); | 3338 https_server_.GetURL("/ssl/in_page_navigation_during_load.html")); |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3410 | 3387 |
| 3411 // Visit a page over https that contains a frame with a redirect. | 3388 // Visit a page over https that contains a frame with a redirect. |
| 3412 | 3389 |
| 3413 // XMLHttpRequest insecure content in synchronous mode. | 3390 // XMLHttpRequest insecure content in synchronous mode. |
| 3414 | 3391 |
| 3415 // XMLHttpRequest insecure content in asynchronous mode. | 3392 // XMLHttpRequest insecure content in asynchronous mode. |
| 3416 | 3393 |
| 3417 // XMLHttpRequest over bad ssl in synchronous mode. | 3394 // XMLHttpRequest over bad ssl in synchronous mode. |
| 3418 | 3395 |
| 3419 // XMLHttpRequest over OK ssl in synchronous mode. | 3396 // XMLHttpRequest over OK ssl in synchronous mode. |
| OLD | NEW |