| 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_client = | 
|   54   ASSERT_TRUE(model); |   55       ChromeSecurityStateModelClient::FromWebContents(contents); | 
 |   56   ASSERT_TRUE(model_client); | 
|   55   const SecurityStateModel::SecurityInfo& security_info = |   57   const SecurityStateModel::SecurityInfo& security_info = | 
|   56       model->GetSecurityInfo(); |   58       model_client->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_client = | 
|   75   ASSERT_TRUE(model); |   77       ChromeSecurityStateModelClient::FromWebContents(contents); | 
 |   78   ASSERT_TRUE(model_client); | 
|   76   const SecurityStateModel::SecurityInfo& security_info = |   79   const SecurityStateModel::SecurityInfo& security_info = | 
|   77       model->GetSecurityInfo(); |   80       model_client->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_client = | 
|  153   ASSERT_TRUE(model); |  156       ChromeSecurityStateModelClient::FromWebContents(contents); | 
 |  157   ASSERT_TRUE(model_client); | 
|  154   const SecurityStateModel::SecurityInfo& security_info = |  158   const SecurityStateModel::SecurityInfo& security_info = | 
|  155       model->GetSecurityInfo(); |  159       model_client->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 |