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[] = |
| 52 "PasswordManager.SignInPromoCountTilClick"; |
| 53 const char kSignInPromoDismissalCountMetric[] = |
| 54 "PasswordManager.SignInPromoDismissalCount"; |
51 const char kSignInPromoDismissalReasonMetric[] = "PasswordManager.SignInPromo"; | 55 const char kSignInPromoDismissalReasonMetric[] = "PasswordManager.SignInPromo"; |
52 const char kSiteOrigin[] = "http://example.com/login"; | 56 const char kSiteOrigin[] = "http://example.com/login"; |
53 const char kUsername[] = "Admin"; | 57 const char kUsername[] = "Admin"; |
54 const char kUIDismissalReasonMetric[] = "PasswordManager.UIDismissalReason"; | 58 const char kUIDismissalReasonMetric[] = "PasswordManager.UIDismissalReason"; |
55 | 59 |
56 class TestSyncService : public browser_sync::ProfileSyncServiceMock { | 60 class TestSyncService : public browser_sync::ProfileSyncServiceMock { |
57 public: | 61 public: |
58 explicit TestSyncService(Profile* profile) | 62 explicit TestSyncService(Profile* profile) |
59 : browser_sync::ProfileSyncServiceMock( | 63 : browser_sync::ProfileSyncServiceMock( |
60 CreateProfileSyncServiceParamsForTest(profile)), | 64 CreateProfileSyncServiceParamsForTest(profile)), |
(...skipping 303 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
364 TEST_F(ManagePasswordsBubbleModelTest, SuppressSignInPromo) { | 368 TEST_F(ManagePasswordsBubbleModelTest, SuppressSignInPromo) { |
365 base::HistogramTester histogram_tester; | 369 base::HistogramTester histogram_tester; |
366 PretendPasswordWaiting(); | 370 PretendPasswordWaiting(); |
367 EXPECT_CALL(*GetStore(), RemoveSiteStatsImpl(GURL(kSiteOrigin).GetOrigin())); | 371 EXPECT_CALL(*GetStore(), RemoveSiteStatsImpl(GURL(kSiteOrigin).GetOrigin())); |
368 EXPECT_CALL(*controller(), SavePassword()); | 372 EXPECT_CALL(*controller(), SavePassword()); |
369 model()->OnSaveClicked(); | 373 model()->OnSaveClicked(); |
370 | 374 |
371 EXPECT_FALSE(model()->ReplaceToShowSignInPromoIfNeeded()); | 375 EXPECT_FALSE(model()->ReplaceToShowSignInPromoIfNeeded()); |
372 DestroyModel(); | 376 DestroyModel(); |
373 histogram_tester.ExpectTotalCount(kSignInPromoDismissalReasonMetric, 0); | 377 histogram_tester.ExpectTotalCount(kSignInPromoDismissalReasonMetric, 0); |
| 378 histogram_tester.ExpectTotalCount(kSignInPromoCountTilClickMetric, 0); |
| 379 histogram_tester.ExpectTotalCount(kSignInPromoDismissalCountMetric, 0); |
374 } | 380 } |
375 | 381 |
376 TEST_F(ManagePasswordsBubbleModelTest, SignInPromoOK) { | 382 TEST_F(ManagePasswordsBubbleModelTest, SignInPromoOK) { |
377 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( | 383 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( |
378 kChromeSignInPasswordPromoExperimentName, kFakeGroup)); | 384 kChromeSignInPasswordPromoExperimentName, kFakeGroup)); |
379 variations::AssociateVariationParams( | 385 variations::AssociateVariationParams( |
380 kChromeSignInPasswordPromoExperimentName, kFakeGroup, | 386 kChromeSignInPasswordPromoExperimentName, kFakeGroup, |
381 {{kChromeSignInPasswordPromoThresholdParam, "3"}}); | 387 {{kChromeSignInPasswordPromoThresholdParam, "3"}}); |
382 base::HistogramTester histogram_tester; | 388 base::HistogramTester histogram_tester; |
383 PretendPasswordWaiting(); | 389 PretendPasswordWaiting(); |
384 EXPECT_CALL(*GetStore(), RemoveSiteStatsImpl(GURL(kSiteOrigin).GetOrigin())); | 390 EXPECT_CALL(*GetStore(), RemoveSiteStatsImpl(GURL(kSiteOrigin).GetOrigin())); |
385 EXPECT_CALL(*controller(), SavePassword()); | 391 EXPECT_CALL(*controller(), SavePassword()); |
386 model()->OnSaveClicked(); | 392 model()->OnSaveClicked(); |
387 | 393 |
388 EXPECT_TRUE(model()->ReplaceToShowSignInPromoIfNeeded()); | 394 EXPECT_TRUE(model()->ReplaceToShowSignInPromoIfNeeded()); |
389 EXPECT_CALL(*controller(), NavigateToChromeSignIn()); | 395 EXPECT_CALL(*controller(), NavigateToChromeSignIn()); |
390 model()->OnSignInToChromeClicked(); | 396 model()->OnSignInToChromeClicked(); |
391 DestroyModel(); | 397 DestroyModel(); |
392 histogram_tester.ExpectUniqueSample( | 398 histogram_tester.ExpectUniqueSample( |
393 kUIDismissalReasonMetric, | 399 kUIDismissalReasonMetric, |
394 password_manager::metrics_util::CLICKED_SAVE, 1); | 400 password_manager::metrics_util::CLICKED_SAVE, 1); |
395 histogram_tester.ExpectUniqueSample( | 401 histogram_tester.ExpectUniqueSample( |
396 kSignInPromoDismissalReasonMetric, | 402 kSignInPromoDismissalReasonMetric, |
397 password_manager::metrics_util::CHROME_SIGNIN_OK, 1); | 403 password_manager::metrics_util::CHROME_SIGNIN_OK, 1); |
| 404 histogram_tester.ExpectUniqueSample(kSignInPromoCountTilClickMetric, 1, 1); |
| 405 histogram_tester.ExpectTotalCount(kSignInPromoDismissalCountMetric, 0); |
398 EXPECT_TRUE(prefs()->GetBoolean( | 406 EXPECT_TRUE(prefs()->GetBoolean( |
399 password_manager::prefs::kWasSignInPasswordPromoClicked)); | 407 password_manager::prefs::kWasSignInPasswordPromoClicked)); |
400 } | 408 } |
401 | 409 |
402 TEST_F(ManagePasswordsBubbleModelTest, SignInPromoCancel) { | 410 TEST_F(ManagePasswordsBubbleModelTest, SignInPromoCancel) { |
403 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( | 411 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( |
404 kChromeSignInPasswordPromoExperimentName, kFakeGroup)); | 412 kChromeSignInPasswordPromoExperimentName, kFakeGroup)); |
405 variations::AssociateVariationParams( | 413 variations::AssociateVariationParams( |
406 kChromeSignInPasswordPromoExperimentName, kFakeGroup, | 414 kChromeSignInPasswordPromoExperimentName, kFakeGroup, |
407 {{kChromeSignInPasswordPromoThresholdParam, "3"}}); | 415 {{kChromeSignInPasswordPromoThresholdParam, "3"}}); |
408 base::HistogramTester histogram_tester; | 416 base::HistogramTester histogram_tester; |
409 PretendPasswordWaiting(); | 417 PretendPasswordWaiting(); |
410 EXPECT_CALL(*GetStore(), RemoveSiteStatsImpl(GURL(kSiteOrigin).GetOrigin())); | 418 EXPECT_CALL(*GetStore(), RemoveSiteStatsImpl(GURL(kSiteOrigin).GetOrigin())); |
411 EXPECT_CALL(*controller(), SavePassword()); | 419 EXPECT_CALL(*controller(), SavePassword()); |
412 model()->OnSaveClicked(); | 420 model()->OnSaveClicked(); |
413 | 421 |
414 EXPECT_TRUE(model()->ReplaceToShowSignInPromoIfNeeded()); | 422 EXPECT_TRUE(model()->ReplaceToShowSignInPromoIfNeeded()); |
415 model()->OnSkipSignInClicked(); | 423 model()->OnSkipSignInClicked(); |
416 DestroyModel(); | 424 DestroyModel(); |
417 histogram_tester.ExpectUniqueSample( | 425 histogram_tester.ExpectUniqueSample( |
418 kUIDismissalReasonMetric, | 426 kUIDismissalReasonMetric, |
419 password_manager::metrics_util::CLICKED_SAVE, 1); | 427 password_manager::metrics_util::CLICKED_SAVE, 1); |
420 histogram_tester.ExpectUniqueSample( | 428 histogram_tester.ExpectUniqueSample( |
421 kSignInPromoDismissalReasonMetric, | 429 kSignInPromoDismissalReasonMetric, |
422 password_manager::metrics_util::CHROME_SIGNIN_CANCEL, 1); | 430 password_manager::metrics_util::CHROME_SIGNIN_CANCEL, 1); |
| 431 histogram_tester.ExpectUniqueSample(kSignInPromoCountTilClickMetric, 1, 1); |
| 432 histogram_tester.ExpectTotalCount(kSignInPromoDismissalCountMetric, 0); |
423 EXPECT_TRUE(prefs()->GetBoolean( | 433 EXPECT_TRUE(prefs()->GetBoolean( |
424 password_manager::prefs::kWasSignInPasswordPromoClicked)); | 434 password_manager::prefs::kWasSignInPasswordPromoClicked)); |
425 } | 435 } |
426 | 436 |
427 TEST_F(ManagePasswordsBubbleModelTest, SignInPromoDismiss) { | 437 TEST_F(ManagePasswordsBubbleModelTest, SignInPromoDismiss) { |
428 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( | 438 ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial( |
429 kChromeSignInPasswordPromoExperimentName, kFakeGroup)); | 439 kChromeSignInPasswordPromoExperimentName, kFakeGroup)); |
430 variations::AssociateVariationParams( | 440 variations::AssociateVariationParams( |
431 kChromeSignInPasswordPromoExperimentName, kFakeGroup, | 441 kChromeSignInPasswordPromoExperimentName, kFakeGroup, |
432 {{kChromeSignInPasswordPromoThresholdParam, "3"}}); | 442 {{kChromeSignInPasswordPromoThresholdParam, "3"}}); |
433 base::HistogramTester histogram_tester; | 443 base::HistogramTester histogram_tester; |
434 PretendPasswordWaiting(); | 444 PretendPasswordWaiting(); |
435 EXPECT_CALL(*GetStore(), RemoveSiteStatsImpl(GURL(kSiteOrigin).GetOrigin())); | 445 EXPECT_CALL(*GetStore(), RemoveSiteStatsImpl(GURL(kSiteOrigin).GetOrigin())); |
436 EXPECT_CALL(*controller(), SavePassword()); | 446 EXPECT_CALL(*controller(), SavePassword()); |
437 model()->OnSaveClicked(); | 447 model()->OnSaveClicked(); |
438 | 448 |
439 EXPECT_TRUE(model()->ReplaceToShowSignInPromoIfNeeded()); | 449 EXPECT_TRUE(model()->ReplaceToShowSignInPromoIfNeeded()); |
440 DestroyModel(); | 450 DestroyModel(); |
441 histogram_tester.ExpectUniqueSample( | 451 histogram_tester.ExpectUniqueSample( |
442 kUIDismissalReasonMetric, | 452 kUIDismissalReasonMetric, |
443 password_manager::metrics_util::CLICKED_SAVE, 1); | 453 password_manager::metrics_util::CLICKED_SAVE, 1); |
444 histogram_tester.ExpectUniqueSample( | 454 histogram_tester.ExpectUniqueSample( |
445 kSignInPromoDismissalReasonMetric, | 455 kSignInPromoDismissalReasonMetric, |
446 password_manager::metrics_util::CHROME_SIGNIN_DISMISSED, 1); | 456 password_manager::metrics_util::CHROME_SIGNIN_DISMISSED, 1); |
| 457 histogram_tester.ExpectTotalCount(kSignInPromoCountTilClickMetric, 0); |
| 458 histogram_tester.ExpectUniqueSample(kSignInPromoDismissalCountMetric, 1, 1); |
447 EXPECT_FALSE(prefs()->GetBoolean( | 459 EXPECT_FALSE(prefs()->GetBoolean( |
448 password_manager::prefs::kWasSignInPasswordPromoClicked)); | 460 password_manager::prefs::kWasSignInPasswordPromoClicked)); |
449 } | 461 } |
450 | 462 |
451 namespace { | 463 namespace { |
452 | 464 |
453 enum class SmartLockStatus { ENABLE, DISABLE }; | 465 enum class SmartLockStatus { ENABLE, DISABLE }; |
454 | 466 |
455 struct TitleTestCase { | 467 struct TitleTestCase { |
456 const char* experiment_group; | 468 const char* experiment_group; |
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
562 ManageLinkTarget::SETTINGS_PAGE}, | 574 ManageLinkTarget::SETTINGS_PAGE}, |
563 {nullptr, SmartLockStatus::DISABLE, ManageLinkTarget::SETTINGS_PAGE}, | 575 {nullptr, SmartLockStatus::DISABLE, ManageLinkTarget::SETTINGS_PAGE}, |
564 {"Default", SmartLockStatus::DISABLE, ManageLinkTarget::SETTINGS_PAGE}, | 576 {"Default", SmartLockStatus::DISABLE, ManageLinkTarget::SETTINGS_PAGE}, |
565 }; | 577 }; |
566 | 578 |
567 } // namespace | 579 } // namespace |
568 | 580 |
569 INSTANTIATE_TEST_CASE_P(Default, | 581 INSTANTIATE_TEST_CASE_P(Default, |
570 ManagePasswordsBubbleModelManageLinkTest, | 582 ManagePasswordsBubbleModelManageLinkTest, |
571 ::testing::ValuesIn(kManageLinkTestCases)); | 583 ::testing::ValuesIn(kManageLinkTestCases)); |
OLD | NEW |