Index: chrome/browser/prefs/pref_model_associator.h |
diff --git a/chrome/browser/prefs/pref_model_associator.h b/chrome/browser/prefs/pref_model_associator.h |
index 539d38a301c9b71d15547053c8c8093cd5268cd0..0c0cb66e9136b12aa6fe0d18ede97c4f7656ce17 100644 |
--- a/chrome/browser/prefs/pref_model_associator.h |
+++ b/chrome/browser/prefs/pref_model_associator.h |
@@ -12,6 +12,7 @@ |
#include "base/basictypes.h" |
#include "base/compiler_specific.h" |
#include "base/containers/hash_tables.h" |
+#include "base/gtest_prod_util.h" |
#include "base/observer_list.h" |
#include "base/threading/non_thread_safe.h" |
#include "chrome/browser/prefs/synced_pref_observer.h" |
@@ -110,6 +111,12 @@ class PrefModelAssociator |
protected: |
friend class ProfileSyncServicePreferenceTest; |
+ FRIEND_TEST_ALL_PREFIXES(ProfileSyncServicePreferenceTest, |
+ ModelAssociationCloudHasOldMigratedData); |
+ FRIEND_TEST_ALL_PREFIXES(ProfileSyncServicePreferenceTest, |
+ ModelAssociationCloudHasNewMigratedData); |
+ FRIEND_TEST_ALL_PREFIXES(ProfileSyncServicePreferenceTest, |
+ ModelAssociationCloudAddsOldAndNewMigratedData); |
typedef std::map<std::string, syncer::SyncData> SyncDataMap; |
@@ -118,18 +125,26 @@ class PrefModelAssociator |
// with ours and append a new UPDATE SyncChange to |sync_changes|. If |
// sync_pref is not set, we append an ADD SyncChange to |sync_changes| with |
// the current preference data. |
+ // |migrated_preference_list| points to a vector that may be updated with a |
+ // string containing the old name of the preference described by |pref_name|. |
// Note: We do not modify the sync data for preferences that are either |
// controlled by policy (are not user modifiable) or have their default value |
// (are not user controlled). |
void InitPrefAndAssociate(const syncer::SyncData& sync_pref, |
const std::string& pref_name, |
- syncer::SyncChangeList* sync_changes); |
+ syncer::SyncChangeList* sync_changes, |
+ SyncDataMap* migrated_preference_list); |
static base::Value* MergeListValues( |
const base::Value& from_value, const base::Value& to_value); |
static base::Value* MergeDictionaryValues(const base::Value& from_value, |
const base::Value& to_value); |
+ // Returns whether a given preference name is a new name of a migrated |
+ // preference. Exposed here for testing. |
+ static bool IsMigratedPreference(const char* preference_name); |
+ static bool IsOldMigratedPreference(const char* old_preference_name); |
+ |
// Do we have an active association between the preferences and sync models? |
// Set when start syncing, reset in StopSyncing. While this is not set, we |
// ignore any local preference changes (when we start syncing we will look |