Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(27)

Unified Diff: chrome/browser/ssl/ssl_blocking_page.cc

Issue 23965003: New SSL blocking screen (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Got the buttons working Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ssl/ssl_blocking_page.cc
diff --git a/chrome/browser/ssl/ssl_blocking_page.cc b/chrome/browser/ssl/ssl_blocking_page.cc
index 8ed43633fc336659735411577deaf962fe319dd9..b0abf28a20ea481636e4c84106c92977c5c1e524 100644
--- a/chrome/browser/ssl/ssl_blocking_page.cc
+++ b/chrome/browser/ssl/ssl_blocking_page.cc
@@ -7,6 +7,7 @@
#include "base/i18n/rtl.h"
#include "base/metrics/field_trial.h"
#include "base/metrics/histogram.h"
+#include "base/strings/string_number_conversions.h"
#include "base/strings/string_piece.h"
#include "base/strings/utf_string_conversions.h"
#include "base/values.h"
@@ -51,7 +52,8 @@ enum SSLBlockingPageCommands {
CMD_DONT_PROCEED,
CMD_PROCEED,
CMD_FOCUS,
- CMD_MORE
+ CMD_MORE,
+ CMD_RELOAD,
};
// Events for UMA.
@@ -198,51 +200,135 @@ SSLBlockingPage::~SSLBlockingPage() {
}
std::string SSLBlockingPage::GetHTMLContents() {
- // Let's build the html error page.
DictionaryValue strings;
- SSLErrorInfo error_info =
- SSLErrorInfo::CreateError(SSLErrorInfo::NetErrorToErrorType(cert_error_),
- ssl_info_.cert.get(),
- request_url_);
-
- int resource_id = IDR_SSL_ROAD_BLOCK_HTML;
- strings.SetString("headLine", error_info.title());
- strings.SetString("description", error_info.details());
- strings.SetString("moreInfoTitle",
- l10n_util::GetStringUTF16(IDS_CERT_ERROR_EXTRA_INFO_TITLE));
- SetExtraInfo(&strings, error_info.extra_information());
-
- strings.SetString("exit",
- l10n_util::GetStringUTF16(IDS_SSL_BLOCKING_PAGE_EXIT));
-
+ int resource_id;
if (overridable_ && !strict_enforcement_) {
- strings.SetString("title",
- l10n_util::GetStringUTF16(IDS_SSL_BLOCKING_PAGE_TITLE));
- strings.SetString("proceed",
- l10n_util::GetStringUTF16(IDS_SSL_BLOCKING_PAGE_PROCEED));
- strings.SetString("reasonForNotProceeding",
- l10n_util::GetStringUTF16(
- IDS_SSL_BLOCKING_PAGE_SHOULD_NOT_PROCEED));
+ // Let's build the overridable error page.
+ SSLErrorInfo error_info =
+ SSLErrorInfo::CreateError(
+ SSLErrorInfo::NetErrorToErrorType(cert_error_),
+ ssl_info_.cert.get(),
+ request_url_);
+
+ resource_id = IDR_SSL_ROAD_BLOCK_HTML;
+ strings.SetString("headLine", error_info.title());
+ strings.SetString("description", error_info.details());
+ strings.SetString("moreInfoTitle",
+ l10n_util::GetStringUTF16(IDS_CERT_ERROR_EXTRA_INFO_TITLE));
+ SetExtraInfo(&strings, error_info.extra_information());
+
+ strings.SetString(
+ "exit", l10n_util::GetStringUTF16(IDS_SSL_OVERRIDABLE_PAGE_EXIT));
+ strings.SetString(
+ "title", l10n_util::GetStringUTF16(IDS_SSL_OVERRIDABLE_PAGE_TITLE));
+ strings.SetString(
+ "proceed", l10n_util::GetStringUTF16(IDS_SSL_OVERRIDABLE_PAGE_PROCEED));
+ strings.SetString(
+ "reasonForNotProceeding", l10n_util::GetStringUTF16(
+ IDS_SSL_OVERRIDABLE_PAGE_SHOULD_NOT_PROCEED));
strings.SetString("errorType", "overridable");
+ strings.SetString("textdirection", base::i18n::IsRTL() ? "rtl" : "ltr");
} else {
- strings.SetString("title",
- l10n_util::GetStringUTF16(IDS_SSL_ERROR_PAGE_TITLE));
+ // Let's build the blocking error page.
+ resource_id = IDR_SSL_BLOCKING_HTML;
+
+ // Strings that are not dependent on the URL.
+ strings.SetString(
+ "title", l10n_util::GetStringUTF16(IDS_SSL_BLOCKING_PAGE_TITLE));
+ strings.SetString(
+ "secondPar",
+ l10n_util::GetStringUTF16(IDS_SSL_BLOCKING_PAGE_SECOND_PAR));
+ strings.SetString(
+ "reloadMsg", l10n_util::GetStringUTF16(IDS_ERRORPAGES_BUTTON_RELOAD));
+ strings.SetString(
+ "more", l10n_util::GetStringUTF16(IDS_ERRORPAGES_BUTTON_MORE));
+ strings.SetString(
+ "less", l10n_util::GetStringUTF16(IDS_ERRORPAGES_BUTTON_LESS));
+ strings.SetString(
+ "moreTitle",
+ l10n_util::GetStringUTF16(IDS_SSL_BLOCKING_PAGE_MORE_TITLE));
+ strings.SetString(
+ "moreContentSecond",
+ l10n_util::GetStringUTF16(IDS_SSL_BLOCKING_PAGE_MORE_SECOND_PAR));
+ strings.SetString(
+ "techTitle",
+ l10n_util::GetStringUTF16(IDS_SSL_BLOCKING_PAGE_TECH_TITLE));
+
+ // Strings that are dependent on the URL.
+ string16 url(ASCIIToUTF16(request_url_.host()));
+ bool rtl = base::i18n::IsRTL();
+ strings.SetString("textDirection", rtl ? "rtl" : "ltr");
+ if (rtl)
+ base::i18n::WrapStringWithLTRFormatting(&url);
+ strings.SetString(
+ "headline", l10n_util::GetStringFUTF16(IDS_SSL_BLOCKING_PAGE_HEADLINE,
+ url.c_str()));
+ strings.SetString(
+ "firstPar", l10n_util::GetStringFUTF16(IDS_SSL_BLOCKING_PAGE_FIRST_PAR,
+ url.c_str()));
+ strings.SetString(
+ "thirdPar", l10n_util::GetStringFUTF16(IDS_SSL_BLOCKING_PAGE_THIRD_PAR,
+ url.c_str()));
+ strings.SetString(
+ "moreContentFirst",
+ l10n_util::GetStringFUTF16(IDS_SSL_BLOCKING_PAGE_MORE_FIRST_PAR,
+ url.c_str()));
+ strings.SetString("reloadUrl", request_url_.spec());
+
+ // Strings that are dependent on the error type.
+ SSLErrorInfo::ErrorType type =
+ SSLErrorInfo::NetErrorToErrorType(cert_error_);
+ string16 errorType;
if (strict_enforcement_) {
- strings.SetString("reasonForNotProceeding",
- l10n_util::GetStringUTF16(
- IDS_SSL_ERROR_PAGE_CANNOT_PROCEED));
+ errorType = string16(ASCIIToUTF16("HSTS failure"));
palmer 2013/09/06 17:01:33 This string bothers me a tiny bit, because even wh
felt 2013/09/06 17:37:47 At the present time, only HSTS can trigger this ca
felt 2013/09/09 14:34:12 However, I did add the strings to the grd file so
+ strings.SetString(
+ "failure",
+ l10n_util::GetStringFUTF16(IDS_SSL_BLOCKING_PAGE_HSTS, url.c_str()));
+ } else if (type == SSLErrorInfo::CERT_REVOKED) {
+ errorType = string16(ASCIIToUTF16("Key revocation"));
+ strings.SetString(
+ "failure",
+ l10n_util::GetStringUTF16(IDS_SSL_BLOCKING_PAGE_REVOKED));
} else {
- strings.SetString("reasonForNotProceeding", std::string());
+ // This is SSLErrorInfo::CERT_INVALID and any other corner case.
+ errorType = string16(ASCIIToUTF16("Malformed certificate"));
+ strings.SetString(
+ "failure",
+ l10n_util::GetStringUTF16(IDS_SSL_BLOCKING_PAGE_FORMATTED));
}
- strings.SetString("errorType", "notoverridable");
+ if (rtl)
+ base::i18n::WrapStringWithLTRFormatting(&errorType);
+ strings.SetString(
+ "errorType", l10n_util::GetStringFUTF16(IDS_SSL_BLOCKING_PAGE_ERROR,
+ errorType.c_str()));
+
+ // Strings that display the invalid cert.
+ string16 subject(ASCIIToUTF16(ssl_info_.cert->subject().GetDisplayName()));
+ string16 issuer(ASCIIToUTF16(ssl_info_.cert->issuer().GetDisplayName()));
+ string16 fingerprint(ASCIIToUTF16(
+ base::HexEncode(ssl_info_.cert->fingerprint().data,
palmer 2013/09/06 17:01:33 Ahh, so answering my previous question: The finger
felt 2013/09/06 17:37:47 Someone (either you or Sleevi) asked me to put the
felt 2013/09/09 14:34:12 Updated this to SPKI hashes.
+ sizeof(ssl_info_.cert->fingerprint().data))));
+ if (rtl) {
+ // These are always going to be LTR.
+ base::i18n::WrapStringWithLTRFormatting(&subject);
+ base::i18n::WrapStringWithLTRFormatting(&issuer);
+ base::i18n::WrapStringWithLTRFormatting(&fingerprint);
+ }
+ strings.SetString(
+ "subject", l10n_util::GetStringFUTF16(IDS_SSL_BLOCKING_PAGE_SUBJECT,
+ subject.c_str()));
+ strings.SetString(
+ "issuer", l10n_util::GetStringFUTF16(IDS_SSL_BLOCKING_PAGE_ISSUER,
+ issuer.c_str()));
+ strings.SetString(
+ "fingerprint",
+ l10n_util::GetStringFUTF16(IDS_SSL_BLOCKING_PAGE_FINGERPRINT,
+ fingerprint.c_str()));
}
- strings.SetString("textdirection", base::i18n::IsRTL() ? "rtl" : "ltr");
-
base::StringPiece html(
ResourceBundle::GetSharedInstance().GetRawDataResource(
resource_id));
-
return webui::GetI18nTemplateHtml(html, &strings);
}
@@ -274,6 +360,10 @@ void SSLBlockingPage::CommandReceived(const std::string& command) {
display_start_time_ = base::TimeTicks::Now();
} else if (cmd == CMD_MORE) {
RecordSSLBlockingPageEventStats(MORE);
+ } else if (cmd == CMD_RELOAD) {
+ // The interstitial can't refresh itself.
+ content::NavigationController* controller = &web_contents_->GetController();
+ controller->Reload(true);
}
}
« chrome/app/generated_resources.grd ('K') | « chrome/browser/resources/ssl/locked_page_200.png ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698