Index: chrome/browser/ssl/security_state_tab_helper_unittest.cc |
diff --git a/chrome/browser/ssl/security_state_tab_helper_unittest.cc b/chrome/browser/ssl/security_state_tab_helper_unittest.cc |
index 14cbc89bcdcb5b49c67855a06f4a936bcb775ec2..8d0b4d0e2a649346ff38d2289073bc2cab99ded9 100644 |
--- a/chrome/browser/ssl/security_state_tab_helper_unittest.cc |
+++ b/chrome/browser/ssl/security_state_tab_helper_unittest.cc |
@@ -12,6 +12,11 @@ |
namespace { |
+const char kHTTPBadNavigationHistogram[] = |
+ "Security.HTTPBad.NavigationStartedAfterUserWarnedAboutSensitiveInput"; |
+const char kHTTPBadWebContentsDestroyedHistogram[] = |
+ "Security.HTTPBad.WebContentsDestroyedAfterUserWarnedAboutSensitiveInput"; |
+ |
class SecurityStateTabHelperHistogramTest |
: public ChromeRenderViewHostTestHarness, |
public testing::WithParamInterface<bool> { |
@@ -24,11 +29,11 @@ class SecurityStateTabHelperHistogramTest |
SecurityStateTabHelper::CreateForWebContents(web_contents()); |
helper_ = SecurityStateTabHelper::FromWebContents(web_contents()); |
- navigate_to_http(); |
+ NavigateToHTTP(); |
} |
protected: |
- void signal_sensitive_input() { |
+ void SignalSensitiveInput() { |
if (GetParam()) |
web_contents()->OnPasswordInputShownOnHttp(); |
else |
@@ -36,16 +41,16 @@ class SecurityStateTabHelperHistogramTest |
helper_->VisibleSecurityStateChanged(); |
} |
- const std::string histogram_name() { |
+ const std::string HistogramName() { |
if (GetParam()) |
return "Security.HTTPBad.UserWarnedAboutSensitiveInput.Password"; |
else |
return "Security.HTTPBad.UserWarnedAboutSensitiveInput.CreditCard"; |
} |
- void navigate_to_http() { NavigateAndCommit(GURL("http://example.test")); } |
+ void NavigateToHTTP() { NavigateAndCommit(GURL("http://example.test")); } |
- void navigate_to_different_http_page() { |
+ void NavigateToDifferentHTTPPage() { |
NavigateAndCommit(GURL("http://example2.test")); |
} |
@@ -54,6 +59,84 @@ class SecurityStateTabHelperHistogramTest |
DISALLOW_COPY_AND_ASSIGN(SecurityStateTabHelperHistogramTest); |
}; |
+// Tests that an UMA histogram is recorded after setting the security |
+// level to HTTP_SHOW_WARNING and navigating away. |
+TEST_P(SecurityStateTabHelperHistogramTest, |
+ HTTPOmniboxWarningNavigationHistogram) { |
+ base::CommandLine::ForCurrentProcess()->AppendSwitchASCII( |
+ security_state::switches::kMarkHttpAs, |
+ security_state::switches::kMarkHttpWithPasswordsOrCcWithChip); |
+ |
+ base::HistogramTester histograms; |
+ SignalSensitiveInput(); |
+ // Make sure that if the omnibox warning gets dynamically hidden, the |
+ // histogram still gets recorded. |
+ NavigateToDifferentHTTPPage(); |
+ if (GetParam()) |
+ web_contents()->OnAllPasswordInputsHiddenOnHttp(); |
+ // Destroy the WebContents to simulate the tab being closed after a |
+ // navigation. |
+ SetContents(nullptr); |
+ histograms.ExpectTotalCount(kHTTPBadNavigationHistogram, 1); |
+ histograms.ExpectTotalCount(kHTTPBadWebContentsDestroyedHistogram, 0); |
+} |
+ |
+// Tests that an UMA histogram is recorded after showing a console |
+// warning for a sensitive input on HTTP and navigating away. |
+TEST_P(SecurityStateTabHelperHistogramTest, |
+ HTTPConsoleWarningNavigationHistogram) { |
+ base::CommandLine::ForCurrentProcess()->AppendSwitchASCII( |
+ security_state::switches::kMarkHttpAs, |
+ security_state::switches::kMarkHttpAsNeutral); |
+ |
+ // Same as HTTPOmniboxWarningNavigationHistogram, but ensuring that |
+ // the histogram gets recorded even if the command-line switch to show |
+ // the omnibox warning is not set. |
+ base::HistogramTester histograms; |
+ SignalSensitiveInput(); |
+ NavigateToDifferentHTTPPage(); |
+ // Destroy the WebContents to simulate the tab being closed after a |
+ // navigation. |
+ SetContents(nullptr); |
+ histograms.ExpectTotalCount(kHTTPBadNavigationHistogram, 1); |
+ histograms.ExpectTotalCount(kHTTPBadWebContentsDestroyedHistogram, 0); |
+} |
+ |
+// Tests that an UMA histogram is recorded after setting the security |
+// level to HTTP_SHOW_WARNING and closing the tab. |
+TEST_P(SecurityStateTabHelperHistogramTest, |
+ HTTPOmniboxWarningTabClosedHistogram) { |
+ base::CommandLine::ForCurrentProcess()->AppendSwitchASCII( |
+ security_state::switches::kMarkHttpAs, |
+ security_state::switches::kMarkHttpWithPasswordsOrCcWithChip); |
+ |
+ base::HistogramTester histograms; |
+ SignalSensitiveInput(); |
+ // Destroy the WebContents to simulate the tab being closed. |
+ SetContents(nullptr); |
+ histograms.ExpectTotalCount(kHTTPBadNavigationHistogram, 0); |
+ histograms.ExpectTotalCount(kHTTPBadWebContentsDestroyedHistogram, 1); |
+} |
+ |
+// Tests that an UMA histogram is recorded after showing a console |
+// warning for a sensitive input on HTTP and closing the tab. |
+TEST_P(SecurityStateTabHelperHistogramTest, |
+ HTTPConsoleWarningTabClosedHistogram) { |
+ base::CommandLine::ForCurrentProcess()->AppendSwitchASCII( |
+ security_state::switches::kMarkHttpAs, |
+ security_state::switches::kMarkHttpAsNeutral); |
+ |
+ // Same as HTTPOmniboxWarningTabClosedHistogram, but ensuring that the |
+ // histogram gets recorded even if the command-line switch to show the |
+ // omnibox warning is not set. |
+ base::HistogramTester histograms; |
+ SignalSensitiveInput(); |
+ // Destroy the WebContents to simulate the tab being closed. |
+ SetContents(nullptr); |
+ histograms.ExpectTotalCount(kHTTPBadNavigationHistogram, 0); |
+ histograms.ExpectTotalCount(kHTTPBadWebContentsDestroyedHistogram, 1); |
+} |
+ |
// Tests that UMA logs the omnibox warning when security level is |
// HTTP_SHOW_WARNING. |
TEST_P(SecurityStateTabHelperHistogramTest, HTTPOmniboxWarningHistogram) { |
@@ -63,18 +146,18 @@ TEST_P(SecurityStateTabHelperHistogramTest, HTTPOmniboxWarningHistogram) { |
security_state::switches::kMarkHttpWithPasswordsOrCcWithChip); |
base::HistogramTester histograms; |
- signal_sensitive_input(); |
- histograms.ExpectUniqueSample(histogram_name(), true, 1); |
+ SignalSensitiveInput(); |
+ histograms.ExpectUniqueSample(HistogramName(), true, 1); |
// Fire again and ensure no sample is recorded. |
- signal_sensitive_input(); |
- histograms.ExpectUniqueSample(histogram_name(), true, 1); |
+ SignalSensitiveInput(); |
+ histograms.ExpectUniqueSample(HistogramName(), true, 1); |
// Navigate to a new page and ensure a sample is recorded. |
- navigate_to_different_http_page(); |
- histograms.ExpectUniqueSample(histogram_name(), true, 1); |
- signal_sensitive_input(); |
- histograms.ExpectUniqueSample(histogram_name(), true, 2); |
+ NavigateToDifferentHTTPPage(); |
+ histograms.ExpectUniqueSample(HistogramName(), true, 1); |
+ SignalSensitiveInput(); |
+ histograms.ExpectUniqueSample(HistogramName(), true, 2); |
} |
// Tests that UMA logs the console warning when security level is NONE. |
@@ -85,18 +168,18 @@ TEST_P(SecurityStateTabHelperHistogramTest, HTTPConsoleWarningHistogram) { |
security_state::switches::kMarkHttpAsNeutral); |
base::HistogramTester histograms; |
- signal_sensitive_input(); |
- histograms.ExpectUniqueSample(histogram_name(), false, 1); |
+ SignalSensitiveInput(); |
+ histograms.ExpectUniqueSample(HistogramName(), false, 1); |
// Fire again and ensure no sample is recorded. |
- signal_sensitive_input(); |
- histograms.ExpectUniqueSample(histogram_name(), false, 1); |
+ SignalSensitiveInput(); |
+ histograms.ExpectUniqueSample(HistogramName(), false, 1); |
// Navigate to a new page and ensure a sample is recorded. |
- navigate_to_different_http_page(); |
- histograms.ExpectUniqueSample(histogram_name(), false, 1); |
- signal_sensitive_input(); |
- histograms.ExpectUniqueSample(histogram_name(), false, 2); |
+ NavigateToDifferentHTTPPage(); |
+ histograms.ExpectUniqueSample(HistogramName(), false, 1); |
+ SignalSensitiveInput(); |
+ histograms.ExpectUniqueSample(HistogramName(), false, 2); |
} |
INSTANTIATE_TEST_CASE_P(SecurityStateTabHelperHistogramTest, |