| 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,
|
|
|