Index: chrome/browser/extensions/extension_service.cc |
diff --git a/chrome/browser/extensions/extension_service.cc b/chrome/browser/extensions/extension_service.cc |
index af61980d276af50bd8114af8b1447f01789446af..370381968256c5d85698ff54a883e226eca6fb38 100644 |
--- a/chrome/browser/extensions/extension_service.cc |
+++ b/chrome/browser/extensions/extension_service.cc |
@@ -1258,13 +1258,19 @@ namespace { |
} // namespace |
ExtensionService::SyncBundle::SyncBundle() |
- : filter(IsSyncableNone), |
- sync_processor(NULL) { |
+ : filter(IsSyncableNone) { |
} |
ExtensionService::SyncBundle::~SyncBundle() { |
} |
+void ExtensionService::SyncBundle::Reset() { |
+ filter = IsSyncableNone; |
+ synced_extensions.clear(); |
+ pending_sync_data.clear(); |
+ sync_processor.reset(); |
+} |
+ |
bool ExtensionService::SyncBundle::HasExtensionId(const std::string& id) const { |
return synced_extensions.find(id) != synced_extensions.end(); |
} |
@@ -1349,9 +1355,7 @@ ExtensionService::SyncBundle* ExtensionService::GetSyncBundleForModelType( |
SyncError ExtensionService::MergeDataAndStartSyncing( |
syncable::ModelType type, |
const SyncDataList& initial_sync_data, |
- SyncChangeProcessor* sync_processor) { |
- CHECK(sync_processor); |
- |
+ scoped_ptr<SyncChangeProcessor> sync_processor) { |
SyncBundle* bundle = NULL; |
switch (type) { |
@@ -1368,8 +1372,9 @@ SyncError ExtensionService::MergeDataAndStartSyncing( |
default: |
LOG(FATAL) << "Got " << type << " ModelType"; |
} |
- |
- bundle->sync_processor = sync_processor; |
+ DCHECK(!bundle->sync_processor.get()); |
+ DCHECK(sync_processor.get()); |
+ bundle->sync_processor = sync_processor.Pass(); |
// Process extensions from sync. |
for (SyncDataList::const_iterator i = initial_sync_data.begin(); |
@@ -1405,8 +1410,7 @@ SyncError ExtensionService::MergeDataAndStartSyncing( |
void ExtensionService::StopSyncing(syncable::ModelType type) { |
SyncBundle* bundle = GetSyncBundleForModelType(type); |
CHECK(bundle); |
- // This is the simplest way to clear out the bundle. |
- *bundle = SyncBundle(); |
+ bundle->Reset(); |
} |
SyncDataList ExtensionService::GetAllSyncData(syncable::ModelType type) const { |