| OLD | NEW |
| 1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 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 "components/sync/driver/glue/sync_backend_registrar.h" | 5 #include "components/sync/driver/glue/sync_backend_registrar.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <cstddef> | 8 #include <cstddef> |
| 9 #include <utility> | 9 #include <utility> |
| 10 | 10 |
| 11 #include "base/logging.h" | 11 #include "base/logging.h" |
| 12 #include "base/memory/ptr_util.h" | 12 #include "base/memory/ptr_util.h" |
| 13 #include "components/sync/driver/change_processor.h" | 13 #include "components/sync/driver/change_processor.h" |
| 14 #include "components/sync/driver/sync_client.h" | |
| 15 #include "components/sync/syncable/user_share.h" | 14 #include "components/sync/syncable/user_share.h" |
| 16 | 15 |
| 17 namespace syncer { | 16 namespace syncer { |
| 18 | 17 |
| 19 SyncBackendRegistrar::SyncBackendRegistrar(const std::string& name, | 18 SyncBackendRegistrar::SyncBackendRegistrar( |
| 20 SyncClient* sync_client) | 19 const std::string& name, |
| 21 : name_(name), sync_client_(sync_client) { | 20 ModelSafeWorkerFactory worker_factory) |
| 22 DCHECK(sync_client_); | 21 : name_(name) { |
| 23 | 22 DCHECK(!worker_factory.is_null()); |
| 24 MaybeAddWorker(GROUP_DB); | 23 MaybeAddWorker(worker_factory, GROUP_DB); |
| 25 MaybeAddWorker(GROUP_FILE); | 24 MaybeAddWorker(worker_factory, GROUP_FILE); |
| 26 MaybeAddWorker(GROUP_UI); | 25 MaybeAddWorker(worker_factory, GROUP_UI); |
| 27 MaybeAddWorker(GROUP_PASSIVE); | 26 MaybeAddWorker(worker_factory, GROUP_PASSIVE); |
| 28 MaybeAddWorker(GROUP_HISTORY); | 27 MaybeAddWorker(worker_factory, GROUP_HISTORY); |
| 29 MaybeAddWorker(GROUP_PASSWORD); | 28 MaybeAddWorker(worker_factory, GROUP_PASSWORD); |
| 30 } | 29 } |
| 31 | 30 |
| 32 void SyncBackendRegistrar::RegisterNonBlockingType(ModelType type) { | 31 void SyncBackendRegistrar::RegisterNonBlockingType(ModelType type) { |
| 33 DCHECK(ui_thread_checker_.CalledOnValidThread()); | 32 DCHECK(ui_thread_checker_.CalledOnValidThread()); |
| 34 base::AutoLock lock(lock_); | 33 base::AutoLock lock(lock_); |
| 35 // There may have been a previously successful sync of a type when passive, | 34 // There may have been a previously successful sync of a type when passive, |
| 36 // which is now NonBlocking. We're not sure what order these two sets of types | 35 // which is now NonBlocking. We're not sure what order these two sets of types |
| 37 // are being registered in, so guard against SetInitialTypes(...) having been | 36 // are being registered in, so guard against SetInitialTypes(...) having been |
| 38 // already called by undoing everything to these types. | 37 // already called by undoing everything to these types. |
| 39 if (routing_info_.find(type) != routing_info_.end() && | 38 if (routing_info_.find(type) != routing_info_.end() && |
| (...skipping 229 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 269 auto it = workers_.find(group); | 268 auto it = workers_.find(group); |
| 270 DCHECK(it != workers_.end()); | 269 DCHECK(it != workers_.end()); |
| 271 return it->second->IsOnModelThread(); | 270 return it->second->IsOnModelThread(); |
| 272 } | 271 } |
| 273 | 272 |
| 274 SyncBackendRegistrar::~SyncBackendRegistrar() { | 273 SyncBackendRegistrar::~SyncBackendRegistrar() { |
| 275 // All data types should have been deactivated by now. | 274 // All data types should have been deactivated by now. |
| 276 DCHECK(processors_.empty()); | 275 DCHECK(processors_.empty()); |
| 277 } | 276 } |
| 278 | 277 |
| 279 void SyncBackendRegistrar::MaybeAddWorker(ModelSafeGroup group) { | 278 void SyncBackendRegistrar::MaybeAddWorker(ModelSafeWorkerFactory worker_factory, |
| 280 const scoped_refptr<ModelSafeWorker> worker = | 279 ModelSafeGroup group) { |
| 281 sync_client_->CreateModelWorkerForGroup(group); | 280 scoped_refptr<ModelSafeWorker> worker = worker_factory.Run(group); |
| 282 if (worker) { | 281 if (worker) { |
| 283 DCHECK(workers_.find(group) == workers_.end()); | 282 DCHECK(workers_.find(group) == workers_.end()); |
| 284 workers_[group] = worker; | 283 workers_[group] = worker; |
| 285 } | 284 } |
| 286 } | 285 } |
| 287 | 286 |
| 288 ModelSafeGroup SyncBackendRegistrar::GetInitialGroupForType( | 287 ModelSafeGroup SyncBackendRegistrar::GetInitialGroupForType( |
| 289 ModelType type) const { | 288 ModelType type) const { |
| 290 return non_blocking_types_.Has(type) ? GROUP_NON_BLOCKING : GROUP_PASSIVE; | 289 return non_blocking_types_.Has(type) ? GROUP_NON_BLOCKING : GROUP_PASSIVE; |
| 291 } | 290 } |
| 292 | 291 |
| 293 } // namespace syncer | 292 } // namespace syncer |
| OLD | NEW |