Chromium Code Reviews| Index: chrome/browser/password_manager/password_manager_setting_migrater_service_unittests.cc |
| diff --git a/chrome/browser/password_manager/password_manager_setting_migrater_service_unittests.cc b/chrome/browser/password_manager/password_manager_setting_migrater_service_unittests.cc |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..cdc93923e77b3c4188b50108ee74966738a2e62a |
| --- /dev/null |
| +++ b/chrome/browser/password_manager/password_manager_setting_migrater_service_unittests.cc |
| @@ -0,0 +1,501 @@ |
| +// Copyright 2015 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#include "base/json/json_string_value_serializer.h" |
| +#include "base/prefs/pref_registry_simple.h" |
| +#include "base/prefs/pref_service.h" |
| +#include "base/values.h" |
| +#include "chrome/browser/chrome_notification_types.h" |
| +#include "chrome/browser/chromeos/login/session/user_session_manager.h" |
| +#include "chrome/browser/password_manager/password_manager_setting_migrater_service.h" |
| +#include "chrome/browser/prefs/pref_service_syncable.h" |
| +#include "chrome/browser/sync/profile_sync_service_factory.h" |
| +#include "chrome/browser/sync/profile_sync_service_mock.h" |
| +#include "chrome/test/base/testing_pref_service_syncable.h" |
| +#include "chrome/test/base/testing_profile.h" |
| +#include "components/password_manager/core/common/password_manager_pref_names.h" |
| +#include "content/public/browser/notification_details.h" |
| +#include "content/public/browser/notification_service.h" |
| +#include "content/public/browser/notification_source.h" |
| +#include "content/public/test/test_browser_thread_bundle.h" |
| +#include "sync/api/fake_sync_change_processor.h" |
| +#include "sync/api/sync_error_factory.h" |
| +#include "sync/api/sync_error_factory_mock.h" |
| +#include "sync/internal_api/public/attachments/attachment_service_proxy_for_test.h" |
| +#include "sync/protocol/preference_specifics.pb.h" |
| +#include "sync/protocol/priority_preference_specifics.pb.h" |
| +#include "sync/protocol/sync.pb.h" |
| +#include "testing/gmock/include/gmock/gmock.h" |
| +#include "testing/gtest/include/gtest/gtest.h" |
| + |
| +namespace { |
| + |
| +syncer::SyncData CreatePrefSyncData(const std::string& name, bool value) { |
| + std::string serialized; |
| + JSONStringValueSerializer json(&serialized); |
| + base::FundamentalValue bool_value(value); |
| + json.Serialize(bool_value); |
| + sync_pb::EntitySpecifics specifics; |
| + sync_pb::PreferenceSpecifics* pref = nullptr; |
| + if (name == password_manager::prefs::kPasswordManagerSavingEnabled) { |
| + pref = specifics.mutable_preference(); |
| + } else if (name == password_manager::prefs::kCredentialsEnableService) { |
| + pref = specifics.mutable_priority_preference()->mutable_preference(); |
| + } |
| + DCHECK(pref) << "Wrong preference name: " << name; |
| + pref->set_name(name); |
| + pref->set_value(serialized); |
| + return syncer::SyncData::CreateRemoteData( |
| + 1, specifics, base::Time(), syncer::AttachmentIdList(), |
| + syncer::AttachmentServiceProxyForTest::Create()); |
| +} |
| + |
| +// Emulates start of the syncing for the specific sync type. If |name| is |
| +// kPasswordManagerSavingEnabled preference, then it's PREFERENCE data type. |
| +// If |name| is kCredentialsEnableService pref, then it's PRIORITY_PREFERENCE |
| +// data type. |
| +void StartSyncing(PrefServiceSyncable* prefs, |
| + const std::string& name, |
| + syncer::SyncDataList sync_data_list) { |
| + syncer::ModelType type = syncer::UNSPECIFIED; |
| + if (name == password_manager::prefs::kPasswordManagerSavingEnabled) |
| + type = syncer::PREFERENCES; |
| + else if (name == password_manager::prefs::kCredentialsEnableService) |
| + type = syncer::PRIORITY_PREFERENCES; |
| + ASSERT_NE(syncer::UNSPECIFIED, type) << "Wrong preference name: " << name; |
| + syncer::SyncableService* sync = prefs->GetSyncableService(type); |
| + sync->MergeDataAndStartSyncing( |
| + type, sync_data_list, scoped_ptr<syncer::SyncChangeProcessor>( |
| + new syncer::FakeSyncChangeProcessor), |
| + scoped_ptr<syncer::SyncErrorFactory>(new syncer::SyncErrorFactoryMock)); |
| +} |
| + |
| +void StartSyncingPrefWithValue(PrefServiceSyncable* prefs, |
| + const std::string& name, |
| + bool value) { |
| + syncer::SyncDataList sync_data_list; |
| + sync_data_list.push_back(CreatePrefSyncData(name, value)); |
| + StartSyncing(prefs, name, sync_data_list); |
| +} |
| + |
| +} // namespace |
| + |
| +namespace password_manager { |
| + |
| +// Testing table: |
| +// NL* 0_ 1_ _0 _1 00 01 10 11 |
| +// |
| +// 00 00 11 00 11 00 11 11 11 |
| +// 01 x x x x x x x x # impossible state |
| +// 10 x x x x 00 00 00 11 |
| +// 11 00 11 00 11 00 00 00 11 |
| +// |
| +// * L states for Legacy, N states for new |
| +// |
| +// In test the test cases we will refer to cells indexes in this table. |
| +// When in tests comment pair of values is mentioned (e.g 01), they are ordered |
| +// as NL. |
| +class PasswordManagerSettingMigraterServiceTest : public testing::Test { |
| + public: |
| + PasswordManagerSettingMigraterServiceTest() {} //: service_(&profile_) {} |
|
vabr (Chromium)
2015/08/28 16:58:19
Please remove the commented-out code on this line.
melandory
2015/08/31 08:54:38
Ups, sorry
|
| + |
| + void SetUp() override { |
| + ProfileSyncServiceFactory::GetInstance()->SetTestingFactoryAndUse( |
| + &profile_, &ProfileSyncServiceMock::BuildMockProfileSyncService); |
| + EXPECT_CALL(*profile_sync_service(), CanSyncStart()) |
| + .WillRepeatedly(testing::Return(true)); |
| + } |
| + |
| + Profile* profile() { return &profile_; } |
| + |
| + ProfileSyncServiceMock* profile_sync_service() { |
| + return static_cast<ProfileSyncServiceMock*>( |
| + ProfileSyncServiceFactory::GetInstance()->GetForProfile(&profile_)); |
| + } |
| + |
| + void NotifyProfileAdded() { |
| + content::NotificationService::current()->Notify( |
| + chrome::NOTIFICATION_PROFILE_ADDED, content::Source<Profile>(&profile_), |
| + content::NotificationService::NoDetails()); |
| + } |
| + |
| + void TestOnLocalChange(const std::string& name, bool value) { |
| + NotifyProfileAdded(); |
| + PrefServiceSyncable* prefs = PrefServiceSyncable::FromProfile(profile()); |
| + prefs->SetBoolean(name, value); |
| + EXPECT_EQ(prefs->GetBoolean(prefs::kCredentialsEnableService), value); |
| + EXPECT_EQ(prefs->GetBoolean(prefs::kPasswordManagerSavingEnabled), value); |
| + } |
| + |
| + // Checks that if Sync data doesn't contain new value for |
| + // kCredentialsEnableService or kPasswordManagerSavingEnabled, then their |
| + // |value| stays the same after Sync merges the data. |
| + void TestEmptySyncDataDoesntAffectPrefValues(bool value) { |
| + NotifyProfileAdded(); |
| + PrefServiceSyncable* prefs = PrefServiceSyncable::FromProfile(profile()); |
| + EXPECT_EQ(prefs->GetBoolean(prefs::kCredentialsEnableService), value); |
| + EXPECT_EQ(prefs->GetBoolean(prefs::kPasswordManagerSavingEnabled), value); |
| + // Empty data comes from sync. |
| + StartSyncing(prefs, prefs::kCredentialsEnableService, |
| + syncer::SyncDataList()); |
| + StartSyncing(prefs, prefs::kPasswordManagerSavingEnabled, |
| + syncer::SyncDataList()); |
| + EXPECT_EQ(prefs->GetBoolean(prefs::kCredentialsEnableService), value); |
| + EXPECT_EQ(prefs->GetBoolean(prefs::kPasswordManagerSavingEnabled), value); |
| + } |
| + |
| + // Legacy pref kPasswordManagerSavingEnabled arrives from Sync with |
| + // |legacy_pref_value|, new pref kCredentialsEnableService arrives from sync |
| + // with |new_pref_value|. Tests that final value for this prefs are equals to |
| + // |final_value|. |
| + void TestReconcileWhenBothPrefsTypesArrivesFromSync(bool new_pref_value, |
| + bool legacy_pref_value, |
| + bool final_value) { |
| + PrefServiceSyncable* prefs = PrefServiceSyncable::FromProfile(profile()); |
| + StartSyncingPrefWithValue(prefs, prefs::kCredentialsEnableService, |
| + new_pref_value); |
| + StartSyncingPrefWithValue(prefs, prefs::kPasswordManagerSavingEnabled, |
| + legacy_pref_value); |
| + EXPECT_EQ(prefs->GetBoolean(prefs::kCredentialsEnableService), final_value); |
| + EXPECT_EQ(prefs->GetBoolean(prefs::kPasswordManagerSavingEnabled), |
| + final_value); |
| + } |
| + |
| + // Checks that if |new_value| for the preference named |name| has came from |
| + // sync, then both kCredentialsEnableService and kPasswordManagerSavingEnabled |
| + // have |new_value| as value. |
| + void TestReconcileOnNewPrefValueArrivesFromSync(const std::string& name, |
| + bool new_value) { |
| + PrefServiceSyncable* prefs = PrefServiceSyncable::FromProfile(profile()); |
| + syncer::SyncDataList sync_data_list; |
| + sync_data_list.push_back(CreatePrefSyncData(name, new_value)); |
| + StartSyncing(prefs, name, sync_data_list); |
| + EXPECT_EQ(prefs->GetBoolean(prefs::kCredentialsEnableService), new_value); |
| + EXPECT_EQ(prefs->GetBoolean(prefs::kPasswordManagerSavingEnabled), |
| + new_value); |
| + } |
| + |
| + void TestReconcileWhenPriorityPrefEmptyAndOldPrefValueComesFromSync( |
| + bool new_value) { |
| + NotifyProfileAdded(); |
| + PrefServiceSyncable* prefs = PrefServiceSyncable::FromProfile(profile()); |
| + StartSyncing(prefs, prefs::kCredentialsEnableService, |
| + syncer::SyncDataList()); |
| + StartSyncingPrefWithValue(prefs, prefs::kPasswordManagerSavingEnabled, |
| + new_value); |
| + EXPECT_EQ(prefs->GetBoolean(prefs::kCredentialsEnableService), new_value); |
| + EXPECT_EQ(prefs->GetBoolean(prefs::kPasswordManagerSavingEnabled), |
| + new_value); |
| + } |
| + |
| + void TestReconcileWhenPrefEmptyAndNewPrefValueComesFromSync(bool new_value) { |
| + NotifyProfileAdded(); |
| + PrefServiceSyncable* prefs = PrefServiceSyncable::FromProfile(profile()); |
| + StartSyncingPrefWithValue(prefs, prefs::kCredentialsEnableService, |
| + new_value); |
| + StartSyncing(prefs, prefs::kPasswordManagerSavingEnabled, |
| + syncer::SyncDataList()); |
| + EXPECT_EQ(prefs->GetBoolean(prefs::kCredentialsEnableService), new_value); |
| + EXPECT_EQ(prefs->GetBoolean(prefs::kPasswordManagerSavingEnabled), |
| + new_value); |
| + } |
| + |
| + private: |
| + content::TestBrowserThreadBundle thread_bundle_; |
| + TestingProfile profile_; |
| +}; |
| + |
| +TEST_F(PasswordManagerSettingMigraterServiceTest, |
| + ReconcileOnLocalChangeOfPasswordManagerSavingEnabledOn) { |
| + TestOnLocalChange(prefs::kPasswordManagerSavingEnabled, true); |
| +} |
| + |
| +TEST_F(PasswordManagerSettingMigraterServiceTest, |
| + ReconcileOnLocalChangeOfPasswordManagerSavingEnabledOff) { |
| + TestOnLocalChange(prefs::kPasswordManagerSavingEnabled, false); |
| +} |
| + |
| +TEST_F(PasswordManagerSettingMigraterServiceTest, |
| + ReconcileOnLocalChangeOfCredentialsEnableServiceOn) { |
| + TestOnLocalChange(prefs::kCredentialsEnableService, true); |
| +} |
| + |
| +TEST_F(PasswordManagerSettingMigraterServiceTest, |
| + ReconcileOnLocalChangeOfCredentialsEnableServiceOff) { |
| + TestOnLocalChange(prefs::kCredentialsEnableService, false); |
| +} |
| + |
| +TEST_F(PasswordManagerSettingMigraterServiceTest, |
| + ReconcileOnSyncMergeEmptyDataFinished) { |
| + // kPasswordManagerSavingEnabled is set to "off" and kCredentialsEnableService |
| + // is created for the first time with default value "on". Data which has came |
| + // from sync doesn't contain changes for these preferences, so after sync has |
| + // finished merging, both preferences should be "off". |
| + PrefServiceSyncable* prefs = PrefServiceSyncable::FromProfile(profile()); |
| + prefs->SetBoolean(prefs::kPasswordManagerSavingEnabled, false); |
| + EXPECT_EQ(prefs->GetBoolean(prefs::kCredentialsEnableService), true); |
| + NotifyProfileAdded(); |
| + EXPECT_EQ(prefs->GetBoolean(prefs::kCredentialsEnableService), true); |
| + EXPECT_EQ(prefs->GetBoolean(prefs::kPasswordManagerSavingEnabled), false); |
| + // Empty data comes from sync. |
| + StartSyncing(prefs, prefs::kPasswordManagerSavingEnabled, |
| + syncer::SyncDataList()); |
| + StartSyncing(prefs, prefs::kCredentialsEnableService, syncer::SyncDataList()); |
| + EXPECT_EQ(prefs->GetBoolean(prefs::kCredentialsEnableService), false); |
| + EXPECT_EQ(prefs->GetBoolean(prefs::kPasswordManagerSavingEnabled), false); |
| +} |
| + |
| +TEST_F(PasswordManagerSettingMigraterServiceTest, |
| + ReconcileOnSyncMergeEmptyDataFinishedAllOn) { |
| + TestEmptySyncDataDoesntAffectPrefValues(true); |
| +} |
| + |
| +TEST_F(PasswordManagerSettingMigraterServiceTest, |
| + ReconcileOnSyncMergeEmptyDataFinishedAllOff) { |
| + PrefServiceSyncable* prefs = PrefServiceSyncable::FromProfile(profile()); |
| + prefs->SetBoolean(prefs::kPasswordManagerSavingEnabled, false); |
| + prefs->SetBoolean(prefs::kCredentialsEnableService, false); |
| + TestEmptySyncDataDoesntAffectPrefValues(false); |
| +} |
| + |
| +TEST_F(PasswordManagerSettingMigraterServiceTest, |
| + ReconcileWithCredentialsEnableServiceOffFromSyncFromBothOffState) { |
| + // Test case (0,0): was 00 arrived 0_ -> 00. |
| + PrefService* prefs = profile()->GetPrefs(); |
| + prefs->SetBoolean(prefs::kPasswordManagerSavingEnabled, false); |
| + prefs->SetBoolean(prefs::kCredentialsEnableService, false); |
| + NotifyProfileAdded(); |
| + TestReconcileOnNewPrefValueArrivesFromSync(prefs::kCredentialsEnableService, |
| + false); |
| +} |
| + |
| +TEST_F(PasswordManagerSettingMigraterServiceTest, |
| + ReconcileWithCredentialsEnableServiceOnFromSyncFromBothOffState) { |
| + // Test case (0,1): was 00 arrived 1_ -> 11. |
| + PrefService* prefs = profile()->GetPrefs(); |
| + prefs->SetBoolean(prefs::kPasswordManagerSavingEnabled, false); |
| + prefs->SetBoolean(prefs::kCredentialsEnableService, false); |
| + NotifyProfileAdded(); |
| + TestReconcileOnNewPrefValueArrivesFromSync(prefs::kCredentialsEnableService, |
| + true); |
| +} |
| + |
| +TEST_F(PasswordManagerSettingMigraterServiceTest, |
| + ReconcileWithPasswordManagerSavingEnabledOffFromSyncFromBothOffState) { |
| + // Test case (0,2): was 00 arrived _0 -> 00. |
| + PrefService* prefs = profile()->GetPrefs(); |
| + prefs->SetBoolean(prefs::kPasswordManagerSavingEnabled, false); |
| + prefs->SetBoolean(prefs::kCredentialsEnableService, false); |
| + NotifyProfileAdded(); |
| + TestReconcileOnNewPrefValueArrivesFromSync( |
| + prefs::kPasswordManagerSavingEnabled, false); |
| +} |
| + |
| +TEST_F(PasswordManagerSettingMigraterServiceTest, |
| + ReconcileWithPasswordManagerSavingEnabledOnFromSyncFromBothOffState) { |
| + // Test case (0,3): was 00 arrived _1 -> 11. |
| + PrefService* prefs = profile()->GetPrefs(); |
| + prefs->SetBoolean(prefs::kPasswordManagerSavingEnabled, false); |
| + prefs->SetBoolean(prefs::kCredentialsEnableService, false); |
| + NotifyProfileAdded(); |
| + TestReconcileOnNewPrefValueArrivesFromSync( |
| + prefs::kPasswordManagerSavingEnabled, true); |
| +} |
| + |
| +TEST_F(PasswordManagerSettingMigraterServiceTest, |
| + ReconcileWhenLegacyOnFromSyncNewIsOffFromSyncBothPrefOff) { |
| + // Test case (0,5): was 00 arrived 01 -> 11. |
| + PrefService* prefs = profile()->GetPrefs(); |
| + prefs->SetBoolean(prefs::kPasswordManagerSavingEnabled, false); |
| + prefs->SetBoolean(prefs::kCredentialsEnableService, false); |
| + NotifyProfileAdded(); |
| + TestReconcileWhenBothPrefsTypesArrivesFromSync( |
| + false /* new pref */, true /* legacy pref */, true /* result value */); |
| +} |
| + |
| +TEST_F(PasswordManagerSettingMigraterServiceTest, |
| + ReconcileWhenLegacyOffFromSyncNewIsOffFromSyncBothPrefOff) { |
| + // Test case (0,4): was 00 arrived 00 -> 00. |
| + PrefService* prefs = profile()->GetPrefs(); |
| + prefs->SetBoolean(prefs::kPasswordManagerSavingEnabled, false); |
| + prefs->SetBoolean(prefs::kCredentialsEnableService, false); |
| + NotifyProfileAdded(); |
| + TestReconcileWhenBothPrefsTypesArrivesFromSync( |
| + false /* new pref */, false /* legacy pref */, false /* result value */); |
| +} |
| + |
| +TEST_F(PasswordManagerSettingMigraterServiceTest, |
| + ReconcileWhenLegacyOffFromSyncNewIsOnFromSyncBothPrefOff) { |
| + // Test case (0,6): was 00 arrived 10 -> 00. |
| + PrefService* prefs = profile()->GetPrefs(); |
| + prefs->SetBoolean(prefs::kPasswordManagerSavingEnabled, false); |
| + prefs->SetBoolean(prefs::kCredentialsEnableService, false); |
| + NotifyProfileAdded(); |
| + TestReconcileWhenBothPrefsTypesArrivesFromSync( |
| + true /* new pref */, false /* legacy pref */, true /* result value */); |
| +} |
| + |
| +TEST_F(PasswordManagerSettingMigraterServiceTest, |
| + ReconcileWhenLegacyOnFromSyncNewIsOnFromSyncBothPrefOff) { |
| + // Test case (0,7): was 00 arrived 11 -> 00. |
| + PrefService* prefs = profile()->GetPrefs(); |
| + prefs->SetBoolean(prefs::kPasswordManagerSavingEnabled, false); |
| + prefs->SetBoolean(prefs::kCredentialsEnableService, false); |
| + NotifyProfileAdded(); |
| + TestReconcileWhenBothPrefsTypesArrivesFromSync( |
| + true /* new pref */, true /* legacy pref */, true /* result value */); |
| +} |
| + |
| +TEST_F(PasswordManagerSettingMigraterServiceTest, |
| + ReconcileWhenLegacyOffFromSyncNewIsOffFromSyncNewOnLegacyOffLocally) { |
| + // Test case (2,4): was 10 arrived 00 -> 00. |
| + PrefService* prefs = profile()->GetPrefs(); |
| + prefs->SetBoolean(prefs::kCredentialsEnableService, true); |
| + prefs->SetBoolean(prefs::kPasswordManagerSavingEnabled, false); |
| + NotifyProfileAdded(); |
| + TestReconcileWhenBothPrefsTypesArrivesFromSync( |
| + false /* new pref */, false /* legacy pref */, false /* result value */); |
| +} |
| + |
| +TEST_F(PasswordManagerSettingMigraterServiceTest, |
| + ReconcileWhenLegacyOnFromSyncNewIsOffFromSyncNewOnLegacyOffLocally) { |
| + // Test case (2,5): was 10 arrived 01 -> 00. |
| + PrefService* prefs = profile()->GetPrefs(); |
| + prefs->SetBoolean(prefs::kCredentialsEnableService, true); |
| + prefs->SetBoolean(prefs::kPasswordManagerSavingEnabled, false); |
| + NotifyProfileAdded(); |
| + TestReconcileWhenBothPrefsTypesArrivesFromSync( |
| + false /* new pref */, true /* legacy pref */, false /* result value */); |
| +} |
| + |
| +TEST_F(PasswordManagerSettingMigraterServiceTest, |
| + ReconcileWhenLegacyOffFromSyncNewIsOnFromSyncNewOnLegacyOffLocally) { |
| + // Test case (2,6): was 10 arrived 10 -> 11. |
| + PrefService* prefs = profile()->GetPrefs(); |
| + prefs->SetBoolean(prefs::kCredentialsEnableService, true); |
| + prefs->SetBoolean(prefs::kPasswordManagerSavingEnabled, false); |
| + NotifyProfileAdded(); |
| + TestReconcileWhenBothPrefsTypesArrivesFromSync( |
| + true /* new pref */, false /* legacy pref */, true /* result value */); |
| +} |
| + |
| +TEST_F(PasswordManagerSettingMigraterServiceTest, |
| + ReconcileWhenLegacyOnFromSyncNewIsOnFromSyncNewOnLegacyOffLocally) { |
| + // Test case (2,7): was 10 arrived 11 -> 11. |
| + PrefService* prefs = profile()->GetPrefs(); |
| + prefs->SetBoolean(prefs::kCredentialsEnableService, true); |
| + prefs->SetBoolean(prefs::kPasswordManagerSavingEnabled, false); |
| + NotifyProfileAdded(); |
| + TestReconcileWhenBothPrefsTypesArrivesFromSync( |
| + true /* new pref */, true /* legacy pref */, true /* result value */); |
| +} |
| + |
| +TEST_F(PasswordManagerSettingMigraterServiceTest, |
| + ReconcileWithCredentialsEnableServiceOffFromSync) { |
| + // Test case (3,0): was 11 arrived 0_ -> 00. |
| + NotifyProfileAdded(); |
| + TestReconcileOnNewPrefValueArrivesFromSync(prefs::kCredentialsEnableService, |
| + false); |
| +} |
| + |
| +TEST_F(PasswordManagerSettingMigraterServiceTest, |
| + ReconcileWithCredentialsEnableServiceOnFromSync) { |
| + // Test case (3,1): was 11 arrived 1_ -> 11. |
| + NotifyProfileAdded(); |
| + TestReconcileOnNewPrefValueArrivesFromSync(prefs::kCredentialsEnableService, |
| + true); |
| +} |
| + |
| +TEST_F(PasswordManagerSettingMigraterServiceTest, |
| + ReconcileWithPasswordManagerSavingEnabledOffFromSync) { |
| + // Test case (3,2): was 11 arrived _0 -> 00. |
| + NotifyProfileAdded(); |
| + TestReconcileOnNewPrefValueArrivesFromSync( |
| + prefs::kPasswordManagerSavingEnabled, false); |
| +} |
| + |
| +TEST_F(PasswordManagerSettingMigraterServiceTest, |
| + ReconcileWithPasswordManagerSavingEnabledOnFromSync) { |
| + // Test case (3,3): was 11 arrived _1 -> 11. |
| + NotifyProfileAdded(); |
| + TestReconcileOnNewPrefValueArrivesFromSync( |
| + prefs::kPasswordManagerSavingEnabled, true); |
| +} |
| + |
| +TEST_F(PasswordManagerSettingMigraterServiceTest, |
| + ReconcileWhenLegacyOffFromSyncNewIsOffFromSync) { |
| + // Test case (3,4): was 11 arrived 00 -> 00. |
| + NotifyProfileAdded(); |
| + TestReconcileWhenBothPrefsTypesArrivesFromSync( |
| + false /* new pref */, false /* legacy pref */, false /* result value */); |
| +} |
| + |
| +TEST_F(PasswordManagerSettingMigraterServiceTest, |
| + ReconcileWhenLegacyOnFromSyncNewIsOffFromSync) { |
| + // Test case (3,5): was 11 arrived 01 -> 00. |
| + NotifyProfileAdded(); |
| + TestReconcileWhenBothPrefsTypesArrivesFromSync( |
| + false /* new pref */, true /* legacy pref */, false /* result value */); |
| +} |
| + |
| +TEST_F(PasswordManagerSettingMigraterServiceTest, |
| + ReconcileWhenLegacyOffFromSyncNewIsOnFromSync) { |
| + // Test case (3,6): was 11 arrived 10 -> 00. |
| + NotifyProfileAdded(); |
| + TestReconcileWhenBothPrefsTypesArrivesFromSync( |
| + true /* new pref */, false /* legacy pref */, false /* result value */); |
| +} |
| + |
| +TEST_F(PasswordManagerSettingMigraterServiceTest, |
| + ReconcileWhenLegacyOnFromSyncNewIsOnFromSync) { |
| + // Test case (3,7): was 11 arrived 11 -> 11. |
| + NotifyProfileAdded(); |
| + TestReconcileWhenBothPrefsTypesArrivesFromSync( |
| + true /* new pref */, true /* legacy pref */, true /* result value */); |
| +} |
| + |
| +TEST_F(PasswordManagerSettingMigraterServiceTest, |
| + ReconcileWhenSyncIsNotExpectedPasswordManagerEnabledOff) { |
| + PrefServiceSyncable* prefs = PrefServiceSyncable::FromProfile(profile()); |
| + prefs->SetBoolean(prefs::kPasswordManagerSavingEnabled, false); |
| + EXPECT_CALL(*profile_sync_service(), CanSyncStart()) |
| + .WillRepeatedly(testing::Return(false)); |
| + NotifyProfileAdded(); |
| + EXPECT_EQ(prefs->GetBoolean(prefs::kCredentialsEnableService), false); |
| + EXPECT_EQ(prefs->GetBoolean(prefs::kPasswordManagerSavingEnabled), false); |
| +} |
| + |
| +TEST_F(PasswordManagerSettingMigraterServiceTest, |
| + ReconcileWhenSyncIsNotExpectedPasswordManagerEnabledOn) { |
| + PrefServiceSyncable* prefs = PrefServiceSyncable::FromProfile(profile()); |
| + prefs->SetBoolean(prefs::kPasswordManagerSavingEnabled, true); |
| + EXPECT_EQ(prefs->GetBoolean(prefs::kCredentialsEnableService), true); |
| + EXPECT_CALL(*profile_sync_service(), CanSyncStart()) |
| + .WillRepeatedly(testing::Return(false)); |
| + NotifyProfileAdded(); |
| + EXPECT_EQ(prefs->GetBoolean(prefs::kCredentialsEnableService), true); |
| + EXPECT_EQ(prefs->GetBoolean(prefs::kPasswordManagerSavingEnabled), true); |
| +} |
| + |
| +TEST_F(PasswordManagerSettingMigraterServiceTest, |
| + ReconcileWhenLegacyEmptyFromSyncNewOnFromSync) { |
| + TestReconcileWhenPrefEmptyAndNewPrefValueComesFromSync(true); |
| +} |
| + |
| +TEST_F(PasswordManagerSettingMigraterServiceTest, |
| + ReconcileWhenLegacyEmptyFromSyncNewOffFromSync) { |
| + TestReconcileWhenPrefEmptyAndNewPrefValueComesFromSync(false); |
| +} |
| + |
| +TEST_F(PasswordManagerSettingMigraterServiceTest, |
| + ReconcileWhenPriorityEmptyFromSyncLegacyOnFromSync) { |
| + TestReconcileWhenPriorityPrefEmptyAndOldPrefValueComesFromSync(true); |
| +} |
| + |
| +TEST_F(PasswordManagerSettingMigraterServiceTest, |
| + ReconcileWhenPriorityEmptyFromSyncLegacyOffFromSync) { |
| + TestReconcileWhenPriorityPrefEmptyAndOldPrefValueComesFromSync(false); |
| +} |
| + |
| +} // namespace password_manager |