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 "chrome/browser/ui/passwords/manage_passwords_bubble_model.h" | 5 #include "chrome/browser/ui/passwords/manage_passwords_bubble_model.h" |
6 | 6 |
7 #include <utility> | 7 #include <utility> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "base/memory/ptr_util.h" | 10 #include "base/memory/ptr_util.h" |
(...skipping 30 matching lines...) Expand all Loading... |
41 using password_bubble_experiment::kSmartLockBrandingGroupName; | 41 using password_bubble_experiment::kSmartLockBrandingGroupName; |
42 using password_bubble_experiment::kSmartLockBrandingSavePromptOnlyGroupName; | 42 using password_bubble_experiment::kSmartLockBrandingSavePromptOnlyGroupName; |
43 using ::testing::AnyNumber; | 43 using ::testing::AnyNumber; |
44 using ::testing::Return; | 44 using ::testing::Return; |
45 using ::testing::ReturnRef; | 45 using ::testing::ReturnRef; |
46 using ::testing::_; | 46 using ::testing::_; |
47 | 47 |
48 namespace { | 48 namespace { |
49 | 49 |
50 const char kFakeGroup[] = "FakeGroup"; | 50 const char kFakeGroup[] = "FakeGroup"; |
51 const char kSignInPromoCountTilClickMetric[] = | 51 const char kSignInPromoCountTilNoThanksMetric[] = |
52 "PasswordManager.SignInPromoCountTilClick"; | 52 "PasswordManager.SignInPromoCountTilNoThanks"; |
| 53 const char kSignInPromoCountTilSignInMetric[] = |
| 54 "PasswordManager.SignInPromoCountTilSignIn"; |
53 const char kSignInPromoDismissalCountMetric[] = | 55 const char kSignInPromoDismissalCountMetric[] = |
54 "PasswordManager.SignInPromoDismissalCount"; | 56 "PasswordManager.SignInPromoDismissalCount"; |
55 const char kSignInPromoDismissalReasonMetric[] = "PasswordManager.SignInPromo"; | 57 const char kSignInPromoDismissalReasonMetric[] = "PasswordManager.SignInPromo"; |
56 const char kSiteOrigin[] = "http://example.com/login"; | 58 const char kSiteOrigin[] = "http://example.com/login"; |
57 const char kUsername[] = "Admin"; | 59 const char kUsername[] = "Admin"; |
58 const char kUIDismissalReasonMetric[] = "PasswordManager.UIDismissalReason"; | 60 const char kUIDismissalReasonMetric[] = "PasswordManager.UIDismissalReason"; |
59 | 61 |
60 class TestSyncService : public browser_sync::ProfileSyncServiceMock { | 62 class TestSyncService : public browser_sync::ProfileSyncServiceMock { |
61 public: | 63 public: |
62 explicit TestSyncService(Profile* profile) | 64 explicit TestSyncService(Profile* profile) |
(...skipping 305 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
368 TEST_F(ManagePasswordsBubbleModelTest, SuppressSignInPromo) { | 370 TEST_F(ManagePasswordsBubbleModelTest, SuppressSignInPromo) { |
369 base::HistogramTester histogram_tester; | 371 base::HistogramTester histogram_tester; |
370 PretendPasswordWaiting(); | 372 PretendPasswordWaiting(); |
371 EXPECT_CALL(*GetStore(), RemoveSiteStatsImpl(GURL(kSiteOrigin).GetOrigin())); | 373 EXPECT_CALL(*GetStore(), RemoveSiteStatsImpl(GURL(kSiteOrigin).GetOrigin())); |
372 EXPECT_CALL(*controller(), SavePassword()); | 374 EXPECT_CALL(*controller(), SavePassword()); |
373 model()->OnSaveClicked(); | 375 model()->OnSaveClicked(); |
374 | 376 |
375 EXPECT_FALSE(model()->ReplaceToShowSignInPromoIfNeeded()); | 377 EXPECT_FALSE(model()->ReplaceToShowSignInPromoIfNeeded()); |
376 DestroyModel(); | 378 DestroyModel(); |
377 histogram_tester.ExpectTotalCount(kSignInPromoDismissalReasonMetric, 0); | 379 histogram_tester.ExpectTotalCount(kSignInPromoDismissalReasonMetric, 0); |
378 histogram_tester.ExpectTotalCount(kSignInPromoCountTilClickMetric, 0); | 380 histogram_tester.ExpectTotalCount(kSignInPromoCountTilSignInMetric, 0); |
| 381 histogram_tester.ExpectTotalCount(kSignInPromoCountTilNoThanksMetric, 0); |
379 histogram_tester.ExpectTotalCount(kSignInPromoDismissalCountMetric, 0); | 382 histogram_tester.ExpectTotalCount(kSignInPromoDismissalCountMetric, 0); |
380 } | 383 } |
381 | 384 |
382 TEST_F(ManagePasswordsBubbleModelTest, SignInPromoOK) { | 385 TEST_F(ManagePasswordsBubbleModelTest, SignInPromoOK) { |
383 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( | 386 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( |
384 kChromeSignInPasswordPromoExperimentName, kFakeGroup)); | 387 kChromeSignInPasswordPromoExperimentName, kFakeGroup)); |
385 variations::AssociateVariationParams( | 388 variations::AssociateVariationParams( |
386 kChromeSignInPasswordPromoExperimentName, kFakeGroup, | 389 kChromeSignInPasswordPromoExperimentName, kFakeGroup, |
387 {{kChromeSignInPasswordPromoThresholdParam, "3"}}); | 390 {{kChromeSignInPasswordPromoThresholdParam, "3"}}); |
388 base::HistogramTester histogram_tester; | 391 base::HistogramTester histogram_tester; |
389 PretendPasswordWaiting(); | 392 PretendPasswordWaiting(); |
390 EXPECT_CALL(*GetStore(), RemoveSiteStatsImpl(GURL(kSiteOrigin).GetOrigin())); | 393 EXPECT_CALL(*GetStore(), RemoveSiteStatsImpl(GURL(kSiteOrigin).GetOrigin())); |
391 EXPECT_CALL(*controller(), SavePassword()); | 394 EXPECT_CALL(*controller(), SavePassword()); |
392 model()->OnSaveClicked(); | 395 model()->OnSaveClicked(); |
393 | 396 |
394 EXPECT_TRUE(model()->ReplaceToShowSignInPromoIfNeeded()); | 397 EXPECT_TRUE(model()->ReplaceToShowSignInPromoIfNeeded()); |
395 EXPECT_CALL(*controller(), NavigateToChromeSignIn()); | 398 EXPECT_CALL(*controller(), NavigateToChromeSignIn()); |
396 model()->OnSignInToChromeClicked(); | 399 model()->OnSignInToChromeClicked(); |
397 DestroyModel(); | 400 DestroyModel(); |
398 histogram_tester.ExpectUniqueSample( | 401 histogram_tester.ExpectUniqueSample( |
399 kUIDismissalReasonMetric, | 402 kUIDismissalReasonMetric, |
400 password_manager::metrics_util::CLICKED_SAVE, 1); | 403 password_manager::metrics_util::CLICKED_SAVE, 1); |
401 histogram_tester.ExpectUniqueSample( | 404 histogram_tester.ExpectUniqueSample( |
402 kSignInPromoDismissalReasonMetric, | 405 kSignInPromoDismissalReasonMetric, |
403 password_manager::metrics_util::CHROME_SIGNIN_OK, 1); | 406 password_manager::metrics_util::CHROME_SIGNIN_OK, 1); |
404 histogram_tester.ExpectUniqueSample(kSignInPromoCountTilClickMetric, 1, 1); | 407 histogram_tester.ExpectUniqueSample(kSignInPromoCountTilSignInMetric, 1, 1); |
| 408 histogram_tester.ExpectTotalCount(kSignInPromoCountTilNoThanksMetric, 0); |
405 histogram_tester.ExpectTotalCount(kSignInPromoDismissalCountMetric, 0); | 409 histogram_tester.ExpectTotalCount(kSignInPromoDismissalCountMetric, 0); |
406 EXPECT_TRUE(prefs()->GetBoolean( | 410 EXPECT_TRUE(prefs()->GetBoolean( |
407 password_manager::prefs::kWasSignInPasswordPromoClicked)); | 411 password_manager::prefs::kWasSignInPasswordPromoClicked)); |
408 } | 412 } |
409 | 413 |
410 TEST_F(ManagePasswordsBubbleModelTest, SignInPromoCancel) { | 414 TEST_F(ManagePasswordsBubbleModelTest, SignInPromoCancel) { |
411 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( | 415 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( |
412 kChromeSignInPasswordPromoExperimentName, kFakeGroup)); | 416 kChromeSignInPasswordPromoExperimentName, kFakeGroup)); |
413 variations::AssociateVariationParams( | 417 variations::AssociateVariationParams( |
414 kChromeSignInPasswordPromoExperimentName, kFakeGroup, | 418 kChromeSignInPasswordPromoExperimentName, kFakeGroup, |
415 {{kChromeSignInPasswordPromoThresholdParam, "3"}}); | 419 {{kChromeSignInPasswordPromoThresholdParam, "3"}}); |
416 base::HistogramTester histogram_tester; | 420 base::HistogramTester histogram_tester; |
417 PretendPasswordWaiting(); | 421 PretendPasswordWaiting(); |
418 EXPECT_CALL(*GetStore(), RemoveSiteStatsImpl(GURL(kSiteOrigin).GetOrigin())); | 422 EXPECT_CALL(*GetStore(), RemoveSiteStatsImpl(GURL(kSiteOrigin).GetOrigin())); |
419 EXPECT_CALL(*controller(), SavePassword()); | 423 EXPECT_CALL(*controller(), SavePassword()); |
420 model()->OnSaveClicked(); | 424 model()->OnSaveClicked(); |
421 | 425 |
422 EXPECT_TRUE(model()->ReplaceToShowSignInPromoIfNeeded()); | 426 EXPECT_TRUE(model()->ReplaceToShowSignInPromoIfNeeded()); |
423 model()->OnSkipSignInClicked(); | 427 model()->OnSkipSignInClicked(); |
424 DestroyModel(); | 428 DestroyModel(); |
425 histogram_tester.ExpectUniqueSample( | 429 histogram_tester.ExpectUniqueSample( |
426 kUIDismissalReasonMetric, | 430 kUIDismissalReasonMetric, |
427 password_manager::metrics_util::CLICKED_SAVE, 1); | 431 password_manager::metrics_util::CLICKED_SAVE, 1); |
428 histogram_tester.ExpectUniqueSample( | 432 histogram_tester.ExpectUniqueSample( |
429 kSignInPromoDismissalReasonMetric, | 433 kSignInPromoDismissalReasonMetric, |
430 password_manager::metrics_util::CHROME_SIGNIN_CANCEL, 1); | 434 password_manager::metrics_util::CHROME_SIGNIN_CANCEL, 1); |
431 histogram_tester.ExpectUniqueSample(kSignInPromoCountTilClickMetric, 1, 1); | 435 histogram_tester.ExpectUniqueSample(kSignInPromoCountTilNoThanksMetric, 1, 1); |
| 436 histogram_tester.ExpectTotalCount(kSignInPromoCountTilSignInMetric, 0); |
432 histogram_tester.ExpectTotalCount(kSignInPromoDismissalCountMetric, 0); | 437 histogram_tester.ExpectTotalCount(kSignInPromoDismissalCountMetric, 0); |
433 EXPECT_TRUE(prefs()->GetBoolean( | 438 EXPECT_TRUE(prefs()->GetBoolean( |
434 password_manager::prefs::kWasSignInPasswordPromoClicked)); | 439 password_manager::prefs::kWasSignInPasswordPromoClicked)); |
435 } | 440 } |
436 | 441 |
437 TEST_F(ManagePasswordsBubbleModelTest, SignInPromoDismiss) { | 442 TEST_F(ManagePasswordsBubbleModelTest, SignInPromoDismiss) { |
438 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( | 443 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( |
439 kChromeSignInPasswordPromoExperimentName, kFakeGroup)); | 444 kChromeSignInPasswordPromoExperimentName, kFakeGroup)); |
440 variations::AssociateVariationParams( | 445 variations::AssociateVariationParams( |
441 kChromeSignInPasswordPromoExperimentName, kFakeGroup, | 446 kChromeSignInPasswordPromoExperimentName, kFakeGroup, |
442 {{kChromeSignInPasswordPromoThresholdParam, "3"}}); | 447 {{kChromeSignInPasswordPromoThresholdParam, "3"}}); |
443 base::HistogramTester histogram_tester; | 448 base::HistogramTester histogram_tester; |
444 PretendPasswordWaiting(); | 449 PretendPasswordWaiting(); |
445 EXPECT_CALL(*GetStore(), RemoveSiteStatsImpl(GURL(kSiteOrigin).GetOrigin())); | 450 EXPECT_CALL(*GetStore(), RemoveSiteStatsImpl(GURL(kSiteOrigin).GetOrigin())); |
446 EXPECT_CALL(*controller(), SavePassword()); | 451 EXPECT_CALL(*controller(), SavePassword()); |
447 model()->OnSaveClicked(); | 452 model()->OnSaveClicked(); |
448 | 453 |
449 EXPECT_TRUE(model()->ReplaceToShowSignInPromoIfNeeded()); | 454 EXPECT_TRUE(model()->ReplaceToShowSignInPromoIfNeeded()); |
450 DestroyModel(); | 455 DestroyModel(); |
451 histogram_tester.ExpectUniqueSample( | 456 histogram_tester.ExpectUniqueSample( |
452 kUIDismissalReasonMetric, | 457 kUIDismissalReasonMetric, |
453 password_manager::metrics_util::CLICKED_SAVE, 1); | 458 password_manager::metrics_util::CLICKED_SAVE, 1); |
454 histogram_tester.ExpectUniqueSample( | 459 histogram_tester.ExpectUniqueSample( |
455 kSignInPromoDismissalReasonMetric, | 460 kSignInPromoDismissalReasonMetric, |
456 password_manager::metrics_util::CHROME_SIGNIN_DISMISSED, 1); | 461 password_manager::metrics_util::CHROME_SIGNIN_DISMISSED, 1); |
457 histogram_tester.ExpectTotalCount(kSignInPromoCountTilClickMetric, 0); | 462 histogram_tester.ExpectTotalCount(kSignInPromoCountTilSignInMetric, 0); |
| 463 histogram_tester.ExpectTotalCount(kSignInPromoCountTilNoThanksMetric, 0); |
458 histogram_tester.ExpectUniqueSample(kSignInPromoDismissalCountMetric, 1, 1); | 464 histogram_tester.ExpectUniqueSample(kSignInPromoDismissalCountMetric, 1, 1); |
459 EXPECT_FALSE(prefs()->GetBoolean( | 465 EXPECT_FALSE(prefs()->GetBoolean( |
460 password_manager::prefs::kWasSignInPasswordPromoClicked)); | 466 password_manager::prefs::kWasSignInPasswordPromoClicked)); |
461 } | 467 } |
462 | 468 |
463 namespace { | 469 namespace { |
464 | 470 |
465 enum class SmartLockStatus { ENABLE, DISABLE }; | 471 enum class SmartLockStatus { ENABLE, DISABLE }; |
466 | 472 |
467 struct TitleTestCase { | 473 struct TitleTestCase { |
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
574 ManageLinkTarget::SETTINGS_PAGE}, | 580 ManageLinkTarget::SETTINGS_PAGE}, |
575 {nullptr, SmartLockStatus::DISABLE, ManageLinkTarget::SETTINGS_PAGE}, | 581 {nullptr, SmartLockStatus::DISABLE, ManageLinkTarget::SETTINGS_PAGE}, |
576 {"Default", SmartLockStatus::DISABLE, ManageLinkTarget::SETTINGS_PAGE}, | 582 {"Default", SmartLockStatus::DISABLE, ManageLinkTarget::SETTINGS_PAGE}, |
577 }; | 583 }; |
578 | 584 |
579 } // namespace | 585 } // namespace |
580 | 586 |
581 INSTANTIATE_TEST_CASE_P(Default, | 587 INSTANTIATE_TEST_CASE_P(Default, |
582 ManagePasswordsBubbleModelManageLinkTest, | 588 ManagePasswordsBubbleModelManageLinkTest, |
583 ::testing::ValuesIn(kManageLinkTestCases)); | 589 ::testing::ValuesIn(kManageLinkTestCases)); |
OLD | NEW |