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

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

Issue 2588323002: Revert "Remove Finch support for PasswordBranding" (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 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 9432dc387b3f56cab20dfa49b55e9780a838c87d..a2b661fccf00fe08a0cbf477ee09d58d3b777ae9 100644
--- a/chrome/browser/ui/passwords/manage_passwords_bubble_model_unittest.cc
+++ b/chrome/browser/ui/passwords/manage_passwords_bubble_model_unittest.cc
@@ -35,8 +35,11 @@
#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;
using ::testing::Return;
using ::testing::ReturnRef;
@@ -44,27 +47,24 @@ using ::testing::_;
namespace {
-constexpr char kFakeGroup[] = "FakeGroup";
-constexpr char kSignInPromoCountTilNoThanksMetric[] =
+const char kFakeGroup[] = "FakeGroup";
+const char kSignInPromoCountTilNoThanksMetric[] =
"PasswordManager.SignInPromoCountTilNoThanks";
-constexpr char kSignInPromoCountTilSignInMetric[] =
+const char kSignInPromoCountTilSignInMetric[] =
"PasswordManager.SignInPromoCountTilSignIn";
-constexpr char kSignInPromoDismissalCountMetric[] =
+const char kSignInPromoDismissalCountMetric[] =
"PasswordManager.SignInPromoDismissalCount";
-constexpr char kSignInPromoDismissalReasonMetric[] =
- "PasswordManager.SignInPromo";
-constexpr char kSiteOrigin[] = "http://example.com/login";
-constexpr char kUsername[] = "Admin";
-constexpr char kUIDismissalReasonMetric[] = "PasswordManager.UIDismissalReason";
+const char kSignInPromoDismissalReasonMetric[] = "PasswordManager.SignInPromo";
+const char kSiteOrigin[] = "http://example.com/login";
+const char kUsername[] = "Admin";
+const char kUIDismissalReasonMetric[] = "PasswordManager.UIDismissalReason";
class TestSyncService : public browser_sync::ProfileSyncServiceMock {
public:
- enum class SyncedTypes { ALL, NONE };
-
explicit TestSyncService(Profile* profile)
: browser_sync::ProfileSyncServiceMock(
CreateProfileSyncServiceParamsForTest(profile)),
- synced_types_(SyncedTypes::NONE) {}
+ smartlock_enabled_(false) {}
~TestSyncService() override {}
// FakeSyncService:
@@ -72,14 +72,8 @@ class TestSyncService : public browser_sync::ProfileSyncServiceMock {
bool IsSyncAllowed() const override { return true; }
bool IsSyncActive() const override { return true; }
syncer::ModelTypeSet GetActiveDataTypes() const override {
- switch (synced_types_) {
- case SyncedTypes::ALL:
- return syncer::ModelTypeSet::All();
- case SyncedTypes::NONE:
- return syncer::ModelTypeSet();
- }
- NOTREACHED();
- return syncer::ModelTypeSet();
+ return smartlock_enabled_ ? syncer::ModelTypeSet::All()
+ : syncer::ModelTypeSet();
}
bool CanSyncStart() const override { return true; }
syncer::ModelTypeSet GetPreferredDataTypes() const override {
@@ -87,12 +81,12 @@ class TestSyncService : public browser_sync::ProfileSyncServiceMock {
}
bool IsUsingSecondaryPassphrase() const override { return false; }
- void set_synced_types(SyncedTypes synced_types) {
- synced_types_ = synced_types;
+ void set_smartlock_enabled(bool smartlock_enabled) {
+ smartlock_enabled_ = smartlock_enabled;
}
private:
- SyncedTypes synced_types_;
+ bool smartlock_enabled_;
};
std::unique_ptr<KeyedService> TestingSyncFactoryFunction(
@@ -326,6 +320,46 @@ TEST_F(ManagePasswordsBubbleModelTest, ClickUpdate) {
DestroyModel();
}
+TEST_F(ManagePasswordsBubbleModelTest, ShowSmartLockWarmWelcome) {
+ TestSyncService* sync_service = static_cast<TestSyncService*>(
+ ProfileSyncServiceFactory::GetInstance()->SetTestingFactoryAndUse(
+ profile(), &TestingSyncFactoryFunction));
+ sync_service->set_smartlock_enabled(true);
+ base::FieldTrialList::CreateFieldTrial(kBrandingExperimentName,
+ kSmartLockBrandingGroupName);
+
+ PretendPasswordWaiting();
+
+ EXPECT_TRUE(model()->ShouldShowGoogleSmartLockWelcome());
+ EXPECT_CALL(*GetStore(), AddSiteStatsImpl(_));
+ DestroyModel();
+ PretendPasswordWaiting();
+
+ EXPECT_FALSE(model()->ShouldShowGoogleSmartLockWelcome());
+ EXPECT_TRUE(prefs()->GetBoolean(
+ password_manager::prefs::kWasSavePrompFirstRunExperienceShown));
+}
+
+TEST_F(ManagePasswordsBubbleModelTest, OmitSmartLockWarmWelcome) {
+ TestSyncService* sync_service = static_cast<TestSyncService*>(
+ ProfileSyncServiceFactory::GetInstance()->SetTestingFactoryAndUse(
+ profile(), &TestingSyncFactoryFunction));
+ sync_service->set_smartlock_enabled(false);
+ base::FieldTrialList::CreateFieldTrial(kBrandingExperimentName,
+ kSmartLockBrandingGroupName);
+
+ PretendPasswordWaiting();
+
+ EXPECT_FALSE(model()->ShouldShowGoogleSmartLockWelcome());
+ EXPECT_CALL(*GetStore(), AddSiteStatsImpl(_));
+ DestroyModel();
+ PretendPasswordWaiting();
+
+ EXPECT_FALSE(model()->ShouldShowGoogleSmartLockWelcome());
+ EXPECT_FALSE(prefs()->GetBoolean(
+ password_manager::prefs::kWasSavePrompFirstRunExperienceShown));
+}
+
TEST_F(ManagePasswordsBubbleModelTest, OnBrandLinkClicked) {
PretendPasswordWaiting();
@@ -434,8 +468,11 @@ TEST_F(ManagePasswordsBubbleModelTest, SignInPromoDismiss) {
namespace {
+enum class SmartLockStatus { ENABLE, DISABLE };
+
struct TitleTestCase {
- TestSyncService::SyncedTypes synced_types;
+ const char* experiment_group;
+ SmartLockStatus smartlock_status;
const char* expected_title;
};
@@ -450,7 +487,12 @@ TEST_P(ManagePasswordsBubbleModelTitleTest, BrandedTitleOnSaving) {
TestSyncService* sync_service = static_cast<TestSyncService*>(
ProfileSyncServiceFactory::GetInstance()->SetTestingFactoryAndUse(
profile(), &TestingSyncFactoryFunction));
- sync_service->set_synced_types(test_case.synced_types);
+ sync_service->set_smartlock_enabled(test_case.smartlock_status ==
+ SmartLockStatus::ENABLE);
+ if (test_case.experiment_group) {
+ base::FieldTrialList::CreateFieldTrial(kBrandingExperimentName,
+ test_case.experiment_group);
+ }
PretendPasswordWaiting();
EXPECT_THAT(base::UTF16ToUTF8(model()->title()),
@@ -462,9 +504,17 @@ namespace {
// Below, "Chrom" is the common prefix of Chromium and Google Chrome. Ideally,
// we would use the localised strings, but ResourceBundle does not get
// initialised for this unittest.
-constexpr TitleTestCase kTitleTestCases[] = {
- {TestSyncService::SyncedTypes::ALL, "Google Smart Lock"},
- {TestSyncService::SyncedTypes::NONE, "Chrom"},
+const TitleTestCase kTitleTestCases[] = {
+ {kSmartLockBrandingGroupName, SmartLockStatus::ENABLE, "Google Smart Lock"},
+ {kSmartLockBrandingSavePromptOnlyGroupName, SmartLockStatus::ENABLE,
+ "Google Smart Lock"},
+ {nullptr, SmartLockStatus::ENABLE, "Chrom"},
+ {"Default", SmartLockStatus::ENABLE, "Chrom"},
+ {kSmartLockBrandingGroupName, SmartLockStatus::DISABLE, "Chrom"},
+ {kSmartLockBrandingSavePromptOnlyGroupName, SmartLockStatus::DISABLE,
+ "Chrom"},
+ {"Default", SmartLockStatus::DISABLE, "Chrom"},
+ {nullptr, SmartLockStatus::DISABLE, "Chrom"},
};
} // namespace
@@ -473,24 +523,67 @@ INSTANTIATE_TEST_CASE_P(Default,
ManagePasswordsBubbleModelTitleTest,
::testing::ValuesIn(kTitleTestCases));
+namespace {
+
+enum class ManageLinkTarget { EXTERNAL_PASSWORD_MANAGER, SETTINGS_PAGE };
+
+struct ManageLinkTestCase {
+ const char* experiment_group;
+ SmartLockStatus smartlock_status;
+ ManageLinkTarget expected_target;
+};
+
+} // namespace
+
class ManagePasswordsBubbleModelManageLinkTest
: public ManagePasswordsBubbleModelTest,
- public ::testing::WithParamInterface<TestSyncService::SyncedTypes> {};
+ public ::testing::WithParamInterface<ManageLinkTestCase> {};
TEST_P(ManagePasswordsBubbleModelManageLinkTest, OnManageLinkClicked) {
+ ManageLinkTestCase test_case = GetParam();
TestSyncService* sync_service = static_cast<TestSyncService*>(
ProfileSyncServiceFactory::GetInstance()->SetTestingFactoryAndUse(
profile(), &TestingSyncFactoryFunction));
- sync_service->set_synced_types(GetParam());
+ sync_service->set_smartlock_enabled(test_case.smartlock_status ==
+ SmartLockStatus::ENABLE);
+ if (test_case.experiment_group) {
+ base::FieldTrialList::CreateFieldTrial(kBrandingExperimentName,
+ test_case.experiment_group);
+ }
PretendManagingPasswords();
- EXPECT_CALL(*controller(), NavigateToPasswordManagerSettingsPage());
+ switch (test_case.expected_target) {
+ case ManageLinkTarget::EXTERNAL_PASSWORD_MANAGER:
+ EXPECT_CALL(*controller(), NavigateToExternalPasswordManager());
+ break;
+ case ManageLinkTarget::SETTINGS_PAGE:
+ EXPECT_CALL(*controller(), NavigateToPasswordManagerSettingsPage());
+ break;
+ }
model()->OnManageLinkClicked();
}
+namespace {
+
+const ManageLinkTestCase kManageLinkTestCases[] = {
+ {kSmartLockBrandingGroupName, SmartLockStatus::ENABLE,
+ ManageLinkTarget::EXTERNAL_PASSWORD_MANAGER},
+ {kSmartLockBrandingSavePromptOnlyGroupName, SmartLockStatus::ENABLE,
+ ManageLinkTarget::SETTINGS_PAGE},
+ {nullptr, SmartLockStatus::ENABLE, ManageLinkTarget::SETTINGS_PAGE},
+ {"Default", SmartLockStatus::ENABLE, ManageLinkTarget::SETTINGS_PAGE},
+ {kSmartLockBrandingGroupName, SmartLockStatus::DISABLE,
+ ManageLinkTarget::SETTINGS_PAGE},
+ {kSmartLockBrandingSavePromptOnlyGroupName, SmartLockStatus::DISABLE,
+ ManageLinkTarget::SETTINGS_PAGE},
+ {nullptr, SmartLockStatus::DISABLE, ManageLinkTarget::SETTINGS_PAGE},
+ {"Default", SmartLockStatus::DISABLE, ManageLinkTarget::SETTINGS_PAGE},
+};
+
+} // namespace
+
INSTANTIATE_TEST_CASE_P(Default,
ManagePasswordsBubbleModelManageLinkTest,
- ::testing::Values(TestSyncService::SyncedTypes::ALL,
- TestSyncService::SyncedTypes::NONE));
+ ::testing::ValuesIn(kManageLinkTestCases));

Powered by Google App Engine
This is Rietveld 408576698