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

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

Issue 2490713003: Add "PasswordManager.SignInPromoDismissalCount" histogram. (Closed)
Patch Set: Created 4 years, 1 month 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[] =
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
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
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));
OLDNEW
« no previous file with comments | « chrome/browser/ui/passwords/manage_passwords_bubble_model.cc ('k') | tools/metrics/histograms/histograms.xml » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698