| Index: chrome/browser/extensions/extension_service.cc
|
| diff --git a/chrome/browser/extensions/extension_service.cc b/chrome/browser/extensions/extension_service.cc
|
| index 968b3fcc792a127af8af789b7d51e929f9357683..070e378b2f0cbb9fa512ade5b736c6a01641e890 100644
|
| --- a/chrome/browser/extensions/extension_service.cc
|
| +++ b/chrome/browser/extensions/extension_service.cc
|
| @@ -1266,13 +1266,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();
|
| }
|
| @@ -1335,9 +1341,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) {
|
| @@ -1354,8 +1358,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();
|
| @@ -1391,8 +1396,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 {
|
|
|