Index: chrome/browser/sync_file_system/drive_backend/metadata_database.cc |
diff --git a/chrome/browser/sync_file_system/drive_backend/metadata_database.cc b/chrome/browser/sync_file_system/drive_backend/metadata_database.cc |
index 3cc4f86ec9b7bb0dd0abc46071be0e2ff8e5d99f..a2ac5b7bc83a6dbb970a79b7e0ede61e1b958c79 100644 |
--- a/chrome/browser/sync_file_system/drive_backend/metadata_database.cc |
+++ b/chrome/browser/sync_file_system/drive_backend/metadata_database.cc |
@@ -191,19 +191,6 @@ scoped_ptr<FileTracker> CloneFileTracker(const FileTracker* obj) { |
return scoped_ptr<FileTracker>(new FileTracker(*obj)); |
} |
-void WriteOnFileTaskRunner( |
- leveldb::DB* db, |
- scoped_ptr<leveldb::WriteBatch> batch, |
- scoped_refptr<base::SequencedTaskRunner> worker_task_runner, |
- const SyncStatusCallback& callback) { |
- DCHECK(db); |
- DCHECK(batch); |
- leveldb::Status status = db->Write(leveldb::WriteOptions(), batch.get()); |
- worker_task_runner->PostTask( |
- FROM_HERE, |
- base::Bind(callback, LevelDBStatusToSyncStatusCode(status))); |
-} |
- |
// Returns true if |db| has no content. |
bool IsDatabaseEmpty(leveldb::DB* db) { |
DCHECK(db); |
@@ -543,16 +530,13 @@ void RemoveFileTracker(int64 tracker_id, |
struct MetadataDatabase::CreateParam { |
scoped_refptr<base::SequencedTaskRunner> worker_task_runner; |
- scoped_refptr<base::SequencedTaskRunner> file_task_runner; |
base::FilePath database_path; |
leveldb::Env* env_override; |
CreateParam(base::SequencedTaskRunner* worker_task_runner, |
- base::SequencedTaskRunner* file_task_runner, |
const base::FilePath& database_path, |
leveldb::Env* env_override) |
: worker_task_runner(worker_task_runner), |
- file_task_runner(file_task_runner), |
database_path(database_path), |
env_override(env_override) { |
} |
@@ -560,15 +544,13 @@ struct MetadataDatabase::CreateParam { |
// static |
void MetadataDatabase::Create(base::SequencedTaskRunner* worker_task_runner, |
- base::SequencedTaskRunner* file_task_runner, |
const base::FilePath& database_path, |
leveldb::Env* env_override, |
const CreateCallback& callback) { |
- file_task_runner->PostTask(FROM_HERE, base::Bind( |
- &MetadataDatabase::CreateOnFileTaskRunner, |
+ worker_task_runner->PostTask(FROM_HERE, base::Bind( |
+ &MetadataDatabase::CreateOnWorkerTaskRunner, |
base::Passed(make_scoped_ptr(new CreateParam( |
worker_task_runner, |
- file_task_runner, |
database_path, |
env_override))), |
callback)); |
@@ -580,31 +562,29 @@ SyncStatusCode MetadataDatabase::CreateForTesting( |
scoped_ptr<MetadataDatabase>* metadata_database_out) { |
scoped_ptr<MetadataDatabase> metadata_database( |
new MetadataDatabase(base::ThreadTaskRunnerHandle::Get(), |
- base::ThreadTaskRunnerHandle::Get(), |
base::FilePath(), NULL)); |
metadata_database->db_ = db.Pass(); |
- SyncStatusCode status = |
- metadata_database->InitializeOnFileTaskRunner(); |
+ SyncStatusCode status = metadata_database->Initialize(); |
if (status == SYNC_STATUS_OK) |
*metadata_database_out = metadata_database.Pass(); |
return status; |
} |
MetadataDatabase::~MetadataDatabase() { |
- file_task_runner_->DeleteSoon(FROM_HERE, db_.release()); |
+ worker_task_runner_->DeleteSoon(FROM_HERE, db_.release()); |
} |
// static |
void MetadataDatabase::ClearDatabase( |
scoped_ptr<MetadataDatabase> metadata_database) { |
DCHECK(metadata_database); |
- scoped_refptr<base::SequencedTaskRunner> file_task_runner = |
- metadata_database->file_task_runner_; |
+ scoped_refptr<base::SequencedTaskRunner> worker_task_runner = |
+ metadata_database->worker_task_runner_; |
nhiroki
2014/08/04 05:27:14
nit: You can just call "metadata_database->worker_
nhiroki
2014/08/04 05:28:44
Oops... sorry. I missed that |metadata_database| w
peria
2014/08/04 05:52:34
Acknowledged.
|
base::FilePath database_path = metadata_database->database_path_; |
DCHECK(!database_path.empty()); |
metadata_database.reset(); |
- file_task_runner->PostTask( |
+ worker_task_runner->PostTask( |
FROM_HERE, |
base::Bind(base::IgnoreResult(base::DeleteFile), |
database_path, true /* recursive */)); |
@@ -1423,30 +1403,25 @@ void MetadataDatabase::GetRegisteredAppIDs(std::vector<std::string>* app_ids) { |
MetadataDatabase::MetadataDatabase( |
base::SequencedTaskRunner* worker_task_runner, |
- base::SequencedTaskRunner* file_task_runner, |
const base::FilePath& database_path, |
leveldb::Env* env_override) |
: worker_task_runner_(worker_task_runner), |
- file_task_runner_(file_task_runner), |
database_path_(database_path), |
env_override_(env_override), |
largest_known_change_id_(0), |
weak_ptr_factory_(this) { |
DCHECK(worker_task_runner); |
- DCHECK(file_task_runner); |
} |
// static |
-void MetadataDatabase::CreateOnFileTaskRunner( |
+void MetadataDatabase::CreateOnWorkerTaskRunner( |
scoped_ptr<CreateParam> create_param, |
const CreateCallback& callback) { |
nhiroki
2014/08/04 05:27:14
Can you check 'worker_sequence_checker_' here?
peria
2014/08/04 05:52:34
This is a static method, so we cannot use member v
|
scoped_ptr<MetadataDatabase> metadata_database( |
new MetadataDatabase(create_param->worker_task_runner.get(), |
- create_param->file_task_runner.get(), |
create_param->database_path, |
create_param->env_override)); |
- SyncStatusCode status = |
- metadata_database->InitializeOnFileTaskRunner(); |
+ SyncStatusCode status = metadata_database->Initialize(); |
if (status != SYNC_STATUS_OK) |
metadata_database.reset(); |
@@ -1457,9 +1432,9 @@ void MetadataDatabase::CreateOnFileTaskRunner( |
callback, status, base::Passed(&metadata_database))); |
} |
-SyncStatusCode MetadataDatabase::InitializeOnFileTaskRunner() { |
+SyncStatusCode MetadataDatabase::Initialize() { |
base::ThreadRestrictions::AssertIOAllowed(); |
- DCHECK(file_task_runner_->RunsTasksOnCurrentThread()); |
+ DCHECK(worker_task_runner_->RunsTasksOnCurrentThread()); |
nhiroki
2014/08/04 05:27:15
You may have to use "worker_sequence_checker_".
peria
2014/08/04 05:52:34
Done.
|
SyncStatusCode status = SYNC_STATUS_UNKNOWN; |
bool created = false; |
@@ -1744,14 +1719,10 @@ void MetadataDatabase::WriteToDatabase(scoped_ptr<leveldb::WriteBatch> batch, |
return; |
} |
- // TODO(peria): Write to DB on disk synchronously. |
- file_task_runner_->PostTask( |
+ leveldb::Status status = db_->Write(leveldb::WriteOptions(), batch.get()); |
+ worker_task_runner_->PostTask( |
FROM_HERE, |
- base::Bind(&WriteOnFileTaskRunner, |
- base::Unretained(db_.get()), |
- base::Passed(&batch), |
- worker_task_runner_, |
- callback)); |
+ base::Bind(callback, LevelDBStatusToSyncStatusCode(status))); |
nhiroki
2014/08/04 05:27:15
I guess you don't have to post a task here since y
peria
2014/08/04 05:52:34
Done.
|
} |
scoped_ptr<base::ListValue> MetadataDatabase::DumpFiles( |