Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(24)

Unified Diff: chrome/browser/sync_file_system/drive_backend/sync_engine.cc

Issue 236313009: [SyncFS] Post tasks between SyncEngine and SyncWorker (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Post callback functions Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 bd296c15931e9867b9a180fedf0cac08ed14cd70..f959de6abda7f2d3cd14ee9ea7e6c62ec27913dc 100644
--- a/chrome/browser/sync_file_system/drive_backend/sync_engine.cc
+++ b/chrome/browser/sync_file_system/drive_backend/sync_engine.cc
@@ -98,11 +98,11 @@ scoped_ptr<SyncEngine> SyncEngine::CreateForBrowserContext(
scoped_ptr<drive_backend::SyncEngine> sync_engine(
new SyncEngine(drive_service.Pass(),
drive_uploader.Pass(),
+ task_runner.get(),
notification_manager,
extension_service,
signin_manager));
sync_engine->Initialize(GetSyncFileSystemDir(context->GetPath()),
- task_runner.get(),
NULL);
return sync_engine.Pass();
@@ -125,12 +125,12 @@ SyncEngine::~SyncEngine() {
}
void SyncEngine::Initialize(const base::FilePath& base_dir,
- base::SequencedTaskRunner* task_runner,
leveldb::Env* env_override) {
scoped_ptr<SyncEngineContext> sync_engine_context(
new SyncEngineContext(drive_service_.get(),
drive_uploader_.get(),
- task_runner));
+ worker_task_runner_.get(),
tzik 2014/04/17 17:48:32 s/worker/file/? Could you swap the order of these
peria 2014/04/18 05:19:36 Done.
+ base::MessageLoopProxy::current()));
// TODO(peria): Move this create function to thread pool.
sync_worker_ = SyncWorker::CreateOnWorker(weak_ptr_factory_.GetWeakPtr(),
base_dir,
@@ -153,33 +153,56 @@ void SyncEngine::AddFileStatusObserver(FileStatusObserver* observer) {
void SyncEngine::RegisterOrigin(
const GURL& origin, const SyncStatusCallback& callback) {
- sync_worker_->RegisterOrigin(origin, callback);
+ worker_task_runner_->PostTask(
+ FROM_HERE,
+ base::Bind(&SyncWorker::RegisterOrigin,
+ base::Unretained(sync_worker_.get()),
+ origin, callback));
}
void SyncEngine::EnableOrigin(
const GURL& origin, const SyncStatusCallback& callback) {
- sync_worker_->EnableOrigin(origin, callback);
+ worker_task_runner_->PostTask(
+ FROM_HERE,
+ base::Bind(&SyncWorker::EnableOrigin,
+ base::Unretained(sync_worker_.get()),
+ origin, callback));
}
void SyncEngine::DisableOrigin(
const GURL& origin, const SyncStatusCallback& callback) {
- sync_worker_->DisableOrigin(origin, callback);
+ worker_task_runner_->PostTask(
+ FROM_HERE,
+ base::Bind(&SyncWorker::DisableOrigin,
+ base::Unretained(sync_worker_.get()),
+ origin, callback));
}
void SyncEngine::UninstallOrigin(
const GURL& origin,
UninstallFlag flag,
const SyncStatusCallback& callback) {
- sync_worker_->UninstallOrigin(origin, flag, callback);
+ worker_task_runner_->PostTask(
+ FROM_HERE,
+ base::Bind(&SyncWorker::UninstallOrigin,
+ base::Unretained(sync_worker_.get()),
+ origin, flag, callback));
}
void SyncEngine::ProcessRemoteChange(const SyncFileCallback& callback) {
- sync_worker_->ProcessRemoteChange(callback);
+ worker_task_runner_->PostTask(
+ FROM_HERE,
+ base::Bind(&SyncWorker::ProcessRemoteChange,
+ base::Unretained(sync_worker_.get()),
+ callback));
}
-void SyncEngine::SetRemoteChangeProcessor(
- RemoteChangeProcessor* processor) {
- sync_worker_->SetRemoteChangeProcessor(processor);
+void SyncEngine::SetRemoteChangeProcessor(RemoteChangeProcessor* processor) {
+ worker_task_runner_->PostTask(
+ FROM_HERE,
+ base::Bind(&SyncWorker::SetRemoteChangeProcessor,
+ base::Unretained(sync_worker_.get()),
+ processor));
}
LocalChangeProcessor* SyncEngine::GetLocalChangeProcessor() {
@@ -192,23 +215,31 @@ bool SyncEngine::IsConflicting(const fileapi::FileSystemURL& url) {
}
RemoteServiceState SyncEngine::GetCurrentState() const {
+ // TODO(peria): Post task
return sync_worker_->GetCurrentState();
}
void SyncEngine::GetOriginStatusMap(OriginStatusMap* status_map) {
+ // TODO(peria): Make this route asynchronous.
sync_worker_->GetOriginStatusMap(status_map);
}
scoped_ptr<base::ListValue> SyncEngine::DumpFiles(const GURL& origin) {
+ // TODO(peria): Make this route asynchronous.
return sync_worker_->DumpFiles(origin);
}
scoped_ptr<base::ListValue> SyncEngine::DumpDatabase() {
+ // TODO(peria): Make this route asynchronous.
return sync_worker_->DumpDatabase();
}
void SyncEngine::SetSyncEnabled(bool enabled) {
- sync_worker_->SetSyncEnabled(enabled);
+ worker_task_runner_->PostTask(
+ FROM_HERE,
+ base::Bind(&SyncWorker::SetSyncEnabled,
+ base::Unretained(sync_worker_.get()),
+ enabled));
}
void SyncEngine::UpdateSyncEnabled(bool enabled) {
@@ -220,22 +251,26 @@ void SyncEngine::UpdateSyncEnabled(bool enabled) {
SyncStatusCode SyncEngine::SetDefaultConflictResolutionPolicy(
ConflictResolutionPolicy policy) {
+ // TODO(peria): Make this route asynchronous.
return sync_worker_->SetDefaultConflictResolutionPolicy(policy);
}
SyncStatusCode SyncEngine::SetConflictResolutionPolicy(
const GURL& origin,
ConflictResolutionPolicy policy) {
+ // TODO(peria): Make this route asynchronous.
return sync_worker_->SetConflictResolutionPolicy(origin, policy);
}
ConflictResolutionPolicy SyncEngine::GetDefaultConflictResolutionPolicy()
const {
+ // TODO(peria): Make this route asynchronous.
return sync_worker_->GetDefaultConflictResolutionPolicy();
}
ConflictResolutionPolicy SyncEngine::GetConflictResolutionPolicy(
const GURL& origin) const {
+ // TODO(peria): Make this route asynchronous.
return sync_worker_->GetConflictResolutionPolicy(origin);
}
@@ -271,49 +306,75 @@ void SyncEngine::ApplyLocalChange(
const SyncFileMetadata& local_metadata,
const fileapi::FileSystemURL& url,
const SyncStatusCallback& callback) {
- sync_worker_->ApplyLocalChange(
- local_change, local_path, local_metadata, url, callback);
+ worker_task_runner_->PostTask(
+ FROM_HERE,
+ base::Bind(&SyncWorker::ApplyLocalChange,
+ base::Unretained(sync_worker_.get()),
+ local_change,
+ local_path,
+ local_metadata,
+ url,
+ callback));
}
SyncTaskManager* SyncEngine::GetSyncTaskManagerForTesting() {
+ // TODO(peria): Post task
return sync_worker_->GetSyncTaskManager();
}
void SyncEngine::OnNotificationReceived() {
- sync_worker_->OnNotificationReceived();
+ worker_task_runner_->PostTask(
+ FROM_HERE,
+ base::Bind(&SyncWorker::OnNotificationReceived,
+ base::Unretained(sync_worker_.get())));
}
void SyncEngine::OnPushNotificationEnabled(bool) {}
void SyncEngine::OnReadyToSendRequests() {
- sync_worker_->OnReadyToSendRequests(
- signin_manager_ ? signin_manager_->GetAuthenticatedAccountId() : "");
+ const std::string& account_id =
tzik 2014/04/17 17:48:32 Can we use value instead of const ref here? Even t
peria 2014/04/18 05:19:36 Done.
+ signin_manager_ ? signin_manager_->GetAuthenticatedAccountId() : "";
+
+ worker_task_runner_->PostTask(
+ FROM_HERE,
+ base::Bind(&SyncWorker::OnReadyToSendRequests,
+ base::Unretained(sync_worker_.get()),
+ account_id));
}
void SyncEngine::OnRefreshTokenInvalid() {
- sync_worker_->OnRefreshTokenInvalid();
+ worker_task_runner_->PostTask(
+ FROM_HERE,
+ base::Bind(&SyncWorker::OnRefreshTokenInvalid,
+ base::Unretained(sync_worker_.get())));
}
void SyncEngine::OnNetworkChanged(
net::NetworkChangeNotifier::ConnectionType type) {
- sync_worker_->OnNetworkChanged(type);
+ worker_task_runner_->PostTask(
+ FROM_HERE,
+ base::Bind(&SyncWorker::OnNetworkChanged,
+ base::Unretained(sync_worker_.get()),
+ type));
}
drive::DriveServiceInterface* SyncEngine::GetDriveService() {
- return sync_worker_->GetDriveService();
+ return drive_service_.get();
}
drive::DriveUploaderInterface* SyncEngine::GetDriveUploader() {
- return sync_worker_->GetDriveUploader();
+ return drive_uploader_.get();
}
MetadataDatabase* SyncEngine::GetMetadataDatabase() {
+ // TODO(peria): Post task
return sync_worker_->GetMetadataDatabase();
}
SyncEngine::SyncEngine(
scoped_ptr<drive::DriveServiceInterface> drive_service,
scoped_ptr<drive::DriveUploaderInterface> drive_uploader,
+ base::SequencedTaskRunner* worker_task_runner,
tzik 2014/04/17 17:48:32 s/worker/file/?
peria 2014/04/18 05:19:36 Task runner for file I/O is passed in Initializati
drive::DriveNotificationManager* notification_manager,
ExtensionServiceInterface* extension_service,
SigninManagerBase* signin_manager)
@@ -322,6 +383,7 @@ SyncEngine::SyncEngine(
notification_manager_(notification_manager),
extension_service_(extension_service),
signin_manager_(signin_manager),
+ worker_task_runner_(worker_task_runner),
weak_ptr_factory_(this) {}
void SyncEngine::DidProcessRemoteChange(RemoteToLocalSyncer* syncer) {

Powered by Google App Engine
This is Rietveld 408576698