| OLD | NEW |
| 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/security_state_model.h" | 5 #include "chrome/browser/ssl/security_state_model.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/prefs/pref_service.h" | 10 #include "base/prefs/pref_service.h" |
| 11 #include "base/strings/string_split.h" | 11 #include "base/strings/string_split.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/ssl_blocking_page.h" | 14 #include "chrome/browser/ssl/ssl_blocking_page.h" |
| 14 #include "chrome/browser/ui/browser.h" | 15 #include "chrome/browser/ui/browser.h" |
| 15 #include "chrome/browser/ui/tabs/tab_strip_model.h" | 16 #include "chrome/browser/ui/tabs/tab_strip_model.h" |
| 16 #include "chrome/common/chrome_paths.h" | 17 #include "chrome/common/chrome_paths.h" |
| 17 #include "chrome/common/chrome_switches.h" | 18 #include "chrome/common/chrome_switches.h" |
| 18 #include "chrome/common/pref_names.h" | 19 #include "chrome/common/pref_names.h" |
| 19 #include "chrome/test/base/in_process_browser_test.h" | 20 #include "chrome/test/base/in_process_browser_test.h" |
| 20 #include "chrome/test/base/ui_test_utils.h" | 21 #include "chrome/test/base/ui_test_utils.h" |
| 21 #include "content/public/browser/cert_store.h" | 22 #include "content/public/browser/cert_store.h" |
| 22 #include "content/public/browser/interstitial_page.h" | 23 #include "content/public/browser/interstitial_page.h" |
| (...skipping 20 matching lines...) Expand all Loading... |
| 43 FILE_PATH_LITERAL("chrome/test/data"); | 44 FILE_PATH_LITERAL("chrome/test/data"); |
| 44 | 45 |
| 45 void CheckSecurityInfoForSecure( | 46 void CheckSecurityInfoForSecure( |
| 46 content::WebContents* contents, | 47 content::WebContents* contents, |
| 47 SecurityStateModel::SecurityLevel expect_security_level, | 48 SecurityStateModel::SecurityLevel expect_security_level, |
| 48 SecurityStateModel::SHA1DeprecationStatus expect_sha1_status, | 49 SecurityStateModel::SHA1DeprecationStatus expect_sha1_status, |
| 49 SecurityStateModel::MixedContentStatus expect_mixed_content_status, | 50 SecurityStateModel::MixedContentStatus expect_mixed_content_status, |
| 50 bool expect_cert_error) { | 51 bool expect_cert_error) { |
| 51 ASSERT_TRUE(contents); | 52 ASSERT_TRUE(contents); |
| 52 | 53 |
| 53 SecurityStateModel* model = SecurityStateModel::FromWebContents(contents); | 54 ChromeSecurityStateModelClient* model_delegate = |
| 54 ASSERT_TRUE(model); | 55 ChromeSecurityStateModelClient::FromWebContents(contents); |
| 56 ASSERT_TRUE(model_delegate); |
| 55 const SecurityStateModel::SecurityInfo& security_info = | 57 const SecurityStateModel::SecurityInfo& security_info = |
| 56 model->GetSecurityInfo(); | 58 model_delegate->GetSecurityInfo(); |
| 57 EXPECT_EQ(expect_security_level, security_info.security_level); | 59 EXPECT_EQ(expect_security_level, security_info.security_level); |
| 58 EXPECT_EQ(expect_sha1_status, security_info.sha1_deprecation_status); | 60 EXPECT_EQ(expect_sha1_status, security_info.sha1_deprecation_status); |
| 59 EXPECT_EQ(expect_mixed_content_status, security_info.mixed_content_status); | 61 EXPECT_EQ(expect_mixed_content_status, security_info.mixed_content_status); |
| 60 EXPECT_TRUE(security_info.sct_verify_statuses.empty()); | 62 EXPECT_TRUE(security_info.sct_verify_statuses.empty()); |
| 61 EXPECT_TRUE(security_info.scheme_is_cryptographic); | 63 EXPECT_TRUE(security_info.scheme_is_cryptographic); |
| 62 EXPECT_EQ(expect_cert_error, | 64 EXPECT_EQ(expect_cert_error, |
| 63 net::IsCertStatusError(security_info.cert_status)); | 65 net::IsCertStatusError(security_info.cert_status)); |
| 64 EXPECT_GT(security_info.security_bits, 0); | 66 EXPECT_GT(security_info.security_bits, 0); |
| 65 | 67 |
| 66 content::CertStore* cert_store = content::CertStore::GetInstance(); | 68 content::CertStore* cert_store = content::CertStore::GetInstance(); |
| 67 scoped_refptr<net::X509Certificate> cert; | 69 scoped_refptr<net::X509Certificate> cert; |
| 68 EXPECT_TRUE(cert_store->RetrieveCert(security_info.cert_id, &cert)); | 70 EXPECT_TRUE(cert_store->RetrieveCert(security_info.cert_id, &cert)); |
| 69 } | 71 } |
| 70 | 72 |
| 71 void CheckSecurityInfoForNonSecure(content::WebContents* contents) { | 73 void CheckSecurityInfoForNonSecure(content::WebContents* contents) { |
| 72 ASSERT_TRUE(contents); | 74 ASSERT_TRUE(contents); |
| 73 | 75 |
| 74 SecurityStateModel* model = SecurityStateModel::FromWebContents(contents); | 76 ChromeSecurityStateModelClient* model_delegate = |
| 75 ASSERT_TRUE(model); | 77 ChromeSecurityStateModelClient::FromWebContents(contents); |
| 78 ASSERT_TRUE(model_delegate); |
| 76 const SecurityStateModel::SecurityInfo& security_info = | 79 const SecurityStateModel::SecurityInfo& security_info = |
| 77 model->GetSecurityInfo(); | 80 model_delegate->GetSecurityInfo(); |
| 78 EXPECT_EQ(SecurityStateModel::NONE, security_info.security_level); | 81 EXPECT_EQ(SecurityStateModel::NONE, security_info.security_level); |
| 79 EXPECT_EQ(SecurityStateModel::NO_DEPRECATED_SHA1, | 82 EXPECT_EQ(SecurityStateModel::NO_DEPRECATED_SHA1, |
| 80 security_info.sha1_deprecation_status); | 83 security_info.sha1_deprecation_status); |
| 81 EXPECT_EQ(SecurityStateModel::NO_MIXED_CONTENT, | 84 EXPECT_EQ(SecurityStateModel::NO_MIXED_CONTENT, |
| 82 security_info.mixed_content_status); | 85 security_info.mixed_content_status); |
| 83 EXPECT_TRUE(security_info.sct_verify_statuses.empty()); | 86 EXPECT_TRUE(security_info.sct_verify_statuses.empty()); |
| 84 EXPECT_FALSE(security_info.scheme_is_cryptographic); | 87 EXPECT_FALSE(security_info.scheme_is_cryptographic); |
| 85 EXPECT_FALSE(net::IsCertStatusError(security_info.cert_status)); | 88 EXPECT_FALSE(net::IsCertStatusError(security_info.cert_status)); |
| 86 EXPECT_EQ(-1, security_info.security_bits); | 89 EXPECT_EQ(-1, security_info.security_bits); |
| 87 EXPECT_EQ(0, security_info.cert_id); | 90 EXPECT_EQ(0, security_info.cert_id); |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 142 }; | 145 }; |
| 143 | 146 |
| 144 IN_PROC_BROWSER_TEST_F(SecurityStateModelTest, HttpPage) { | 147 IN_PROC_BROWSER_TEST_F(SecurityStateModelTest, HttpPage) { |
| 145 ASSERT_TRUE(embedded_test_server()->Start()); | 148 ASSERT_TRUE(embedded_test_server()->Start()); |
| 146 ui_test_utils::NavigateToURL( | 149 ui_test_utils::NavigateToURL( |
| 147 browser(), embedded_test_server()->GetURL("/ssl/google.html")); | 150 browser(), embedded_test_server()->GetURL("/ssl/google.html")); |
| 148 content::WebContents* contents = | 151 content::WebContents* contents = |
| 149 browser()->tab_strip_model()->GetActiveWebContents(); | 152 browser()->tab_strip_model()->GetActiveWebContents(); |
| 150 ASSERT_TRUE(contents); | 153 ASSERT_TRUE(contents); |
| 151 | 154 |
| 152 SecurityStateModel* model = SecurityStateModel::FromWebContents(contents); | 155 ChromeSecurityStateModelClient* model_delegate = |
| 153 ASSERT_TRUE(model); | 156 ChromeSecurityStateModelClient::FromWebContents(contents); |
| 157 ASSERT_TRUE(model_delegate); |
| 154 const SecurityStateModel::SecurityInfo& security_info = | 158 const SecurityStateModel::SecurityInfo& security_info = |
| 155 model->GetSecurityInfo(); | 159 model_delegate->GetSecurityInfo(); |
| 156 EXPECT_EQ(SecurityStateModel::NONE, security_info.security_level); | 160 EXPECT_EQ(SecurityStateModel::NONE, security_info.security_level); |
| 157 EXPECT_EQ(SecurityStateModel::NO_DEPRECATED_SHA1, | 161 EXPECT_EQ(SecurityStateModel::NO_DEPRECATED_SHA1, |
| 158 security_info.sha1_deprecation_status); | 162 security_info.sha1_deprecation_status); |
| 159 EXPECT_EQ(SecurityStateModel::NO_MIXED_CONTENT, | 163 EXPECT_EQ(SecurityStateModel::NO_MIXED_CONTENT, |
| 160 security_info.mixed_content_status); | 164 security_info.mixed_content_status); |
| 161 EXPECT_TRUE(security_info.sct_verify_statuses.empty()); | 165 EXPECT_TRUE(security_info.sct_verify_statuses.empty()); |
| 162 EXPECT_FALSE(security_info.scheme_is_cryptographic); | 166 EXPECT_FALSE(security_info.scheme_is_cryptographic); |
| 163 EXPECT_FALSE(net::IsCertStatusError(security_info.cert_status)); | 167 EXPECT_FALSE(net::IsCertStatusError(security_info.cert_status)); |
| 164 EXPECT_EQ(0, security_info.cert_id); | 168 EXPECT_EQ(0, security_info.cert_id); |
| 165 EXPECT_EQ(-1, security_info.security_bits); | 169 EXPECT_EQ(-1, security_info.security_bits); |
| (...skipping 309 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 475 ASSERT_TRUE(https_server_.Start()); | 479 ASSERT_TRUE(https_server_.Start()); |
| 476 SetUpMockCertVerifierForHttpsServer(0, net::OK); | 480 SetUpMockCertVerifierForHttpsServer(0, net::OK); |
| 477 | 481 |
| 478 content::WebContents* tab = | 482 content::WebContents* tab = |
| 479 browser()->tab_strip_model()->GetActiveWebContents(); | 483 browser()->tab_strip_model()->GetActiveWebContents(); |
| 480 ASSERT_TRUE(tab); | 484 ASSERT_TRUE(tab); |
| 481 | 485 |
| 482 content::WebContents* new_contents = content::WebContents::Create( | 486 content::WebContents* new_contents = content::WebContents::Create( |
| 483 content::WebContents::CreateParams(tab->GetBrowserContext())); | 487 content::WebContents::CreateParams(tab->GetBrowserContext())); |
| 484 content::NavigationController& controller = new_contents->GetController(); | 488 content::NavigationController& controller = new_contents->GetController(); |
| 485 SecurityStateModel::CreateForWebContents(new_contents); | 489 ChromeSecurityStateModelClient::CreateForWebContents(new_contents); |
| 486 CheckSecurityInfoForNonSecure(new_contents); | 490 CheckSecurityInfoForNonSecure(new_contents); |
| 487 controller.LoadURL(https_server_.GetURL("/"), content::Referrer(), | 491 controller.LoadURL(https_server_.GetURL("/"), content::Referrer(), |
| 488 ui::PAGE_TRANSITION_TYPED, std::string()); | 492 ui::PAGE_TRANSITION_TYPED, std::string()); |
| 489 EXPECT_TRUE(content::WaitForLoadStop(new_contents)); | 493 EXPECT_TRUE(content::WaitForLoadStop(new_contents)); |
| 490 CheckSecurityInfoForSecure(new_contents, SecurityStateModel::SECURE, | 494 CheckSecurityInfoForSecure(new_contents, SecurityStateModel::SECURE, |
| 491 SecurityStateModel::NO_DEPRECATED_SHA1, | 495 SecurityStateModel::NO_DEPRECATED_SHA1, |
| 492 SecurityStateModel::NO_MIXED_CONTENT, | 496 SecurityStateModel::NO_MIXED_CONTENT, |
| 493 false /* expect cert status error */); | 497 false /* expect cert status error */); |
| 494 | 498 |
| 495 browser()->tab_strip_model()->InsertWebContentsAt(0, new_contents, | 499 browser()->tab_strip_model()->InsertWebContentsAt(0, new_contents, |
| 496 TabStripModel::ADD_NONE); | 500 TabStripModel::ADD_NONE); |
| 497 CheckSecurityInfoForSecure(new_contents, SecurityStateModel::SECURE, | 501 CheckSecurityInfoForSecure(new_contents, SecurityStateModel::SECURE, |
| 498 SecurityStateModel::NO_DEPRECATED_SHA1, | 502 SecurityStateModel::NO_DEPRECATED_SHA1, |
| 499 SecurityStateModel::NO_MIXED_CONTENT, | 503 SecurityStateModel::NO_MIXED_CONTENT, |
| 500 false /* expect cert status error */); | 504 false /* expect cert status error */); |
| 501 } | 505 } |
| 502 | 506 |
| 503 } // namespace | 507 } // namespace |
| OLD | NEW |