diff options
author | zea <zea@chromium.org> | 2015-08-05 16:42:57 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-08-05 23:43:22 +0000 |
commit | a49d45935c991a06578f7899d373b58a82e012b6 (patch) | |
tree | 9b6be6f7a64af1fb59bf44a462357ffc8f9cb898 /components/sync_driver/sync_prefs.cc | |
parent | 01383bbc41bbf12b2b76814a8010bb5395f1378f (diff) | |
download | chromium_src-a49d45935c991a06578f7899d373b58a82e012b6.zip chromium_src-a49d45935c991a06578f7899d373b58a82e012b6.tar.gz chromium_src-a49d45935c991a06578f7899d373b58a82e012b6.tar.bz2 |
[Sync] Add support for ignoring old invalidations
Persist a map of the most recent invalidation versions for all sync types, and
ignore all invalidations with versions that are not newer.
BUG=498476
Review URL: https://codereview.chromium.org/1270223003
Cr-Commit-Position: refs/heads/master@{#342012}
Diffstat (limited to 'components/sync_driver/sync_prefs.cc')
-rw-r--r-- | components/sync_driver/sync_prefs.cc | 39 |
1 files changed, 34 insertions, 5 deletions
diff --git a/components/sync_driver/sync_prefs.cc b/components/sync_driver/sync_prefs.cc index def047f..3fe3391 100644 --- a/components/sync_driver/sync_prefs.cc +++ b/components/sync_driver/sync_prefs.cc @@ -77,16 +77,12 @@ void SyncPrefs::RegisterProfilePrefs( #endif registry->RegisterBooleanPref(prefs::kSyncHasAuthError, false); - registry->RegisterStringPref(prefs::kSyncSessionsGUID, std::string()); - registry->RegisterIntegerPref(prefs::kSyncRemainingRollbackTries, 0); - registry->RegisterBooleanPref(prefs::kSyncPassphrasePrompted, false); - registry->RegisterIntegerPref(prefs::kSyncMemoryPressureWarningCount, -1); - registry->RegisterBooleanPref(prefs::kSyncShutdownCleanly, false); + registry->RegisterDictionaryPref(prefs::kSyncInvalidationVersions); } void SyncPrefs::AddSyncPrefObserver(SyncPrefObserver* sync_pref_observer) { @@ -107,6 +103,9 @@ void SyncPrefs::ClearPreferences() { pref_service_->ClearPref(prefs::kSyncEncryptionBootstrapToken); pref_service_->ClearPref(prefs::kSyncKeystoreEncryptionBootstrapToken); pref_service_->ClearPref(prefs::kSyncPassphrasePrompted); + pref_service_->ClearPref(prefs::kSyncMemoryPressureWarningCount); + pref_service_->ClearPref(prefs::kSyncShutdownCleanly); + pref_service_->ClearPref(prefs::kSyncInvalidationVersions); // TODO(nick): The current behavior does not clear // e.g. prefs::kSyncBookmarks. Is that really what we want? @@ -480,4 +479,34 @@ void SyncPrefs::SetCleanShutdown(bool value) { pref_service_->SetBoolean(prefs::kSyncShutdownCleanly, value); } +void SyncPrefs::GetInvalidationVersions( + std::map<syncer::ModelType, int64>* invalidation_versions) const { + const base::DictionaryValue* invalidation_dictionary = + pref_service_->GetDictionary(prefs::kSyncInvalidationVersions); + syncer::ModelTypeSet protocol_types = syncer::ProtocolTypes(); + for (auto iter = protocol_types.First(); iter.Good(); iter.Inc()) { + std::string key = syncer::ModelTypeToString(iter.Get()); + std::string version_str; + if (!invalidation_dictionary->GetString(key, &version_str)) + continue; + int64 version = 0; + if (!base::StringToInt64(version_str, &version)) + continue; + (*invalidation_versions)[iter.Get()] = version; + } +} + +void SyncPrefs::UpdateInvalidationVersions( + const std::map<syncer::ModelType, int64>& invalidation_versions) { + scoped_ptr<base::DictionaryValue> invalidation_dictionary( + new base::DictionaryValue()); + for (const auto& map_iter : invalidation_versions) { + std::string version_str = base::Int64ToString(map_iter.second); + invalidation_dictionary->SetString( + syncer::ModelTypeToString(map_iter.first), version_str); + } + pref_service_->Set(prefs::kSyncInvalidationVersions, + *invalidation_dictionary); +} + } // namespace sync_driver |