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

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

Issue 2327433002: Stop using CertStore which is not compatible with PlzNavigate. (Closed)
Patch Set: remove certstore on non-ios and update plznavigate test filter Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 "chrome/browser/ssl/chrome_security_state_model_client.h" 5 #include "chrome/browser/ssl/chrome_security_state_model_client.h"
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/files/file_path.h" 8 #include "base/files/file_path.h"
9 #include "base/macros.h" 9 #include "base/macros.h"
10 #include "base/strings/string_split.h" 10 #include "base/strings/string_split.h"
11 #include "base/strings/utf_string_conversions.h" 11 #include "base/strings/utf_string_conversions.h"
12 #include "chrome/browser/ssl/cert_verifier_browser_test.h" 12 #include "chrome/browser/ssl/cert_verifier_browser_test.h"
13 #include "chrome/browser/ssl/chrome_security_state_model_client.h" 13 #include "chrome/browser/ssl/chrome_security_state_model_client.h"
14 #include "chrome/browser/ssl/ssl_blocking_page.h" 14 #include "chrome/browser/ssl/ssl_blocking_page.h"
15 #include "chrome/browser/ui/browser.h" 15 #include "chrome/browser/ui/browser.h"
16 #include "chrome/browser/ui/browser_commands.h" 16 #include "chrome/browser/ui/browser_commands.h"
17 #include "chrome/browser/ui/tabs/tab_strip_model.h" 17 #include "chrome/browser/ui/tabs/tab_strip_model.h"
18 #include "chrome/common/chrome_paths.h" 18 #include "chrome/common/chrome_paths.h"
19 #include "chrome/common/chrome_switches.h" 19 #include "chrome/common/chrome_switches.h"
20 #include "chrome/common/pref_names.h" 20 #include "chrome/common/pref_names.h"
21 #include "chrome/grit/generated_resources.h" 21 #include "chrome/grit/generated_resources.h"
22 #include "chrome/test/base/in_process_browser_test.h" 22 #include "chrome/test/base/in_process_browser_test.h"
23 #include "chrome/test/base/ui_test_utils.h" 23 #include "chrome/test/base/ui_test_utils.h"
24 #include "components/prefs/pref_service.h" 24 #include "components/prefs/pref_service.h"
25 #include "content/public/browser/cert_store.h"
26 #include "content/public/browser/interstitial_page.h" 25 #include "content/public/browser/interstitial_page.h"
27 #include "content/public/browser/navigation_controller.h" 26 #include "content/public/browser/navigation_controller.h"
28 #include "content/public/browser/navigation_entry.h" 27 #include "content/public/browser/navigation_entry.h"
29 #include "content/public/browser/notification_service.h" 28 #include "content/public/browser/notification_service.h"
30 #include "content/public/browser/notification_types.h" 29 #include "content/public/browser/notification_types.h"
31 #include "content/public/browser/security_style_explanation.h" 30 #include "content/public/browser/security_style_explanation.h"
32 #include "content/public/browser/security_style_explanations.h" 31 #include "content/public/browser/security_style_explanations.h"
33 #include "content/public/browser/web_contents.h" 32 #include "content/public/browser/web_contents.h"
34 #include "content/public/common/referrer.h" 33 #include "content/public/common/referrer.h"
35 #include "content/public/common/ssl_status.h" 34 #include "content/public/common/ssl_status.h"
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
98 content::SecurityStyle latest_security_style_; 97 content::SecurityStyle latest_security_style_;
99 content::SecurityStyleExplanations latest_explanations_; 98 content::SecurityStyleExplanations latest_explanations_;
100 99
101 DISALLOW_COPY_AND_ASSIGN(SecurityStyleTestObserver); 100 DISALLOW_COPY_AND_ASSIGN(SecurityStyleTestObserver);
102 }; 101 };
103 102
104 // Check that |observer|'s latest event was for an expired certificate 103 // Check that |observer|'s latest event was for an expired certificate
105 // and that it saw the proper SecurityStyle and explanations. 104 // and that it saw the proper SecurityStyle and explanations.
106 void CheckBrokenSecurityStyle(const SecurityStyleTestObserver& observer, 105 void CheckBrokenSecurityStyle(const SecurityStyleTestObserver& observer,
107 int error, 106 int error,
108 Browser* browser) { 107 Browser* browser,
108 net::X509Certificate* expected_cert) {
109 EXPECT_EQ(content::SECURITY_STYLE_AUTHENTICATION_BROKEN, 109 EXPECT_EQ(content::SECURITY_STYLE_AUTHENTICATION_BROKEN,
110 observer.latest_security_style()); 110 observer.latest_security_style());
111 111
112 const content::SecurityStyleExplanations& expired_explanation = 112 const content::SecurityStyleExplanations& expired_explanation =
113 observer.latest_explanations(); 113 observer.latest_explanations();
114 EXPECT_EQ(0u, expired_explanation.unauthenticated_explanations.size()); 114 EXPECT_EQ(0u, expired_explanation.unauthenticated_explanations.size());
115 ASSERT_EQ(1u, expired_explanation.broken_explanations.size()); 115 ASSERT_EQ(1u, expired_explanation.broken_explanations.size());
116 EXPECT_FALSE(expired_explanation.pkp_bypassed); 116 EXPECT_FALSE(expired_explanation.pkp_bypassed);
117 EXPECT_TRUE(expired_explanation.info_explanations.empty()); 117 EXPECT_TRUE(expired_explanation.info_explanations.empty());
118 118
119 // Check that the summary and description are as expected. 119 // Check that the summary and description are as expected.
120 EXPECT_EQ(l10n_util::GetStringUTF8(IDS_CERTIFICATE_CHAIN_ERROR), 120 EXPECT_EQ(l10n_util::GetStringUTF8(IDS_CERTIFICATE_CHAIN_ERROR),
121 expired_explanation.broken_explanations[0].summary); 121 expired_explanation.broken_explanations[0].summary);
122 122
123 base::string16 error_string = base::UTF8ToUTF16(net::ErrorToString(error)); 123 base::string16 error_string = base::UTF8ToUTF16(net::ErrorToString(error));
124 EXPECT_EQ(l10n_util::GetStringFUTF8( 124 EXPECT_EQ(l10n_util::GetStringFUTF8(
125 IDS_CERTIFICATE_CHAIN_ERROR_DESCRIPTION_FORMAT, error_string), 125 IDS_CERTIFICATE_CHAIN_ERROR_DESCRIPTION_FORMAT, error_string),
126 expired_explanation.broken_explanations[0].description); 126 expired_explanation.broken_explanations[0].description);
127 127
128 // Check the associated certificate id. 128 // Check the associated certificate.
129 int cert_id = browser->tab_strip_model() 129 net::X509Certificate* cert = browser->tab_strip_model()
130 ->GetActiveWebContents() 130 ->GetActiveWebContents()
131 ->GetController() 131 ->GetController()
132 .GetActiveEntry() 132 .GetActiveEntry()
133 ->GetSSL() 133 ->GetSSL()
134 .cert_id; 134 .certificate.get();
135 EXPECT_EQ(cert_id, expired_explanation.broken_explanations[0].cert_id); 135 EXPECT_TRUE(cert->Equals(expected_cert));
136 EXPECT_TRUE(expired_explanation.broken_explanations[0].has_certificate);
136 } 137 }
137 138
138 // Checks that the given |secure_explanations| contains an appropriate 139 // Checks that the given |secure_explanations| contains an appropriate
139 // explanation if the certificate status is valid. 140 // explanation if the certificate status is valid.
140 void CheckSecureExplanations( 141 void CheckSecureExplanations(
141 const std::vector<content::SecurityStyleExplanation>& secure_explanations, 142 const std::vector<content::SecurityStyleExplanation>& secure_explanations,
142 CertificateStatus cert_status, 143 CertificateStatus cert_status,
143 Browser* browser) { 144 Browser* browser,
145 net::X509Certificate* expected_cert) {
144 ASSERT_EQ(cert_status == VALID_CERTIFICATE ? 2u : 1u, 146 ASSERT_EQ(cert_status == VALID_CERTIFICATE ? 2u : 1u,
145 secure_explanations.size()); 147 secure_explanations.size());
146 if (cert_status == VALID_CERTIFICATE) { 148 if (cert_status == VALID_CERTIFICATE) {
147 EXPECT_EQ(l10n_util::GetStringUTF8(IDS_VALID_SERVER_CERTIFICATE), 149 EXPECT_EQ(l10n_util::GetStringUTF8(IDS_VALID_SERVER_CERTIFICATE),
148 secure_explanations[0].summary); 150 secure_explanations[0].summary);
149 EXPECT_EQ( 151 EXPECT_EQ(
150 l10n_util::GetStringUTF8(IDS_VALID_SERVER_CERTIFICATE_DESCRIPTION), 152 l10n_util::GetStringUTF8(IDS_VALID_SERVER_CERTIFICATE_DESCRIPTION),
151 secure_explanations[0].description); 153 secure_explanations[0].description);
152 int cert_id = browser->tab_strip_model() 154 net::X509Certificate* cert = browser->tab_strip_model()
153 ->GetActiveWebContents() 155 ->GetActiveWebContents()
154 ->GetController() 156 ->GetController()
155 .GetActiveEntry() 157 .GetActiveEntry()
156 ->GetSSL() 158 ->GetSSL()
157 .cert_id; 159 .certificate.get();
158 EXPECT_EQ(cert_id, secure_explanations[0].cert_id); 160 EXPECT_TRUE(cert->Equals(expected_cert));
161 EXPECT_TRUE(secure_explanations[0].has_certificate);
159 } 162 }
160 163
161 EXPECT_EQ(l10n_util::GetStringUTF8(IDS_STRONG_SSL_SUMMARY), 164 EXPECT_EQ(l10n_util::GetStringUTF8(IDS_STRONG_SSL_SUMMARY),
162 secure_explanations.back().summary); 165 secure_explanations.back().summary);
163 166
164 content::WebContents* web_contents = 167 content::WebContents* web_contents =
165 browser->tab_strip_model()->GetActiveWebContents(); 168 browser->tab_strip_model()->GetActiveWebContents();
166 const SecurityStateModel::SecurityInfo& security_info = 169 const SecurityStateModel::SecurityInfo& security_info =
167 ChromeSecurityStateModelClient::FromWebContents(web_contents) 170 ChromeSecurityStateModelClient::FromWebContents(web_contents)
168 ->GetSecurityInfo(); 171 ->GetSecurityInfo();
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
206 model_client->GetSecurityInfo(); 209 model_client->GetSecurityInfo();
207 EXPECT_EQ(expect_security_level, security_info.security_level); 210 EXPECT_EQ(expect_security_level, security_info.security_level);
208 EXPECT_EQ(expect_sha1_status, security_info.sha1_deprecation_status); 211 EXPECT_EQ(expect_sha1_status, security_info.sha1_deprecation_status);
209 EXPECT_EQ(expect_mixed_content_status, security_info.mixed_content_status); 212 EXPECT_EQ(expect_mixed_content_status, security_info.mixed_content_status);
210 EXPECT_TRUE(security_info.sct_verify_statuses.empty()); 213 EXPECT_TRUE(security_info.sct_verify_statuses.empty());
211 EXPECT_TRUE(security_info.scheme_is_cryptographic); 214 EXPECT_TRUE(security_info.scheme_is_cryptographic);
212 EXPECT_EQ(pkp_bypassed, security_info.pkp_bypassed); 215 EXPECT_EQ(pkp_bypassed, security_info.pkp_bypassed);
213 EXPECT_EQ(expect_cert_error, 216 EXPECT_EQ(expect_cert_error,
214 net::IsCertStatusError(security_info.cert_status)); 217 net::IsCertStatusError(security_info.cert_status));
215 EXPECT_GT(security_info.security_bits, 0); 218 EXPECT_GT(security_info.security_bits, 0);
216 219 EXPECT_TRUE(!!security_info.certificate.get());
217 content::CertStore* cert_store = content::CertStore::GetInstance();
218 scoped_refptr<net::X509Certificate> cert;
219 EXPECT_TRUE(cert_store->RetrieveCert(security_info.cert_id, &cert));
220 } 220 }
221 221
222 void CheckSecurityInfoForNonSecure(content::WebContents* contents) { 222 void CheckSecurityInfoForNonSecure(content::WebContents* contents) {
223 ASSERT_TRUE(contents); 223 ASSERT_TRUE(contents);
224 224
225 ChromeSecurityStateModelClient* model_client = 225 ChromeSecurityStateModelClient* model_client =
226 ChromeSecurityStateModelClient::FromWebContents(contents); 226 ChromeSecurityStateModelClient::FromWebContents(contents);
227 ASSERT_TRUE(model_client); 227 ASSERT_TRUE(model_client);
228 const SecurityStateModel::SecurityInfo& security_info = 228 const SecurityStateModel::SecurityInfo& security_info =
229 model_client->GetSecurityInfo(); 229 model_client->GetSecurityInfo();
230 EXPECT_EQ(SecurityStateModel::NONE, security_info.security_level); 230 EXPECT_EQ(SecurityStateModel::NONE, security_info.security_level);
231 EXPECT_EQ(SecurityStateModel::NO_DEPRECATED_SHA1, 231 EXPECT_EQ(SecurityStateModel::NO_DEPRECATED_SHA1,
232 security_info.sha1_deprecation_status); 232 security_info.sha1_deprecation_status);
233 EXPECT_EQ(SecurityStateModel::CONTENT_STATUS_NONE, 233 EXPECT_EQ(SecurityStateModel::CONTENT_STATUS_NONE,
234 security_info.mixed_content_status); 234 security_info.mixed_content_status);
235 EXPECT_TRUE(security_info.sct_verify_statuses.empty()); 235 EXPECT_TRUE(security_info.sct_verify_statuses.empty());
236 EXPECT_FALSE(security_info.scheme_is_cryptographic); 236 EXPECT_FALSE(security_info.scheme_is_cryptographic);
237 EXPECT_FALSE(net::IsCertStatusError(security_info.cert_status)); 237 EXPECT_FALSE(net::IsCertStatusError(security_info.cert_status));
238 EXPECT_EQ(-1, security_info.security_bits); 238 EXPECT_EQ(-1, security_info.security_bits);
239 EXPECT_EQ(0, security_info.cert_id); 239 EXPECT_FALSE(!!security_info.certificate.get());
240 } 240 }
241 241
242 void ProceedThroughInterstitial(content::WebContents* tab) { 242 void ProceedThroughInterstitial(content::WebContents* tab) {
243 content::InterstitialPage* interstitial_page = tab->GetInterstitialPage(); 243 content::InterstitialPage* interstitial_page = tab->GetInterstitialPage();
244 ASSERT_TRUE(interstitial_page); 244 ASSERT_TRUE(interstitial_page);
245 ASSERT_EQ(SSLBlockingPage::kTypeForTesting, 245 ASSERT_EQ(SSLBlockingPage::kTypeForTesting,
246 interstitial_page->GetDelegateForTesting()->GetTypeForTesting()); 246 interstitial_page->GetDelegateForTesting()->GetTypeForTesting());
247 content::WindowedNotificationObserver observer( 247 content::WindowedNotificationObserver observer(
248 content::NOTIFICATION_LOAD_STOP, 248 content::NOTIFICATION_LOAD_STOP,
249 content::Source<content::NavigationController>(&tab->GetController())); 249 content::Source<content::NavigationController>(&tab->GetController()));
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
326 const SecurityStateModel::SecurityInfo& security_info = 326 const SecurityStateModel::SecurityInfo& security_info =
327 model_client->GetSecurityInfo(); 327 model_client->GetSecurityInfo();
328 EXPECT_EQ(SecurityStateModel::NONE, security_info.security_level); 328 EXPECT_EQ(SecurityStateModel::NONE, security_info.security_level);
329 EXPECT_EQ(SecurityStateModel::NO_DEPRECATED_SHA1, 329 EXPECT_EQ(SecurityStateModel::NO_DEPRECATED_SHA1,
330 security_info.sha1_deprecation_status); 330 security_info.sha1_deprecation_status);
331 EXPECT_EQ(SecurityStateModel::CONTENT_STATUS_NONE, 331 EXPECT_EQ(SecurityStateModel::CONTENT_STATUS_NONE,
332 security_info.mixed_content_status); 332 security_info.mixed_content_status);
333 EXPECT_TRUE(security_info.sct_verify_statuses.empty()); 333 EXPECT_TRUE(security_info.sct_verify_statuses.empty());
334 EXPECT_FALSE(security_info.scheme_is_cryptographic); 334 EXPECT_FALSE(security_info.scheme_is_cryptographic);
335 EXPECT_FALSE(net::IsCertStatusError(security_info.cert_status)); 335 EXPECT_FALSE(net::IsCertStatusError(security_info.cert_status));
336 EXPECT_EQ(0, security_info.cert_id); 336 EXPECT_FALSE(!!security_info.certificate.get());
337 EXPECT_EQ(-1, security_info.security_bits); 337 EXPECT_EQ(-1, security_info.security_bits);
338 EXPECT_EQ(0, security_info.connection_status); 338 EXPECT_EQ(0, security_info.connection_status);
339 } 339 }
340 340
341 IN_PROC_BROWSER_TEST_F(ChromeSecurityStateModelClientTest, HttpsPage) { 341 IN_PROC_BROWSER_TEST_F(ChromeSecurityStateModelClientTest, HttpsPage) {
342 ASSERT_TRUE(https_server_.Start()); 342 ASSERT_TRUE(https_server_.Start());
343 SetUpMockCertVerifierForHttpsServer(0, net::OK); 343 SetUpMockCertVerifierForHttpsServer(0, net::OK);
344 344
345 ui_test_utils::NavigateToURL(browser(), 345 ui_test_utils::NavigateToURL(browser(),
346 https_server_.GetURL("/ssl/google.html")); 346 https_server_.GetURL("/ssl/google.html"));
(...skipping 432 matching lines...) Expand 10 before | Expand all | Expand 10 after
779 verify_result.verified_cert = cert; 779 verify_result.verified_cert = cert;
780 net::HashValue hash(net::HASH_VALUE_SHA256); 780 net::HashValue hash(net::HASH_VALUE_SHA256);
781 memset(hash.data(), 1, hash.size()); 781 memset(hash.data(), 1, hash.size());
782 verify_result.public_key_hashes.push_back(hash); 782 verify_result.public_key_hashes.push_back(hash);
783 783
784 mock_cert_verifier()->AddResultForCert(cert.get(), verify_result, net::OK); 784 mock_cert_verifier()->AddResultForCert(cert.get(), verify_result, net::OK);
785 785
786 ui_test_utils::NavigateToURL(browser(), 786 ui_test_utils::NavigateToURL(browser(),
787 https_server_.GetURL("/ssl/google.html")); 787 https_server_.GetURL("/ssl/google.html"));
788 CheckBrokenSecurityStyle(observer, net::ERR_SSL_PINNED_KEY_NOT_IN_CERT_CHAIN, 788 CheckBrokenSecurityStyle(observer, net::ERR_SSL_PINNED_KEY_NOT_IN_CERT_CHAIN,
789 browser()); 789 browser(), cert.get());
790 } 790 }
791 791
792 // Fails requests with ERR_IO_PENDING. Can be used to simulate a navigation 792 // Fails requests with ERR_IO_PENDING. Can be used to simulate a navigation
793 // that never stops loading. 793 // that never stops loading.
794 class PendingJobInterceptor : public net::URLRequestInterceptor { 794 class PendingJobInterceptor : public net::URLRequestInterceptor {
795 public: 795 public:
796 PendingJobInterceptor() {} 796 PendingJobInterceptor() {}
797 ~PendingJobInterceptor() override {} 797 ~PendingJobInterceptor() override {}
798 798
799 // URLRequestInterceptor implementation 799 // URLRequestInterceptor implementation
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
930 GURL mixed_content_url(https_server_.GetURL(replacement_path)); 930 GURL mixed_content_url(https_server_.GetURL(replacement_path));
931 ui_test_utils::NavigateToURL(browser(), mixed_content_url); 931 ui_test_utils::NavigateToURL(browser(), mixed_content_url);
932 EXPECT_EQ(content::SECURITY_STYLE_UNAUTHENTICATED, 932 EXPECT_EQ(content::SECURITY_STYLE_UNAUTHENTICATED,
933 observer.latest_security_style()); 933 observer.latest_security_style());
934 934
935 const content::SecurityStyleExplanations& mixed_content_explanation = 935 const content::SecurityStyleExplanations& mixed_content_explanation =
936 observer.latest_explanations(); 936 observer.latest_explanations();
937 ASSERT_EQ(0u, mixed_content_explanation.unauthenticated_explanations.size()); 937 ASSERT_EQ(0u, mixed_content_explanation.unauthenticated_explanations.size());
938 ASSERT_EQ(0u, mixed_content_explanation.broken_explanations.size()); 938 ASSERT_EQ(0u, mixed_content_explanation.broken_explanations.size());
939 CheckSecureExplanations(mixed_content_explanation.secure_explanations, 939 CheckSecureExplanations(mixed_content_explanation.secure_explanations,
940 VALID_CERTIFICATE, browser()); 940 VALID_CERTIFICATE, browser(),
941 https_server_.GetCertificate().get());
941 EXPECT_TRUE(mixed_content_explanation.scheme_is_cryptographic); 942 EXPECT_TRUE(mixed_content_explanation.scheme_is_cryptographic);
942 EXPECT_FALSE(observer.latest_explanations().pkp_bypassed); 943 EXPECT_FALSE(observer.latest_explanations().pkp_bypassed);
943 EXPECT_TRUE(observer.latest_explanations().info_explanations.empty()); 944 EXPECT_TRUE(observer.latest_explanations().info_explanations.empty());
944 EXPECT_TRUE(mixed_content_explanation.displayed_mixed_content); 945 EXPECT_TRUE(mixed_content_explanation.displayed_mixed_content);
945 EXPECT_FALSE(mixed_content_explanation.ran_mixed_content); 946 EXPECT_FALSE(mixed_content_explanation.ran_mixed_content);
946 EXPECT_EQ(content::SECURITY_STYLE_UNAUTHENTICATED, 947 EXPECT_EQ(content::SECURITY_STYLE_UNAUTHENTICATED,
947 mixed_content_explanation.displayed_insecure_content_style); 948 mixed_content_explanation.displayed_insecure_content_style);
948 EXPECT_EQ(content::SECURITY_STYLE_AUTHENTICATION_BROKEN, 949 EXPECT_EQ(content::SECURITY_STYLE_AUTHENTICATION_BROKEN,
949 mixed_content_explanation.ran_insecure_content_style); 950 mixed_content_explanation.ran_insecure_content_style);
950 951
951 // Visit a broken HTTPS url. 952 // Visit a broken HTTPS url.
952 GURL expired_url(https_test_server_expired.GetURL("/title1.html")); 953 GURL expired_url(https_test_server_expired.GetURL("/title1.html"));
953 ui_test_utils::NavigateToURL(browser(), expired_url); 954 ui_test_utils::NavigateToURL(browser(), expired_url);
954 955
955 // An interstitial should show, and an event for the lock icon on the 956 // An interstitial should show, and an event for the lock icon on the
956 // interstitial should fire. 957 // interstitial should fire.
957 content::WaitForInterstitialAttach(web_contents); 958 content::WaitForInterstitialAttach(web_contents);
958 EXPECT_TRUE(web_contents->ShowingInterstitialPage()); 959 EXPECT_TRUE(web_contents->ShowingInterstitialPage());
959 CheckBrokenSecurityStyle(observer, net::ERR_CERT_DATE_INVALID, browser()); 960 CheckBrokenSecurityStyle(observer, net::ERR_CERT_DATE_INVALID, browser(),
961 https_test_server_expired.GetCertificate().get());
960 CheckSecureExplanations(observer.latest_explanations().secure_explanations, 962 CheckSecureExplanations(observer.latest_explanations().secure_explanations,
961 INVALID_CERTIFICATE, browser()); 963 INVALID_CERTIFICATE, browser(),
964 https_test_server_expired.GetCertificate().get());
962 EXPECT_TRUE(observer.latest_explanations().scheme_is_cryptographic); 965 EXPECT_TRUE(observer.latest_explanations().scheme_is_cryptographic);
963 EXPECT_FALSE(observer.latest_explanations().pkp_bypassed); 966 EXPECT_FALSE(observer.latest_explanations().pkp_bypassed);
964 EXPECT_TRUE(observer.latest_explanations().info_explanations.empty()); 967 EXPECT_TRUE(observer.latest_explanations().info_explanations.empty());
965 EXPECT_FALSE(observer.latest_explanations().displayed_mixed_content); 968 EXPECT_FALSE(observer.latest_explanations().displayed_mixed_content);
966 EXPECT_FALSE(observer.latest_explanations().ran_mixed_content); 969 EXPECT_FALSE(observer.latest_explanations().ran_mixed_content);
967 970
968 // Before clicking through, navigate to a different page, and then go 971 // Before clicking through, navigate to a different page, and then go
969 // back to the interstitial. 972 // back to the interstitial.
970 GURL valid_https_url(https_server_.GetURL("/title1.html")); 973 GURL valid_https_url(https_server_.GetURL("/title1.html"));
971 ui_test_utils::NavigateToURL(browser(), valid_https_url); 974 ui_test_utils::NavigateToURL(browser(), valid_https_url);
972 EXPECT_EQ(content::SECURITY_STYLE_AUTHENTICATED, 975 EXPECT_EQ(content::SECURITY_STYLE_AUTHENTICATED,
973 observer.latest_security_style()); 976 observer.latest_security_style());
974 EXPECT_EQ(0u, 977 EXPECT_EQ(0u,
975 observer.latest_explanations().unauthenticated_explanations.size()); 978 observer.latest_explanations().unauthenticated_explanations.size());
976 EXPECT_EQ(0u, observer.latest_explanations().broken_explanations.size()); 979 EXPECT_EQ(0u, observer.latest_explanations().broken_explanations.size());
977 CheckSecureExplanations(observer.latest_explanations().secure_explanations, 980 CheckSecureExplanations(observer.latest_explanations().secure_explanations,
978 VALID_CERTIFICATE, browser()); 981 VALID_CERTIFICATE, browser(),
982 https_server_.GetCertificate().get());
979 EXPECT_TRUE(observer.latest_explanations().scheme_is_cryptographic); 983 EXPECT_TRUE(observer.latest_explanations().scheme_is_cryptographic);
980 EXPECT_FALSE(observer.latest_explanations().pkp_bypassed); 984 EXPECT_FALSE(observer.latest_explanations().pkp_bypassed);
981 EXPECT_TRUE(observer.latest_explanations().info_explanations.empty()); 985 EXPECT_TRUE(observer.latest_explanations().info_explanations.empty());
982 EXPECT_FALSE(observer.latest_explanations().displayed_mixed_content); 986 EXPECT_FALSE(observer.latest_explanations().displayed_mixed_content);
983 EXPECT_FALSE(observer.latest_explanations().ran_mixed_content); 987 EXPECT_FALSE(observer.latest_explanations().ran_mixed_content);
984 988
985 // After going back to the interstitial, an event for a broken lock 989 // After going back to the interstitial, an event for a broken lock
986 // icon should fire again. 990 // icon should fire again.
987 ui_test_utils::NavigateToURL(browser(), expired_url); 991 ui_test_utils::NavigateToURL(browser(), expired_url);
988 content::WaitForInterstitialAttach(web_contents); 992 content::WaitForInterstitialAttach(web_contents);
989 EXPECT_TRUE(web_contents->ShowingInterstitialPage()); 993 EXPECT_TRUE(web_contents->ShowingInterstitialPage());
990 CheckBrokenSecurityStyle(observer, net::ERR_CERT_DATE_INVALID, browser()); 994 CheckBrokenSecurityStyle(observer, net::ERR_CERT_DATE_INVALID, browser(),
995 https_test_server_expired.GetCertificate().get());
991 CheckSecureExplanations(observer.latest_explanations().secure_explanations, 996 CheckSecureExplanations(observer.latest_explanations().secure_explanations,
992 INVALID_CERTIFICATE, browser()); 997 INVALID_CERTIFICATE, browser(),
998 https_test_server_expired.GetCertificate().get());
993 EXPECT_TRUE(observer.latest_explanations().scheme_is_cryptographic); 999 EXPECT_TRUE(observer.latest_explanations().scheme_is_cryptographic);
994 EXPECT_FALSE(observer.latest_explanations().pkp_bypassed); 1000 EXPECT_FALSE(observer.latest_explanations().pkp_bypassed);
995 EXPECT_TRUE(observer.latest_explanations().info_explanations.empty()); 1001 EXPECT_TRUE(observer.latest_explanations().info_explanations.empty());
996 EXPECT_FALSE(observer.latest_explanations().displayed_mixed_content); 1002 EXPECT_FALSE(observer.latest_explanations().displayed_mixed_content);
997 EXPECT_FALSE(observer.latest_explanations().ran_mixed_content); 1003 EXPECT_FALSE(observer.latest_explanations().ran_mixed_content);
998 1004
999 // Since the next expected style is the same as the previous, clear 1005 // Since the next expected style is the same as the previous, clear
1000 // the observer (to make sure that the event fires twice and we don't 1006 // the observer (to make sure that the event fires twice and we don't
1001 // just see the previous event's style). 1007 // just see the previous event's style).
1002 observer.ClearLatestSecurityStyleAndExplanations(); 1008 observer.ClearLatestSecurityStyleAndExplanations();
1003 1009
1004 // Other conditions cannot be tested on this host after clicking 1010 // Other conditions cannot be tested on this host after clicking
1005 // through because once the interstitial is clicked through, all URLs 1011 // through because once the interstitial is clicked through, all URLs
1006 // for this host will remain in a broken state. 1012 // for this host will remain in a broken state.
1007 ProceedThroughInterstitial(web_contents); 1013 ProceedThroughInterstitial(web_contents);
1008 CheckBrokenSecurityStyle(observer, net::ERR_CERT_DATE_INVALID, browser()); 1014 CheckBrokenSecurityStyle(observer, net::ERR_CERT_DATE_INVALID, browser(),
1015 https_test_server_expired.GetCertificate().get());
1009 CheckSecureExplanations(observer.latest_explanations().secure_explanations, 1016 CheckSecureExplanations(observer.latest_explanations().secure_explanations,
1010 INVALID_CERTIFICATE, browser()); 1017 INVALID_CERTIFICATE, browser(),
1018 https_test_server_expired.GetCertificate().get());
1011 EXPECT_TRUE(observer.latest_explanations().scheme_is_cryptographic); 1019 EXPECT_TRUE(observer.latest_explanations().scheme_is_cryptographic);
1012 EXPECT_FALSE(observer.latest_explanations().pkp_bypassed); 1020 EXPECT_FALSE(observer.latest_explanations().pkp_bypassed);
1013 EXPECT_TRUE(observer.latest_explanations().info_explanations.empty()); 1021 EXPECT_TRUE(observer.latest_explanations().info_explanations.empty());
1014 EXPECT_FALSE(observer.latest_explanations().displayed_mixed_content); 1022 EXPECT_FALSE(observer.latest_explanations().displayed_mixed_content);
1015 EXPECT_FALSE(observer.latest_explanations().ran_mixed_content); 1023 EXPECT_FALSE(observer.latest_explanations().ran_mixed_content);
1016 } 1024 }
1017 1025
1018 // Visit a valid HTTPS page, then a broken HTTPS page, and then go back, 1026 // Visit a valid HTTPS page, then a broken HTTPS page, and then go back,
1019 // and test that the observed security style matches. 1027 // and test that the observed security style matches.
1020 #if defined(OS_CHROMEOS) 1028 #if defined(OS_CHROMEOS)
(...skipping 21 matching lines...) Expand all
1042 1050
1043 // Visit a valid HTTPS url. 1051 // Visit a valid HTTPS url.
1044 GURL valid_https_url(https_server_.GetURL("/title1.html")); 1052 GURL valid_https_url(https_server_.GetURL("/title1.html"));
1045 ui_test_utils::NavigateToURL(browser(), valid_https_url); 1053 ui_test_utils::NavigateToURL(browser(), valid_https_url);
1046 EXPECT_EQ(content::SECURITY_STYLE_AUTHENTICATED, 1054 EXPECT_EQ(content::SECURITY_STYLE_AUTHENTICATED,
1047 observer.latest_security_style()); 1055 observer.latest_security_style());
1048 EXPECT_EQ(0u, 1056 EXPECT_EQ(0u,
1049 observer.latest_explanations().unauthenticated_explanations.size()); 1057 observer.latest_explanations().unauthenticated_explanations.size());
1050 EXPECT_EQ(0u, observer.latest_explanations().broken_explanations.size()); 1058 EXPECT_EQ(0u, observer.latest_explanations().broken_explanations.size());
1051 CheckSecureExplanations(observer.latest_explanations().secure_explanations, 1059 CheckSecureExplanations(observer.latest_explanations().secure_explanations,
1052 VALID_CERTIFICATE, browser()); 1060 VALID_CERTIFICATE, browser(),
1061 https_server_.GetCertificate().get());
1053 EXPECT_TRUE(observer.latest_explanations().scheme_is_cryptographic); 1062 EXPECT_TRUE(observer.latest_explanations().scheme_is_cryptographic);
1054 EXPECT_FALSE(observer.latest_explanations().pkp_bypassed); 1063 EXPECT_FALSE(observer.latest_explanations().pkp_bypassed);
1055 EXPECT_TRUE(observer.latest_explanations().info_explanations.empty()); 1064 EXPECT_TRUE(observer.latest_explanations().info_explanations.empty());
1056 EXPECT_FALSE(observer.latest_explanations().displayed_mixed_content); 1065 EXPECT_FALSE(observer.latest_explanations().displayed_mixed_content);
1057 EXPECT_FALSE(observer.latest_explanations().ran_mixed_content); 1066 EXPECT_FALSE(observer.latest_explanations().ran_mixed_content);
1058 1067
1059 // Navigate to a bad HTTPS page on a different host, and then click 1068 // Navigate to a bad HTTPS page on a different host, and then click
1060 // Back to verify that the previous good security style is seen again. 1069 // Back to verify that the previous good security style is seen again.
1061 GURL expired_https_url(https_test_server_expired.GetURL("/title1.html")); 1070 GURL expired_https_url(https_test_server_expired.GetURL("/title1.html"));
1062 host_resolver()->AddRule("www.example_broken.test", "127.0.0.1"); 1071 host_resolver()->AddRule("www.example_broken.test", "127.0.0.1");
1063 GURL::Replacements replace_host; 1072 GURL::Replacements replace_host;
1064 replace_host.SetHostStr("www.example_broken.test"); 1073 replace_host.SetHostStr("www.example_broken.test");
1065 GURL https_url_different_host = 1074 GURL https_url_different_host =
1066 expired_https_url.ReplaceComponents(replace_host); 1075 expired_https_url.ReplaceComponents(replace_host);
1067 1076
1068 ui_test_utils::NavigateToURL(browser(), https_url_different_host); 1077 ui_test_utils::NavigateToURL(browser(), https_url_different_host);
1069 1078
1070 content::WaitForInterstitialAttach(web_contents); 1079 content::WaitForInterstitialAttach(web_contents);
1071 EXPECT_TRUE(web_contents->ShowingInterstitialPage()); 1080 EXPECT_TRUE(web_contents->ShowingInterstitialPage());
1072 CheckBrokenSecurityStyle(observer, net::ERR_CERT_COMMON_NAME_INVALID, 1081 CheckBrokenSecurityStyle(observer, net::ERR_CERT_COMMON_NAME_INVALID,
1073 browser()); 1082 browser(),
1083 https_test_server_expired.GetCertificate().get());
1074 ProceedThroughInterstitial(web_contents); 1084 ProceedThroughInterstitial(web_contents);
1075 CheckBrokenSecurityStyle(observer, net::ERR_CERT_COMMON_NAME_INVALID, 1085 CheckBrokenSecurityStyle(observer, net::ERR_CERT_COMMON_NAME_INVALID,
1076 browser()); 1086 browser(),
1087 https_test_server_expired.GetCertificate().get());
1077 CheckSecureExplanations(observer.latest_explanations().secure_explanations, 1088 CheckSecureExplanations(observer.latest_explanations().secure_explanations,
1078 INVALID_CERTIFICATE, browser()); 1089 INVALID_CERTIFICATE, browser(),
1090 https_test_server_expired.GetCertificate().get());
1079 EXPECT_TRUE(observer.latest_explanations().scheme_is_cryptographic); 1091 EXPECT_TRUE(observer.latest_explanations().scheme_is_cryptographic);
1080 EXPECT_FALSE(observer.latest_explanations().pkp_bypassed); 1092 EXPECT_FALSE(observer.latest_explanations().pkp_bypassed);
1081 EXPECT_TRUE(observer.latest_explanations().info_explanations.empty()); 1093 EXPECT_TRUE(observer.latest_explanations().info_explanations.empty());
1082 EXPECT_FALSE(observer.latest_explanations().displayed_mixed_content); 1094 EXPECT_FALSE(observer.latest_explanations().displayed_mixed_content);
1083 EXPECT_FALSE(observer.latest_explanations().ran_mixed_content); 1095 EXPECT_FALSE(observer.latest_explanations().ran_mixed_content);
1084 1096
1085 content::WindowedNotificationObserver back_nav_load_observer( 1097 content::WindowedNotificationObserver back_nav_load_observer(
1086 content::NOTIFICATION_LOAD_STOP, 1098 content::NOTIFICATION_LOAD_STOP,
1087 content::Source<content::NavigationController>( 1099 content::Source<content::NavigationController>(
1088 &web_contents->GetController())); 1100 &web_contents->GetController()));
1089 chrome::GoBack(browser(), WindowOpenDisposition::CURRENT_TAB); 1101 chrome::GoBack(browser(), WindowOpenDisposition::CURRENT_TAB);
1090 back_nav_load_observer.Wait(); 1102 back_nav_load_observer.Wait();
1091 1103
1092 EXPECT_EQ(content::SECURITY_STYLE_AUTHENTICATED, 1104 EXPECT_EQ(content::SECURITY_STYLE_AUTHENTICATED,
1093 observer.latest_security_style()); 1105 observer.latest_security_style());
1094 EXPECT_EQ(0u, 1106 EXPECT_EQ(0u,
1095 observer.latest_explanations().unauthenticated_explanations.size()); 1107 observer.latest_explanations().unauthenticated_explanations.size());
1096 EXPECT_EQ(0u, observer.latest_explanations().broken_explanations.size()); 1108 EXPECT_EQ(0u, observer.latest_explanations().broken_explanations.size());
1097 CheckSecureExplanations(observer.latest_explanations().secure_explanations, 1109 CheckSecureExplanations(observer.latest_explanations().secure_explanations,
1098 VALID_CERTIFICATE, browser()); 1110 VALID_CERTIFICATE, browser(),
1111 https_server_.GetCertificate().get());
1099 EXPECT_TRUE(observer.latest_explanations().scheme_is_cryptographic); 1112 EXPECT_TRUE(observer.latest_explanations().scheme_is_cryptographic);
1100 EXPECT_FALSE(observer.latest_explanations().pkp_bypassed); 1113 EXPECT_FALSE(observer.latest_explanations().pkp_bypassed);
1101 EXPECT_TRUE(observer.latest_explanations().info_explanations.empty()); 1114 EXPECT_TRUE(observer.latest_explanations().info_explanations.empty());
1102 EXPECT_FALSE(observer.latest_explanations().displayed_mixed_content); 1115 EXPECT_FALSE(observer.latest_explanations().displayed_mixed_content);
1103 EXPECT_FALSE(observer.latest_explanations().ran_mixed_content); 1116 EXPECT_FALSE(observer.latest_explanations().ran_mixed_content);
1104 } 1117 }
1105 1118
1106 // After AddNonsecureUrlHandler() is called, requests to this hostname 1119 // After AddNonsecureUrlHandler() is called, requests to this hostname
1107 // will use obsolete TLS settings. 1120 // will use obsolete TLS settings.
1108 const char kMockNonsecureHostname[] = "example-nonsecure.test"; 1121 const char kMockNonsecureHostname[] = "example-nonsecure.test";
(...skipping 286 matching lines...) Expand 10 before | Expand all | Expand 10 after
1395 ChromeSecurityStateModelClient* model_client = 1408 ChromeSecurityStateModelClient* model_client =
1396 ChromeSecurityStateModelClient::FromWebContents(web_contents); 1409 ChromeSecurityStateModelClient::FromWebContents(web_contents);
1397 ASSERT_TRUE(model_client); 1410 ASSERT_TRUE(model_client);
1398 const SecurityStateModel::SecurityInfo& security_info = 1411 const SecurityStateModel::SecurityInfo& security_info =
1399 model_client->GetSecurityInfo(); 1412 model_client->GetSecurityInfo();
1400 EXPECT_EQ(SecurityStateModel::SECURE, security_info.security_level); 1413 EXPECT_EQ(SecurityStateModel::SECURE, security_info.security_level);
1401 EXPECT_EQ(kTestSCTStatuses, security_info.sct_verify_statuses); 1414 EXPECT_EQ(kTestSCTStatuses, security_info.sct_verify_statuses);
1402 } 1415 }
1403 1416
1404 } // namespace 1417 } // namespace
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698