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

Side by Side Diff: chrome/browser/ssl/security_state_tab_helper_unittest.cc

Issue 2499243002: Record time to navigation/tab-closed after HTTP-bad warning (Closed)
Patch Set: elawrence comments 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 unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/ssl/security_state_tab_helper.h" 5 #include "chrome/browser/ssl/security_state_tab_helper.h"
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/test/histogram_tester.h" 8 #include "base/test/histogram_tester.h"
9 #include "chrome/test/base/chrome_render_view_host_test_harness.h" 9 #include "chrome/test/base/chrome_render_view_host_test_harness.h"
10 #include "components/security_state/core/switches.h" 10 #include "components/security_state/core/switches.h"
11 #include "testing/gtest/include/gtest/gtest.h" 11 #include "testing/gtest/include/gtest/gtest.h"
12 12
13 namespace { 13 namespace {
14 14
15 const char kHTTPBadNavigationHistogram[] =
16 "Security.HTTPBad.NavigationStartedAfterUserWarnedAboutSensitiveInput";
17 const char kHTTPBadWebContentsDestroyedHistogram[] =
18 "Security.HTTPBad.WebContentsDestroyedAfterUserWarnedAboutSensitiveInput";
19
15 class SecurityStateTabHelperHistogramTest 20 class SecurityStateTabHelperHistogramTest
16 : public ChromeRenderViewHostTestHarness, 21 : public ChromeRenderViewHostTestHarness,
17 public testing::WithParamInterface<bool> { 22 public testing::WithParamInterface<bool> {
18 public: 23 public:
19 SecurityStateTabHelperHistogramTest() : helper_(nullptr) {} 24 SecurityStateTabHelperHistogramTest() : helper_(nullptr) {}
20 ~SecurityStateTabHelperHistogramTest() override {} 25 ~SecurityStateTabHelperHistogramTest() override {}
21 26
22 void SetUp() override { 27 void SetUp() override {
23 ChromeRenderViewHostTestHarness::SetUp(); 28 ChromeRenderViewHostTestHarness::SetUp();
24 29
25 SecurityStateTabHelper::CreateForWebContents(web_contents()); 30 SecurityStateTabHelper::CreateForWebContents(web_contents());
26 helper_ = SecurityStateTabHelper::FromWebContents(web_contents()); 31 helper_ = SecurityStateTabHelper::FromWebContents(web_contents());
27 navigate_to_http(); 32 NavigateToHTTP();
28 } 33 }
29 34
30 protected: 35 protected:
31 void signal_sensitive_input() { 36 void SignalSensitiveInput() {
32 if (GetParam()) 37 if (GetParam())
33 web_contents()->OnPasswordInputShownOnHttp(); 38 web_contents()->OnPasswordInputShownOnHttp();
34 else 39 else
35 web_contents()->OnCreditCardInputShownOnHttp(); 40 web_contents()->OnCreditCardInputShownOnHttp();
36 helper_->VisibleSecurityStateChanged(); 41 helper_->VisibleSecurityStateChanged();
37 } 42 }
38 43
39 const std::string histogram_name() { 44 const std::string HistogramName() {
40 if (GetParam()) 45 if (GetParam())
41 return "Security.HTTPBad.UserWarnedAboutSensitiveInput.Password"; 46 return "Security.HTTPBad.UserWarnedAboutSensitiveInput.Password";
42 else 47 else
43 return "Security.HTTPBad.UserWarnedAboutSensitiveInput.CreditCard"; 48 return "Security.HTTPBad.UserWarnedAboutSensitiveInput.CreditCard";
44 } 49 }
45 50
46 void navigate_to_http() { NavigateAndCommit(GURL("http://example.test")); } 51 void NavigateToHTTP() { NavigateAndCommit(GURL("http://example.test")); }
47 52
48 void navigate_to_different_http_page() { 53 void NavigateToDifferentHTTPPage() {
49 NavigateAndCommit(GURL("http://example2.test")); 54 NavigateAndCommit(GURL("http://example2.test"));
50 } 55 }
51 56
52 private: 57 private:
53 SecurityStateTabHelper* helper_; 58 SecurityStateTabHelper* helper_;
54 DISALLOW_COPY_AND_ASSIGN(SecurityStateTabHelperHistogramTest); 59 DISALLOW_COPY_AND_ASSIGN(SecurityStateTabHelperHistogramTest);
55 }; 60 };
56 61
62 // Tests that an UMA histogram is recorded after setting the security
63 // level to HTTP_SHOW_WARNING and navigating away.
64 TEST_P(SecurityStateTabHelperHistogramTest,
65 HTTPOmniboxWarningNavigationHistogram) {
66 base::CommandLine::ForCurrentProcess()->AppendSwitchASCII(
67 security_state::switches::kMarkHttpAs,
68 security_state::switches::kMarkHttpWithPasswordsOrCcWithChip);
69
70 base::HistogramTester histograms;
71 SignalSensitiveInput();
72 // Make sure that if the omnibox warning gets dynamically hidden, the
73 // histogram still gets recorded.
74 NavigateToDifferentHTTPPage();
75 if (GetParam())
76 web_contents()->OnAllPasswordInputsHiddenOnHttp();
77 // Destroy the WebContents to simulate the tab being closed after a
78 // navigation.
79 SetContents(nullptr);
80 histograms.ExpectTotalCount(kHTTPBadNavigationHistogram, 1);
81 histograms.ExpectTotalCount(kHTTPBadWebContentsDestroyedHistogram, 0);
82 }
83
84 // Tests that an UMA histogram is recorded after showing a console
85 // warning for a sensitive input on HTTP and navigating away.
86 TEST_P(SecurityStateTabHelperHistogramTest,
87 HTTPConsoleWarningNavigationHistogram) {
88 base::CommandLine::ForCurrentProcess()->AppendSwitchASCII(
89 security_state::switches::kMarkHttpAs,
90 security_state::switches::kMarkHttpAsNeutral);
91
92 // Same as HTTPOmniboxWarningNavigationHistogram, but ensuring that
93 // the histogram gets recorded even if the command-line switch to show
94 // the omnibox warning is not set.
95 base::HistogramTester histograms;
96 SignalSensitiveInput();
97 NavigateToDifferentHTTPPage();
98 // Destroy the WebContents to simulate the tab being closed after a
99 // navigation.
100 SetContents(nullptr);
101 histograms.ExpectTotalCount(kHTTPBadNavigationHistogram, 1);
102 histograms.ExpectTotalCount(kHTTPBadWebContentsDestroyedHistogram, 0);
103 }
104
105 // Tests that an UMA histogram is recorded after setting the security
106 // level to HTTP_SHOW_WARNING and closing the tab.
107 TEST_P(SecurityStateTabHelperHistogramTest,
108 HTTPOmniboxWarningTabClosedHistogram) {
109 base::CommandLine::ForCurrentProcess()->AppendSwitchASCII(
110 security_state::switches::kMarkHttpAs,
111 security_state::switches::kMarkHttpWithPasswordsOrCcWithChip);
112
113 base::HistogramTester histograms;
114 SignalSensitiveInput();
115 // Destroy the WebContents to simulate the tab being closed.
116 SetContents(nullptr);
117 histograms.ExpectTotalCount(kHTTPBadNavigationHistogram, 0);
118 histograms.ExpectTotalCount(kHTTPBadWebContentsDestroyedHistogram, 1);
119 }
120
121 // Tests that an UMA histogram is recorded after showing a console
122 // warning for a sensitive input on HTTP and closing the tab.
123 TEST_P(SecurityStateTabHelperHistogramTest,
124 HTTPConsoleWarningTabClosedHistogram) {
125 base::CommandLine::ForCurrentProcess()->AppendSwitchASCII(
126 security_state::switches::kMarkHttpAs,
127 security_state::switches::kMarkHttpAsNeutral);
128
129 // Same as HTTPOmniboxWarningTabClosedHistogram, but ensuring that the
130 // histogram gets recorded even if the command-line switch to show the
131 // omnibox warning is not set.
132 base::HistogramTester histograms;
133 SignalSensitiveInput();
134 // Destroy the WebContents to simulate the tab being closed.
135 SetContents(nullptr);
136 histograms.ExpectTotalCount(kHTTPBadNavigationHistogram, 0);
137 histograms.ExpectTotalCount(kHTTPBadWebContentsDestroyedHistogram, 1);
138 }
139
57 // Tests that UMA logs the omnibox warning when security level is 140 // Tests that UMA logs the omnibox warning when security level is
58 // HTTP_SHOW_WARNING. 141 // HTTP_SHOW_WARNING.
59 TEST_P(SecurityStateTabHelperHistogramTest, HTTPOmniboxWarningHistogram) { 142 TEST_P(SecurityStateTabHelperHistogramTest, HTTPOmniboxWarningHistogram) {
60 // Show Warning Chip. 143 // Show Warning Chip.
61 base::CommandLine::ForCurrentProcess()->AppendSwitchASCII( 144 base::CommandLine::ForCurrentProcess()->AppendSwitchASCII(
62 security_state::switches::kMarkHttpAs, 145 security_state::switches::kMarkHttpAs,
63 security_state::switches::kMarkHttpWithPasswordsOrCcWithChip); 146 security_state::switches::kMarkHttpWithPasswordsOrCcWithChip);
64 147
65 base::HistogramTester histograms; 148 base::HistogramTester histograms;
66 signal_sensitive_input(); 149 SignalSensitiveInput();
67 histograms.ExpectUniqueSample(histogram_name(), true, 1); 150 histograms.ExpectUniqueSample(HistogramName(), true, 1);
68 151
69 // Fire again and ensure no sample is recorded. 152 // Fire again and ensure no sample is recorded.
70 signal_sensitive_input(); 153 SignalSensitiveInput();
71 histograms.ExpectUniqueSample(histogram_name(), true, 1); 154 histograms.ExpectUniqueSample(HistogramName(), true, 1);
72 155
73 // Navigate to a new page and ensure a sample is recorded. 156 // Navigate to a new page and ensure a sample is recorded.
74 navigate_to_different_http_page(); 157 NavigateToDifferentHTTPPage();
75 histograms.ExpectUniqueSample(histogram_name(), true, 1); 158 histograms.ExpectUniqueSample(HistogramName(), true, 1);
76 signal_sensitive_input(); 159 SignalSensitiveInput();
77 histograms.ExpectUniqueSample(histogram_name(), true, 2); 160 histograms.ExpectUniqueSample(HistogramName(), true, 2);
78 } 161 }
79 162
80 // Tests that UMA logs the console warning when security level is NONE. 163 // Tests that UMA logs the console warning when security level is NONE.
81 TEST_P(SecurityStateTabHelperHistogramTest, HTTPConsoleWarningHistogram) { 164 TEST_P(SecurityStateTabHelperHistogramTest, HTTPConsoleWarningHistogram) {
82 // Show Neutral for HTTP 165 // Show Neutral for HTTP
83 base::CommandLine::ForCurrentProcess()->AppendSwitchASCII( 166 base::CommandLine::ForCurrentProcess()->AppendSwitchASCII(
84 security_state::switches::kMarkHttpAs, 167 security_state::switches::kMarkHttpAs,
85 security_state::switches::kMarkHttpAsNeutral); 168 security_state::switches::kMarkHttpAsNeutral);
86 169
87 base::HistogramTester histograms; 170 base::HistogramTester histograms;
88 signal_sensitive_input(); 171 SignalSensitiveInput();
89 histograms.ExpectUniqueSample(histogram_name(), false, 1); 172 histograms.ExpectUniqueSample(HistogramName(), false, 1);
90 173
91 // Fire again and ensure no sample is recorded. 174 // Fire again and ensure no sample is recorded.
92 signal_sensitive_input(); 175 SignalSensitiveInput();
93 histograms.ExpectUniqueSample(histogram_name(), false, 1); 176 histograms.ExpectUniqueSample(HistogramName(), false, 1);
94 177
95 // Navigate to a new page and ensure a sample is recorded. 178 // Navigate to a new page and ensure a sample is recorded.
96 navigate_to_different_http_page(); 179 NavigateToDifferentHTTPPage();
97 histograms.ExpectUniqueSample(histogram_name(), false, 1); 180 histograms.ExpectUniqueSample(HistogramName(), false, 1);
98 signal_sensitive_input(); 181 SignalSensitiveInput();
99 histograms.ExpectUniqueSample(histogram_name(), false, 2); 182 histograms.ExpectUniqueSample(HistogramName(), false, 2);
100 } 183 }
101 184
102 INSTANTIATE_TEST_CASE_P(SecurityStateTabHelperHistogramTest, 185 INSTANTIATE_TEST_CASE_P(SecurityStateTabHelperHistogramTest,
103 SecurityStateTabHelperHistogramTest, 186 SecurityStateTabHelperHistogramTest,
104 // Here 'true' to test password field triggered 187 // Here 'true' to test password field triggered
105 // histogram and 'false' to test credit card field. 188 // histogram and 'false' to test credit card field.
106 testing::Bool()); 189 testing::Bool());
107 190
108 } // namespace 191 } // namespace
OLDNEW
« no previous file with comments | « chrome/browser/ssl/security_state_tab_helper.cc ('k') | tools/metrics/histograms/histograms.xml » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698