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

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

Issue 2499243002: Record time to navigation/tab-closed after HTTP-bad warning (Closed)
Patch Set: fix test Created 4 years, 1 month 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/chrome_security_state_model_client.cc
diff --git a/chrome/browser/ssl/chrome_security_state_model_client.cc b/chrome/browser/ssl/chrome_security_state_model_client.cc
index a5072e614f8558f91977d838cb5506b2e161eb7b..4ce2a90ad4aff39cf94f9346dfb9f842e3b80aa2 100644
--- a/chrome/browser/ssl/chrome_security_state_model_client.cc
+++ b/chrome/browser/ssl/chrome_security_state_model_client.cc
@@ -11,6 +11,7 @@
#include "base/metrics/histogram_macros.h"
#include "base/strings/string16.h"
#include "base/strings/utf_string_conversions.h"
+#include "base/time/time.h"
#include "build/build_config.h"
#include "chrome/browser/browser_process.h"
#include "chrome/browser/chromeos/policy/policy_cert_service.h"
@@ -366,6 +367,10 @@ void ChromeSecurityStateModelClient::VisibleSecurityStateChanged() {
return;
}
+ if (time_of_http_warning_on_current_navigation_.is_null()) {
+ time_of_http_warning_on_current_navigation_ = base::Time::Now();
elawrence 2016/11/15 16:29:52 Do we really want to clear this? If a warning flas
estark 2016/11/16 05:16:13 First of all, I remember being very convinced that
+ }
+
std::string warning;
bool warning_is_user_visible = false;
switch (security_info.security_level) {
@@ -403,6 +408,23 @@ void ChromeSecurityStateModelClient::VisibleSecurityStateChanged() {
}
}
+void ChromeSecurityStateModelClient::DidStartNavigation(
+ content::NavigationHandle* navigation_handle) {
+ if (navigation_handle->IsInMainFrame() && !navigation_handle->IsSamePage()) {
+ if (time_of_http_warning_on_current_navigation_.is_null()) {
+ return;
elawrence 2016/11/15 16:29:52 Is if (time_of_http_warning_on_current_navigatio
estark 2016/11/16 05:16:13 Done.
+ }
+ // Record the time delta between when an HTTP warning was shown and
elawrence 2016/11/15 16:29:52 I love comments. I worry that explaining what's ha
estark 2016/11/16 05:16:13 Done.
+ // when a navigation began. A navigation here only counts if it is a
+ // main-frame, not-same-page navigation, since it aims to measure
+ // how quickly a user leaves a site after seeing the HTTP warning.
+ UMA_HISTOGRAM_LONG_TIMES(
+ "Security.HTTPBad.NavigationStartedAfterUserWarnedAboutSensitiveInput",
+ base::Time::Now() - time_of_http_warning_on_current_navigation_);
+ time_of_http_warning_on_current_navigation_ = base::Time();
elawrence 2016/11/15 16:29:52 I don't understand why we reset this here?
estark 2016/11/16 05:16:13 I find it easiest to reason about these histograms
+ }
+}
+
void ChromeSecurityStateModelClient::DidFinishNavigation(
content::NavigationHandle* navigation_handle) {
if (navigation_handle->IsInMainFrame() && !navigation_handle->IsSamePage()) {
@@ -412,6 +434,20 @@ void ChromeSecurityStateModelClient::DidFinishNavigation(
}
}
+void ChromeSecurityStateModelClient::WebContentsDestroyed() {
elawrence 2016/11/15 16:29:53 This event only fires for the top-level frame, rig
estark 2016/11/16 05:16:13 Yeah, a WebContents usually is 1:1 with a tab.
+ if (time_of_http_warning_on_current_navigation_.is_null()) {
+ return;
+ }
+ // Record the time delta between when an HTTP warning was shown and
+ // when the WebContents was destroyed. This histogram will only be
+ // recorded if the WebContents is destroyed before another
+ // navigation begins.
+ UMA_HISTOGRAM_LONG_TIMES(
elawrence 2016/11/15 16:29:52 "This histogram will only be recorded if the WebCo
estark 2016/11/16 05:16:13 If a navigation has begun before the WebContents i
+ "Security.HTTPBad.WebContentsDestroyedAfterUserWarnedAboutSensitiveInput",
+ base::Time::Now() - time_of_http_warning_on_current_navigation_);
+ time_of_http_warning_on_current_navigation_ = base::Time();
elawrence 2016/11/15 16:29:52 I don't understand why we reset this here?
estark 2016/11/16 05:16:13 I guess this is unnecessary, removed.
+}
+
bool ChromeSecurityStateModelClient::UsedPolicyInstalledCertificate() {
#if defined(OS_CHROMEOS)
policy::PolicyCertService* service =

Powered by Google App Engine
This is Rietveld 408576698