| 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;
|
|
|