Index: chrome/browser/ssl/security_state_tab_helper_browser_tests.cc |
diff --git a/chrome/browser/ssl/security_state_tab_helper_browser_tests.cc b/chrome/browser/ssl/security_state_tab_helper_browser_tests.cc |
index e503b432b484779a2e280c3d7c574c6c5db8ecb0..cf2101d1aea1a9f60342ebfcd4a8fbb2e28c4ad9 100644 |
--- a/chrome/browser/ssl/security_state_tab_helper_browser_tests.cc |
+++ b/chrome/browser/ssl/security_state_tab_helper_browser_tests.cc |
@@ -205,7 +205,7 @@ void CheckSecureExplanations( |
void CheckSecurityInfoForSecure( |
content::WebContents* contents, |
security_state::SecurityLevel expect_security_level, |
- security_state::SHA1DeprecationStatus expect_sha1_status, |
+ bool expect_sha1_in_chain, |
security_state::ContentStatus expect_mixed_content_status, |
bool pkp_bypassed, |
bool expect_cert_error) { |
@@ -217,7 +217,7 @@ void CheckSecurityInfoForSecure( |
security_state::SecurityInfo security_info; |
helper->GetSecurityInfo(&security_info); |
EXPECT_EQ(expect_security_level, security_info.security_level); |
- EXPECT_EQ(expect_sha1_status, security_info.sha1_deprecation_status); |
+ EXPECT_EQ(expect_sha1_in_chain, security_info.sha1_in_chain); |
EXPECT_EQ(expect_mixed_content_status, security_info.mixed_content_status); |
EXPECT_TRUE(security_info.sct_verify_statuses.empty()); |
EXPECT_TRUE(security_info.scheme_is_cryptographic); |
@@ -237,8 +237,7 @@ void CheckSecurityInfoForNonSecure(content::WebContents* contents) { |
security_state::SecurityInfo security_info; |
helper->GetSecurityInfo(&security_info); |
EXPECT_EQ(security_state::NONE, security_info.security_level); |
- EXPECT_EQ(security_state::NO_DEPRECATED_SHA1, |
- security_info.sha1_deprecation_status); |
+ EXPECT_FALSE(security_info.sha1_in_chain); |
EXPECT_EQ(security_state::CONTENT_STATUS_NONE, |
security_info.mixed_content_status); |
EXPECT_TRUE(security_info.sct_verify_statuses.empty()); |
@@ -369,8 +368,7 @@ IN_PROC_BROWSER_TEST_F(SecurityStateTabHelperTest, HttpPage) { |
security_state::SecurityInfo security_info; |
helper->GetSecurityInfo(&security_info); |
EXPECT_EQ(security_state::NONE, security_info.security_level); |
- EXPECT_EQ(security_state::NO_DEPRECATED_SHA1, |
- security_info.sha1_deprecation_status); |
+ EXPECT_FALSE(security_info.sha1_in_chain); |
EXPECT_EQ(security_state::CONTENT_STATUS_NONE, |
security_info.mixed_content_status); |
EXPECT_TRUE(security_info.sct_verify_statuses.empty()); |
@@ -389,23 +387,75 @@ IN_PROC_BROWSER_TEST_F(SecurityStateTabHelperTest, HttpsPage) { |
https_server_.GetURL("/ssl/google.html")); |
CheckSecurityInfoForSecure( |
browser()->tab_strip_model()->GetActiveWebContents(), |
- security_state::SECURE, security_state::NO_DEPRECATED_SHA1, |
- security_state::CONTENT_STATUS_NONE, false, |
+ security_state::SECURE, false, security_state::CONTENT_STATUS_NONE, false, |
false /* expect cert status error */); |
} |
-IN_PROC_BROWSER_TEST_F(SecurityStateTabHelperTest, SHA1Certificate) { |
+// Test security state after clickthrough for a SHA-1 certificate that is |
+// blocked by default. |
+IN_PROC_BROWSER_TEST_F(SecurityStateTabHelperTest, SHA1CertificateBlocked) { |
+ ASSERT_TRUE(https_server_.Start()); |
+ SetUpMockCertVerifierForHttpsServer( |
+ net::CERT_STATUS_SHA1_SIGNATURE_PRESENT | |
+ net::CERT_STATUS_WEAK_SIGNATURE_ALGORITHM, |
+ net::ERR_CERT_WEAK_SIGNATURE_ALGORITHM); |
+ |
+ content::WebContents* web_contents = |
+ browser()->tab_strip_model()->GetActiveWebContents(); |
+ SecurityStyleTestObserver observer(web_contents); |
+ ui_test_utils::NavigateToURL(browser(), |
+ https_server_.GetURL("/ssl/google.html")); |
+ CheckSecurityInfoForSecure( |
+ browser()->tab_strip_model()->GetActiveWebContents(), |
+ security_state::DANGEROUS, true, security_state::CONTENT_STATUS_NONE, |
+ false, true /* expect cert status error */); |
+ |
+ const content::SecurityStyleExplanations& interstitial_explanation = |
+ observer.latest_explanations(); |
+ ASSERT_EQ(1u, interstitial_explanation.broken_explanations.size()); |
+ ASSERT_EQ(1u, interstitial_explanation.unauthenticated_explanations.size()); |
+ EXPECT_EQ(l10n_util::GetStringUTF8(IDS_SHA1), |
+ interstitial_explanation.unauthenticated_explanations[0].summary); |
+ |
+ ProceedThroughInterstitial( |
+ browser()->tab_strip_model()->GetActiveWebContents()); |
+ |
+ CheckSecurityInfoForSecure( |
+ browser()->tab_strip_model()->GetActiveWebContents(), |
+ security_state::DANGEROUS, true, security_state::CONTENT_STATUS_NONE, |
+ false, true /* expect cert status error */); |
+ |
+ const content::SecurityStyleExplanations& page_explanation = |
+ observer.latest_explanations(); |
+ ASSERT_EQ(1u, page_explanation.broken_explanations.size()); |
+ ASSERT_EQ(1u, page_explanation.unauthenticated_explanations.size()); |
+ EXPECT_EQ(l10n_util::GetStringUTF8(IDS_SHA1), |
+ page_explanation.unauthenticated_explanations[0].summary); |
+} |
+ |
+// Test security state for a SHA-1 certificate that is allowed by policy. |
+IN_PROC_BROWSER_TEST_F(SecurityStateTabHelperTest, SHA1CertificateWarning) { |
ASSERT_TRUE(https_server_.Start()); |
SetUpMockCertVerifierForHttpsServer(net::CERT_STATUS_SHA1_SIGNATURE_PRESENT, |
net::OK); |
+ content::WebContents* web_contents = |
+ browser()->tab_strip_model()->GetActiveWebContents(); |
+ SecurityStyleTestObserver observer(web_contents); |
ui_test_utils::NavigateToURL(browser(), |
https_server_.GetURL("/ssl/google.html")); |
CheckSecurityInfoForSecure( |
browser()->tab_strip_model()->GetActiveWebContents(), |
- security_state::DANGEROUS, security_state::DEPRECATED_SHA1_MAJOR, |
- security_state::CONTENT_STATUS_NONE, false, |
+ security_state::NONE, true, security_state::CONTENT_STATUS_NONE, false, |
false /* expect cert status error */); |
+ |
+ const content::SecurityStyleExplanations& explanation = |
+ observer.latest_explanations(); |
+ |
+ ASSERT_EQ(0u, explanation.broken_explanations.size()); |
+ ASSERT_EQ(1u, explanation.unauthenticated_explanations.size()); |
+ EXPECT_EQ(l10n_util::GetStringUTF8(IDS_SHA1), |
+ explanation.unauthenticated_explanations[0].summary); |
} |
IN_PROC_BROWSER_TEST_F(SecurityStateTabHelperTest, MixedContent) { |
@@ -427,9 +477,8 @@ IN_PROC_BROWSER_TEST_F(SecurityStateTabHelperTest, MixedContent) { |
https_server_.GetURL(replacement_path)); |
CheckSecurityInfoForSecure( |
browser()->tab_strip_model()->GetActiveWebContents(), |
- security_state::NONE, security_state::NO_DEPRECATED_SHA1, |
- security_state::CONTENT_STATUS_DISPLAYED, false, |
- false /* expect cert status error */); |
+ security_state::NONE, false, security_state::CONTENT_STATUS_DISPLAYED, |
+ false, false /* expect cert status error */); |
// Navigate to an HTTPS page that displays mixed content dynamically. |
GetFilePathWithHostAndPortReplacement( |
@@ -439,8 +488,7 @@ IN_PROC_BROWSER_TEST_F(SecurityStateTabHelperTest, MixedContent) { |
https_server_.GetURL(replacement_path)); |
CheckSecurityInfoForSecure( |
browser()->tab_strip_model()->GetActiveWebContents(), |
- security_state::SECURE, security_state::NO_DEPRECATED_SHA1, |
- security_state::CONTENT_STATUS_NONE, false, |
+ security_state::SECURE, false, security_state::CONTENT_STATUS_NONE, false, |
false /* expect cert status error */); |
// Load the insecure image. |
bool js_result = false; |
@@ -450,9 +498,8 @@ IN_PROC_BROWSER_TEST_F(SecurityStateTabHelperTest, MixedContent) { |
EXPECT_TRUE(js_result); |
CheckSecurityInfoForSecure( |
browser()->tab_strip_model()->GetActiveWebContents(), |
- security_state::NONE, security_state::NO_DEPRECATED_SHA1, |
- security_state::CONTENT_STATUS_DISPLAYED, false, |
- false /* expect cert status error */); |
+ security_state::NONE, false, security_state::CONTENT_STATUS_DISPLAYED, |
+ false, false /* expect cert status error */); |
// Navigate to an HTTPS page that runs mixed content. |
GetFilePathWithHostAndPortReplacement("/ssl/page_runs_insecure_content.html", |
@@ -461,9 +508,8 @@ IN_PROC_BROWSER_TEST_F(SecurityStateTabHelperTest, MixedContent) { |
https_server_.GetURL(replacement_path)); |
CheckSecurityInfoForSecure( |
browser()->tab_strip_model()->GetActiveWebContents(), |
- security_state::DANGEROUS, security_state::NO_DEPRECATED_SHA1, |
- security_state::CONTENT_STATUS_RAN, false, |
- false /* expect cert status error */); |
+ security_state::DANGEROUS, false, security_state::CONTENT_STATUS_RAN, |
+ false, false /* expect cert status error */); |
// Navigate to an HTTPS page that runs and displays mixed content. |
GetFilePathWithHostAndPortReplacement( |
@@ -473,7 +519,7 @@ IN_PROC_BROWSER_TEST_F(SecurityStateTabHelperTest, MixedContent) { |
https_server_.GetURL(replacement_path)); |
CheckSecurityInfoForSecure( |
browser()->tab_strip_model()->GetActiveWebContents(), |
- security_state::DANGEROUS, security_state::NO_DEPRECATED_SHA1, |
+ security_state::DANGEROUS, false, |
security_state::CONTENT_STATUS_DISPLAYED_AND_RAN, false, |
false /* expect cert status error */); |
@@ -493,9 +539,8 @@ IN_PROC_BROWSER_TEST_F(SecurityStateTabHelperTest, MixedContent) { |
https_server_.GetURL(replacement_path)); |
CheckSecurityInfoForSecure( |
browser()->tab_strip_model()->GetActiveWebContents(), |
- security_state::DANGEROUS, security_state::NO_DEPRECATED_SHA1, |
- security_state::CONTENT_STATUS_RAN, false, |
- false /* expect cert status error */); |
+ security_state::DANGEROUS, false, security_state::CONTENT_STATUS_RAN, |
+ false, false /* expect cert status error */); |
} |
IN_PROC_BROWSER_TEST_F(SecurityStateTabHelperTest, |
@@ -587,7 +632,8 @@ IN_PROC_BROWSER_TEST_F(SecurityStateTabHelperTest, |
security_info.content_with_cert_errors_status); |
} |
-// Same as the test above but with a long-lived SHA1 cert. |
+// Same as SecurityStateTabHelperTest.ActiveAndPassiveContentWithCertErrors but |
+// with a SHA1 cert. |
IN_PROC_BROWSER_TEST_F(SecurityStateTabHelperTest, MixedContentWithSHA1Cert) { |
ASSERT_TRUE(embedded_test_server()->Start()); |
ASSERT_TRUE(https_server_.Start()); |
@@ -609,9 +655,8 @@ IN_PROC_BROWSER_TEST_F(SecurityStateTabHelperTest, MixedContentWithSHA1Cert) { |
https_server_.GetURL(replacement_path)); |
CheckSecurityInfoForSecure( |
browser()->tab_strip_model()->GetActiveWebContents(), |
- security_state::DANGEROUS, security_state::DEPRECATED_SHA1_MAJOR, |
- security_state::CONTENT_STATUS_DISPLAYED, false, |
- false /* expect cert status error */); |
+ security_state::NONE, true, security_state::CONTENT_STATUS_DISPLAYED, |
+ false, false /* expect cert status error */); |
// Navigate to an HTTPS page that displays mixed content dynamically. |
GetFilePathWithHostAndPortReplacement( |
@@ -621,8 +666,7 @@ IN_PROC_BROWSER_TEST_F(SecurityStateTabHelperTest, MixedContentWithSHA1Cert) { |
https_server_.GetURL(replacement_path)); |
CheckSecurityInfoForSecure( |
browser()->tab_strip_model()->GetActiveWebContents(), |
- security_state::DANGEROUS, security_state::DEPRECATED_SHA1_MAJOR, |
- security_state::CONTENT_STATUS_NONE, false, |
+ security_state::NONE, true, security_state::CONTENT_STATUS_NONE, false, |
false /* expect cert status error */); |
// Load the insecure image. |
bool js_result = false; |
@@ -632,9 +676,8 @@ IN_PROC_BROWSER_TEST_F(SecurityStateTabHelperTest, MixedContentWithSHA1Cert) { |
EXPECT_TRUE(js_result); |
CheckSecurityInfoForSecure( |
browser()->tab_strip_model()->GetActiveWebContents(), |
- security_state::DANGEROUS, security_state::DEPRECATED_SHA1_MAJOR, |
- security_state::CONTENT_STATUS_DISPLAYED, false, |
- false /* expect cert status error */); |
+ security_state::NONE, true, security_state::CONTENT_STATUS_DISPLAYED, |
+ false, false /* expect cert status error */); |
// Navigate to an HTTPS page that runs mixed content. |
GetFilePathWithHostAndPortReplacement("/ssl/page_runs_insecure_content.html", |
@@ -643,9 +686,8 @@ IN_PROC_BROWSER_TEST_F(SecurityStateTabHelperTest, MixedContentWithSHA1Cert) { |
https_server_.GetURL(replacement_path)); |
CheckSecurityInfoForSecure( |
browser()->tab_strip_model()->GetActiveWebContents(), |
- security_state::DANGEROUS, security_state::DEPRECATED_SHA1_MAJOR, |
- security_state::CONTENT_STATUS_RAN, false, |
- false /* expect cert status error */); |
+ security_state::DANGEROUS, true, security_state::CONTENT_STATUS_RAN, |
+ false, false /* expect cert status error */); |
// Navigate to an HTTPS page that runs and displays mixed content. |
GetFilePathWithHostAndPortReplacement( |
@@ -655,7 +697,7 @@ IN_PROC_BROWSER_TEST_F(SecurityStateTabHelperTest, MixedContentWithSHA1Cert) { |
https_server_.GetURL(replacement_path)); |
CheckSecurityInfoForSecure( |
browser()->tab_strip_model()->GetActiveWebContents(), |
- security_state::DANGEROUS, security_state::DEPRECATED_SHA1_MAJOR, |
+ security_state::DANGEROUS, true, |
security_state::CONTENT_STATUS_DISPLAYED_AND_RAN, false, |
false /* expect cert status error */); |
} |
@@ -681,8 +723,7 @@ IN_PROC_BROWSER_TEST_F(SecurityStateTabHelperTest, MixedContentStrictBlocking) { |
https_server_.GetURL(replacement_path)); |
CheckSecurityInfoForSecure( |
browser()->tab_strip_model()->GetActiveWebContents(), |
- security_state::SECURE, security_state::NO_DEPRECATED_SHA1, |
- security_state::CONTENT_STATUS_NONE, false, |
+ security_state::SECURE, false, security_state::CONTENT_STATUS_NONE, false, |
false /* expect cert status error */); |
} |
@@ -696,18 +737,16 @@ IN_PROC_BROWSER_TEST_F(SecurityStateTabHelperTest, BrokenHTTPS) { |
https_server_.GetURL("/ssl/google.html")); |
CheckSecurityInfoForSecure( |
browser()->tab_strip_model()->GetActiveWebContents(), |
- security_state::DANGEROUS, security_state::NO_DEPRECATED_SHA1, |
- security_state::CONTENT_STATUS_NONE, false, |
- true /* expect cert status error */); |
+ security_state::DANGEROUS, false, security_state::CONTENT_STATUS_NONE, |
+ false, true /* expect cert status error */); |
ProceedThroughInterstitial( |
browser()->tab_strip_model()->GetActiveWebContents()); |
CheckSecurityInfoForSecure( |
browser()->tab_strip_model()->GetActiveWebContents(), |
- security_state::DANGEROUS, security_state::NO_DEPRECATED_SHA1, |
- security_state::CONTENT_STATUS_NONE, false, |
- true /* expect cert status error */); |
+ security_state::DANGEROUS, false, security_state::CONTENT_STATUS_NONE, |
+ false, true /* expect cert status error */); |
// Navigate to a broken HTTPS page that displays mixed content. |
std::string replacement_path; |
@@ -718,7 +757,7 @@ IN_PROC_BROWSER_TEST_F(SecurityStateTabHelperTest, BrokenHTTPS) { |
https_server_.GetURL(replacement_path)); |
CheckSecurityInfoForSecure( |
browser()->tab_strip_model()->GetActiveWebContents(), |
- security_state::DANGEROUS, security_state::NO_DEPRECATED_SHA1, |
+ security_state::DANGEROUS, false, |
security_state::CONTENT_STATUS_DISPLAYED, false, |
true /* expect cert status error */); |
} |
@@ -779,8 +818,8 @@ IN_PROC_BROWSER_TEST_F(PKPModelClientTest, PKPBypass) { |
CheckSecurityInfoForSecure( |
browser()->tab_strip_model()->GetActiveWebContents(), |
- security_state::SECURE, security_state::NO_DEPRECATED_SHA1, |
- security_state::CONTENT_STATUS_NONE, true, false); |
+ security_state::SECURE, false, security_state::CONTENT_STATUS_NONE, true, |
+ false); |
const content::SecurityStyleExplanations& explanation = |
observer.latest_explanations(); |
@@ -865,8 +904,7 @@ IN_PROC_BROWSER_TEST_F(SecurityStateLoadingTest, NavigationStateChanges) { |
https_server_.GetURL("/ssl/google.html")); |
CheckSecurityInfoForSecure( |
browser()->tab_strip_model()->GetActiveWebContents(), |
- security_state::SECURE, security_state::NO_DEPRECATED_SHA1, |
- security_state::CONTENT_STATUS_NONE, false, |
+ security_state::SECURE, false, security_state::CONTENT_STATUS_NONE, false, |
false /* expect cert status error */); |
// Navigate to a page that doesn't finish loading. Test that the |
@@ -1479,15 +1517,13 @@ IN_PROC_BROWSER_TEST_F(SecurityStateTabHelperTest, AddedTab) { |
controller.LoadURL(https_server_.GetURL("/title1.html"), content::Referrer(), |
ui::PAGE_TRANSITION_TYPED, std::string()); |
EXPECT_TRUE(content::WaitForLoadStop(new_contents)); |
- CheckSecurityInfoForSecure(new_contents, security_state::SECURE, |
- security_state::NO_DEPRECATED_SHA1, |
+ CheckSecurityInfoForSecure(new_contents, security_state::SECURE, false, |
security_state::CONTENT_STATUS_NONE, false, |
false /* expect cert status error */); |
browser()->tab_strip_model()->InsertWebContentsAt(0, new_contents, |
TabStripModel::ADD_NONE); |
- CheckSecurityInfoForSecure(new_contents, security_state::SECURE, |
- security_state::NO_DEPRECATED_SHA1, |
+ CheckSecurityInfoForSecure(new_contents, security_state::SECURE, false, |
security_state::CONTENT_STATUS_NONE, false, |
false /* expect cert status error */); |
} |