diff options
author | zea@chromium.org <zea@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-10-13 21:33:30 +0000 |
---|---|---|
committer | zea@chromium.org <zea@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-10-13 21:33:30 +0000 |
commit | ab5242d0485b8121429938c6d5aadfba4647d81f (patch) | |
tree | cd914c23a2ad9ad8426a0dbd4ee9171483c57da9 | |
parent | 6957be3efacc8028296183dbda5d7974118a5a80 (diff) | |
download | chromium_src-ab5242d0485b8121429938c6d5aadfba4647d81f.zip chromium_src-ab5242d0485b8121429938c6d5aadfba4647d81f.tar.gz chromium_src-ab5242d0485b8121429938c6d5aadfba4647d81f.tar.bz2 |
[Sync] Remove unnecessary DCHECK in pref model associator.
We assumed that when a preference becomes unmanaged, it will be user
controlled as well. This isn't the case if it was a default value previously.
This gets handled properly in the association code though, so just remove the
DCHECK and make the comment clearer.
BUG=97611
TEST=unit_tests --gtest_filter="*ProfileSyncServicePreference*"
Review URL: http://codereview.chromium.org/8266001
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@105379 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | chrome/browser/prefs/pref_model_associator.cc | 7 | ||||
-rw-r--r-- | chrome/browser/sync/profile_sync_service_preference_unittest.cc | 28 |
2 files changed, 31 insertions, 4 deletions
diff --git a/chrome/browser/prefs/pref_model_associator.cc b/chrome/browser/prefs/pref_model_associator.cc index b61e511..1928331 100644 --- a/chrome/browser/prefs/pref_model_associator.cc +++ b/chrome/browser/prefs/pref_model_associator.cc @@ -412,10 +412,9 @@ void PrefModelAssociator::ProcessPrefChange(const std::string& name) { AutoReset<bool> processing_changes(&processing_syncer_changes_, true); if (synced_preferences_.count(name) == 0) { - DCHECK(preference->IsUserControlled()); - // This preference was previously not user controlled and there was no sync - // data, but is now user controlled. We must associate it and create a sync - // node for it. + // Not in synced_preferences_ means no synced data. InitPrefAndAssociate(..) + // will determine if we care about its data (e.g. if it has a default value + // and hasn't been changed yet we don't) and take care syncing any new data. InitPrefAndAssociate(SyncData(), name, &changes); } else { // We are already syncing this preference, just update it's sync node. diff --git a/chrome/browser/sync/profile_sync_service_preference_unittest.cc b/chrome/browser/sync/profile_sync_service_preference_unittest.cc index af3367f..1c5b08e 100644 --- a/chrome/browser/sync/profile_sync_service_preference_unittest.cc +++ b/chrome/browser/sync/profile_sync_service_preference_unittest.cc @@ -539,3 +539,31 @@ TEST_F(ProfileSyncServicePreferenceTest, // Sync value should be picked up. EXPECT_TRUE(sync_value->Equals(&GetPreferenceValue(prefs::kHomePage))); } + +TEST_F(ProfileSyncServicePreferenceTest, DynamicManagedDefaultPreferences) { + const PrefService::Preference* pref = + prefs_->FindPreference(prefs::kHomePage); + EXPECT_TRUE(pref->IsDefaultValue()); + CreateRootTask task(this, syncable::PREFERENCES); + ASSERT_TRUE(StartSyncService(&task, false)); + ASSERT_TRUE(task.success()); + EXPECT_TRUE(IsSynced(prefs::kHomePage)); + EXPECT_TRUE(pref->IsDefaultValue()); + EXPECT_TRUE(GetSyncedValue(prefs::kHomePage) == NULL); + // Switch kHomePage to managed and set a different value. + scoped_ptr<Value> managed_value( + Value::CreateStringValue("http://example.com/managed")); + profile_->GetTestingPrefService()->SetManagedPref( + prefs::kHomePage, managed_value->DeepCopy()); + // The pref value should be the one dictated by policy. + EXPECT_TRUE(managed_value->Equals(&GetPreferenceValue(prefs::kHomePage))); + EXPECT_FALSE(pref->IsDefaultValue()); + // There should be no synced value. + EXPECT_TRUE(GetSyncedValue(prefs::kHomePage) == NULL); + // Switch kHomePage back to unmanaged. + profile_->GetTestingPrefService()->RemoveManagedPref(prefs::kHomePage); + // The original value should be picked up. + EXPECT_TRUE(pref->IsDefaultValue()); + // There should still be no synced value. + EXPECT_TRUE(GetSyncedValue(prefs::kHomePage) == NULL); +} |