| 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 27602514a876bb5121cc3751b46c27056ee3af0e..1524cbdfbcc49d969d68147f8163b80e4b5aa61f 100644
|
| --- a/chrome/browser/sync_file_system/drive_backend/metadata_database.cc
|
| +++ b/chrome/browser/sync_file_system/drive_backend/metadata_database.cc
|
| @@ -519,24 +519,35 @@ void RemoveFileTracker(int64 tracker_id,
|
|
|
| } // namespace
|
|
|
| -struct MetadataDatabase::CreateParam {
|
| - base::FilePath database_path;
|
| - leveldb::Env* env_override;
|
| -
|
| - CreateParam(const base::FilePath& database_path,
|
| - leveldb::Env* env_override)
|
| - : database_path(database_path),
|
| - env_override(env_override) {}
|
| -};
|
| -
|
| // static
|
| void MetadataDatabase::Create(
|
| const base::FilePath& database_path,
|
| leveldb::Env* env_override,
|
| const CreateCallback& callback) {
|
| - CreateOnWorkerTaskRunner(
|
| - make_scoped_ptr(new CreateParam(database_path, env_override)),
|
| - callback);
|
| + bool enable_on_disk_index = !CommandLine::ForCurrentProcess()->HasSwitch(
|
| + kDisableMetadataDatabaseOnDisk);
|
| + scoped_ptr<MetadataDatabase> metadata_database(
|
| + new MetadataDatabase(database_path,
|
| + enable_on_disk_index,
|
| + env_override));
|
| +
|
| + SyncStatusCode status = metadata_database->Initialize();
|
| + if (status == SYNC_DATABASE_ERROR_FAILED) {
|
| + // Delete the previous instance to avoid creating a LevelDB instance for
|
| + // the same path.
|
| + metadata_database.reset();
|
| +
|
| + metadata_database.reset(
|
| + new MetadataDatabase(database_path,
|
| + enable_on_disk_index,
|
| + env_override));
|
| + status = metadata_database->Initialize();
|
| + }
|
| +
|
| + if (status != SYNC_STATUS_OK)
|
| + metadata_database.reset();
|
| +
|
| + callback.Run(status, metadata_database.Pass());
|
| }
|
|
|
| // static
|
| @@ -1316,36 +1327,6 @@ MetadataDatabase::MetadataDatabase(
|
| weak_ptr_factory_(this) {
|
| }
|
|
|
| -// static
|
| -void MetadataDatabase::CreateOnWorkerTaskRunner(
|
| - scoped_ptr<CreateParam> create_param,
|
| - const CreateCallback& callback) {
|
| - bool enable_on_disk_index = !CommandLine::ForCurrentProcess()->HasSwitch(
|
| - kDisableMetadataDatabaseOnDisk);
|
| - scoped_ptr<MetadataDatabase> metadata_database(
|
| - new MetadataDatabase(create_param->database_path,
|
| - enable_on_disk_index,
|
| - create_param->env_override));
|
| -
|
| - SyncStatusCode status = metadata_database->Initialize();
|
| - if (status == SYNC_DATABASE_ERROR_FAILED) {
|
| - // Delete the previous instance to avoid creating a LevelDB instance for
|
| - // the same path.
|
| - metadata_database.reset();
|
| -
|
| - metadata_database.reset(
|
| - new MetadataDatabase(create_param->database_path,
|
| - enable_on_disk_index,
|
| - create_param->env_override));
|
| - status = metadata_database->Initialize();
|
| - }
|
| -
|
| - if (status != SYNC_STATUS_OK)
|
| - metadata_database.reset();
|
| -
|
| - callback.Run(status, metadata_database.Pass());
|
| -}
|
| -
|
| SyncStatusCode MetadataDatabase::Initialize() {
|
| SyncStatusCode status = SYNC_STATUS_UNKNOWN;
|
| bool created = false;
|
|
|