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 e313787a69ccf90eae465d62bd4c6f3c9a3edcc3..9edaa77d8454cdf95ec44429d7d91dbd4e7de36a 100644 |
--- a/chrome/browser/sync_file_system/drive_backend/sync_engine.cc |
+++ b/chrome/browser/sync_file_system/drive_backend/sync_engine.cc |
@@ -7,6 +7,7 @@ |
#include <vector> |
#include "base/bind.h" |
+#include "base/memory/weak_ptr.h" |
#include "base/threading/sequenced_worker_pool.h" |
#include "base/values.h" |
#include "chrome/browser/drive/drive_api_service.h" |
@@ -20,6 +21,8 @@ |
#include "chrome/browser/signin/signin_manager_factory.h" |
#include "chrome/browser/sync_file_system/drive_backend/conflict_resolver.h" |
#include "chrome/browser/sync_file_system/drive_backend/drive_backend_constants.h" |
+#include "chrome/browser/sync_file_system/drive_backend/drive_service_messenger.h" |
+#include "chrome/browser/sync_file_system/drive_backend/drive_service_wrapper.h" |
#include "chrome/browser/sync_file_system/drive_backend/list_changes_task.h" |
#include "chrome/browser/sync_file_system/drive_backend/local_to_remote_syncer.h" |
#include "chrome/browser/sync_file_system/drive_backend/metadata_database.h" |
@@ -90,11 +93,6 @@ scoped_ptr<SyncEngine> SyncEngine::CreateForBrowserContext( |
ExtensionService* extension_service = |
extensions::ExtensionSystem::Get(context)->extension_service(); |
- scoped_refptr<base::SequencedTaskRunner> file_task_runner( |
- worker_pool->GetSequencedTaskRunnerWithShutdownBehavior( |
- worker_pool->GetSequenceToken(), |
- base::SequencedWorkerPool::SKIP_ON_SHUTDOWN)); |
- |
// TODO(peria): Create another task runner to manage SyncWorker. |
scoped_refptr<base::SingleThreadTaskRunner> |
worker_task_runner = base::MessageLoopProxy::current(); |
@@ -106,10 +104,17 @@ scoped_ptr<SyncEngine> SyncEngine::CreateForBrowserContext( |
notification_manager, |
extension_service, |
signin_manager)); |
+ |
+ scoped_refptr<base::SequencedTaskRunner> file_task_runner( |
+ worker_pool->GetSequencedTaskRunnerWithShutdownBehavior( |
+ worker_pool->GetSequenceToken(), |
+ base::SequencedWorkerPool::SKIP_ON_SHUTDOWN)); |
+ |
sync_engine->Initialize( |
GetSyncFileSystemDir(context->GetPath()), |
file_task_runner.get(), |
- NULL); |
+ false, |
+ NULL /* env_override */); |
return sync_engine.Pass(); |
} |
@@ -132,12 +137,24 @@ SyncEngine::~SyncEngine() { |
void SyncEngine::Initialize(const base::FilePath& base_dir, |
peria
2014/04/24 04:08:38
It may be good to make InitializeForTesting().
In
|
base::SequencedTaskRunner* file_task_runner, |
+ bool pass_service_to_worker, |
leveldb::Env* env_override) { |
- scoped_ptr<SyncEngineContext> sync_engine_context( |
- new SyncEngineContext(drive_service_.get(), |
- drive_uploader_.get(), |
- base::MessageLoopProxy::current(), |
- file_task_runner)); |
+ scoped_ptr<SyncEngineContext> sync_engine_context; |
+ if (pass_service_to_worker) { |
+ sync_engine_context.reset( |
+ new SyncEngineContext(drive_service_.Pass(), |
+ drive_uploader_.get(), |
+ base::MessageLoopProxy::current(), |
+ file_task_runner)); |
+ } else { |
+ scoped_ptr<drive::DriveServiceInterface> drive_service_messenger( |
+ new DriveServiceMessenger(drive_service_wrapper_->AsWeakPtr())); |
+ sync_engine_context.reset( |
+ new SyncEngineContext(drive_service_messenger.Pass(), |
+ drive_uploader_.get(), |
+ base::MessageLoopProxy::current(), |
+ file_task_runner)); |
+ } |
// TODO(peria): Use PostTask on |worker_task_runner_| to call this function. |
sync_worker_ = SyncWorker::CreateOnWorker(weak_ptr_factory_.GetWeakPtr(), |
base_dir, |
@@ -366,11 +383,11 @@ void SyncEngine::OnNetworkChanged( |
} |
drive::DriveServiceInterface* SyncEngine::GetDriveService() { |
- return drive_service_.get(); |
+ return sync_worker_->GetDriveService(); |
} |
drive::DriveUploaderInterface* SyncEngine::GetDriveUploader() { |
- return drive_uploader_.get(); |
+ return sync_worker_->GetDriveUploader(); |
} |
MetadataDatabase* SyncEngine::GetMetadataDatabase() { |
@@ -386,6 +403,7 @@ SyncEngine::SyncEngine( |
ExtensionServiceInterface* extension_service, |
SigninManagerBase* signin_manager) |
: drive_service_(drive_service.Pass()), |
+ drive_service_wrapper_(new DriveServiceWrapper(drive_service_.get())), |
drive_uploader_(drive_uploader.Pass()), |
notification_manager_(notification_manager), |
extension_service_(extension_service), |