Index: components/sync/driver/glue/sync_backend_registrar.cc |
diff --git a/components/sync/driver/glue/sync_backend_registrar.cc b/components/sync/driver/glue/sync_backend_registrar.cc |
index fd0ebc390242a0a8ef70624673124239cd207953..6d903a59f1a7f28c460b11086ebb9fa2af63d3bf 100644 |
--- a/components/sync/driver/glue/sync_backend_registrar.cc |
+++ b/components/sync/driver/glue/sync_backend_registrar.cc |
@@ -10,7 +10,6 @@ |
#include "base/logging.h" |
#include "base/memory/ptr_util.h" |
-#include "base/message_loop/message_loop.h" |
#include "components/sync/driver/change_processor.h" |
#include "components/sync/driver/sync_client.h" |
#include "components/sync/syncable/user_share.h" |
@@ -20,7 +19,6 @@ namespace syncer { |
SyncBackendRegistrar::SyncBackendRegistrar( |
const std::string& name, |
SyncClient* sync_client, |
- std::unique_ptr<base::Thread> sync_thread, |
const scoped_refptr<base::SingleThreadTaskRunner>& ui_thread, |
const scoped_refptr<base::SingleThreadTaskRunner>& db_thread, |
const scoped_refptr<base::SingleThreadTaskRunner>& file_thread) |
@@ -32,14 +30,6 @@ SyncBackendRegistrar::SyncBackendRegistrar( |
DCHECK(ui_thread_->BelongsToCurrentThread()); |
DCHECK(sync_client_); |
- sync_thread_ = std::move(sync_thread); |
- if (!sync_thread_) { |
- sync_thread_ = base::MakeUnique<base::Thread>("Chrome_SyncThread"); |
- base::Thread::Options options; |
- options.timer_slack = base::TIMER_SLACK_MAXIMUM; |
- CHECK(sync_thread_->StartWithOptions(options)); |
- } |
- |
MaybeAddWorker(GROUP_DB); |
MaybeAddWorker(GROUP_FILE); |
MaybeAddWorker(GROUP_UI); |
@@ -312,69 +302,19 @@ bool SyncBackendRegistrar::IsOnThreadForGroup(ModelType type, |
} |
SyncBackendRegistrar::~SyncBackendRegistrar() { |
- DCHECK(workers_.empty()); |
-} |
- |
-void SyncBackendRegistrar::OnWorkerLoopDestroyed(ModelSafeGroup group) { |
- RemoveWorker(group); |
+ // All data types should have been deactivated by now. |
+ DCHECK(processors_.empty()); |
} |
void SyncBackendRegistrar::MaybeAddWorker(ModelSafeGroup group) { |
const scoped_refptr<ModelSafeWorker> worker = |
- sync_client_->CreateModelWorkerForGroup(group, this); |
+ sync_client_->CreateModelWorkerForGroup(group); |
if (worker) { |
DCHECK(workers_.find(group) == workers_.end()); |
workers_[group] = worker; |
- workers_[group]->RegisterForLoopDestruction(); |
} |
} |
-void SyncBackendRegistrar::OnWorkerUnregistrationDone(ModelSafeGroup group) { |
- RemoveWorker(group); |
-} |
- |
-void SyncBackendRegistrar::RemoveWorker(ModelSafeGroup group) { |
- DVLOG(1) << "Remove " << ModelSafeGroupToString(group) << " worker."; |
- |
- bool last_worker = false; |
- { |
- base::AutoLock al(lock_); |
- WorkerMap::iterator it = workers_.find(group); |
- CHECK(it != workers_.end()); |
- stopped_workers_.push_back(it->second); |
- workers_.erase(it); |
- last_worker = workers_.empty(); |
- } |
- |
- if (last_worker) { |
- // Self-destruction after last worker. |
- DVLOG(1) << "Destroy registrar on loop of " |
- << ModelSafeGroupToString(group); |
- delete this; |
- } |
-} |
- |
-std::unique_ptr<base::Thread> SyncBackendRegistrar::ReleaseSyncThread() { |
- return std::move(sync_thread_); |
-} |
- |
-void SyncBackendRegistrar::Shutdown() { |
- // All data types should have been deactivated by now. |
- DCHECK(processors_.empty()); |
- |
- // Unregister worker from observing loop destruction. |
- base::AutoLock al(lock_); |
- for (WorkerMap::iterator it = workers_.begin(); it != workers_.end(); ++it) { |
- it->second->UnregisterForLoopDestruction( |
- base::Bind(&SyncBackendRegistrar::OnWorkerUnregistrationDone, |
- base::Unretained(this))); |
- } |
-} |
- |
-base::Thread* SyncBackendRegistrar::sync_thread() { |
- return sync_thread_.get(); |
-} |
- |
ModelSafeGroup SyncBackendRegistrar::GetInitialGroupForType( |
ModelType type) const { |
return non_blocking_types_.Has(type) ? GROUP_NON_BLOCKING : GROUP_PASSIVE; |