| Index: components/leveldb/leveldb_app.cc
|
| diff --git a/components/leveldb/leveldb_app.cc b/components/leveldb/leveldb_app.cc
|
| index 93086f77aa5f23a3b6f3c29c9e643a8f6d1303a1..24ba1b0f9e23ae1b2e84d0e997de39cacfd3afdd 100644
|
| --- a/components/leveldb/leveldb_app.cc
|
| +++ b/components/leveldb/leveldb_app.cc
|
| @@ -4,12 +4,16 @@
|
|
|
| #include "components/leveldb/leveldb_app.h"
|
|
|
| +#include "base/debug/leak_annotations.h"
|
| +#include "components/leveldb/env_mojo.h"
|
| #include "components/leveldb/leveldb_service_impl.h"
|
| #include "services/service_manager/public/cpp/service_context.h"
|
|
|
| namespace leveldb {
|
|
|
| -LevelDBApp::LevelDBApp() : file_thread_("LevelDBFile") {
|
| +LevelDBApp::LevelDBApp()
|
| + : file_thread_("LevelDBFile"),
|
| + env_(nullptr) {
|
| registry_.AddInterface<mojom::LevelDBService>(this);
|
| }
|
|
|
| @@ -32,8 +36,11 @@ void LevelDBApp::Create(const service_manager::Identity& remote_identity,
|
| if (!service_) {
|
| if (!file_thread_.IsRunning())
|
| file_thread_.Start();
|
| - service_.reset(
|
| - new LevelDBServiceImpl(file_thread_.message_loop()->task_runner()));
|
| + if (!env_) {
|
| + env_ = new MojoEnv(file_thread_.message_loop()->task_runner());
|
| + ANNOTATE_LEAKING_OBJECT_PTR(env_);
|
| + }
|
| + service_.reset(new LevelDBServiceImpl(env_));
|
| }
|
| bindings_.AddBinding(service_.get(), std::move(request));
|
| }
|
|
|