OLD | NEW |
---|---|
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 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 | 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 "base/metrics/histogram_samples.h" | 5 #include "base/metrics/histogram_samples.h" |
6 #include "base/prefs/pref_service.h" | 6 #include "base/prefs/pref_service.h" |
7 #include "base/strings/utf_string_conversions.h" | 7 #include "base/strings/utf_string_conversions.h" |
8 #include "base/test/histogram_tester.h" | 8 #include "base/test/histogram_tester.h" |
9 #include "chrome/browser/ui/passwords/manage_passwords_bubble.h" | 9 #include "chrome/browser/ui/passwords/manage_passwords_bubble.h" |
10 #include "chrome/browser/ui/passwords/manage_passwords_bubble_model.h" | 10 #include "chrome/browser/ui/passwords/manage_passwords_bubble_model.h" |
(...skipping 17 matching lines...) Expand all Loading... | |
28 void SetUp() override { | 28 void SetUp() override { |
29 // Create the test UIController here so that it's bound to | 29 // Create the test UIController here so that it's bound to |
30 // |test_web_contents_| and therefore accessible to the model. | 30 // |test_web_contents_| and therefore accessible to the model. |
31 new ManagePasswordsUIControllerMock(test_web_contents_.get()); | 31 new ManagePasswordsUIControllerMock(test_web_contents_.get()); |
32 | 32 |
33 model_.reset(new ManagePasswordsBubbleModel(test_web_contents_.get())); | 33 model_.reset(new ManagePasswordsBubbleModel(test_web_contents_.get())); |
34 } | 34 } |
35 | 35 |
36 void TearDown() override { model_.reset(); } | 36 void TearDown() override { model_.reset(); } |
37 | 37 |
38 void PretendNeedToAskUserToSubmitURL() { | |
39 model_->set_state( | |
40 password_manager::ui::ASK_USER_REPORT_URL_BEFORE_LOAD_STATE); | |
41 model_->OnBubbleShown(ManagePasswordsBubble::AUTOMATIC); | |
42 controller()->SetState( | |
43 password_manager::ui::ASK_USER_TO_REPORT_URL_AND_PENDING_BUBBLE_STATE); | |
44 } | |
45 | |
46 void PretendUserInteractedWithAllowToSubmitBubbleBeforeNavigation() { | |
47 // TODO(melandory) This method should be removed after solution where | |
48 // "Ask to collect URL?" doesn't appear before navigation is implemented | |
vabr (Chromium)
2014/12/05 13:43:22
nit: Full-stop missing at the end.
melandory
2014/12/05 14:22:56
Done.
| |
49 model_->OnBubbleShown(ManagePasswordsBubble::AUTOMATIC); | |
50 model_->set_state( | |
51 password_manager::ui::ASK_USER_REPORT_URL_AFTER_LOAD_STATE); | |
52 controller()->SetState( | |
53 password_manager::ui::ASK_USER_TO_REPORT_URL_AND_PENDING_BUBBLE_STATE); | |
54 } | |
55 | |
38 void PretendPasswordWaiting() { | 56 void PretendPasswordWaiting() { |
39 model_->set_state(password_manager::ui::PENDING_PASSWORD_AND_BUBBLE_STATE); | 57 model_->set_state(password_manager::ui::PENDING_PASSWORD_AND_BUBBLE_STATE); |
40 model_->OnBubbleShown(ManagePasswordsBubble::AUTOMATIC); | 58 model_->OnBubbleShown(ManagePasswordsBubble::AUTOMATIC); |
41 controller()->SetState( | 59 controller()->SetState( |
42 password_manager::ui::PENDING_PASSWORD_AND_BUBBLE_STATE); | 60 password_manager::ui::PENDING_PASSWORD_AND_BUBBLE_STATE); |
43 } | 61 } |
44 | 62 |
45 void PretendCredentialsWaiting() { | 63 void PretendCredentialsWaiting() { |
46 model_->set_state(password_manager::ui::CREDENTIAL_REQUEST_STATE); | 64 model_->set_state(password_manager::ui::CREDENTIAL_REQUEST_STATE); |
47 model_->OnBubbleShown(ManagePasswordsBubble::AUTOMATIC); | 65 model_->OnBubbleShown(ManagePasswordsBubble::AUTOMATIC); |
(...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
253 EXPECT_FALSE(controller()->saved_password()); | 271 EXPECT_FALSE(controller()->saved_password()); |
254 EXPECT_FALSE(controller()->never_saved_password()); | 272 EXPECT_FALSE(controller()->never_saved_password()); |
255 EXPECT_TRUE(controller()->choose_credential()); | 273 EXPECT_TRUE(controller()->choose_credential()); |
256 | 274 |
257 histogram_tester.ExpectUniqueSample( | 275 histogram_tester.ExpectUniqueSample( |
258 kUIDismissalReasonMetric, | 276 kUIDismissalReasonMetric, |
259 password_manager::metrics_util::CLICKED_NOPE, | 277 password_manager::metrics_util::CLICKED_NOPE, |
260 1); | 278 1); |
261 } | 279 } |
262 | 280 |
281 TEST_F(ManagePasswordsBubbleModelTest, ClickCollectURL) { | |
282 base::HistogramTester histogram_tester; | |
283 PretendNeedToAskUserToSubmitURL(); | |
284 model_->OnCollectURLClicked(); | |
285 model_->OnBubbleHidden(); | |
286 EXPECT_EQ(model_->dismissal_reason(), | |
287 password_manager::metrics_util::CLICKED_COLLECT_URL); | |
288 EXPECT_EQ( | |
289 password_manager::ui::ASK_USER_TO_REPORT_URL_AND_PENDING_BUBBLE_STATE, | |
290 model_->state()); | |
291 | |
292 histogram_tester.ExpectUniqueSample( | |
293 kUIDismissalReasonMetric, | |
294 password_manager::metrics_util::CLICKED_COLLECT_URL, 1); | |
295 } | |
296 | |
297 TEST_F(ManagePasswordsBubbleModelTest, ClickDoNotCollectURL) { | |
298 base::HistogramTester histogram_tester; | |
299 PretendNeedToAskUserToSubmitURL(); | |
300 model_->OnDoNotCollectURLClicked(); | |
301 model_->OnBubbleHidden(); | |
302 EXPECT_EQ(model_->dismissal_reason(), | |
303 password_manager::metrics_util::CLICKED_DO_NOT_COLLECT_URL); | |
304 EXPECT_EQ( | |
305 password_manager::ui::ASK_USER_TO_REPORT_URL_AND_PENDING_BUBBLE_STATE, | |
306 model_->state()); | |
307 | |
308 histogram_tester.ExpectUniqueSample( | |
309 kUIDismissalReasonMetric, | |
310 password_manager::metrics_util::CLICKED_DO_NOT_COLLECT_URL, 1); | |
311 } | |
312 | |
313 TEST_F(ManagePasswordsBubbleModelTest, | |
314 CollectURLBubbleCloseWithoutInteraction) { | |
315 base::HistogramTester histogram_tester; | |
316 PretendNeedToAskUserToSubmitURL(); | |
317 model_->OnBubbleHidden(); | |
318 EXPECT_EQ(model_->dismissal_reason(), | |
319 password_manager::metrics_util::NO_DIRECT_INTERACTION); | |
320 EXPECT_EQ( | |
321 password_manager::ui::ASK_USER_TO_REPORT_URL_AND_PENDING_BUBBLE_STATE, | |
322 model_->state()); | |
323 histogram_tester.ExpectUniqueSample( | |
324 kUIDismissalReasonMetric, | |
325 password_manager::metrics_util::NO_DIRECT_INTERACTION, 1); | |
326 } | |
327 | |
328 TEST_F(ManagePasswordsBubbleModelTest, ClickCollectURLBeforeNavigation) { | |
329 // TODO(melandory) This test case should be removed after solution where | |
330 // "Ask to collect URL?" doesn't appear before navigation is implemented | |
331 base::HistogramTester histogram_tester; | |
332 PretendUserInteractedWithAllowToSubmitBubbleBeforeNavigation(); | |
333 model_->OnCollectURLClicked(); | |
334 model_->OnBubbleHidden(); | |
335 EXPECT_EQ(model_->dismissal_reason(), | |
336 password_manager::metrics_util::CLICKED_COLLECT_URL); | |
337 EXPECT_EQ( | |
338 password_manager::ui::ASK_USER_TO_REPORT_URL_AND_PENDING_BUBBLE_STATE, | |
339 model_->state()); | |
340 | |
341 histogram_tester.ExpectUniqueSample( | |
342 kUIDismissalReasonMetric, | |
343 password_manager::metrics_util::CLICKED_COLLECT_URL, 1); | |
344 } | |
345 | |
346 TEST_F(ManagePasswordsBubbleModelTest, ClickDoNotCollectURLBeforeNavigation) { | |
347 // TODO(melandory) This test case should be removed after solution where | |
348 // "Ask to collect URL?" doesn't appear before navigation is implemented | |
349 base::HistogramTester histogram_tester; | |
350 PretendUserInteractedWithAllowToSubmitBubbleBeforeNavigation(); | |
351 model_->OnDoNotCollectURLClicked(); | |
352 model_->OnBubbleHidden(); | |
353 EXPECT_EQ(model_->dismissal_reason(), | |
354 password_manager::metrics_util::CLICKED_DO_NOT_COLLECT_URL); | |
355 EXPECT_EQ( | |
356 password_manager::ui::ASK_USER_TO_REPORT_URL_AND_PENDING_BUBBLE_STATE, | |
357 model_->state()); | |
358 | |
359 histogram_tester.ExpectUniqueSample( | |
360 kUIDismissalReasonMetric, | |
361 password_manager::metrics_util::CLICKED_DO_NOT_COLLECT_URL, 1); | |
362 } | |
363 | |
364 TEST_F(ManagePasswordsBubbleModelTest, | |
365 CollectURLBubbleCloseWithoutInteractionBeforeNavigation) { | |
366 // TODO(melandory) This test case should be removed after solution where | |
367 // "Ask to collect URL?" doesn't appear before navigation is implemented | |
368 base::HistogramTester histogram_tester; | |
369 PretendUserInteractedWithAllowToSubmitBubbleBeforeNavigation(); | |
370 model_->OnBubbleHidden(); | |
371 EXPECT_EQ(model_->dismissal_reason(), | |
372 password_manager::metrics_util::NO_DIRECT_INTERACTION); | |
373 EXPECT_EQ( | |
374 password_manager::ui::ASK_USER_TO_REPORT_URL_AND_PENDING_BUBBLE_STATE, | |
375 model_->state()); | |
376 histogram_tester.ExpectUniqueSample( | |
377 kUIDismissalReasonMetric, | |
378 password_manager::metrics_util::NO_DIRECT_INTERACTION, 1); | |
379 } | |
380 | |
263 TEST_F(ManagePasswordsBubbleModelTest, DismissCredential) { | 381 TEST_F(ManagePasswordsBubbleModelTest, DismissCredential) { |
264 base::HistogramTester histogram_tester; | 382 base::HistogramTester histogram_tester; |
265 PretendCredentialsWaiting(); | 383 PretendCredentialsWaiting(); |
266 EXPECT_FALSE(controller()->choose_credential()); | 384 EXPECT_FALSE(controller()->choose_credential()); |
267 model_->OnBubbleHidden(); | 385 model_->OnBubbleHidden(); |
268 EXPECT_EQ(model_->dismissal_reason(), | 386 EXPECT_EQ(model_->dismissal_reason(), |
269 password_manager::metrics_util::NO_DIRECT_INTERACTION); | 387 password_manager::metrics_util::NO_DIRECT_INTERACTION); |
270 EXPECT_FALSE(controller()->saved_password()); | 388 EXPECT_FALSE(controller()->saved_password()); |
271 EXPECT_FALSE(controller()->never_saved_password()); | 389 EXPECT_FALSE(controller()->never_saved_password()); |
272 EXPECT_TRUE(controller()->choose_credential()); | 390 EXPECT_TRUE(controller()->choose_credential()); |
(...skipping 12 matching lines...) Expand all Loading... | |
285 model_->set_state(password_manager::ui::MANAGE_STATE); | 403 model_->set_state(password_manager::ui::MANAGE_STATE); |
286 EXPECT_FALSE(password_manager::ui::IsPendingState(model_->state())); | 404 EXPECT_FALSE(password_manager::ui::IsPendingState(model_->state())); |
287 model_->set_state(password_manager::ui::BLACKLIST_STATE); | 405 model_->set_state(password_manager::ui::BLACKLIST_STATE); |
288 EXPECT_FALSE(password_manager::ui::IsPendingState(model_->state())); | 406 EXPECT_FALSE(password_manager::ui::IsPendingState(model_->state())); |
289 | 407 |
290 model_->set_state(password_manager::ui::PENDING_PASSWORD_AND_BUBBLE_STATE); | 408 model_->set_state(password_manager::ui::PENDING_PASSWORD_AND_BUBBLE_STATE); |
291 EXPECT_TRUE(password_manager::ui::IsPendingState(model_->state())); | 409 EXPECT_TRUE(password_manager::ui::IsPendingState(model_->state())); |
292 model_->set_state(password_manager::ui::PENDING_PASSWORD_STATE); | 410 model_->set_state(password_manager::ui::PENDING_PASSWORD_STATE); |
293 EXPECT_TRUE(password_manager::ui::IsPendingState(model_->state())); | 411 EXPECT_TRUE(password_manager::ui::IsPendingState(model_->state())); |
294 } | 412 } |
OLD | NEW |