Index: services/file/file_service.cc |
diff --git a/services/file/file_service.cc b/services/file/file_service.cc |
index d10ed4dcd750e368bc1b49fbf9705fb85a130bf5..119881cd19df094e10467b241408af09a7249f32 100644 |
--- a/services/file/file_service.cc |
+++ b/services/file/file_service.cc |
@@ -8,6 +8,7 @@ |
#include "base/memory/ptr_util.h" |
#include "base/memory/weak_ptr.h" |
#include "components/filesystem/lock_table.h" |
+#include "components/leveldb/env_mojo.h" |
#include "components/leveldb/leveldb_service_impl.h" |
#include "mojo/public/cpp/bindings/strong_binding.h" |
#include "services/file/file_system.h" |
@@ -47,9 +48,7 @@ class FileService::LevelDBServiceObjects |
: public base::SupportsWeakPtr<LevelDBServiceObjects> { |
public: |
// Created on the main thread. |
- LevelDBServiceObjects( |
- scoped_refptr<base::SingleThreadTaskRunner> file_task_runner) |
- : file_task_runner_(std::move(file_task_runner)) {} |
+ LevelDBServiceObjects(leveldb::MojoEnv* env) : env_(env) {} |
// Destroyed on the |leveldb_service_runner_|. |
~LevelDBServiceObjects() {} |
@@ -58,47 +57,46 @@ class FileService::LevelDBServiceObjects |
void OnLevelDBServiceRequest(const service_manager::Identity& remote_identity, |
leveldb::mojom::LevelDBServiceRequest request) { |
if (!leveldb_service_) |
- leveldb_service_.reset( |
- new leveldb::LevelDBServiceImpl(file_task_runner_)); |
+ leveldb_service_.reset(new leveldb::LevelDBServiceImpl(env_)); |
leveldb_bindings_.AddBinding(leveldb_service_.get(), std::move(request)); |
} |
private: |
- scoped_refptr<base::SingleThreadTaskRunner> file_task_runner_; |
- |
// Variables that are only accessible on the |leveldb_service_runner_| thread. |
std::unique_ptr<leveldb::mojom::LevelDBService> leveldb_service_; |
mojo::BindingSet<leveldb::mojom::LevelDBService> leveldb_bindings_; |
+ leveldb::MojoEnv* env_; |
+ |
DISALLOW_COPY_AND_ASSIGN(LevelDBServiceObjects); |
}; |
std::unique_ptr<service_manager::Service> CreateFileService( |
- scoped_refptr<base::SingleThreadTaskRunner> file_service_runner, |
+ leveldb::MojoEnv* leveldb_env, |
scoped_refptr<base::SingleThreadTaskRunner> leveldb_service_runner) { |
- return base::MakeUnique<FileService>(std::move(file_service_runner), |
+ return base::MakeUnique<FileService>(leveldb_env, |
std::move(leveldb_service_runner)); |
} |
FileService::FileService( |
- scoped_refptr<base::SingleThreadTaskRunner> file_service_runner, |
+ leveldb::MojoEnv* leveldb_env, |
scoped_refptr<base::SingleThreadTaskRunner> leveldb_service_runner) |
- : file_service_runner_(std::move(file_service_runner)), |
+ : leveldb_env_(leveldb_env), |
leveldb_service_runner_(std::move(leveldb_service_runner)) { |
registry_.AddInterface<leveldb::mojom::LevelDBService>(this); |
registry_.AddInterface<mojom::FileSystem>(this); |
} |
FileService::~FileService() { |
- file_service_runner_->DeleteSoon(FROM_HERE, file_system_objects_.release()); |
+ leveldb_env_->file_task_runner()->DeleteSoon(FROM_HERE, |
+ file_system_objects_.release()); |
leveldb_service_runner_->DeleteSoon(FROM_HERE, leveldb_objects_.release()); |
} |
void FileService::OnStart() { |
file_system_objects_.reset(new FileService::FileSystemObjects( |
GetUserDirForUserId(context()->identity().user_id()))); |
- leveldb_objects_.reset( |
- new FileService::LevelDBServiceObjects(file_service_runner_)); |
+ leveldb_objects_.reset(new FileService::LevelDBServiceObjects(leveldb_env_)); |
} |
void FileService::OnBindInterface( |
@@ -111,7 +109,7 @@ void FileService::OnBindInterface( |
void FileService::Create(const service_manager::Identity& remote_identity, |
mojom::FileSystemRequest request) { |
- file_service_runner_->PostTask( |
+ leveldb_env_->file_task_runner()->PostTask( |
FROM_HERE, |
base::Bind(&FileService::FileSystemObjects::OnFileSystemRequest, |
file_system_objects_->AsWeakPtr(), remote_identity, |