summaryrefslogtreecommitdiffstats
path: root/components/sync_driver/sync_prefs.cc
diff options
context:
space:
mode:
authorzea <zea@chromium.org>2015-08-05 16:42:57 -0700
committerCommit bot <commit-bot@chromium.org>2015-08-05 23:43:22 +0000
commita49d45935c991a06578f7899d373b58a82e012b6 (patch)
tree9b6be6f7a64af1fb59bf44a462357ffc8f9cb898 /components/sync_driver/sync_prefs.cc
parent01383bbc41bbf12b2b76814a8010bb5395f1378f (diff)
downloadchromium_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.cc39
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