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

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

Issue 14752005: Finch experiments on SSL, malware, and phishing interstitials (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fixes for James's review Created 7 years, 8 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 615c4c602e0dba48a844820a4d53a8a0d1fd661e..bae4ca1ca67619a3865378a47d0ffc6afab757de 100644
--- a/chrome/browser/ssl/ssl_blocking_page.cc
+++ b/chrome/browser/ssl/ssl_blocking_page.cc
@@ -5,6 +5,7 @@
#include "chrome/browser/ssl/ssl_blocking_page.h"
#include "base/i18n/rtl.h"
+#include "base/metrics/field_trial.h"
#include "base/metrics/histogram.h"
#include "base/strings/string_piece.h"
#include "base/utf_string_conversions.h"
@@ -24,6 +25,7 @@
#include "content/public/browser/render_view_host.h"
#include "content/public/browser/web_contents.h"
#include "content/public/common/ssl_status.h"
+#include "grit/app_locale_settings.h"
#include "grit/browser_resources.h"
#include "grit/generated_resources.h"
#include "net/base/net_errors.h"
@@ -31,6 +33,10 @@
#include "ui/base/resource/resource_bundle.h"
#include "ui/webui/jstemplate_builder.h"
+#if defined(OS_WIN)
+#include "base/win/windows_version.h"
+#endif
+
using base::TimeDelta;
using base::TimeTicks;
using content::InterstitialPage;
@@ -59,6 +65,7 @@ enum SSLBlockingPageCommands {
CMD_PROCEED,
CMD_FOCUS,
CMD_MORE,
+ CMD_SHOW_UNDERSTAND, // Used by the Finch trial.
};
// Events for UMA.
@@ -74,6 +81,7 @@ enum SSLBlockingPageEvent {
DONT_PROCEED_DATE,
DONT_PROCEED_AUTHORITY,
MORE,
+ SHOW_UNDERSTAND,
UNUSED_BLOCKING_PAGE_EVENT,
};
@@ -144,6 +152,15 @@ void RecordSSLBlockingPageTimeStats(
}
}
+// These are the conditions for the Finch experiment.
+static const char kCondition15Control[] = "Condition15SSLControl";
+static const char kCondition16Firefox[] = "Condition16SSLFirefox";
+static const char kCondition17FancyFirefox[] = "Condition17SSLFancyFirefox";
+static const char kCondition18NoImages[] = "Condition18SSLNoImages";
+static const char kCondition19Policeman[] = "Condition19SSLPoliceman";
+static const char kCondition20Stoplight[] = "Condition20SSLStoplight";
+static const char kCondition21BadGuy[] = "Condition21SSLBadGuy";
+
} // namespace
// Note that we always create a navigation entry with SSL errors.
@@ -163,6 +180,11 @@ SSLBlockingPage::SSLBlockingPage(
request_url_(request_url),
overridable_(overridable),
strict_enforcement_(strict_enforcement) {
+
+ // Only assign to a group if the warning can be clicked through.
+ if (overridable_ && !strict_enforcement_)
+ trialCondition_ = base::FieldTrialList::FindFullName("InterstitialSSL");
jwd 2013/05/02 19:58:35 I want to make sure you're aware that one the grou
felt 2013/05/02 22:15:20 I designed the histogram to differentiate between
+
RecordSSLBlockingPageEventStats(SHOW_ALL);
if (overridable_ && !strict_enforcement_)
RecordSSLBlockingPageEventStats(SHOW_OVERRIDABLE);
@@ -175,6 +197,9 @@ SSLBlockingPage::SSLBlockingPage(
SSLBlockingPage::~SSLBlockingPage() {
if (!callback_.is_null()) {
+ RecordSSLBlockingPageTimeStats(false, cert_error_,
+ overridable_ && !strict_enforcement_, display_start_time_,
+ base::TimeTicks::Now());
// The page is closed without the user having chosen what to do, default to
// deny.
NotifyDenyCertificate();
@@ -188,6 +213,7 @@ std::string SSLBlockingPage::GetHTMLContents() {
SSLErrorInfo::NetErrorToErrorType(cert_error_), ssl_info_.cert,
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",
@@ -197,7 +223,6 @@ std::string SSLBlockingPage::GetHTMLContents() {
strings.SetString("exit",
l10n_util::GetStringUTF16(IDS_SSL_BLOCKING_PAGE_EXIT));
- int resource_id = IDR_SSL_ROAD_BLOCK_HTML;
if (overridable_ && !strict_enforcement_) {
strings.SetString("title",
l10n_util::GetStringUTF16(IDS_SSL_BLOCKING_PAGE_TITLE));
@@ -225,6 +250,29 @@ std::string SSLBlockingPage::GetHTMLContents() {
strings.SetString("textdirection", base::i18n::IsRTL() ? "rtl" : "ltr");
+ // Set up the Finch trial layouts.
+ strings.SetString("trialType", trialCondition_);
+ if (trialCondition_ == kCondition16Firefox ||
+ trialCondition_ == kCondition17FancyFirefox) {
+ strings.SetString("domain", request_url_.host());
+ std::string font_family = l10n_util::GetStringUTF8(IDS_WEB_FONT_FAMILY);
+#if defined(OS_WIN)
+ if (base::win::GetVersion() < base::win::VERSION_VISTA) {
+ font_family = l10n_util::GetStringUTF8(IDS_WEB_FONT_FAMILY_XP);
+ }
+#endif
+#if defined(TOOLKIT_GTK)
+ font_family = ui::ResourceBundle::GetSharedInstance().GetFont(
+ ui::ResourceBundle::BaseFont).GetFontName() + ", " + font_family;
+#endif
+ strings.SetString("fontfamily", font_family);
+ if (trialCondition_ == kCondition16Firefox) {
+ resource_id = IDR_SSL_FIREFOX_HTML;
+ } else if (trialCondition_ == kCondition17FancyFirefox) {
+ resource_id = IDR_SSL_FANCY_FIREFOX_HTML;
+ }
+ }
+
base::StringPiece html(
ResourceBundle::GetSharedInstance().GetRawDataResource(
resource_id));
@@ -260,6 +308,9 @@ void SSLBlockingPage::CommandReceived(const std::string& command) {
display_start_time_ = base::TimeTicks::Now();
} else if (cmd == CMD_MORE) {
RecordSSLBlockingPageEventStats(MORE);
+ } else if (cmd == CMD_SHOW_UNDERSTAND) {
+ // Used in the Finch experiment.
+ RecordSSLBlockingPageEventStats(SHOW_UNDERSTAND);
}
}

Powered by Google App Engine
This is Rietveld 408576698