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

Side by Side Diff: chrome/browser/ui/passwords/manage_passwords_bubble_model_unittest.cc

Issue 2578923003: Add PasswordManager.SignInPromoCountTil* histograms for the sign-in promo in the password bubble. (Closed)
Patch Set: Created 4 years 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 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
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
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
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));
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698