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

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

Issue 9749012: [Sync] Have SyncableService's take ownership of their SyncChangeProcessor. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix browser_tests Created 8 years, 9 months 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/settings_backend.cc
diff --git a/chrome/browser/extensions/settings/settings_backend.cc b/chrome/browser/extensions/settings/settings_backend.cc
index 1ee4516dfc7008dcf25bab5dd8b4ce210ea64e9d..acc1cfb1af0a7eecccadc848408690711f6c435f 100644
--- a/chrome/browser/extensions/settings/settings_backend.cc
+++ b/chrome/browser/extensions/settings/settings_backend.cc
@@ -31,8 +31,7 @@ SettingsBackend::SettingsBackend(
base_path_(base_path),
quota_(quota),
observers_(observers),
- sync_type_(syncable::UNSPECIFIED),
- sync_processor_(NULL) {
+ sync_type_(syncable::UNSPECIFIED) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE));
}
@@ -72,9 +71,11 @@ SyncableSettingsStorage* SettingsBackend::GetOrCreateStorageWithSyncData(
storage));
storage_objs_[extension_id] = syncable_storage;
- if (sync_processor_) {
+ if (sync_processor_.get()) {
SyncError error =
- syncable_storage->StartSyncing(sync_type_, sync_data, sync_processor_);
+ syncable_storage->StartSyncing(sync_type_,
+ sync_data,
+ sync_processor_.get());
if (error.IsSet()) {
syncable_storage.get()->StopSyncing();
}
@@ -171,15 +172,16 @@ SyncDataList SettingsBackend::GetAllSyncData(
SyncError SettingsBackend::MergeDataAndStartSyncing(
syncable::ModelType type,
const SyncDataList& initial_sync_data,
- SyncChangeProcessor* sync_processor) {
+ scoped_ptr<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(!sync_processor_.get());
+ DCHECK(sync_processor.get());
sync_type_ = type;
- sync_processor_ = sync_processor;
+ sync_processor_ = sync_processor.Pass();
// Group the initial sync data by extension id.
std::map<std::string, linked_ptr<DictionaryValue> > grouped_sync_data;
@@ -206,11 +208,11 @@ SyncError SettingsBackend::MergeDataAndStartSyncing(
SyncError error;
if (maybe_sync_data != grouped_sync_data.end()) {
error = it->second->StartSyncing(
- type, *maybe_sync_data->second, sync_processor);
+ type, *maybe_sync_data->second, sync_processor_.get());
grouped_sync_data.erase(it->first);
} else {
DictionaryValue empty;
- error = it->second->StartSyncing(type, empty, sync_processor);
+ error = it->second->StartSyncing(type, empty, sync_processor_.get());
}
if (error.IsSet()) {
it->second->StopSyncing();
@@ -232,7 +234,7 @@ SyncError SettingsBackend::ProcessSyncChanges(
const tracked_objects::Location& from_here,
const SyncChangeList& sync_changes) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE));
- DCHECK(sync_processor_);
+ DCHECK(sync_processor_.get());
// Group changes by extension, to pass all changes in a single method call.
std::map<std::string, SettingSyncDataList> grouped_sync_data;
@@ -261,10 +263,6 @@ void SettingsBackend::StopSyncing(syncable::ModelType type) {
DCHECK(type == syncable::EXTENSION_SETTINGS ||
type == syncable::APP_SETTINGS);
DCHECK_EQ(type, sync_type_);
- DCHECK(sync_processor_);
-
- sync_type_ = syncable::UNSPECIFIED;
- sync_processor_ = NULL;
for (StorageObjMap::iterator it = storage_objs_.begin();
it != storage_objs_.end(); ++it) {
@@ -272,6 +270,9 @@ void SettingsBackend::StopSyncing(syncable::ModelType type) {
// and syncing was disabled, but StopSyncing is safe to call multiple times.
it->second->StopSyncing();
}
+
+ sync_type_ = syncable::UNSPECIFIED;
+ sync_processor_.reset();
}
} // namespace extensions

Powered by Google App Engine
This is Rietveld 408576698