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 "chrome/browser/ui/website_settings/website_settings.h" | 5 #include "chrome/browser/ui/website_settings/website_settings.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "base/at_exit.h" | 10 #include "base/at_exit.h" |
(...skipping 23 matching lines...) Expand all Loading... |
34 #include "net/cert/cert_status_flags.h" | 34 #include "net/cert/cert_status_flags.h" |
35 #include "net/cert/x509_certificate.h" | 35 #include "net/cert/x509_certificate.h" |
36 #include "net/ssl/ssl_connection_status_flags.h" | 36 #include "net/ssl/ssl_connection_status_flags.h" |
37 #include "net/test/cert_test_util.h" | 37 #include "net/test/cert_test_util.h" |
38 #include "net/test/test_certificate_data.h" | 38 #include "net/test/test_certificate_data.h" |
39 #include "net/test/test_data_directory.h" | 39 #include "net/test/test_data_directory.h" |
40 #include "testing/gmock/include/gmock/gmock.h" | 40 #include "testing/gmock/include/gmock/gmock.h" |
41 #include "testing/gtest/include/gtest/gtest.h" | 41 #include "testing/gtest/include/gtest/gtest.h" |
42 | 42 |
43 using content::SSLStatus; | 43 using content::SSLStatus; |
44 using security_state::SecurityStateModel; | |
45 using testing::_; | 44 using testing::_; |
46 using testing::AnyNumber; | 45 using testing::AnyNumber; |
47 using testing::Invoke; | 46 using testing::Invoke; |
48 using testing::Return; | 47 using testing::Return; |
49 using testing::SetArgPointee; | 48 using testing::SetArgPointee; |
50 | 49 |
51 namespace { | 50 namespace { |
52 | 51 |
53 // SSL cipher suite like specified in RFC5246 Appendix A.5. "The Cipher Suite". | 52 // SSL cipher suite like specified in RFC5246 Appendix A.5. "The Cipher Suite". |
54 // Without the CR_ prefix, this clashes with the OS X 10.8 headers. | 53 // Without the CR_ prefix, this clashes with the OS X 10.8 headers. |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
94 class WebsiteSettingsTest : public ChromeRenderViewHostTestHarness { | 93 class WebsiteSettingsTest : public ChromeRenderViewHostTestHarness { |
95 public: | 94 public: |
96 WebsiteSettingsTest() : url_("http://www.example.com") {} | 95 WebsiteSettingsTest() : url_("http://www.example.com") {} |
97 | 96 |
98 ~WebsiteSettingsTest() override {} | 97 ~WebsiteSettingsTest() override {} |
99 | 98 |
100 void SetUp() override { | 99 void SetUp() override { |
101 ChromeRenderViewHostTestHarness::SetUp(); | 100 ChromeRenderViewHostTestHarness::SetUp(); |
102 | 101 |
103 // Setup stub SSLStatus. | 102 // Setup stub SSLStatus. |
104 security_info_.security_level = SecurityStateModel::NONE; | 103 security_info_.security_level = security_state::NONE; |
105 | 104 |
106 // Create the certificate. | 105 // Create the certificate. |
107 cert_ = | 106 cert_ = |
108 net::ImportCertFromFile(net::GetTestCertsDirectory(), "ok_cert.pem"); | 107 net::ImportCertFromFile(net::GetTestCertsDirectory(), "ok_cert.pem"); |
109 ASSERT_TRUE(cert_); | 108 ASSERT_TRUE(cert_); |
110 | 109 |
111 TabSpecificContentSettings::CreateForWebContents(web_contents()); | 110 TabSpecificContentSettings::CreateForWebContents(web_contents()); |
112 InfoBarService::CreateForWebContents(web_contents()); | 111 InfoBarService::CreateForWebContents(web_contents()); |
113 | 112 |
114 // Setup mock ui. | 113 // Setup mock ui. |
(...skipping 27 matching lines...) Expand all Loading... |
142 last_chosen_object_info_.push_back(std::move(chosen_object_info)); | 141 last_chosen_object_info_.push_back(std::move(chosen_object_info)); |
143 } | 142 } |
144 | 143 |
145 void ResetMockUI() { mock_ui_.reset(new MockWebsiteSettingsUI()); } | 144 void ResetMockUI() { mock_ui_.reset(new MockWebsiteSettingsUI()); } |
146 | 145 |
147 void ClearWebsiteSettings() { website_settings_.reset(nullptr); } | 146 void ClearWebsiteSettings() { website_settings_.reset(nullptr); } |
148 | 147 |
149 const GURL& url() const { return url_; } | 148 const GURL& url() const { return url_; } |
150 scoped_refptr<net::X509Certificate> cert() { return cert_; } | 149 scoped_refptr<net::X509Certificate> cert() { return cert_; } |
151 MockWebsiteSettingsUI* mock_ui() { return mock_ui_.get(); } | 150 MockWebsiteSettingsUI* mock_ui() { return mock_ui_.get(); } |
152 const SecurityStateModel::SecurityInfo& security_info() { | 151 const security_state::SecurityInfo& security_info() { |
153 return security_info_; | 152 return security_info_; |
154 } | 153 } |
155 const std::vector<std::unique_ptr<WebsiteSettingsUI::ChosenObjectInfo>>& | 154 const std::vector<std::unique_ptr<WebsiteSettingsUI::ChosenObjectInfo>>& |
156 last_chosen_object_info() { | 155 last_chosen_object_info() { |
157 return last_chosen_object_info_; | 156 return last_chosen_object_info_; |
158 } | 157 } |
159 TabSpecificContentSettings* tab_specific_content_settings() { | 158 TabSpecificContentSettings* tab_specific_content_settings() { |
160 return TabSpecificContentSettings::FromWebContents(web_contents()); | 159 return TabSpecificContentSettings::FromWebContents(web_contents()); |
161 } | 160 } |
162 InfoBarService* infobar_service() { | 161 InfoBarService* infobar_service() { |
163 return InfoBarService::FromWebContents(web_contents()); | 162 return InfoBarService::FromWebContents(web_contents()); |
164 } | 163 } |
165 | 164 |
166 WebsiteSettings* website_settings() { | 165 WebsiteSettings* website_settings() { |
167 if (!website_settings_.get()) { | 166 if (!website_settings_.get()) { |
168 website_settings_.reset(new WebsiteSettings( | 167 website_settings_.reset(new WebsiteSettings( |
169 mock_ui(), profile(), tab_specific_content_settings(), web_contents(), | 168 mock_ui(), profile(), tab_specific_content_settings(), web_contents(), |
170 url(), security_info())); | 169 url(), security_info())); |
171 } | 170 } |
172 return website_settings_.get(); | 171 return website_settings_.get(); |
173 } | 172 } |
174 | 173 |
175 device::MockUsbService& usb_service() { | 174 device::MockUsbService& usb_service() { |
176 return *device_client_.usb_service(); | 175 return *device_client_.usb_service(); |
177 } | 176 } |
178 | 177 |
179 SecurityStateModel::SecurityInfo security_info_; | 178 security_state::SecurityInfo security_info_; |
180 | 179 |
181 private: | 180 private: |
182 device::MockDeviceClient device_client_; | 181 device::MockDeviceClient device_client_; |
183 std::unique_ptr<WebsiteSettings> website_settings_; | 182 std::unique_ptr<WebsiteSettings> website_settings_; |
184 std::unique_ptr<MockWebsiteSettingsUI> mock_ui_; | 183 std::unique_ptr<MockWebsiteSettingsUI> mock_ui_; |
185 scoped_refptr<net::X509Certificate> cert_; | 184 scoped_refptr<net::X509Certificate> cert_; |
186 GURL url_; | 185 GURL url_; |
187 std::vector<std::unique_ptr<WebsiteSettingsUI::ChosenObjectInfo>> | 186 std::vector<std::unique_ptr<WebsiteSettingsUI::ChosenObjectInfo>> |
188 last_chosen_object_info_; | 187 last_chosen_object_info_; |
189 }; | 188 }; |
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
352 EXPECT_CALL(*mock_ui(), SetSelectedTab( | 351 EXPECT_CALL(*mock_ui(), SetSelectedTab( |
353 WebsiteSettingsUI::TAB_ID_PERMISSIONS)); | 352 WebsiteSettingsUI::TAB_ID_PERMISSIONS)); |
354 EXPECT_EQ(WebsiteSettings::SITE_CONNECTION_STATUS_UNENCRYPTED, | 353 EXPECT_EQ(WebsiteSettings::SITE_CONNECTION_STATUS_UNENCRYPTED, |
355 website_settings()->site_connection_status()); | 354 website_settings()->site_connection_status()); |
356 EXPECT_EQ(WebsiteSettings::SITE_IDENTITY_STATUS_NO_CERT, | 355 EXPECT_EQ(WebsiteSettings::SITE_IDENTITY_STATUS_NO_CERT, |
357 website_settings()->site_identity_status()); | 356 website_settings()->site_identity_status()); |
358 EXPECT_EQ(base::string16(), website_settings()->organization_name()); | 357 EXPECT_EQ(base::string16(), website_settings()->organization_name()); |
359 } | 358 } |
360 | 359 |
361 TEST_F(WebsiteSettingsTest, HTTPSConnection) { | 360 TEST_F(WebsiteSettingsTest, HTTPSConnection) { |
362 security_info_.security_level = SecurityStateModel::SECURE; | 361 security_info_.security_level = security_state::SECURE; |
363 security_info_.scheme_is_cryptographic = true; | 362 security_info_.scheme_is_cryptographic = true; |
364 security_info_.certificate = cert(); | 363 security_info_.certificate = cert(); |
365 security_info_.cert_status = 0; | 364 security_info_.cert_status = 0; |
366 security_info_.security_bits = 81; // No error if > 80. | 365 security_info_.security_bits = 81; // No error if > 80. |
367 int status = 0; | 366 int status = 0; |
368 status = SetSSLVersion(status, net::SSL_CONNECTION_VERSION_TLS1); | 367 status = SetSSLVersion(status, net::SSL_CONNECTION_VERSION_TLS1); |
369 status = SetSSLCipherSuite(status, CR_TLS_RSA_WITH_AES_256_CBC_SHA256); | 368 status = SetSSLCipherSuite(status, CR_TLS_RSA_WITH_AES_256_CBC_SHA256); |
370 security_info_.connection_status = status; | 369 security_info_.connection_status = status; |
371 | 370 |
372 SetDefaultUIExpectations(mock_ui()); | 371 SetDefaultUIExpectations(mock_ui()); |
373 EXPECT_CALL(*mock_ui(), SetSelectedTab( | 372 EXPECT_CALL(*mock_ui(), SetSelectedTab( |
374 WebsiteSettingsUI::TAB_ID_PERMISSIONS)); | 373 WebsiteSettingsUI::TAB_ID_PERMISSIONS)); |
375 | 374 |
376 EXPECT_EQ(WebsiteSettings::SITE_CONNECTION_STATUS_ENCRYPTED, | 375 EXPECT_EQ(WebsiteSettings::SITE_CONNECTION_STATUS_ENCRYPTED, |
377 website_settings()->site_connection_status()); | 376 website_settings()->site_connection_status()); |
378 EXPECT_EQ(WebsiteSettings::SITE_IDENTITY_STATUS_CERT, | 377 EXPECT_EQ(WebsiteSettings::SITE_IDENTITY_STATUS_CERT, |
379 website_settings()->site_identity_status()); | 378 website_settings()->site_identity_status()); |
380 EXPECT_EQ(base::string16(), website_settings()->organization_name()); | 379 EXPECT_EQ(base::string16(), website_settings()->organization_name()); |
381 } | 380 } |
382 | 381 |
383 TEST_F(WebsiteSettingsTest, InsecureContent) { | 382 TEST_F(WebsiteSettingsTest, InsecureContent) { |
384 struct TestCase { | 383 struct TestCase { |
385 SecurityStateModel::SecurityLevel security_level; | 384 security_state::SecurityLevel security_level; |
386 net::CertStatus cert_status; | 385 net::CertStatus cert_status; |
387 SecurityStateModel::ContentStatus mixed_content_status; | 386 security_state::ContentStatus mixed_content_status; |
388 SecurityStateModel::ContentStatus content_with_cert_errors_status; | 387 security_state::ContentStatus content_with_cert_errors_status; |
389 WebsiteSettings::SiteConnectionStatus expected_site_connection_status; | 388 WebsiteSettings::SiteConnectionStatus expected_site_connection_status; |
390 WebsiteSettings::SiteIdentityStatus expected_site_identity_status; | 389 WebsiteSettings::SiteIdentityStatus expected_site_identity_status; |
391 int expected_connection_icon_id; | 390 int expected_connection_icon_id; |
392 }; | 391 }; |
393 | 392 |
394 const TestCase kTestCases[] = { | 393 const TestCase kTestCases[] = { |
395 // Passive mixed content. | 394 // Passive mixed content. |
396 {SecurityStateModel::NONE, 0, | 395 {security_state::NONE, 0, security_state::CONTENT_STATUS_DISPLAYED, |
397 SecurityStateModel::CONTENT_STATUS_DISPLAYED, | 396 security_state::CONTENT_STATUS_NONE, |
398 SecurityStateModel::CONTENT_STATUS_NONE, | |
399 WebsiteSettings::SITE_CONNECTION_STATUS_INSECURE_PASSIVE_SUBRESOURCE, | 397 WebsiteSettings::SITE_CONNECTION_STATUS_INSECURE_PASSIVE_SUBRESOURCE, |
400 WebsiteSettings::SITE_IDENTITY_STATUS_CERT, IDR_PAGEINFO_WARNING_MINOR}, | 398 WebsiteSettings::SITE_IDENTITY_STATUS_CERT, IDR_PAGEINFO_WARNING_MINOR}, |
401 // Passive mixed content with a cert error on the main resource. | 399 // Passive mixed content with a cert error on the main resource. |
402 {SecurityStateModel::DANGEROUS, net::CERT_STATUS_DATE_INVALID, | 400 {security_state::DANGEROUS, net::CERT_STATUS_DATE_INVALID, |
403 SecurityStateModel::CONTENT_STATUS_DISPLAYED, | 401 security_state::CONTENT_STATUS_DISPLAYED, |
404 SecurityStateModel::CONTENT_STATUS_NONE, | 402 security_state::CONTENT_STATUS_NONE, |
405 WebsiteSettings::SITE_CONNECTION_STATUS_INSECURE_PASSIVE_SUBRESOURCE, | 403 WebsiteSettings::SITE_CONNECTION_STATUS_INSECURE_PASSIVE_SUBRESOURCE, |
406 WebsiteSettings::SITE_IDENTITY_STATUS_ERROR, IDR_PAGEINFO_WARNING_MINOR}, | 404 WebsiteSettings::SITE_IDENTITY_STATUS_ERROR, IDR_PAGEINFO_WARNING_MINOR}, |
407 // Active and passive mixed content. | 405 // Active and passive mixed content. |
408 {SecurityStateModel::DANGEROUS, 0, | 406 {security_state::DANGEROUS, 0, |
409 SecurityStateModel::CONTENT_STATUS_DISPLAYED_AND_RAN, | 407 security_state::CONTENT_STATUS_DISPLAYED_AND_RAN, |
410 SecurityStateModel::CONTENT_STATUS_NONE, | 408 security_state::CONTENT_STATUS_NONE, |
411 WebsiteSettings::SITE_CONNECTION_STATUS_INSECURE_ACTIVE_SUBRESOURCE, | 409 WebsiteSettings::SITE_CONNECTION_STATUS_INSECURE_ACTIVE_SUBRESOURCE, |
412 WebsiteSettings::SITE_IDENTITY_STATUS_CERT, IDR_PAGEINFO_BAD}, | 410 WebsiteSettings::SITE_IDENTITY_STATUS_CERT, IDR_PAGEINFO_BAD}, |
413 // Active and passive mixed content with a cert error on the main | 411 // Active and passive mixed content with a cert error on the main |
414 // resource. | 412 // resource. |
415 {SecurityStateModel::DANGEROUS, net::CERT_STATUS_DATE_INVALID, | 413 {security_state::DANGEROUS, net::CERT_STATUS_DATE_INVALID, |
416 SecurityStateModel::CONTENT_STATUS_DISPLAYED_AND_RAN, | 414 security_state::CONTENT_STATUS_DISPLAYED_AND_RAN, |
417 SecurityStateModel::CONTENT_STATUS_NONE, | 415 security_state::CONTENT_STATUS_NONE, |
418 WebsiteSettings::SITE_CONNECTION_STATUS_INSECURE_ACTIVE_SUBRESOURCE, | 416 WebsiteSettings::SITE_CONNECTION_STATUS_INSECURE_ACTIVE_SUBRESOURCE, |
419 WebsiteSettings::SITE_IDENTITY_STATUS_ERROR, IDR_PAGEINFO_BAD}, | 417 WebsiteSettings::SITE_IDENTITY_STATUS_ERROR, IDR_PAGEINFO_BAD}, |
420 // Active mixed content. | 418 // Active mixed content. |
421 {SecurityStateModel::DANGEROUS, 0, SecurityStateModel::CONTENT_STATUS_RAN, | 419 {security_state::DANGEROUS, 0, security_state::CONTENT_STATUS_RAN, |
422 SecurityStateModel::CONTENT_STATUS_NONE, | 420 security_state::CONTENT_STATUS_NONE, |
423 WebsiteSettings::SITE_CONNECTION_STATUS_INSECURE_ACTIVE_SUBRESOURCE, | 421 WebsiteSettings::SITE_CONNECTION_STATUS_INSECURE_ACTIVE_SUBRESOURCE, |
424 WebsiteSettings::SITE_IDENTITY_STATUS_CERT, IDR_PAGEINFO_BAD}, | 422 WebsiteSettings::SITE_IDENTITY_STATUS_CERT, IDR_PAGEINFO_BAD}, |
425 // Active mixed content with a cert error on the main resource. | 423 // Active mixed content with a cert error on the main resource. |
426 {SecurityStateModel::DANGEROUS, net::CERT_STATUS_DATE_INVALID, | 424 {security_state::DANGEROUS, net::CERT_STATUS_DATE_INVALID, |
427 SecurityStateModel::CONTENT_STATUS_RAN, | 425 security_state::CONTENT_STATUS_RAN, security_state::CONTENT_STATUS_NONE, |
428 SecurityStateModel::CONTENT_STATUS_NONE, | |
429 WebsiteSettings::SITE_CONNECTION_STATUS_INSECURE_ACTIVE_SUBRESOURCE, | 426 WebsiteSettings::SITE_CONNECTION_STATUS_INSECURE_ACTIVE_SUBRESOURCE, |
430 WebsiteSettings::SITE_IDENTITY_STATUS_ERROR, IDR_PAGEINFO_BAD}, | 427 WebsiteSettings::SITE_IDENTITY_STATUS_ERROR, IDR_PAGEINFO_BAD}, |
431 | 428 |
432 // Passive subresources with cert errors. | 429 // Passive subresources with cert errors. |
433 {SecurityStateModel::NONE, 0, SecurityStateModel::CONTENT_STATUS_NONE, | 430 {security_state::NONE, 0, security_state::CONTENT_STATUS_NONE, |
434 SecurityStateModel::CONTENT_STATUS_DISPLAYED, | 431 security_state::CONTENT_STATUS_DISPLAYED, |
435 WebsiteSettings::SITE_CONNECTION_STATUS_INSECURE_PASSIVE_SUBRESOURCE, | 432 WebsiteSettings::SITE_CONNECTION_STATUS_INSECURE_PASSIVE_SUBRESOURCE, |
436 WebsiteSettings::SITE_IDENTITY_STATUS_CERT, IDR_PAGEINFO_WARNING_MINOR}, | 433 WebsiteSettings::SITE_IDENTITY_STATUS_CERT, IDR_PAGEINFO_WARNING_MINOR}, |
437 // Passive subresources with cert errors, with a cert error on the | 434 // Passive subresources with cert errors, with a cert error on the |
438 // main resource also. In this case, the subresources with | 435 // main resource also. In this case, the subresources with |
439 // certificate errors are ignored: if the main resource had a cert | 436 // certificate errors are ignored: if the main resource had a cert |
440 // error, it's not that useful to warn about subresources with cert | 437 // error, it's not that useful to warn about subresources with cert |
441 // errors as well. | 438 // errors as well. |
442 {SecurityStateModel::DANGEROUS, net::CERT_STATUS_DATE_INVALID, | 439 {security_state::DANGEROUS, net::CERT_STATUS_DATE_INVALID, |
443 SecurityStateModel::CONTENT_STATUS_NONE, | 440 security_state::CONTENT_STATUS_NONE, |
444 SecurityStateModel::CONTENT_STATUS_DISPLAYED, | 441 security_state::CONTENT_STATUS_DISPLAYED, |
445 WebsiteSettings::SITE_CONNECTION_STATUS_ENCRYPTED, | 442 WebsiteSettings::SITE_CONNECTION_STATUS_ENCRYPTED, |
446 WebsiteSettings::SITE_IDENTITY_STATUS_ERROR, IDR_PAGEINFO_GOOD}, | 443 WebsiteSettings::SITE_IDENTITY_STATUS_ERROR, IDR_PAGEINFO_GOOD}, |
447 // Passive and active subresources with cert errors. | 444 // Passive and active subresources with cert errors. |
448 {SecurityStateModel::DANGEROUS, 0, | 445 {security_state::DANGEROUS, 0, security_state::CONTENT_STATUS_NONE, |
449 SecurityStateModel::CONTENT_STATUS_NONE, | 446 security_state::CONTENT_STATUS_DISPLAYED_AND_RAN, |
450 SecurityStateModel::CONTENT_STATUS_DISPLAYED_AND_RAN, | |
451 WebsiteSettings::SITE_CONNECTION_STATUS_INSECURE_ACTIVE_SUBRESOURCE, | 447 WebsiteSettings::SITE_CONNECTION_STATUS_INSECURE_ACTIVE_SUBRESOURCE, |
452 WebsiteSettings::SITE_IDENTITY_STATUS_CERT, IDR_PAGEINFO_BAD}, | 448 WebsiteSettings::SITE_IDENTITY_STATUS_CERT, IDR_PAGEINFO_BAD}, |
453 // Passive and active subresources with cert errors, with a cert | 449 // Passive and active subresources with cert errors, with a cert |
454 // error on the main resource also. | 450 // error on the main resource also. |
455 {SecurityStateModel::DANGEROUS, net::CERT_STATUS_DATE_INVALID, | 451 {security_state::DANGEROUS, net::CERT_STATUS_DATE_INVALID, |
456 SecurityStateModel::CONTENT_STATUS_NONE, | 452 security_state::CONTENT_STATUS_NONE, |
457 SecurityStateModel::CONTENT_STATUS_DISPLAYED_AND_RAN, | 453 security_state::CONTENT_STATUS_DISPLAYED_AND_RAN, |
458 WebsiteSettings::SITE_CONNECTION_STATUS_ENCRYPTED, | 454 WebsiteSettings::SITE_CONNECTION_STATUS_ENCRYPTED, |
459 WebsiteSettings::SITE_IDENTITY_STATUS_ERROR, IDR_PAGEINFO_GOOD}, | 455 WebsiteSettings::SITE_IDENTITY_STATUS_ERROR, IDR_PAGEINFO_GOOD}, |
460 // Active subresources with cert errors. | 456 // Active subresources with cert errors. |
461 {SecurityStateModel::DANGEROUS, 0, | 457 {security_state::DANGEROUS, 0, security_state::CONTENT_STATUS_NONE, |
462 SecurityStateModel::CONTENT_STATUS_NONE, | 458 security_state::CONTENT_STATUS_RAN, |
463 SecurityStateModel::CONTENT_STATUS_RAN, | |
464 WebsiteSettings::SITE_CONNECTION_STATUS_INSECURE_ACTIVE_SUBRESOURCE, | 459 WebsiteSettings::SITE_CONNECTION_STATUS_INSECURE_ACTIVE_SUBRESOURCE, |
465 WebsiteSettings::SITE_IDENTITY_STATUS_CERT, IDR_PAGEINFO_BAD}, | 460 WebsiteSettings::SITE_IDENTITY_STATUS_CERT, IDR_PAGEINFO_BAD}, |
466 // Active subresources with cert errors, with a cert error on the main | 461 // Active subresources with cert errors, with a cert error on the main |
467 // resource also. | 462 // resource also. |
468 {SecurityStateModel::DANGEROUS, net::CERT_STATUS_DATE_INVALID, | 463 {security_state::DANGEROUS, net::CERT_STATUS_DATE_INVALID, |
469 SecurityStateModel::CONTENT_STATUS_NONE, | 464 security_state::CONTENT_STATUS_NONE, security_state::CONTENT_STATUS_RAN, |
470 SecurityStateModel::CONTENT_STATUS_RAN, | |
471 WebsiteSettings::SITE_CONNECTION_STATUS_ENCRYPTED, | 465 WebsiteSettings::SITE_CONNECTION_STATUS_ENCRYPTED, |
472 WebsiteSettings::SITE_IDENTITY_STATUS_ERROR, IDR_PAGEINFO_GOOD}, | 466 WebsiteSettings::SITE_IDENTITY_STATUS_ERROR, IDR_PAGEINFO_GOOD}, |
473 | 467 |
474 // Passive mixed content and subresources with cert errors. | 468 // Passive mixed content and subresources with cert errors. |
475 {SecurityStateModel::NONE, 0, | 469 {security_state::NONE, 0, security_state::CONTENT_STATUS_DISPLAYED, |
476 SecurityStateModel::CONTENT_STATUS_DISPLAYED, | 470 security_state::CONTENT_STATUS_DISPLAYED, |
477 SecurityStateModel::CONTENT_STATUS_DISPLAYED, | |
478 WebsiteSettings::SITE_CONNECTION_STATUS_INSECURE_PASSIVE_SUBRESOURCE, | 471 WebsiteSettings::SITE_CONNECTION_STATUS_INSECURE_PASSIVE_SUBRESOURCE, |
479 WebsiteSettings::SITE_IDENTITY_STATUS_CERT, IDR_PAGEINFO_WARNING_MINOR}, | 472 WebsiteSettings::SITE_IDENTITY_STATUS_CERT, IDR_PAGEINFO_WARNING_MINOR}, |
480 // Passive mixed content and active subresources with cert errors. | 473 // Passive mixed content and active subresources with cert errors. |
481 {SecurityStateModel::DANGEROUS, 0, | 474 {security_state::DANGEROUS, 0, security_state::CONTENT_STATUS_DISPLAYED, |
482 SecurityStateModel::CONTENT_STATUS_DISPLAYED, | 475 security_state::CONTENT_STATUS_RAN, |
483 SecurityStateModel::CONTENT_STATUS_RAN, | |
484 WebsiteSettings::SITE_CONNECTION_STATUS_INSECURE_ACTIVE_SUBRESOURCE, | 476 WebsiteSettings::SITE_CONNECTION_STATUS_INSECURE_ACTIVE_SUBRESOURCE, |
485 WebsiteSettings::SITE_IDENTITY_STATUS_CERT, IDR_PAGEINFO_BAD}, | 477 WebsiteSettings::SITE_IDENTITY_STATUS_CERT, IDR_PAGEINFO_BAD}, |
486 // Active mixed content and passive subresources with cert errors. | 478 // Active mixed content and passive subresources with cert errors. |
487 {SecurityStateModel::DANGEROUS, 0, SecurityStateModel::CONTENT_STATUS_RAN, | 479 {security_state::DANGEROUS, 0, security_state::CONTENT_STATUS_RAN, |
488 SecurityStateModel::CONTENT_STATUS_DISPLAYED, | 480 security_state::CONTENT_STATUS_DISPLAYED, |
489 WebsiteSettings::SITE_CONNECTION_STATUS_INSECURE_ACTIVE_SUBRESOURCE, | 481 WebsiteSettings::SITE_CONNECTION_STATUS_INSECURE_ACTIVE_SUBRESOURCE, |
490 WebsiteSettings::SITE_IDENTITY_STATUS_CERT, IDR_PAGEINFO_BAD}, | 482 WebsiteSettings::SITE_IDENTITY_STATUS_CERT, IDR_PAGEINFO_BAD}, |
491 // Passive mixed content, active subresources with cert errors, and a cert | 483 // Passive mixed content, active subresources with cert errors, and a cert |
492 // error on the main resource. | 484 // error on the main resource. |
493 {SecurityStateModel::DANGEROUS, net::CERT_STATUS_DATE_INVALID, | 485 {security_state::DANGEROUS, net::CERT_STATUS_DATE_INVALID, |
494 SecurityStateModel::CONTENT_STATUS_DISPLAYED, | 486 security_state::CONTENT_STATUS_DISPLAYED, |
495 SecurityStateModel::CONTENT_STATUS_RAN, | 487 security_state::CONTENT_STATUS_RAN, |
496 WebsiteSettings::SITE_CONNECTION_STATUS_INSECURE_PASSIVE_SUBRESOURCE, | 488 WebsiteSettings::SITE_CONNECTION_STATUS_INSECURE_PASSIVE_SUBRESOURCE, |
497 WebsiteSettings::SITE_IDENTITY_STATUS_ERROR, IDR_PAGEINFO_WARNING_MINOR}, | 489 WebsiteSettings::SITE_IDENTITY_STATUS_ERROR, IDR_PAGEINFO_WARNING_MINOR}, |
498 }; | 490 }; |
499 | 491 |
500 for (const auto& test : kTestCases) { | 492 for (const auto& test : kTestCases) { |
501 ResetMockUI(); | 493 ResetMockUI(); |
502 ClearWebsiteSettings(); | 494 ClearWebsiteSettings(); |
503 security_info_ = SecurityStateModel::SecurityInfo(); | 495 security_info_ = security_state::SecurityInfo(); |
504 security_info_.security_level = test.security_level; | 496 security_info_.security_level = test.security_level; |
505 security_info_.scheme_is_cryptographic = true; | 497 security_info_.scheme_is_cryptographic = true; |
506 security_info_.certificate = cert(); | 498 security_info_.certificate = cert(); |
507 security_info_.cert_status = test.cert_status; | 499 security_info_.cert_status = test.cert_status; |
508 security_info_.security_bits = 81; // No error if > 80. | 500 security_info_.security_bits = 81; // No error if > 80. |
509 security_info_.mixed_content_status = test.mixed_content_status; | 501 security_info_.mixed_content_status = test.mixed_content_status; |
510 security_info_.content_with_cert_errors_status = | 502 security_info_.content_with_cert_errors_status = |
511 test.content_with_cert_errors_status; | 503 test.content_with_cert_errors_status; |
512 int status = 0; | 504 int status = 0; |
513 status = SetSSLVersion(status, net::SSL_CONNECTION_VERSION_TLS1); | 505 status = SetSSLVersion(status, net::SSL_CONNECTION_VERSION_TLS1); |
(...skipping 14 matching lines...) Expand all Loading... |
528 EXPECT_EQ(base::string16(), website_settings()->organization_name()); | 520 EXPECT_EQ(base::string16(), website_settings()->organization_name()); |
529 } | 521 } |
530 } | 522 } |
531 | 523 |
532 TEST_F(WebsiteSettingsTest, HTTPSEVCert) { | 524 TEST_F(WebsiteSettingsTest, HTTPSEVCert) { |
533 scoped_refptr<net::X509Certificate> ev_cert = | 525 scoped_refptr<net::X509Certificate> ev_cert = |
534 net::X509Certificate::CreateFromBytes( | 526 net::X509Certificate::CreateFromBytes( |
535 reinterpret_cast<const char*>(google_der), | 527 reinterpret_cast<const char*>(google_der), |
536 sizeof(google_der)); | 528 sizeof(google_der)); |
537 | 529 |
538 security_info_.security_level = SecurityStateModel::NONE; | 530 security_info_.security_level = security_state::NONE; |
539 security_info_.scheme_is_cryptographic = true; | 531 security_info_.scheme_is_cryptographic = true; |
540 security_info_.certificate = ev_cert; | 532 security_info_.certificate = ev_cert; |
541 security_info_.cert_status = net::CERT_STATUS_IS_EV; | 533 security_info_.cert_status = net::CERT_STATUS_IS_EV; |
542 security_info_.security_bits = 81; // No error if > 80. | 534 security_info_.security_bits = 81; // No error if > 80. |
543 security_info_.mixed_content_status = | 535 security_info_.mixed_content_status = |
544 SecurityStateModel::CONTENT_STATUS_DISPLAYED; | 536 security_state::CONTENT_STATUS_DISPLAYED; |
545 int status = 0; | 537 int status = 0; |
546 status = SetSSLVersion(status, net::SSL_CONNECTION_VERSION_TLS1); | 538 status = SetSSLVersion(status, net::SSL_CONNECTION_VERSION_TLS1); |
547 status = SetSSLCipherSuite(status, CR_TLS_RSA_WITH_AES_256_CBC_SHA256); | 539 status = SetSSLCipherSuite(status, CR_TLS_RSA_WITH_AES_256_CBC_SHA256); |
548 security_info_.connection_status = status; | 540 security_info_.connection_status = status; |
549 | 541 |
550 SetDefaultUIExpectations(mock_ui()); | 542 SetDefaultUIExpectations(mock_ui()); |
551 EXPECT_CALL(*mock_ui(), SetSelectedTab(WebsiteSettingsUI::TAB_ID_CONNECTION)); | 543 EXPECT_CALL(*mock_ui(), SetSelectedTab(WebsiteSettingsUI::TAB_ID_CONNECTION)); |
552 | 544 |
553 EXPECT_EQ( | 545 EXPECT_EQ( |
554 WebsiteSettings::SITE_CONNECTION_STATUS_INSECURE_PASSIVE_SUBRESOURCE, | 546 WebsiteSettings::SITE_CONNECTION_STATUS_INSECURE_PASSIVE_SUBRESOURCE, |
555 website_settings()->site_connection_status()); | 547 website_settings()->site_connection_status()); |
556 EXPECT_EQ(WebsiteSettings::SITE_IDENTITY_STATUS_EV_CERT, | 548 EXPECT_EQ(WebsiteSettings::SITE_IDENTITY_STATUS_EV_CERT, |
557 website_settings()->site_identity_status()); | 549 website_settings()->site_identity_status()); |
558 EXPECT_EQ(base::UTF8ToUTF16("Google Inc"), | 550 EXPECT_EQ(base::UTF8ToUTF16("Google Inc"), |
559 website_settings()->organization_name()); | 551 website_settings()->organization_name()); |
560 } | 552 } |
561 | 553 |
562 TEST_F(WebsiteSettingsTest, HTTPSRevocationError) { | 554 TEST_F(WebsiteSettingsTest, HTTPSRevocationError) { |
563 security_info_.security_level = SecurityStateModel::SECURE; | 555 security_info_.security_level = security_state::SECURE; |
564 security_info_.scheme_is_cryptographic = true; | 556 security_info_.scheme_is_cryptographic = true; |
565 security_info_.certificate = cert(); | 557 security_info_.certificate = cert(); |
566 security_info_.cert_status = net::CERT_STATUS_UNABLE_TO_CHECK_REVOCATION; | 558 security_info_.cert_status = net::CERT_STATUS_UNABLE_TO_CHECK_REVOCATION; |
567 security_info_.security_bits = 81; // No error if > 80. | 559 security_info_.security_bits = 81; // No error if > 80. |
568 int status = 0; | 560 int status = 0; |
569 status = SetSSLVersion(status, net::SSL_CONNECTION_VERSION_TLS1); | 561 status = SetSSLVersion(status, net::SSL_CONNECTION_VERSION_TLS1); |
570 status = SetSSLCipherSuite(status, CR_TLS_RSA_WITH_AES_256_CBC_SHA256); | 562 status = SetSSLCipherSuite(status, CR_TLS_RSA_WITH_AES_256_CBC_SHA256); |
571 security_info_.connection_status = status; | 563 security_info_.connection_status = status; |
572 | 564 |
573 SetDefaultUIExpectations(mock_ui()); | 565 SetDefaultUIExpectations(mock_ui()); |
574 EXPECT_CALL(*mock_ui(), SetSelectedTab(WebsiteSettingsUI::TAB_ID_CONNECTION)); | 566 EXPECT_CALL(*mock_ui(), SetSelectedTab(WebsiteSettingsUI::TAB_ID_CONNECTION)); |
575 | 567 |
576 EXPECT_EQ(WebsiteSettings::SITE_CONNECTION_STATUS_ENCRYPTED, | 568 EXPECT_EQ(WebsiteSettings::SITE_CONNECTION_STATUS_ENCRYPTED, |
577 website_settings()->site_connection_status()); | 569 website_settings()->site_connection_status()); |
578 EXPECT_EQ(WebsiteSettings::SITE_IDENTITY_STATUS_CERT_REVOCATION_UNKNOWN, | 570 EXPECT_EQ(WebsiteSettings::SITE_IDENTITY_STATUS_CERT_REVOCATION_UNKNOWN, |
579 website_settings()->site_identity_status()); | 571 website_settings()->site_identity_status()); |
580 EXPECT_EQ(base::string16(), website_settings()->organization_name()); | 572 EXPECT_EQ(base::string16(), website_settings()->organization_name()); |
581 } | 573 } |
582 | 574 |
583 TEST_F(WebsiteSettingsTest, HTTPSConnectionError) { | 575 TEST_F(WebsiteSettingsTest, HTTPSConnectionError) { |
584 security_info_.security_level = SecurityStateModel::SECURE; | 576 security_info_.security_level = security_state::SECURE; |
585 security_info_.scheme_is_cryptographic = true; | 577 security_info_.scheme_is_cryptographic = true; |
586 security_info_.certificate = cert(); | 578 security_info_.certificate = cert(); |
587 security_info_.cert_status = 0; | 579 security_info_.cert_status = 0; |
588 security_info_.security_bits = -1; | 580 security_info_.security_bits = -1; |
589 int status = 0; | 581 int status = 0; |
590 status = SetSSLVersion(status, net::SSL_CONNECTION_VERSION_TLS1); | 582 status = SetSSLVersion(status, net::SSL_CONNECTION_VERSION_TLS1); |
591 status = SetSSLCipherSuite(status, CR_TLS_RSA_WITH_AES_256_CBC_SHA256); | 583 status = SetSSLCipherSuite(status, CR_TLS_RSA_WITH_AES_256_CBC_SHA256); |
592 security_info_.connection_status = status; | 584 security_info_.connection_status = status; |
593 | 585 |
594 SetDefaultUIExpectations(mock_ui()); | 586 SetDefaultUIExpectations(mock_ui()); |
595 EXPECT_CALL(*mock_ui(), SetSelectedTab(WebsiteSettingsUI::TAB_ID_CONNECTION)); | 587 EXPECT_CALL(*mock_ui(), SetSelectedTab(WebsiteSettingsUI::TAB_ID_CONNECTION)); |
596 | 588 |
597 EXPECT_EQ(WebsiteSettings::SITE_CONNECTION_STATUS_ENCRYPTED_ERROR, | 589 EXPECT_EQ(WebsiteSettings::SITE_CONNECTION_STATUS_ENCRYPTED_ERROR, |
598 website_settings()->site_connection_status()); | 590 website_settings()->site_connection_status()); |
599 EXPECT_EQ(WebsiteSettings::SITE_IDENTITY_STATUS_CERT, | 591 EXPECT_EQ(WebsiteSettings::SITE_IDENTITY_STATUS_CERT, |
600 website_settings()->site_identity_status()); | 592 website_settings()->site_identity_status()); |
601 EXPECT_EQ(base::string16(), website_settings()->organization_name()); | 593 EXPECT_EQ(base::string16(), website_settings()->organization_name()); |
602 } | 594 } |
603 | 595 |
604 TEST_F(WebsiteSettingsTest, HTTPSPolicyCertConnection) { | 596 TEST_F(WebsiteSettingsTest, HTTPSPolicyCertConnection) { |
605 security_info_.security_level = | 597 security_info_.security_level = |
606 SecurityStateModel::SECURE_WITH_POLICY_INSTALLED_CERT; | 598 security_state::SECURE_WITH_POLICY_INSTALLED_CERT; |
607 security_info_.scheme_is_cryptographic = true; | 599 security_info_.scheme_is_cryptographic = true; |
608 security_info_.certificate = cert(); | 600 security_info_.certificate = cert(); |
609 security_info_.cert_status = 0; | 601 security_info_.cert_status = 0; |
610 security_info_.security_bits = 81; // No error if > 80. | 602 security_info_.security_bits = 81; // No error if > 80. |
611 int status = 0; | 603 int status = 0; |
612 status = SetSSLVersion(status, net::SSL_CONNECTION_VERSION_TLS1); | 604 status = SetSSLVersion(status, net::SSL_CONNECTION_VERSION_TLS1); |
613 status = SetSSLCipherSuite(status, CR_TLS_RSA_WITH_AES_256_CBC_SHA256); | 605 status = SetSSLCipherSuite(status, CR_TLS_RSA_WITH_AES_256_CBC_SHA256); |
614 security_info_.connection_status = status; | 606 security_info_.connection_status = status; |
615 | 607 |
616 SetDefaultUIExpectations(mock_ui()); | 608 SetDefaultUIExpectations(mock_ui()); |
617 EXPECT_CALL(*mock_ui(), SetSelectedTab(WebsiteSettingsUI::TAB_ID_CONNECTION)); | 609 EXPECT_CALL(*mock_ui(), SetSelectedTab(WebsiteSettingsUI::TAB_ID_CONNECTION)); |
618 | 610 |
619 EXPECT_EQ(WebsiteSettings::SITE_CONNECTION_STATUS_ENCRYPTED, | 611 EXPECT_EQ(WebsiteSettings::SITE_CONNECTION_STATUS_ENCRYPTED, |
620 website_settings()->site_connection_status()); | 612 website_settings()->site_connection_status()); |
621 EXPECT_EQ(WebsiteSettings::SITE_IDENTITY_STATUS_ADMIN_PROVIDED_CERT, | 613 EXPECT_EQ(WebsiteSettings::SITE_IDENTITY_STATUS_ADMIN_PROVIDED_CERT, |
622 website_settings()->site_identity_status()); | 614 website_settings()->site_identity_status()); |
623 EXPECT_EQ(base::string16(), website_settings()->organization_name()); | 615 EXPECT_EQ(base::string16(), website_settings()->organization_name()); |
624 } | 616 } |
625 | 617 |
626 TEST_F(WebsiteSettingsTest, HTTPSSHA1Minor) { | 618 TEST_F(WebsiteSettingsTest, HTTPSSHA1Minor) { |
627 security_info_.security_level = SecurityStateModel::NONE; | 619 security_info_.security_level = security_state::NONE; |
628 security_info_.scheme_is_cryptographic = true; | 620 security_info_.scheme_is_cryptographic = true; |
629 security_info_.certificate = cert(); | 621 security_info_.certificate = cert(); |
630 security_info_.cert_status = 0; | 622 security_info_.cert_status = 0; |
631 security_info_.security_bits = 81; // No error if > 80. | 623 security_info_.security_bits = 81; // No error if > 80. |
632 int status = 0; | 624 int status = 0; |
633 status = SetSSLVersion(status, net::SSL_CONNECTION_VERSION_TLS1); | 625 status = SetSSLVersion(status, net::SSL_CONNECTION_VERSION_TLS1); |
634 status = SetSSLCipherSuite(status, CR_TLS_RSA_WITH_AES_256_CBC_SHA256); | 626 status = SetSSLCipherSuite(status, CR_TLS_RSA_WITH_AES_256_CBC_SHA256); |
635 security_info_.connection_status = status; | 627 security_info_.connection_status = status; |
636 security_info_.sha1_deprecation_status = | 628 security_info_.sha1_deprecation_status = |
637 SecurityStateModel::DEPRECATED_SHA1_MINOR; | 629 security_state::DEPRECATED_SHA1_MINOR; |
638 | 630 |
639 SetDefaultUIExpectations(mock_ui()); | 631 SetDefaultUIExpectations(mock_ui()); |
640 EXPECT_CALL(*mock_ui(), SetSelectedTab(WebsiteSettingsUI::TAB_ID_CONNECTION)); | 632 EXPECT_CALL(*mock_ui(), SetSelectedTab(WebsiteSettingsUI::TAB_ID_CONNECTION)); |
641 | 633 |
642 EXPECT_EQ(WebsiteSettings::SITE_CONNECTION_STATUS_ENCRYPTED, | 634 EXPECT_EQ(WebsiteSettings::SITE_CONNECTION_STATUS_ENCRYPTED, |
643 website_settings()->site_connection_status()); | 635 website_settings()->site_connection_status()); |
644 EXPECT_EQ(WebsiteSettings:: | 636 EXPECT_EQ(WebsiteSettings:: |
645 SITE_IDENTITY_STATUS_DEPRECATED_SIGNATURE_ALGORITHM_MINOR, | 637 SITE_IDENTITY_STATUS_DEPRECATED_SIGNATURE_ALGORITHM_MINOR, |
646 website_settings()->site_identity_status()); | 638 website_settings()->site_identity_status()); |
647 EXPECT_EQ(base::string16(), website_settings()->organization_name()); | 639 EXPECT_EQ(base::string16(), website_settings()->organization_name()); |
648 EXPECT_EQ(IDR_PAGEINFO_WARNING_MINOR, | 640 EXPECT_EQ(IDR_PAGEINFO_WARNING_MINOR, |
649 WebsiteSettingsUI::GetIdentityIconID( | 641 WebsiteSettingsUI::GetIdentityIconID( |
650 website_settings()->site_identity_status())); | 642 website_settings()->site_identity_status())); |
651 } | 643 } |
652 | 644 |
653 TEST_F(WebsiteSettingsTest, HTTPSSHA1Major) { | 645 TEST_F(WebsiteSettingsTest, HTTPSSHA1Major) { |
654 security_info_.security_level = SecurityStateModel::NONE; | 646 security_info_.security_level = security_state::NONE; |
655 security_info_.scheme_is_cryptographic = true; | 647 security_info_.scheme_is_cryptographic = true; |
656 security_info_.certificate = cert(); | 648 security_info_.certificate = cert(); |
657 security_info_.cert_status = 0; | 649 security_info_.cert_status = 0; |
658 security_info_.security_bits = 81; // No error if > 80. | 650 security_info_.security_bits = 81; // No error if > 80. |
659 int status = 0; | 651 int status = 0; |
660 status = SetSSLVersion(status, net::SSL_CONNECTION_VERSION_TLS1); | 652 status = SetSSLVersion(status, net::SSL_CONNECTION_VERSION_TLS1); |
661 status = SetSSLCipherSuite(status, CR_TLS_RSA_WITH_AES_256_CBC_SHA256); | 653 status = SetSSLCipherSuite(status, CR_TLS_RSA_WITH_AES_256_CBC_SHA256); |
662 security_info_.connection_status = status; | 654 security_info_.connection_status = status; |
663 security_info_.sha1_deprecation_status = | 655 security_info_.sha1_deprecation_status = |
664 SecurityStateModel::DEPRECATED_SHA1_MAJOR; | 656 security_state::DEPRECATED_SHA1_MAJOR; |
665 | 657 |
666 SetDefaultUIExpectations(mock_ui()); | 658 SetDefaultUIExpectations(mock_ui()); |
667 EXPECT_CALL(*mock_ui(), SetSelectedTab(WebsiteSettingsUI::TAB_ID_CONNECTION)); | 659 EXPECT_CALL(*mock_ui(), SetSelectedTab(WebsiteSettingsUI::TAB_ID_CONNECTION)); |
668 | 660 |
669 EXPECT_EQ(WebsiteSettings::SITE_CONNECTION_STATUS_ENCRYPTED, | 661 EXPECT_EQ(WebsiteSettings::SITE_CONNECTION_STATUS_ENCRYPTED, |
670 website_settings()->site_connection_status()); | 662 website_settings()->site_connection_status()); |
671 EXPECT_EQ(WebsiteSettings:: | 663 EXPECT_EQ(WebsiteSettings:: |
672 SITE_IDENTITY_STATUS_DEPRECATED_SIGNATURE_ALGORITHM_MAJOR, | 664 SITE_IDENTITY_STATUS_DEPRECATED_SIGNATURE_ALGORITHM_MAJOR, |
673 website_settings()->site_identity_status()); | 665 website_settings()->site_identity_status()); |
674 EXPECT_EQ(base::string16(), website_settings()->organization_name()); | 666 EXPECT_EQ(base::string16(), website_settings()->organization_name()); |
675 EXPECT_EQ(IDR_PAGEINFO_BAD, | 667 EXPECT_EQ(IDR_PAGEINFO_BAD, |
676 WebsiteSettingsUI::GetIdentityIconID( | 668 WebsiteSettingsUI::GetIdentityIconID( |
677 website_settings()->site_identity_status())); | 669 website_settings()->site_identity_status())); |
678 } | 670 } |
679 | 671 |
680 // All SCTs are from unknown logs. | 672 // All SCTs are from unknown logs. |
681 TEST_F(WebsiteSettingsTest, UnknownSCTs) { | 673 TEST_F(WebsiteSettingsTest, UnknownSCTs) { |
682 security_info_.security_level = SecurityStateModel::SECURE; | 674 security_info_.security_level = security_state::SECURE; |
683 security_info_.scheme_is_cryptographic = true; | 675 security_info_.scheme_is_cryptographic = true; |
684 security_info_.certificate = cert(); | 676 security_info_.certificate = cert(); |
685 security_info_.cert_status = 0; | 677 security_info_.cert_status = 0; |
686 security_info_.security_bits = 81; // No error if > 80. | 678 security_info_.security_bits = 81; // No error if > 80. |
687 int status = 0; | 679 int status = 0; |
688 status = SetSSLVersion(status, net::SSL_CONNECTION_VERSION_TLS1); | 680 status = SetSSLVersion(status, net::SSL_CONNECTION_VERSION_TLS1); |
689 status = SetSSLCipherSuite(status, CR_TLS_RSA_WITH_AES_256_CBC_SHA256); | 681 status = SetSSLCipherSuite(status, CR_TLS_RSA_WITH_AES_256_CBC_SHA256); |
690 security_info_.connection_status = status; | 682 security_info_.connection_status = status; |
691 | 683 |
692 security_info_.sct_verify_statuses.push_back(net::ct::SCT_STATUS_LOG_UNKNOWN); | 684 security_info_.sct_verify_statuses.push_back(net::ct::SCT_STATUS_LOG_UNKNOWN); |
693 security_info_.sct_verify_statuses.push_back(net::ct::SCT_STATUS_LOG_UNKNOWN); | 685 security_info_.sct_verify_statuses.push_back(net::ct::SCT_STATUS_LOG_UNKNOWN); |
694 | 686 |
695 SetDefaultUIExpectations(mock_ui()); | 687 SetDefaultUIExpectations(mock_ui()); |
696 EXPECT_CALL(*mock_ui(), SetSelectedTab(WebsiteSettingsUI::TAB_ID_CONNECTION)); | 688 EXPECT_CALL(*mock_ui(), SetSelectedTab(WebsiteSettingsUI::TAB_ID_CONNECTION)); |
697 | 689 |
698 EXPECT_EQ(WebsiteSettings::SITE_CONNECTION_STATUS_ENCRYPTED, | 690 EXPECT_EQ(WebsiteSettings::SITE_CONNECTION_STATUS_ENCRYPTED, |
699 website_settings()->site_connection_status()); | 691 website_settings()->site_connection_status()); |
700 EXPECT_EQ(WebsiteSettings::SITE_IDENTITY_STATUS_CT_ERROR, | 692 EXPECT_EQ(WebsiteSettings::SITE_IDENTITY_STATUS_CT_ERROR, |
701 website_settings()->site_identity_status()); | 693 website_settings()->site_identity_status()); |
702 EXPECT_EQ(IDR_PAGEINFO_BAD, WebsiteSettingsUI::GetIdentityIconID( | 694 EXPECT_EQ(IDR_PAGEINFO_BAD, WebsiteSettingsUI::GetIdentityIconID( |
703 website_settings()->site_identity_status())); | 695 website_settings()->site_identity_status())); |
704 } | 696 } |
705 | 697 |
706 // All SCTs are invalid. | 698 // All SCTs are invalid. |
707 TEST_F(WebsiteSettingsTest, InvalidSCTs) { | 699 TEST_F(WebsiteSettingsTest, InvalidSCTs) { |
708 security_info_.security_level = SecurityStateModel::SECURE; | 700 security_info_.security_level = security_state::SECURE; |
709 security_info_.scheme_is_cryptographic = true; | 701 security_info_.scheme_is_cryptographic = true; |
710 security_info_.certificate = cert(); | 702 security_info_.certificate = cert(); |
711 security_info_.cert_status = 0; | 703 security_info_.cert_status = 0; |
712 security_info_.security_bits = 81; // No error if > 80. | 704 security_info_.security_bits = 81; // No error if > 80. |
713 int status = 0; | 705 int status = 0; |
714 status = SetSSLVersion(status, net::SSL_CONNECTION_VERSION_TLS1); | 706 status = SetSSLVersion(status, net::SSL_CONNECTION_VERSION_TLS1); |
715 status = SetSSLCipherSuite(status, CR_TLS_RSA_WITH_AES_256_CBC_SHA256); | 707 status = SetSSLCipherSuite(status, CR_TLS_RSA_WITH_AES_256_CBC_SHA256); |
716 security_info_.connection_status = status; | 708 security_info_.connection_status = status; |
717 | 709 |
718 security_info_.sct_verify_statuses.push_back( | 710 security_info_.sct_verify_statuses.push_back( |
719 net::ct::SCT_STATUS_INVALID_TIMESTAMP); | 711 net::ct::SCT_STATUS_INVALID_TIMESTAMP); |
720 security_info_.sct_verify_statuses.push_back( | 712 security_info_.sct_verify_statuses.push_back( |
721 net::ct::SCT_STATUS_INVALID_SIGNATURE); | 713 net::ct::SCT_STATUS_INVALID_SIGNATURE); |
722 | 714 |
723 SetDefaultUIExpectations(mock_ui()); | 715 SetDefaultUIExpectations(mock_ui()); |
724 EXPECT_CALL(*mock_ui(), SetSelectedTab(WebsiteSettingsUI::TAB_ID_CONNECTION)); | 716 EXPECT_CALL(*mock_ui(), SetSelectedTab(WebsiteSettingsUI::TAB_ID_CONNECTION)); |
725 | 717 |
726 EXPECT_EQ(WebsiteSettings::SITE_CONNECTION_STATUS_ENCRYPTED, | 718 EXPECT_EQ(WebsiteSettings::SITE_CONNECTION_STATUS_ENCRYPTED, |
727 website_settings()->site_connection_status()); | 719 website_settings()->site_connection_status()); |
728 EXPECT_EQ(WebsiteSettings::SITE_IDENTITY_STATUS_CT_ERROR, | 720 EXPECT_EQ(WebsiteSettings::SITE_IDENTITY_STATUS_CT_ERROR, |
729 website_settings()->site_identity_status()); | 721 website_settings()->site_identity_status()); |
730 EXPECT_EQ(IDR_PAGEINFO_BAD, WebsiteSettingsUI::GetIdentityIconID( | 722 EXPECT_EQ(IDR_PAGEINFO_BAD, WebsiteSettingsUI::GetIdentityIconID( |
731 website_settings()->site_identity_status())); | 723 website_settings()->site_identity_status())); |
732 } | 724 } |
733 | 725 |
734 // All SCTs are valid. | 726 // All SCTs are valid. |
735 TEST_F(WebsiteSettingsTest, ValidSCTs) { | 727 TEST_F(WebsiteSettingsTest, ValidSCTs) { |
736 security_info_.security_level = SecurityStateModel::SECURE; | 728 security_info_.security_level = security_state::SECURE; |
737 security_info_.scheme_is_cryptographic = true; | 729 security_info_.scheme_is_cryptographic = true; |
738 security_info_.certificate = cert(); | 730 security_info_.certificate = cert(); |
739 security_info_.cert_status = 0; | 731 security_info_.cert_status = 0; |
740 security_info_.security_bits = 81; // No error if > 80. | 732 security_info_.security_bits = 81; // No error if > 80. |
741 int status = 0; | 733 int status = 0; |
742 status = SetSSLVersion(status, net::SSL_CONNECTION_VERSION_TLS1); | 734 status = SetSSLVersion(status, net::SSL_CONNECTION_VERSION_TLS1); |
743 status = SetSSLCipherSuite(status, CR_TLS_RSA_WITH_AES_256_CBC_SHA256); | 735 status = SetSSLCipherSuite(status, CR_TLS_RSA_WITH_AES_256_CBC_SHA256); |
744 security_info_.connection_status = status; | 736 security_info_.connection_status = status; |
745 | 737 |
746 security_info_.sct_verify_statuses.push_back(net::ct::SCT_STATUS_OK); | 738 security_info_.sct_verify_statuses.push_back(net::ct::SCT_STATUS_OK); |
(...skipping 10 matching lines...) Expand all Loading... |
757 EXPECT_EQ(IDR_PAGEINFO_GOOD, WebsiteSettingsUI::GetIdentityIconID( | 749 EXPECT_EQ(IDR_PAGEINFO_GOOD, WebsiteSettingsUI::GetIdentityIconID( |
758 website_settings()->site_identity_status())); | 750 website_settings()->site_identity_status())); |
759 } | 751 } |
760 | 752 |
761 // All SCTs are valid for an EV cert. | 753 // All SCTs are valid for an EV cert. |
762 TEST_F(WebsiteSettingsTest, ValidSCTsEV) { | 754 TEST_F(WebsiteSettingsTest, ValidSCTsEV) { |
763 scoped_refptr<net::X509Certificate> ev_cert = | 755 scoped_refptr<net::X509Certificate> ev_cert = |
764 net::X509Certificate::CreateFromBytes( | 756 net::X509Certificate::CreateFromBytes( |
765 reinterpret_cast<const char*>(google_der), sizeof(google_der)); | 757 reinterpret_cast<const char*>(google_der), sizeof(google_der)); |
766 | 758 |
767 security_info_.security_level = SecurityStateModel::SECURE; | 759 security_info_.security_level = security_state::SECURE; |
768 security_info_.scheme_is_cryptographic = true; | 760 security_info_.scheme_is_cryptographic = true; |
769 security_info_.certificate = ev_cert; | 761 security_info_.certificate = ev_cert; |
770 security_info_.cert_status = net::CERT_STATUS_IS_EV; | 762 security_info_.cert_status = net::CERT_STATUS_IS_EV; |
771 security_info_.security_bits = 81; // No error if > 80. | 763 security_info_.security_bits = 81; // No error if > 80. |
772 int status = 0; | 764 int status = 0; |
773 status = SetSSLVersion(status, net::SSL_CONNECTION_VERSION_TLS1); | 765 status = SetSSLVersion(status, net::SSL_CONNECTION_VERSION_TLS1); |
774 status = SetSSLCipherSuite(status, CR_TLS_RSA_WITH_AES_256_CBC_SHA256); | 766 status = SetSSLCipherSuite(status, CR_TLS_RSA_WITH_AES_256_CBC_SHA256); |
775 security_info_.connection_status = status; | 767 security_info_.connection_status = status; |
776 | 768 |
777 security_info_.sct_verify_statuses.push_back(net::ct::SCT_STATUS_OK); | 769 security_info_.sct_verify_statuses.push_back(net::ct::SCT_STATUS_OK); |
778 security_info_.sct_verify_statuses.push_back(net::ct::SCT_STATUS_OK); | 770 security_info_.sct_verify_statuses.push_back(net::ct::SCT_STATUS_OK); |
779 | 771 |
780 SetDefaultUIExpectations(mock_ui()); | 772 SetDefaultUIExpectations(mock_ui()); |
781 EXPECT_CALL(*mock_ui(), | 773 EXPECT_CALL(*mock_ui(), |
782 SetSelectedTab(WebsiteSettingsUI::TAB_ID_PERMISSIONS)); | 774 SetSelectedTab(WebsiteSettingsUI::TAB_ID_PERMISSIONS)); |
783 | 775 |
784 EXPECT_EQ(WebsiteSettings::SITE_CONNECTION_STATUS_ENCRYPTED, | 776 EXPECT_EQ(WebsiteSettings::SITE_CONNECTION_STATUS_ENCRYPTED, |
785 website_settings()->site_connection_status()); | 777 website_settings()->site_connection_status()); |
786 EXPECT_EQ(WebsiteSettings::SITE_IDENTITY_STATUS_EV_CERT, | 778 EXPECT_EQ(WebsiteSettings::SITE_IDENTITY_STATUS_EV_CERT, |
787 website_settings()->site_identity_status()); | 779 website_settings()->site_identity_status()); |
788 EXPECT_EQ(IDR_PAGEINFO_GOOD, WebsiteSettingsUI::GetIdentityIconID( | 780 EXPECT_EQ(IDR_PAGEINFO_GOOD, WebsiteSettingsUI::GetIdentityIconID( |
789 website_settings()->site_identity_status())); | 781 website_settings()->site_identity_status())); |
790 } | 782 } |
791 | 783 |
792 // A mix of unknown and invalid SCTs. | 784 // A mix of unknown and invalid SCTs. |
793 TEST_F(WebsiteSettingsTest, UnknownAndInvalidSCTs) { | 785 TEST_F(WebsiteSettingsTest, UnknownAndInvalidSCTs) { |
794 security_info_.security_level = SecurityStateModel::SECURE; | 786 security_info_.security_level = security_state::SECURE; |
795 security_info_.scheme_is_cryptographic = true; | 787 security_info_.scheme_is_cryptographic = true; |
796 security_info_.certificate = cert(); | 788 security_info_.certificate = cert(); |
797 security_info_.cert_status = 0; | 789 security_info_.cert_status = 0; |
798 security_info_.security_bits = 81; // No error if > 80. | 790 security_info_.security_bits = 81; // No error if > 80. |
799 int status = 0; | 791 int status = 0; |
800 status = SetSSLVersion(status, net::SSL_CONNECTION_VERSION_TLS1); | 792 status = SetSSLVersion(status, net::SSL_CONNECTION_VERSION_TLS1); |
801 status = SetSSLCipherSuite(status, CR_TLS_RSA_WITH_AES_256_CBC_SHA256); | 793 status = SetSSLCipherSuite(status, CR_TLS_RSA_WITH_AES_256_CBC_SHA256); |
802 security_info_.connection_status = status; | 794 security_info_.connection_status = status; |
803 | 795 |
804 security_info_.sct_verify_statuses.push_back(net::ct::SCT_STATUS_LOG_UNKNOWN); | 796 security_info_.sct_verify_statuses.push_back(net::ct::SCT_STATUS_LOG_UNKNOWN); |
805 security_info_.sct_verify_statuses.push_back( | 797 security_info_.sct_verify_statuses.push_back( |
806 net::ct::SCT_STATUS_INVALID_SIGNATURE); | 798 net::ct::SCT_STATUS_INVALID_SIGNATURE); |
807 | 799 |
808 SetDefaultUIExpectations(mock_ui()); | 800 SetDefaultUIExpectations(mock_ui()); |
809 EXPECT_CALL(*mock_ui(), SetSelectedTab(WebsiteSettingsUI::TAB_ID_CONNECTION)); | 801 EXPECT_CALL(*mock_ui(), SetSelectedTab(WebsiteSettingsUI::TAB_ID_CONNECTION)); |
810 | 802 |
811 EXPECT_EQ(WebsiteSettings::SITE_CONNECTION_STATUS_ENCRYPTED, | 803 EXPECT_EQ(WebsiteSettings::SITE_CONNECTION_STATUS_ENCRYPTED, |
812 website_settings()->site_connection_status()); | 804 website_settings()->site_connection_status()); |
813 EXPECT_EQ(WebsiteSettings::SITE_IDENTITY_STATUS_CT_ERROR, | 805 EXPECT_EQ(WebsiteSettings::SITE_IDENTITY_STATUS_CT_ERROR, |
814 website_settings()->site_identity_status()); | 806 website_settings()->site_identity_status()); |
815 EXPECT_EQ(IDR_PAGEINFO_BAD, WebsiteSettingsUI::GetIdentityIconID( | 807 EXPECT_EQ(IDR_PAGEINFO_BAD, WebsiteSettingsUI::GetIdentityIconID( |
816 website_settings()->site_identity_status())); | 808 website_settings()->site_identity_status())); |
817 } | 809 } |
818 | 810 |
819 // At least one SCT is valid and one is from an unknown log. | 811 // At least one SCT is valid and one is from an unknown log. |
820 TEST_F(WebsiteSettingsTest, ValidAndUnknownSCTs) { | 812 TEST_F(WebsiteSettingsTest, ValidAndUnknownSCTs) { |
821 security_info_.security_level = SecurityStateModel::SECURE; | 813 security_info_.security_level = security_state::SECURE; |
822 security_info_.scheme_is_cryptographic = true; | 814 security_info_.scheme_is_cryptographic = true; |
823 security_info_.certificate = cert(); | 815 security_info_.certificate = cert(); |
824 security_info_.cert_status = 0; | 816 security_info_.cert_status = 0; |
825 security_info_.security_bits = 81; // No error if > 80. | 817 security_info_.security_bits = 81; // No error if > 80. |
826 int status = 0; | 818 int status = 0; |
827 status = SetSSLVersion(status, net::SSL_CONNECTION_VERSION_TLS1); | 819 status = SetSSLVersion(status, net::SSL_CONNECTION_VERSION_TLS1); |
828 status = SetSSLCipherSuite(status, CR_TLS_RSA_WITH_AES_256_CBC_SHA256); | 820 status = SetSSLCipherSuite(status, CR_TLS_RSA_WITH_AES_256_CBC_SHA256); |
829 security_info_.connection_status = status; | 821 security_info_.connection_status = status; |
830 | 822 |
831 security_info_.sct_verify_statuses.push_back(net::ct::SCT_STATUS_OK); | 823 security_info_.sct_verify_statuses.push_back(net::ct::SCT_STATUS_OK); |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
893 website_settings()->site_identity_status()); | 885 website_settings()->site_identity_status()); |
894 EXPECT_EQ(base::string16(), website_settings()->organization_name()); | 886 EXPECT_EQ(base::string16(), website_settings()->organization_name()); |
895 } | 887 } |
896 #endif | 888 #endif |
897 | 889 |
898 // Tests that metrics are recorded on a WebsiteSettings for pages with | 890 // Tests that metrics are recorded on a WebsiteSettings for pages with |
899 // various security levels. | 891 // various security levels. |
900 TEST_F(WebsiteSettingsTest, SecurityLevelMetrics) { | 892 TEST_F(WebsiteSettingsTest, SecurityLevelMetrics) { |
901 struct TestCase { | 893 struct TestCase { |
902 const std::string url; | 894 const std::string url; |
903 const SecurityStateModel::SecurityLevel security_level; | 895 const security_state::SecurityLevel security_level; |
904 const std::string histogram_name; | 896 const std::string histogram_name; |
905 }; | 897 }; |
906 const char kGenericHistogram[] = "WebsiteSettings.Action"; | 898 const char kGenericHistogram[] = "WebsiteSettings.Action"; |
907 | 899 |
908 const TestCase kTestCases[] = { | 900 const TestCase kTestCases[] = { |
909 {"https://example.test", SecurityStateModel::SECURE, | 901 {"https://example.test", security_state::SECURE, |
910 "Security.PageInfo.Action.HttpsUrl.Valid"}, | 902 "Security.PageInfo.Action.HttpsUrl.Valid"}, |
911 {"https://example.test", SecurityStateModel::EV_SECURE, | 903 {"https://example.test", security_state::EV_SECURE, |
912 "Security.PageInfo.Action.HttpsUrl.Valid"}, | 904 "Security.PageInfo.Action.HttpsUrl.Valid"}, |
913 {"https://example2.test", SecurityStateModel::NONE, | 905 {"https://example2.test", security_state::NONE, |
914 "Security.PageInfo.Action.HttpsUrl.Downgraded"}, | 906 "Security.PageInfo.Action.HttpsUrl.Downgraded"}, |
915 {"https://example.test", SecurityStateModel::DANGEROUS, | 907 {"https://example.test", security_state::DANGEROUS, |
916 "Security.PageInfo.Action.HttpsUrl.Dangerous"}, | 908 "Security.PageInfo.Action.HttpsUrl.Dangerous"}, |
917 {"http://example.test", SecurityStateModel::HTTP_SHOW_WARNING, | 909 {"http://example.test", security_state::HTTP_SHOW_WARNING, |
918 "Security.PageInfo.Action.HttpUrl.Warning"}, | 910 "Security.PageInfo.Action.HttpUrl.Warning"}, |
919 {"http://example.test", SecurityStateModel::DANGEROUS, | 911 {"http://example.test", security_state::DANGEROUS, |
920 "Security.PageInfo.Action.HttpUrl.Dangerous"}, | 912 "Security.PageInfo.Action.HttpUrl.Dangerous"}, |
921 {"http://example.test", SecurityStateModel::NONE, | 913 {"http://example.test", security_state::NONE, |
922 "Security.PageInfo.Action.HttpUrl.Neutral"}, | 914 "Security.PageInfo.Action.HttpUrl.Neutral"}, |
923 }; | 915 }; |
924 | 916 |
925 for (const auto& test : kTestCases) { | 917 for (const auto& test : kTestCases) { |
926 base::HistogramTester histograms; | 918 base::HistogramTester histograms; |
927 SetURL(test.url); | 919 SetURL(test.url); |
928 security_info_.security_level = test.security_level; | 920 security_info_.security_level = test.security_level; |
929 ResetMockUI(); | 921 ResetMockUI(); |
930 ClearWebsiteSettings(); | 922 ClearWebsiteSettings(); |
931 SetDefaultUIExpectations(mock_ui()); | 923 SetDefaultUIExpectations(mock_ui()); |
(...skipping 20 matching lines...) Expand all Loading... |
952 histograms.ExpectTotalCount(test.histogram_name, 2); | 944 histograms.ExpectTotalCount(test.histogram_name, 2); |
953 histograms.ExpectBucketCount( | 945 histograms.ExpectBucketCount( |
954 test.histogram_name, | 946 test.histogram_name, |
955 WebsiteSettings::WebsiteSettingsAction::WEBSITE_SETTINGS_OPENED, 1); | 947 WebsiteSettings::WebsiteSettingsAction::WEBSITE_SETTINGS_OPENED, 1); |
956 histograms.ExpectBucketCount(test.histogram_name, | 948 histograms.ExpectBucketCount(test.histogram_name, |
957 WebsiteSettings::WebsiteSettingsAction:: | 949 WebsiteSettings::WebsiteSettingsAction:: |
958 WEBSITE_SETTINGS_PERMISSIONS_TAB_SELECTED, | 950 WEBSITE_SETTINGS_PERMISSIONS_TAB_SELECTED, |
959 1); | 951 1); |
960 } | 952 } |
961 } | 953 } |
OLD | NEW |