Index: chrome/browser/extensions/syncable_extension_settings_storage.cc |
diff --git a/chrome/browser/extensions/syncable_extension_settings_storage.cc b/chrome/browser/extensions/syncable_extension_settings_storage.cc |
index 8ec5d178941d6d24a1bd4d8bcc4cdbdc46492e49..2266ea19dc1a2bc6bd19b7edda286d779355cab6 100644 |
--- a/chrome/browser/extensions/syncable_extension_settings_storage.cc |
+++ b/chrome/browser/extensions/syncable_extension_settings_storage.cc |
@@ -18,6 +18,7 @@ SyncableExtensionSettingsStorage::SyncableExtensionSettingsStorage( |
: observers_(observers), |
extension_id_(extension_id), |
delegate_(delegate), |
+ sync_type_(syncable::UNSPECIFIED), |
sync_processor_(NULL) { |
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); |
} |
@@ -110,10 +111,17 @@ ExtensionSettingsStorage::Result SyncableExtensionSettingsStorage::Clear() { |
// Sync-related methods. |
SyncError SyncableExtensionSettingsStorage::StartSyncing( |
- const DictionaryValue& sync_state, SyncChangeProcessor* sync_processor) { |
+ syncable::ModelType type, |
+ const DictionaryValue& sync_state, |
+ SyncChangeProcessor* sync_processor) { |
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); |
+ DCHECK(type == syncable::EXTENSION_SETTINGS || |
+ type == syncable::APP_SETTINGS); |
+ DCHECK_EQ(sync_type_, syncable::UNSPECIFIED); |
DCHECK(!sync_processor_); |
DCHECK(synced_keys_.empty()); |
+ |
+ sync_type_ = type; |
sync_processor_ = sync_processor; |
Result maybe_settings = delegate_->Get(); |
@@ -121,7 +129,7 @@ SyncError SyncableExtensionSettingsStorage::StartSyncing( |
return SyncError( |
FROM_HERE, |
std::string("Failed to get settings: ") + maybe_settings.GetError(), |
- syncable::EXTENSION_SETTINGS); |
+ type); |
} |
const DictionaryValue* settings = maybe_settings.GetSettings(); |
@@ -218,7 +226,11 @@ SyncError SyncableExtensionSettingsStorage::OverwriteLocalSettingsWithSync( |
void SyncableExtensionSettingsStorage::StopSyncing() { |
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); |
+ DCHECK(sync_type_ == syncable::EXTENSION_SETTINGS || |
+ sync_type_ == syncable::APP_SETTINGS); |
DCHECK(sync_processor_); |
+ |
+ sync_type_ = syncable::UNSPECIFIED; |
sync_processor_ = NULL; |
synced_keys_.clear(); |
} |
@@ -247,7 +259,7 @@ std::vector<SyncError> SyncableExtensionSettingsStorage::ProcessSyncChanges( |
FROM_HERE, |
std::string("Error getting current sync state for ") + |
extension_id_ + "/" + key + ": " + maybe_settings.GetError(), |
- syncable::EXTENSION_SETTINGS)); |
+ sync_type_)); |
continue; |
} |
const DictionaryValue* settings = maybe_settings.GetSettings(); |
@@ -394,7 +406,7 @@ SyncError SyncableExtensionSettingsStorage::OnSyncAdd( |
FROM_HERE, |
std::string("Error pushing sync add to local settings: ") + |
result.GetError(), |
- syncable::EXTENSION_SETTINGS); |
+ sync_type_); |
} |
changes->AppendChange(key, NULL, new_value); |
return SyncError(); |
@@ -413,7 +425,7 @@ SyncError SyncableExtensionSettingsStorage::OnSyncUpdate( |
FROM_HERE, |
std::string("Error pushing sync update to local settings: ") + |
result.GetError(), |
- syncable::EXTENSION_SETTINGS); |
+ sync_type_); |
} |
changes->AppendChange(key, old_value, new_value); |
return SyncError(); |
@@ -431,7 +443,7 @@ SyncError SyncableExtensionSettingsStorage::OnSyncDelete( |
FROM_HERE, |
std::string("Error pushing sync remove to local settings: ") + |
result.GetError(), |
- syncable::EXTENSION_SETTINGS); |
+ sync_type_); |
} |
changes->AppendChange(key, old_value, NULL); |
return SyncError(); |