| Index: chrome/browser/ssl/chrome_security_state_model_client.cc
|
| diff --git a/chrome/browser/ssl/chrome_security_state_model_client.cc b/chrome/browser/ssl/chrome_security_state_model_client.cc
|
| index 72bf6d6ff15f81942c291172560dd0695b76be45..35e3d0741414ea9a24d492e3586dea10db033078 100644
|
| --- a/chrome/browser/ssl/chrome_security_state_model_client.cc
|
| +++ b/chrome/browser/ssl/chrome_security_state_model_client.cc
|
| @@ -204,18 +204,43 @@ content::SecurityStyle ChromeSecurityStateModelClient::GetSecurityStyle(
|
| security_info.cert_id));
|
| }
|
|
|
| - security_style_explanations->ran_insecure_content =
|
| + // Record the presence of mixed content (HTTP subresources on an HTTPS
|
| + // page).
|
| + security_style_explanations->ran_mixed_content =
|
| security_info.mixed_content_status ==
|
| SecurityStateModel::CONTENT_STATUS_RAN ||
|
| security_info.mixed_content_status ==
|
| SecurityStateModel::CONTENT_STATUS_DISPLAYED_AND_RAN;
|
| - security_style_explanations->displayed_insecure_content =
|
| + security_style_explanations->displayed_mixed_content =
|
| security_info.mixed_content_status ==
|
| SecurityStateModel::CONTENT_STATUS_DISPLAYED ||
|
| security_info.mixed_content_status ==
|
| SecurityStateModel::CONTENT_STATUS_DISPLAYED_AND_RAN;
|
|
|
| - if (net::IsCertStatusError(security_info.cert_status)) {
|
| + bool is_cert_status_error = net::IsCertStatusError(security_info.cert_status);
|
| + bool is_cert_status_minor_error =
|
| + net::IsCertStatusMinorError(security_info.cert_status);
|
| +
|
| + // If the main resource was loaded no certificate errors or only minor
|
| + // certificate errors, then record the presence of subresources with
|
| + // certificate errors. Subresource certificate errors aren't recorded
|
| + // when the main resource was loaded with major certificate errors
|
| + // because, in the common case, these subresource certificate errors
|
| + // would be duplicative with the main resource's error.
|
| + if (!is_cert_status_error || is_cert_status_minor_error) {
|
| + security_style_explanations->ran_content_with_cert_errors =
|
| + security_info.content_with_cert_errors_status ==
|
| + SecurityStateModel::CONTENT_STATUS_RAN ||
|
| + security_info.content_with_cert_errors_status ==
|
| + SecurityStateModel::CONTENT_STATUS_DISPLAYED_AND_RAN;
|
| + security_style_explanations->displayed_content_with_cert_errors =
|
| + security_info.content_with_cert_errors_status ==
|
| + SecurityStateModel::CONTENT_STATUS_DISPLAYED ||
|
| + security_info.content_with_cert_errors_status ==
|
| + SecurityStateModel::CONTENT_STATUS_DISPLAYED_AND_RAN;
|
| + }
|
| +
|
| + if (is_cert_status_error) {
|
| base::string16 error_string = base::UTF8ToUTF16(net::ErrorToString(
|
| net::MapCertStatusToNetError(security_info.cert_status)));
|
|
|
| @@ -225,11 +250,12 @@ content::SecurityStyle ChromeSecurityStateModelClient::GetSecurityStyle(
|
| IDS_CERTIFICATE_CHAIN_ERROR_DESCRIPTION_FORMAT, error_string),
|
| security_info.cert_id);
|
|
|
| - if (net::IsCertStatusMinorError(security_info.cert_status))
|
| + if (is_cert_status_minor_error) {
|
| security_style_explanations->unauthenticated_explanations.push_back(
|
| explanation);
|
| - else
|
| + } else {
|
| security_style_explanations->broken_explanations.push_back(explanation);
|
| + }
|
| } else {
|
| // If the certificate does not have errors and is not using
|
| // deprecated SHA1, then add an explanation that the certificate is
|
|
|