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

Side by Side Diff: chrome/browser/extensions/extension_service.cc

Issue 9749012: [Sync] Have SyncableService's take ownership of their SyncChangeProcessor. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Comment 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/extensions/extension_service.h" 5 #include "chrome/browser/extensions/extension_service.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <set> 8 #include <set>
9 9
10 #include "base/basictypes.h" 10 #include "base/basictypes.h"
(...skipping 1240 matching lines...) Expand 10 before | Expand all | Expand 10 after
1251 } else { 1251 } else {
1252 LOG(WARNING) << "CheckForUpdatesSoon() called with auto-update turned off"; 1252 LOG(WARNING) << "CheckForUpdatesSoon() called with auto-update turned off";
1253 } 1253 }
1254 } 1254 }
1255 1255
1256 namespace { 1256 namespace {
1257 bool IsSyncableNone(const Extension& extension) { return false; } 1257 bool IsSyncableNone(const Extension& extension) { return false; }
1258 } // namespace 1258 } // namespace
1259 1259
1260 ExtensionService::SyncBundle::SyncBundle() 1260 ExtensionService::SyncBundle::SyncBundle()
1261 : filter(IsSyncableNone), 1261 : filter(IsSyncableNone) {
1262 sync_processor(NULL) {
1263 } 1262 }
1264 1263
1265 ExtensionService::SyncBundle::~SyncBundle() { 1264 ExtensionService::SyncBundle::~SyncBundle() {
1266 } 1265 }
1267 1266
1267 void ExtensionService::SyncBundle::Reset() {
1268 filter = IsSyncableNone;
1269 synced_extensions.clear();
1270 pending_sync_data.clear();
1271 sync_processor.reset();
1272 }
1273
1268 bool ExtensionService::SyncBundle::HasExtensionId(const std::string& id) const { 1274 bool ExtensionService::SyncBundle::HasExtensionId(const std::string& id) const {
1269 return synced_extensions.find(id) != synced_extensions.end(); 1275 return synced_extensions.find(id) != synced_extensions.end();
1270 } 1276 }
1271 1277
1272 bool ExtensionService::SyncBundle::HasPendingExtensionId(const std::string& id) 1278 bool ExtensionService::SyncBundle::HasPendingExtensionId(const std::string& id)
1273 const { 1279 const {
1274 return pending_sync_data.find(id) != pending_sync_data.end(); 1280 return pending_sync_data.find(id) != pending_sync_data.end();
1275 } 1281 }
1276 1282
1277 void ExtensionService::SyncExtensionChangeIfNeeded(const Extension& extension) { 1283 void ExtensionService::SyncExtensionChangeIfNeeded(const Extension& extension) {
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
1342 ExtensionService::SyncBundle* ExtensionService::GetSyncBundleForModelType( 1348 ExtensionService::SyncBundle* ExtensionService::GetSyncBundleForModelType(
1343 syncable::ModelType type) { 1349 syncable::ModelType type) {
1344 GET_SYNC_BUNDLE_FOR_MODEL_TYPE_BODY(); 1350 GET_SYNC_BUNDLE_FOR_MODEL_TYPE_BODY();
1345 } 1351 }
1346 1352
1347 #undef GET_SYNC_BUNDLE_FOR_MODEL_TYPE_BODY 1353 #undef GET_SYNC_BUNDLE_FOR_MODEL_TYPE_BODY
1348 1354
1349 SyncError ExtensionService::MergeDataAndStartSyncing( 1355 SyncError ExtensionService::MergeDataAndStartSyncing(
1350 syncable::ModelType type, 1356 syncable::ModelType type,
1351 const SyncDataList& initial_sync_data, 1357 const SyncDataList& initial_sync_data,
1352 SyncChangeProcessor* sync_processor) { 1358 scoped_ptr<SyncChangeProcessor> sync_processor) {
1353 CHECK(sync_processor);
1354
1355 SyncBundle* bundle = NULL; 1359 SyncBundle* bundle = NULL;
1356 1360
1357 switch (type) { 1361 switch (type) {
1358 case syncable::EXTENSIONS: 1362 case syncable::EXTENSIONS:
1359 bundle = &extension_sync_bundle_; 1363 bundle = &extension_sync_bundle_;
1360 bundle->filter = IsSyncableExtension; 1364 bundle->filter = IsSyncableExtension;
1361 break; 1365 break;
1362 1366
1363 case syncable::APPS: 1367 case syncable::APPS:
1364 bundle = &app_sync_bundle_; 1368 bundle = &app_sync_bundle_;
1365 bundle->filter = IsSyncableApp; 1369 bundle->filter = IsSyncableApp;
1366 break; 1370 break;
1367 1371
1368 default: 1372 default:
1369 LOG(FATAL) << "Got " << type << " ModelType"; 1373 LOG(FATAL) << "Got " << type << " ModelType";
1370 } 1374 }
1371 1375 DCHECK(!bundle->sync_processor.get());
1372 bundle->sync_processor = sync_processor; 1376 DCHECK(sync_processor.get());
1377 bundle->sync_processor = sync_processor.Pass();
1373 1378
1374 // Process extensions from sync. 1379 // Process extensions from sync.
1375 for (SyncDataList::const_iterator i = initial_sync_data.begin(); 1380 for (SyncDataList::const_iterator i = initial_sync_data.begin();
1376 i != initial_sync_data.end(); 1381 i != initial_sync_data.end();
1377 ++i) { 1382 ++i) {
1378 ExtensionSyncData extension_sync_data = ExtensionSyncData(*i); 1383 ExtensionSyncData extension_sync_data = ExtensionSyncData(*i);
1379 bundle->synced_extensions.insert(extension_sync_data.id()); 1384 bundle->synced_extensions.insert(extension_sync_data.id());
1380 ProcessExtensionSyncData(extension_sync_data, *bundle); 1385 ProcessExtensionSyncData(extension_sync_data, *bundle);
1381 } 1386 }
1382 1387
(...skipping 15 matching lines...) Expand all
1398 bundle->sync_processor->ProcessSyncChanges(FROM_HERE, sync_change_list); 1403 bundle->sync_processor->ProcessSyncChanges(FROM_HERE, sync_change_list);
1399 1404
1400 extension_prefs_->extension_sorting()->FixNTPOrdinalCollisions(); 1405 extension_prefs_->extension_sorting()->FixNTPOrdinalCollisions();
1401 1406
1402 return SyncError(); 1407 return SyncError();
1403 } 1408 }
1404 1409
1405 void ExtensionService::StopSyncing(syncable::ModelType type) { 1410 void ExtensionService::StopSyncing(syncable::ModelType type) {
1406 SyncBundle* bundle = GetSyncBundleForModelType(type); 1411 SyncBundle* bundle = GetSyncBundleForModelType(type);
1407 CHECK(bundle); 1412 CHECK(bundle);
1408 // This is the simplest way to clear out the bundle. 1413 bundle->Reset();
1409 *bundle = SyncBundle();
1410 } 1414 }
1411 1415
1412 SyncDataList ExtensionService::GetAllSyncData(syncable::ModelType type) const { 1416 SyncDataList ExtensionService::GetAllSyncData(syncable::ModelType type) const {
1413 const SyncBundle* bundle = GetSyncBundleForModelTypeConst(type); 1417 const SyncBundle* bundle = GetSyncBundleForModelTypeConst(type);
1414 CHECK(bundle); 1418 CHECK(bundle);
1415 std::vector<ExtensionSyncData> extension_sync_data = GetSyncDataList(*bundle); 1419 std::vector<ExtensionSyncData> extension_sync_data = GetSyncDataList(*bundle);
1416 SyncDataList result(extension_sync_data.size()); 1420 SyncDataList result(extension_sync_data.size());
1417 for (int i = 0; i < static_cast<int>(extension_sync_data.size()); ++i) { 1421 for (int i = 0; i < static_cast<int>(extension_sync_data.size()); ++i) {
1418 result[i] = extension_sync_data[i].GetSyncData(); 1422 result[i] = extension_sync_data[i].GetSyncData();
1419 } 1423 }
(...skipping 1248 matching lines...) Expand 10 before | Expand all | Expand 10 after
2668 return api_resource_controller_; 2672 return api_resource_controller_;
2669 } 2673 }
2670 2674
2671 extensions::RulesRegistryService* ExtensionService::GetRulesRegistryService() { 2675 extensions::RulesRegistryService* ExtensionService::GetRulesRegistryService() {
2672 if (!rules_registry_service_.get()) { 2676 if (!rules_registry_service_.get()) {
2673 rules_registry_service_.reset( 2677 rules_registry_service_.reset(
2674 new extensions::RulesRegistryService(profile_)); 2678 new extensions::RulesRegistryService(profile_));
2675 } 2679 }
2676 return rules_registry_service_.get(); 2680 return rules_registry_service_.get();
2677 } 2681 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698