| Index: chrome/browser/sync_file_system/drive_backend/sync_engine.cc
|
| diff --git a/chrome/browser/sync_file_system/drive_backend/sync_engine.cc b/chrome/browser/sync_file_system/drive_backend/sync_engine.cc
|
| index be3a51a18477c1f3ae973dd9d3b7ed15d643fffe..d24cda6f4df28c3ccba19ec05c17806b504bf207 100644
|
| --- a/chrome/browser/sync_file_system/drive_backend/sync_engine.cc
|
| +++ b/chrome/browser/sync_file_system/drive_backend/sync_engine.cc
|
| @@ -205,7 +205,13 @@ SyncEngine::~SyncEngine() {
|
| if (notification_manager_)
|
| notification_manager_->RemoveObserver(this);
|
|
|
| - // TODO(tzik): Destroy |sync_worker_| and |worker_observer_| on the worker.
|
| + WorkerObserver* worker_observer = worker_observer_.release();
|
| + if (!worker_task_runner_->DeleteSoon(FROM_HERE, worker_observer))
|
| + delete worker_observer;
|
| +
|
| + SyncWorker* sync_worker = sync_worker_.release();
|
| + if (!worker_task_runner_->DeleteSoon(FROM_HERE, sync_worker))
|
| + delete sync_worker;
|
| }
|
|
|
| void SyncEngine::Initialize(const base::FilePath& base_dir,
|
| @@ -239,13 +245,16 @@ void SyncEngine::Initialize(const base::FilePath& base_dir,
|
| if (extension_service_)
|
| extension_service_weak_ptr = extension_service_->AsWeakPtr();
|
|
|
| - // TODO(peria): Use PostTask on |worker_task_runner_| to call this function.
|
| - sync_worker_ = SyncWorker::CreateOnWorker(
|
| + sync_worker_.reset(new SyncWorker(
|
| base_dir,
|
| - worker_observer_.get(),
|
| extension_service_weak_ptr,
|
| sync_engine_context.Pass(),
|
| - env_override);
|
| + env_override));
|
| + sync_worker_->AddObserver(worker_observer_.get());
|
| + worker_task_runner_->PostTask(
|
| + FROM_HERE,
|
| + base::Bind(&SyncWorker::Initialize,
|
| + base::Unretained(sync_worker_.get())));
|
|
|
| if (notification_manager_)
|
| notification_manager_->AddObserver(this);
|
|
|