OLD | NEW |
---|---|
(Empty) | |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 #include "base/metrics/histogram_samples.h" | |
6 #include "base/prefs/pref_service.h" | |
7 #include "base/test/statistics_delta_reader.h" | |
8 #include "chrome/browser/ui/passwords/manage_passwords_bubble.h" | |
9 #include "chrome/browser/ui/passwords/manage_passwords_bubble_model.h" | |
10 #include "chrome/browser/ui/passwords/test_manage_passwords_bubble_ui_controller .h" | |
11 #include "chrome/test/base/testing_profile.h" | |
12 #include "components/password_manager/core/browser/password_manager_metrics_util .h" | |
13 #include "content/public/test/test_browser_thread_bundle.h" | |
14 #include "content/public/test/web_contents_tester.h" | |
15 #include "testing/gtest/include/gtest/gtest.h" | |
16 | |
17 const char kUIDismissalReasonMetric[] = "PasswordManager.UIDismissalReason"; | |
18 | |
19 class ManagePasswordsBubbleModelTest : public testing::Test { | |
20 public: | |
21 ManagePasswordsBubbleModelTest() | |
22 : test_web_contents_( | |
23 content::WebContentsTester::CreateTestWebContents(&profile_, | |
24 NULL)) {} | |
25 | |
26 virtual void SetUp() OVERRIDE { | |
27 // Create the test UIController here so that it's bound to | |
28 // |test_web_contents_| and therefore accessible to the model. | |
29 new TestManagePasswordsBubbleUIController(test_web_contents_.get()); | |
30 | |
31 model_.reset(new ManagePasswordsBubbleModel(test_web_contents_.get())); | |
32 } | |
33 | |
34 virtual void TearDown() OVERRIDE { model_.reset(); } | |
35 | |
36 void PretendPasswordWaiting() { | |
37 model_->set_manage_passwords_bubble_state( | |
38 ManagePasswordsBubbleModel::PASSWORD_TO_BE_SAVED); | |
39 model_->OnBubbleShown(ManagePasswordsBubble::AUTOMATIC); | |
40 } | |
41 | |
42 void PretendManagingPasswords() { | |
43 model_->set_manage_passwords_bubble_state( | |
44 ManagePasswordsBubbleModel::MANAGE_PASSWORDS); | |
45 model_->OnBubbleShown(ManagePasswordsBubble::USER_ACTION); | |
46 } | |
47 | |
48 TestManagePasswordsBubbleUIController* controller() { | |
49 return reinterpret_cast<TestManagePasswordsBubbleUIController*>( | |
50 ManagePasswordsBubbleUIController::FromWebContents( | |
51 test_web_contents_.get())); | |
52 } | |
53 | |
54 protected: | |
55 scoped_ptr<ManagePasswordsBubbleModel> model_; | |
56 | |
57 private: | |
58 content::TestBrowserThreadBundle thread_bundle_; | |
59 TestingProfile profile_; | |
60 scoped_ptr<content::WebContents> test_web_contents_; | |
61 }; | |
62 | |
63 TEST_F(ManagePasswordsBubbleModelTest, DefaultValues) { | |
64 EXPECT_EQ(model_->display_disposition(), | |
65 password_manager::metrics_util::AUTOMATIC_WITH_PASSWORD_PENDING); | |
66 EXPECT_EQ(model_->dismissal_reason(), | |
67 password_manager::metrics_util::NOT_DISPLAYED); | |
68 EXPECT_FALSE(controller()->saved_password()); | |
69 EXPECT_FALSE(controller()->never_saved_password()); | |
70 } | |
71 | |
72 TEST_F(ManagePasswordsBubbleModelTest, CloseWithoutLogging) { | |
73 base::StatisticsDeltaReader statistics_delta_reader; | |
74 model_->OnCloseWithoutLogging(); | |
75 model_->OnBubbleHidden(); | |
76 EXPECT_EQ(model_->dismissal_reason(), | |
77 password_manager::metrics_util::NOT_DISPLAYED); | |
78 EXPECT_FALSE(controller()->saved_password()); | |
79 EXPECT_FALSE(controller()->never_saved_password()); | |
80 | |
81 scoped_ptr<base::HistogramSamples> samples( | |
82 statistics_delta_reader.GetHistogramSamplesSinceCreation( | |
83 kUIDismissalReasonMetric)); | |
84 EXPECT_EQ(NULL, samples.get()); | |
85 } | |
86 | |
87 TEST_F(ManagePasswordsBubbleModelTest, CloseWithoutInteraction) { | |
88 base::StatisticsDeltaReader statistics_delta_reader; | |
89 PretendPasswordWaiting(); | |
90 model_->OnBubbleHidden(); | |
91 EXPECT_EQ(model_->dismissal_reason(), | |
92 password_manager::metrics_util::NO_DIRECT_INTERACTION); | |
93 EXPECT_FALSE(controller()->saved_password()); | |
94 EXPECT_FALSE(controller()->never_saved_password()); | |
95 | |
96 scoped_ptr<base::HistogramSamples> samples( | |
97 statistics_delta_reader.GetHistogramSamplesSinceCreation( | |
98 kUIDismissalReasonMetric)); | |
99 EXPECT_EQ( | |
100 1, | |
101 samples->GetCount(password_manager::metrics_util::NO_DIRECT_INTERACTION)); | |
102 EXPECT_EQ(0, samples->GetCount(password_manager::metrics_util::CLICKED_SAVE)); | |
103 EXPECT_EQ(0, samples->GetCount(password_manager::metrics_util::CLICKED_NOPE)); | |
104 EXPECT_EQ(0, | |
105 samples->GetCount(password_manager::metrics_util::CLICKED_NEVER)); | |
106 EXPECT_EQ(0, | |
107 samples->GetCount(password_manager::metrics_util::CLICKED_MANAGE)); | |
108 EXPECT_EQ(0, samples->GetCount(password_manager::metrics_util::CLICKED_DONE)); | |
109 } | |
110 | |
111 TEST_F(ManagePasswordsBubbleModelTest, ClickSave) { | |
112 base::StatisticsDeltaReader statistics_delta_reader; | |
113 PretendPasswordWaiting(); | |
114 model_->OnSaveClicked(); | |
115 model_->OnBubbleHidden(); | |
116 EXPECT_EQ(model_->dismissal_reason(), | |
117 password_manager::metrics_util::CLICKED_SAVE); | |
118 EXPECT_TRUE(controller()->saved_password()); | |
119 EXPECT_FALSE(controller()->never_saved_password()); | |
120 | |
121 scoped_ptr<base::HistogramSamples> samples( | |
122 statistics_delta_reader.GetHistogramSamplesSinceCreation( | |
123 kUIDismissalReasonMetric)); | |
124 EXPECT_EQ( | |
125 0, | |
126 samples->GetCount(password_manager::metrics_util::NO_DIRECT_INTERACTION)); | |
127 EXPECT_EQ(1, samples->GetCount(password_manager::metrics_util::CLICKED_SAVE)); | |
128 EXPECT_EQ(0, samples->GetCount(password_manager::metrics_util::CLICKED_NOPE)); | |
129 EXPECT_EQ(0, | |
130 samples->GetCount(password_manager::metrics_util::CLICKED_NEVER)); | |
131 EXPECT_EQ(0, | |
132 samples->GetCount(password_manager::metrics_util::CLICKED_MANAGE)); | |
133 EXPECT_EQ(0, samples->GetCount(password_manager::metrics_util::CLICKED_DONE)); | |
134 } | |
135 | |
136 TEST_F(ManagePasswordsBubbleModelTest, ClickNope) { | |
137 base::StatisticsDeltaReader statistics_delta_reader; | |
138 PretendPasswordWaiting(); | |
139 model_->OnNopeClicked(); | |
140 model_->OnBubbleHidden(); | |
141 EXPECT_EQ(model_->dismissal_reason(), | |
142 password_manager::metrics_util::CLICKED_NOPE); | |
143 EXPECT_FALSE(controller()->saved_password()); | |
144 EXPECT_FALSE(controller()->never_saved_password()); | |
145 | |
146 scoped_ptr<base::HistogramSamples> samples( | |
147 statistics_delta_reader.GetHistogramSamplesSinceCreation( | |
148 kUIDismissalReasonMetric)); | |
149 EXPECT_EQ( | |
150 0, | |
151 samples->GetCount(password_manager::metrics_util::NO_DIRECT_INTERACTION)); | |
152 EXPECT_EQ(0, samples->GetCount(password_manager::metrics_util::CLICKED_SAVE)); | |
153 EXPECT_EQ(1, samples->GetCount(password_manager::metrics_util::CLICKED_NOPE)); | |
154 EXPECT_EQ(0, | |
155 samples->GetCount(password_manager::metrics_util::CLICKED_NEVER)); | |
156 EXPECT_EQ(0, | |
157 samples->GetCount(password_manager::metrics_util::CLICKED_MANAGE)); | |
158 EXPECT_EQ(0, samples->GetCount(password_manager::metrics_util::CLICKED_DONE)); | |
159 } | |
160 | |
161 TEST_F(ManagePasswordsBubbleModelTest, ClickNever) { | |
162 base::StatisticsDeltaReader statistics_delta_reader; | |
163 PretendPasswordWaiting(); | |
164 model_->OnNeverForThisSiteClicked(); | |
165 model_->OnBubbleHidden(); | |
166 EXPECT_EQ(model_->dismissal_reason(), | |
167 password_manager::metrics_util::CLICKED_NEVER); | |
168 EXPECT_FALSE(controller()->saved_password()); | |
169 EXPECT_TRUE(controller()->never_saved_password()); | |
170 | |
171 scoped_ptr<base::HistogramSamples> samples( | |
172 statistics_delta_reader.GetHistogramSamplesSinceCreation( | |
173 kUIDismissalReasonMetric)); | |
174 EXPECT_EQ( | |
175 0, | |
176 samples->GetCount(password_manager::metrics_util::NO_DIRECT_INTERACTION)); | |
177 EXPECT_EQ(0, samples->GetCount(password_manager::metrics_util::CLICKED_SAVE)); | |
178 EXPECT_EQ(0, samples->GetCount(password_manager::metrics_util::CLICKED_NOPE)); | |
179 EXPECT_EQ(1, | |
180 samples->GetCount(password_manager::metrics_util::CLICKED_NEVER)); | |
181 EXPECT_EQ(0, | |
182 samples->GetCount(password_manager::metrics_util::CLICKED_MANAGE)); | |
183 EXPECT_EQ(0, samples->GetCount(password_manager::metrics_util::CLICKED_DONE)); | |
184 } | |
185 | |
186 TEST_F(ManagePasswordsBubbleModelTest, ClickManage) { | |
187 base::StatisticsDeltaReader statistics_delta_reader; | |
188 PretendManagingPasswords(); | |
189 model_->OnManageLinkClicked(); | |
190 model_->OnBubbleHidden(); | |
191 EXPECT_EQ(model_->dismissal_reason(), | |
192 password_manager::metrics_util::CLICKED_MANAGE); | |
193 EXPECT_FALSE(controller()->saved_password()); | |
194 EXPECT_FALSE(controller()->never_saved_password()); | |
195 | |
196 scoped_ptr<base::HistogramSamples> samples( | |
197 statistics_delta_reader.GetHistogramSamplesSinceCreation( | |
198 kUIDismissalReasonMetric)); | |
199 EXPECT_EQ( | |
200 0, | |
201 samples->GetCount(password_manager::metrics_util::NO_DIRECT_INTERACTION)); | |
202 EXPECT_EQ(0, samples->GetCount(password_manager::metrics_util::CLICKED_SAVE)); | |
203 EXPECT_EQ(0, samples->GetCount(password_manager::metrics_util::CLICKED_NOPE)); | |
204 EXPECT_EQ(0, | |
205 samples->GetCount(password_manager::metrics_util::CLICKED_NEVER)); | |
206 EXPECT_EQ(1, | |
207 samples->GetCount(password_manager::metrics_util::CLICKED_MANAGE)); | |
208 EXPECT_EQ(0, samples->GetCount(password_manager::metrics_util::CLICKED_DONE)); | |
209 } | |
210 | |
211 TEST_F(ManagePasswordsBubbleModelTest, ClickDone) { | |
212 base::StatisticsDeltaReader statistics_delta_reader; | |
213 PretendManagingPasswords(); | |
214 model_->OnDoneClicked(); | |
215 model_->OnBubbleHidden(); | |
216 EXPECT_EQ(model_->dismissal_reason(), | |
217 password_manager::metrics_util::CLICKED_DONE); | |
218 EXPECT_FALSE(controller()->saved_password()); | |
219 EXPECT_FALSE(controller()->never_saved_password()); | |
220 | |
221 scoped_ptr<base::HistogramSamples> samples( | |
222 statistics_delta_reader.GetHistogramSamplesSinceCreation( | |
223 kUIDismissalReasonMetric)); | |
224 EXPECT_EQ( | |
225 0, | |
226 samples->GetCount(password_manager::metrics_util::NO_DIRECT_INTERACTION)); | |
227 EXPECT_EQ(0, samples->GetCount(password_manager::metrics_util::CLICKED_SAVE)); | |
228 EXPECT_EQ(0, samples->GetCount(password_manager::metrics_util::CLICKED_NOPE)); | |
229 EXPECT_EQ(0, | |
230 samples->GetCount(password_manager::metrics_util::CLICKED_NEVER)); | |
231 EXPECT_EQ(0, | |
232 samples->GetCount(password_manager::metrics_util::CLICKED_MANAGE)); | |
233 EXPECT_EQ(1, samples->GetCount(password_manager::metrics_util::CLICKED_DONE)); | |
234 } | |
235 | |
236 TEST_F(ManagePasswordsBubbleModelTest, DismissalReasons) { | |
vabr (Chromium)
2014/04/10 12:35:14
optional: these EXPECT_EQ calls could be included
Mike West
2014/04/10 12:46:43
Indeed. I meant to remove this test after creating
| |
237 | |
vabr (Chromium)
2014/04/10 12:35:14
nit: please remove the blank line
Mike West
2014/04/10 12:46:43
Done.
| |
238 model_->OnDoneClicked(); | |
239 EXPECT_EQ(model_->dismissal_reason(), | |
240 password_manager::metrics_util::CLICKED_DONE); | |
241 | |
242 model_->OnManageLinkClicked(); | |
243 EXPECT_EQ(model_->dismissal_reason(), | |
244 password_manager::metrics_util::CLICKED_MANAGE); | |
245 | |
246 model_->OnNeverForThisSiteClicked(); | |
247 EXPECT_EQ(model_->dismissal_reason(), | |
248 password_manager::metrics_util::CLICKED_NEVER); | |
249 | |
250 model_->OnNopeClicked(); | |
251 EXPECT_EQ(model_->dismissal_reason(), | |
252 password_manager::metrics_util::CLICKED_NOPE); | |
253 | |
254 model_->OnSaveClicked(); | |
255 EXPECT_EQ(model_->dismissal_reason(), | |
256 password_manager::metrics_util::CLICKED_SAVE); | |
257 } | |
258 | |
259 TEST_F(ManagePasswordsBubbleModelTest, WaitingToSavePassword) { | |
260 EXPECT_FALSE(model_->WaitingToSavePassword()); | |
261 | |
262 model_->set_manage_passwords_bubble_state( | |
263 ManagePasswordsBubbleModel::PASSWORD_TO_BE_SAVED); | |
264 EXPECT_TRUE(model_->WaitingToSavePassword()); | |
265 } | |
266 | |
267 /* | |
vabr (Chromium)
2014/04/10 12:35:14
Did you mean to remove this?
If you meant to disab
Mike West
2014/04/10 12:46:43
Meant to kill this, thanks!
| |
268 TEST_F(ManagePasswordsBubbleModelTest, DismissalMetrics) { | |
269 | |
270 | |
271 scoped_ptr<base::HistogramSamples> samples( | |
272 statistics_delta_reader.GetHistogramSamplesSinceCreation( | |
273 kRequestThrottledHistogramName)); | |
274 ASSERT_EQ(2, samples->GetCount(0)); | |
275 ASSERT_EQ(0, samples->GetCount(1)); | |
276 | |
277 } | |
278 */ | |
OLD | NEW |