Chromium Code Reviews| 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..894d3d01775e07e3137e413e2c11265085dbc0c7 100644 |
| --- a/chrome/browser/sync_file_system/drive_backend/sync_engine.cc |
| +++ b/chrome/browser/sync_file_system/drive_backend/sync_engine.cc |
| @@ -8,6 +8,7 @@ |
| #include "base/bind.h" |
| #include "base/metrics/histogram.h" |
| +#include "base/run_loop.h" |
|
tzik
2014/05/26 06:50:21
please drop this
peria
2014/05/26 07:55:09
Done.
|
| #include "base/threading/sequenced_worker_pool.h" |
| #include "base/time/time.h" |
| #include "base/values.h" |
| @@ -66,7 +67,6 @@ class SyncEngine::WorkerObserver : public SyncWorker::Observer { |
| base::WeakPtr<SyncEngine> sync_engine) |
| : ui_task_runner_(ui_task_runner), |
| sync_engine_(sync_engine) {} |
| - |
| virtual ~WorkerObserver() {} |
| virtual void OnPendingFileListUpdated(int item_count) OVERRIDE { |
| @@ -183,6 +183,7 @@ scoped_ptr<SyncEngine> SyncEngine::CreateForBrowserContext( |
| notification_manager, |
| extension_service, |
| signin_manager)); |
| + |
| sync_engine->Initialize(GetSyncFileSystemDir(context->GetPath()), |
| file_task_runner.get(), |
| NULL); |
| @@ -205,7 +206,8 @@ SyncEngine::~SyncEngine() { |
| if (notification_manager_) |
| notification_manager_->RemoveObserver(this); |
| - // TODO(tzik): Destroy |sync_worker_| and |worker_observer_| on the worker. |
| + worker_task_runner_->DeleteSoon(FROM_HERE, worker_observer_.release()); |
| + worker_task_runner_->DeleteSoon(FROM_HERE, sync_worker_.release()); |
| } |
| void SyncEngine::Initialize(const base::FilePath& base_dir, |
| @@ -239,7 +241,6 @@ 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( |
| base_dir, |
| worker_observer_.get(), |
| @@ -251,6 +252,12 @@ void SyncEngine::Initialize(const base::FilePath& base_dir, |
| notification_manager_->AddObserver(this); |
| GetDriveService()->AddObserver(this); |
| net::NetworkChangeNotifier::AddNetworkChangeObserver(this); |
| + |
| + worker_task_runner_->PostTask( |
| + FROM_HERE, |
| + base::Bind(&SyncWorker::Initialize, |
| + sync_worker_->AsWeakPtr())); |
|
tzik
2014/05/26 06:50:21
Unretained?
peria
2014/05/26 07:55:09
Done.
|
| + |
| } |
| void SyncEngine::AddServiceObserver(SyncServiceObserver* observer) { |