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

Unified Diff: chrome/browser/ui/passwords/manage_passwords_bubble_model_unittest.cc

Issue 2036323002: Implement the UI logic behind the Sign In promo in the password bubble (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: comments Created 4 years, 6 months 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/passwords/manage_passwords_bubble_model_unittest.cc
diff --git a/chrome/browser/ui/passwords/manage_passwords_bubble_model_unittest.cc b/chrome/browser/ui/passwords/manage_passwords_bubble_model_unittest.cc
index ae9271c10823b42755c173dab69d310bfee6210b..b4930e62235d3e1f1c385e1bd33be4b1678640d7 100644
--- a/chrome/browser/ui/passwords/manage_passwords_bubble_model_unittest.cc
+++ b/chrome/browser/ui/passwords/manage_passwords_bubble_model_unittest.cc
@@ -28,12 +28,15 @@
#include "components/password_manager/core/common/password_manager_pref_names.h"
#include "components/password_manager/core/common/password_manager_ui.h"
#include "components/prefs/pref_service.h"
+#include "components/variations/variations_associated_data.h"
#include "content/public/test/test_browser_thread_bundle.h"
#include "content/public/test/web_contents_tester.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
using password_bubble_experiment::kBrandingExperimentName;
+using password_bubble_experiment::kChromeSignInPasswordPromoExperimentName;
+using password_bubble_experiment::kChromeSignInPasswordPromoThresholdParam;
using password_bubble_experiment::kSmartLockBrandingGroupName;
using password_bubble_experiment::kSmartLockBrandingSavePromptOnlyGroupName;
using ::testing::AnyNumber;
@@ -43,6 +46,8 @@ using ::testing::_;
namespace {
+const char kFakeGroup[] = "FakeGroup";
+const char kSignInPromoDismissalReasonMetric[] = "PasswordManager.SignInPromo";
const char kSiteOrigin[] = "http://example.com/login";
const char kUsername[] = "Admin";
const char kUIDismissalReasonMetric[] = "PasswordManager.UIDismissalReason";
@@ -106,6 +111,8 @@ class ManagePasswordsBubbleModelTest : public ::testing::Test {
// Reset WebContents first. It can happen if the user closes the tab.
test_web_contents_.reset();
model_.reset();
+ variations::testing::ClearAllVariationIDs();
+ variations::testing::ClearAllVariationParams();
}
PrefService* prefs() { return profile_.GetPrefs(); }
@@ -360,6 +367,93 @@ TEST_F(ManagePasswordsBubbleModelTest, OnBrandLinkClicked) {
model()->OnBrandLinkClicked();
}
+TEST_F(ManagePasswordsBubbleModelTest, SuppressSignInPromo) {
+ base::HistogramTester histogram_tester;
+ PretendPasswordWaiting();
+ EXPECT_CALL(*GetStore(), RemoveSiteStatsImpl(GURL(kSiteOrigin).GetOrigin()));
+ EXPECT_CALL(*controller(), SavePassword());
+ model()->OnSaveClicked();
+
+ EXPECT_FALSE(model()->ReplaceToShowSignInPromoIfNeeded());
+ DestroyModel();
+ histogram_tester.ExpectTotalCount(kSignInPromoDismissalReasonMetric, 0);
+}
+
+TEST_F(ManagePasswordsBubbleModelTest, SignInPromoOK) {
+ ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial(
+ kChromeSignInPasswordPromoExperimentName, kFakeGroup));
+ variations::AssociateVariationParams(
+ kChromeSignInPasswordPromoExperimentName, kFakeGroup,
+ {{kChromeSignInPasswordPromoThresholdParam, "3"}});
+ base::HistogramTester histogram_tester;
+ PretendPasswordWaiting();
+ EXPECT_CALL(*GetStore(), RemoveSiteStatsImpl(GURL(kSiteOrigin).GetOrigin()));
+ EXPECT_CALL(*controller(), SavePassword());
+ model()->OnSaveClicked();
+
+ EXPECT_TRUE(model()->ReplaceToShowSignInPromoIfNeeded());
+ EXPECT_CALL(*controller(), NavigateToChromeSignIn());
+ model()->OnSignInToChromeClicked();
+ DestroyModel();
+ histogram_tester.ExpectUniqueSample(
+ kUIDismissalReasonMetric,
+ password_manager::metrics_util::CLICKED_SAVE, 1);
+ histogram_tester.ExpectUniqueSample(
+ kSignInPromoDismissalReasonMetric,
+ password_manager::metrics_util::CHROME_SIGNIN_OK, 1);
+ EXPECT_TRUE(prefs()->GetBoolean(
+ password_manager::prefs::kWasSignInPasswordPromoClicked));
+}
+
+TEST_F(ManagePasswordsBubbleModelTest, SignInPromoCancel) {
+ ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial(
+ kChromeSignInPasswordPromoExperimentName, kFakeGroup));
+ variations::AssociateVariationParams(
+ kChromeSignInPasswordPromoExperimentName, kFakeGroup,
+ {{kChromeSignInPasswordPromoThresholdParam, "3"}});
+ base::HistogramTester histogram_tester;
+ PretendPasswordWaiting();
+ EXPECT_CALL(*GetStore(), RemoveSiteStatsImpl(GURL(kSiteOrigin).GetOrigin()));
+ EXPECT_CALL(*controller(), SavePassword());
+ model()->OnSaveClicked();
+
+ EXPECT_TRUE(model()->ReplaceToShowSignInPromoIfNeeded());
+ model()->OnSkipSignInClicked();
+ DestroyModel();
+ histogram_tester.ExpectUniqueSample(
+ kUIDismissalReasonMetric,
+ password_manager::metrics_util::CLICKED_SAVE, 1);
+ histogram_tester.ExpectUniqueSample(
+ kSignInPromoDismissalReasonMetric,
+ password_manager::metrics_util::CHROME_SIGNIN_CANCEL, 1);
+ EXPECT_TRUE(prefs()->GetBoolean(
+ password_manager::prefs::kWasSignInPasswordPromoClicked));
+}
+
+TEST_F(ManagePasswordsBubbleModelTest, SignInPromoDismiss) {
+ ASSERT_TRUE(base::FieldTrialList::CreateFieldTrial(
+ kChromeSignInPasswordPromoExperimentName, kFakeGroup));
+ variations::AssociateVariationParams(
+ kChromeSignInPasswordPromoExperimentName, kFakeGroup,
+ {{kChromeSignInPasswordPromoThresholdParam, "3"}});
+ base::HistogramTester histogram_tester;
+ PretendPasswordWaiting();
+ EXPECT_CALL(*GetStore(), RemoveSiteStatsImpl(GURL(kSiteOrigin).GetOrigin()));
+ EXPECT_CALL(*controller(), SavePassword());
+ model()->OnSaveClicked();
+
+ EXPECT_TRUE(model()->ReplaceToShowSignInPromoIfNeeded());
+ DestroyModel();
+ histogram_tester.ExpectUniqueSample(
+ kUIDismissalReasonMetric,
+ password_manager::metrics_util::CLICKED_SAVE, 1);
+ histogram_tester.ExpectUniqueSample(
+ kSignInPromoDismissalReasonMetric,
+ password_manager::metrics_util::CHROME_SIGNIN_DISMISSED, 1);
+ EXPECT_FALSE(prefs()->GetBoolean(
+ password_manager::prefs::kWasSignInPasswordPromoClicked));
+}
+
namespace {
enum class SmartLockStatus { ENABLE, DISABLE };

Powered by Google App Engine
This is Rietveld 408576698