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

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

Issue 1223233002: Common Name Mismatch Handler For WWW Subdomain Mismatch case (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Browsertests using MockCertVerifier Created 5 years, 4 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 55dfb486d71ca1b7ea1137494c4f5388815b69a0..855f98afa1ddc3715e9b089c149da12263fbbf0d 100644
--- a/chrome/browser/ssl/ssl_blocking_page.cc
+++ b/chrome/browser/ssl/ssl_blocking_page.cc
@@ -32,6 +32,7 @@
#include "chrome/browser/ssl/ssl_cert_reporter.h"
#include "chrome/browser/ssl/ssl_error_classification.h"
#include "chrome/browser/ssl/ssl_error_info.h"
+#include "chrome/browser/ui/browser_navigator.h"
#include "chrome/common/chrome_switches.h"
#include "chrome/common/pref_names.h"
#include "chrome/grit/chromium_strings.h"
@@ -237,7 +238,8 @@ SSLBlockingPage::SSLBlockingPage(content::WebContents* web_contents,
int options_mask,
const base::Time& time_triggered,
scoped_ptr<SSLCertReporter> ssl_cert_reporter,
- const base::Callback<void(bool)>& callback)
+ const base::Callback<void(bool)>& callback,
+ const GURL& suggested_url)
: SecurityInterstitialPage(web_contents, request_url),
callback_(callback),
cert_error_(cert_error),
@@ -250,7 +252,8 @@ SSLBlockingPage::SSLBlockingPage(content::WebContents* web_contents,
strict_enforcement_((options_mask & STRICT_ENFORCEMENT) != 0),
expired_but_previously_allowed_(
(options_mask & EXPIRED_BUT_PREVIOUSLY_ALLOWED) != 0),
- time_triggered_(time_triggered) {
+ time_triggered_(time_triggered),
+ suggested_url_(suggested_url) {
interstitial_reason_ =
IsErrorDueToBadClock(time_triggered_, cert_error_) ?
SSL_REASON_BAD_CLOCK : SSL_REASON_SSL;
@@ -383,6 +386,19 @@ void SSLBlockingPage::PopulateInterstitialStrings(
"primaryParagraph",
l10n_util::GetStringFUTF16(IDS_SSL_V2_PRIMARY_PARAGRAPH, url));
+ load_time_data->SetBoolean("common_name_mismatch", false);
+ // If suggested URL is not empty, display a modified message
+ // with a link to suggested_url.
+ if (!suggested_url_.is_empty()) {
+ load_time_data->SetBoolean("common_name_mismatch", true);
+ load_time_data->SetString(
+ "primaryParagraph",
+ l10n_util::GetStringFUTF16(
+ IDS_SSL_COMMON_NAME_MISMATCH_PRIMARY_PARAGRAPH,
+ base::UTF8ToUTF16(request_url().host()),
+ base::UTF8ToUTF16(suggested_url_.host())));
+ }
+
if (overridable_) {
load_time_data->SetBoolean("overridable", true);
@@ -391,6 +407,7 @@ void SSLBlockingPage::PopulateInterstitialStrings(
SSLErrorInfo::NetErrorToErrorType(cert_error_),
ssl_info_.cert.get(),
request_url());
+
load_time_data->SetString("explanationParagraph", error_info.details());
load_time_data->SetString(
"primaryButtonText",
@@ -540,6 +557,9 @@ void SSLBlockingPage::CommandReceived(const std::string& command) {
case CMD_OPEN_REPORTING_PRIVACY:
OpenExtendedReportingPrivacyPolicy();
break;
+ case CMD_NAVIGATE_SUGGESTED_URL:
+ OpenSuggestedURL();
+ break;
case CMD_OPEN_DIAGNOSTIC:
// Google doesn't currently have a transparency report for SSL.
NOTREACHED() << "Unexpected command: " << command;
@@ -638,6 +658,12 @@ std::string SSLBlockingPage::GetSamplingEventName() const {
return event_name;
}
+void SSLBlockingPage::OpenSuggestedURL() const {
+ content::NavigationController::LoadURLParams load_params(suggested_url_);
+ load_params.transition_type = ui::PAGE_TRANSITION_LINK;
+ web_contents()->GetController().LoadURLWithParams(load_params);
+}
+
// static
bool SSLBlockingPage::IsOverridable(int options_mask,
const Profile* const profile) {

Powered by Google App Engine
This is Rietveld 408576698