Chromium Code Reviews| Index: chrome/browser/page_info_model.cc |
| =================================================================== |
| --- chrome/browser/page_info_model.cc (revision 59352) |
| +++ chrome/browser/page_info_model.cc (working copy) |
| @@ -42,11 +42,41 @@ |
| l10n_util::GetStringUTF16(IDS_PAGE_INFO_SECURITY_TAB_UNKNOWN_PARTY)); |
| empty_subject_name = true; |
| } |
| + |
| + // Some of what IsCertStatusError classifies as errors we want to show as |
| + // warnings instead. |
| + static const int cert_warnings = |
| + net::CERT_STATUS_UNABLE_TO_CHECK_REVOCATION | |
| + net::CERT_STATUS_NO_REVOCATION_MECHANISM; |
| + int status_with_warnings_removed = ssl.cert_status() & ~cert_warnings; |
| + |
| if (ssl.cert_id() && |
| CertStore::GetSharedInstance()->RetrieveCert(ssl.cert_id(), &cert) && |
| - !net::IsCertStatusError(ssl.cert_status())) { |
| - // OK HTTPS page. |
| - if ((ssl.cert_status() & net::CERT_STATUS_IS_EV) != 0) { |
| + !net::IsCertStatusError(status_with_warnings_removed)) { |
| + // No error found so far, check cert_status warnings. |
| + int cert_status = ssl.cert_status(); |
| + if (cert_status & cert_warnings) { |
| + string16 issuer_name(UTF8ToUTF16(cert->issuer().GetDisplayName())); |
| + if (issuer_name.empty()) { |
| + issuer_name.assign(l10n_util::GetStringUTF16( |
| + IDS_PAGE_INFO_SECURITY_TAB_UNKNOWN_PARTY)); |
| + } |
| + description.assign(l10n_util::GetStringFUTF16( |
| + IDS_PAGE_INFO_SECURITY_TAB_SECURE_IDENTITY, issuer_name)); |
| + |
| + description += ASCIIToUTF16("\n\n"); |
| + if (cert_status & net::CERT_STATUS_UNABLE_TO_CHECK_REVOCATION) { |
| + description += l10n_util::GetStringUTF16( |
| + IDS_PAGE_INFO_SECURITY_TAB_UNABLE_TO_CHECK_REVOCATION); |
| + } else if (cert_status & net::CERT_STATUS_NO_REVOCATION_MECHANISM) { |
|
wtc
2010/09/14 22:31:56
Strictly speaking, we should not use "else if" her
|
| + description += l10n_util::GetStringUTF16( |
| + IDS_PAGE_INFO_SECURITY_TAB_NO_REVOCATION_MECHANISM); |
| + } else { |
| + NOTREACHED() << "Need to specify string for this warning"; |
| + } |
| + state = SECTION_STATE_WARNING_MINOR; |
| + } else if ((ssl.cert_status() & net::CERT_STATUS_IS_EV) != 0) { |
| + // EV HTTPS page. |
| DCHECK(!cert->subject().organization_names.empty()); |
| headline = |
| l10n_util::GetStringFUTF16(IDS_PAGE_INFO_EV_IDENTITY_TITLE, |
| @@ -76,7 +106,7 @@ |
| locality, |
| UTF8ToUTF16(cert->issuer().GetDisplayName()))); |
| } else { |
| - // Non EV OK HTTPS. |
| + // Non-EV OK HTTPS page. |
| if (empty_subject_name) |
| headline.clear(); // Don't display any title. |
| else |
| @@ -85,13 +115,12 @@ |
| if (issuer_name.empty()) { |
| issuer_name.assign(l10n_util::GetStringUTF16( |
| IDS_PAGE_INFO_SECURITY_TAB_UNKNOWN_PARTY)); |
| - } else { |
| - description.assign(l10n_util::GetStringFUTF16( |
| - IDS_PAGE_INFO_SECURITY_TAB_SECURE_IDENTITY, issuer_name)); |
| } |
| + description.assign(l10n_util::GetStringFUTF16( |
| + IDS_PAGE_INFO_SECURITY_TAB_SECURE_IDENTITY, issuer_name)); |
| } |
| } else { |
| - // HTTP or bad HTTPS. |
| + // HTTP or HTTPS with errors (not warnings). |
| description.assign(l10n_util::GetStringUTF16( |
| IDS_PAGE_INFO_SECURITY_TAB_INSECURE_IDENTITY)); |
| state = ssl.security_style() == SECURITY_STYLE_UNAUTHENTICATED ? |