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)); |
} |