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

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

Issue 450833002: Add additional UMA stats for remembering certificate decisions. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fixes from felt comments Created 6 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 d9cb0020a77f6c680d832d172f32f0305bf66526..896f50968fd1483291b4ba4ee4e0834c4c12dc2f 100644
--- a/chrome/browser/ssl/ssl_blocking_page.cc
+++ b/chrome/browser/ssl/ssl_blocking_page.cc
@@ -72,6 +72,11 @@ using content::NavigationEntry;
namespace {
+const char kExpirationAndDecisionNonoverridableHistogram[] =
+ "interstitial.ssl.expiration_and_decision.nonoverridable";
+const char kExpirationAndDecisionOverridableHistogram[] =
+ "interstitial.ssl.expiration_and_decision.overridable";
+
// Events for UMA. Do not reorder or change!
enum SSLBlockingPageEvent {
SHOW_ALL,
@@ -102,24 +107,59 @@ enum SSLBlockingPageEvent {
UNUSED_BLOCKING_PAGE_EVENT,
};
+// Events for UMA. Do not reorder or change!
+enum SSLExpirationAndDecision {
+ EXPIRED_AND_PROCEED,
+ EXPIRED_AND_DO_NOT_PROCEED,
+ NOT_EXPIRED_AND_PROCEED,
+ NOT_EXPIRED_AND_DO_NOT_PROCEED,
+ END_OF_SSL_EXPIRATION_AND_DECISION,
+};
+
void RecordSSLBlockingPageEventStats(SSLBlockingPageEvent event) {
UMA_HISTOGRAM_ENUMERATION("interstitial.ssl",
event,
UNUSED_BLOCKING_PAGE_EVENT);
}
-void RecordSSLBlockingPageDetailedStats(
- bool proceed,
- int cert_error,
- bool overridable,
- bool internal,
- int num_visits,
- bool captive_portal_detection_enabled,
- bool captive_portal_probe_completed,
- bool captive_portal_no_response,
- bool captive_portal_detected) {
+void RecordSSLExpirationPageEventState(bool expired_but_previously_allowed,
+ bool proceed,
+ bool overridable) {
+ const char *histogram;
+ if (overridable)
+ histogram = kExpirationAndDecisionOverridableHistogram;
+ else
+ histogram = kExpirationAndDecisionNonoverridableHistogram;
+
+ SSLExpirationAndDecision event;
+ if (expired_but_previously_allowed && proceed)
+ event = EXPIRED_AND_PROCEED;
+ else if (expired_but_previously_allowed && !proceed)
+ event = EXPIRED_AND_DO_NOT_PROCEED;
+ else if (!expired_but_previously_allowed && proceed)
+ event = NOT_EXPIRED_AND_PROCEED;
+ else
+ event = NOT_EXPIRED_AND_DO_NOT_PROCEED;
+
+ UMA_HISTOGRAM_ENUMERATION(histogram,
felt 2014/08/08 17:55:33 Although this might compile, I don't think it will
jww 2014/08/12 04:51:02 Done.
+ event,
+ END_OF_SSL_EXPIRATION_AND_DECISION);
+}
+
+void RecordSSLBlockingPageDetailedStats(bool proceed,
+ int cert_error,
+ bool overridable,
+ bool internal,
+ int num_visits,
+ bool captive_portal_detection_enabled,
+ bool captive_portal_probe_completed,
+ bool captive_portal_no_response,
+ bool captive_portal_detected,
+ bool expired_but_previously_allowed) {
UMA_HISTOGRAM_ENUMERATION("interstitial.ssl_error_type",
SSLErrorInfo::NetErrorToErrorType(cert_error), SSLErrorInfo::END_OF_ENUM);
+ RecordSSLExpirationPageEventState(
+ expired_but_previously_allowed, proceed, overridable);
#if defined(ENABLE_CAPTIVE_PORTAL_DETECTION)
if (captive_portal_detection_enabled)
RecordSSLBlockingPageEventStats(
@@ -269,14 +309,14 @@ void LaunchDateAndTimeSettings() {
// Note that we always create a navigation entry with SSL errors.
// No error happening loading a sub-resource triggers an interstitial so far.
-SSLBlockingPage::SSLBlockingPage(
- content::WebContents* web_contents,
- int cert_error,
- const net::SSLInfo& ssl_info,
- const GURL& request_url,
- bool overridable,
- bool strict_enforcement,
- const base::Callback<void(bool)>& callback)
+SSLBlockingPage::SSLBlockingPage(content::WebContents* web_contents,
+ int cert_error,
+ const net::SSLInfo& ssl_info,
+ const GURL& request_url,
+ bool overridable,
+ bool strict_enforcement,
+ bool expired_but_previously_allowed,
+ const base::Callback<void(bool)>& callback)
: callback_(callback),
web_contents_(web_contents),
cert_error_(cert_error),
@@ -290,7 +330,8 @@ SSLBlockingPage::SSLBlockingPage(
captive_portal_detection_enabled_(false),
captive_portal_probe_completed_(false),
captive_portal_no_response_(false),
- captive_portal_detected_(false) {
+ captive_portal_detected_(false),
+ expired_but_previously_allowed_(expired_but_previously_allowed) {
Profile* profile = Profile::FromBrowserContext(
web_contents->GetBrowserContext());
// For UMA stats.
@@ -341,7 +382,8 @@ SSLBlockingPage::~SSLBlockingPage() {
captive_portal_detection_enabled_,
captive_portal_probe_completed_,
captive_portal_no_response_,
- captive_portal_detected_);
+ captive_portal_detected_,
+ expired_but_previously_allowed_);
// The page is closed without the user having chosen what to do, default to
// deny.
NotifyDenyCertificate();
@@ -523,7 +565,8 @@ void SSLBlockingPage::OnProceed() {
captive_portal_detection_enabled_,
captive_portal_probe_completed_,
captive_portal_no_response_,
- captive_portal_detected_);
+ captive_portal_detected_,
+ expired_but_previously_allowed_);
// Accepting the certificate resumes the loading of the page.
NotifyAllowCertificate();
}
@@ -537,7 +580,8 @@ void SSLBlockingPage::OnDontProceed() {
captive_portal_detection_enabled_,
captive_portal_probe_completed_,
captive_portal_no_response_,
- captive_portal_detected_);
+ captive_portal_detected_,
+ expired_but_previously_allowed_);
NotifyDenyCertificate();
}

Powered by Google App Engine
This is Rietveld 408576698