Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(155)

Unified Diff: chrome/browser/extensions/settings/syncable_settings_storage.cc

Issue 8539037: Extension Settings API: make it so that when changes received from Sync fail to (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: comments, sync Created 9 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/extensions/settings/syncable_settings_storage.cc
diff --git a/chrome/browser/extensions/settings/syncable_settings_storage.cc b/chrome/browser/extensions/settings/syncable_settings_storage.cc
index 243f653f30cf37bf609d52393bfc516a7236fa83..799b6b092a03fdaa2c5ba9152301e33e4328ea24 100644
--- a/chrome/browser/extensions/settings/syncable_settings_storage.cc
+++ b/chrome/browser/extensions/settings/syncable_settings_storage.cc
@@ -146,6 +146,8 @@ SyncError SyncableSettingsStorage::StartSyncing(
SyncError SyncableSettingsStorage::SendLocalSettingsToSync(
const DictionaryValue& settings) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE));
+ DCHECK(sync_processor_);
+
SyncChangeList changes;
for (DictionaryValue::key_iterator it = settings.begin_keys();
it != settings.end_keys(); ++it) {
@@ -161,6 +163,7 @@ SyncError SyncableSettingsStorage::SendLocalSettingsToSync(
SyncError error = sync_processor_->ProcessSyncChanges(FROM_HERE, changes);
if (error.IsSet()) {
+ StopSyncing();
return error;
}
@@ -222,32 +225,31 @@ SyncError SyncableSettingsStorage::OverwriteLocalSettingsWithSync(
if (changes.empty()) {
return SyncError();
}
-
- std::vector<SyncError> sync_errors(ProcessSyncChanges(changes));
- if (sync_errors.empty()) {
- return SyncError();
- }
- // TODO(kalman): something sensible with multiple errors.
- return sync_errors[0];
+ return ProcessSyncChanges(changes);
}
void SyncableSettingsStorage::StopSyncing() {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE));
- DCHECK(sync_type_ == syncable::EXTENSION_SETTINGS ||
- sync_type_ == syncable::APP_SETTINGS);
- DCHECK(sync_processor_);
+ // Stop syncing is allowed to be called multiple times without StartSyncing,
+ // so don't DCHECK that these values aren't already disabled.
sync_type_ = syncable::UNSPECIFIED;
sync_processor_ = NULL;
synced_keys_.clear();
}
-std::vector<SyncError> SyncableSettingsStorage::ProcessSyncChanges(
+SyncError SyncableSettingsStorage::ProcessSyncChanges(
const SettingSyncDataList& sync_changes) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE));
- DCHECK(sync_processor_);
DCHECK(!sync_changes.empty()) << "No sync changes for " << extension_id_;
+ if (!sync_processor_) {
+ return SyncError(
+ FROM_HERE,
+ std::string("Sync is inactive for ") + extension_id_,
+ sync_type_);
+ }
+
std::vector<SyncError> errors;
SettingChangeList changes;
@@ -327,7 +329,8 @@ std::vector<SyncError> SyncableSettingsStorage::ProcessSyncChanges(
extension_id_,
SettingChange::GetEventJson(changes));
- return errors;
+ // TODO(kalman): Something sensible with multiple errors.
+ return errors.empty() ? SyncError() : errors[0];
}
void SyncableSettingsStorage::SendChangesToSync(
@@ -376,7 +379,7 @@ void SyncableSettingsStorage::SendChangesToSync(
SyncError error =
sync_processor_->ProcessSyncChanges(FROM_HERE, sync_changes);
if (error.IsSet()) {
- LOG(WARNING) << "Failed to send changes to sync: " << error.message();
+ StopSyncing();
return;
}

Powered by Google App Engine
This is Rietveld 408576698