Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(716)

Unified Diff: components/leveldb/leveldb_database_impl.h

Issue 2722293002: Fix lifetime of leveldb::MojoEnv instances. (Closed)
Patch Set: annotate leaks Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: components/leveldb/leveldb_database_impl.h
diff --git a/components/leveldb/leveldb_database_impl.h b/components/leveldb/leveldb_database_impl.h
index f621c5f50574e636bc474adb9f0ab7f07d069b83..5c6e25ae82702f8325b9cd4464f5e35e133d2909 100644
--- a/components/leveldb/leveldb_database_impl.h
+++ b/components/leveldb/leveldb_database_impl.h
@@ -8,6 +8,7 @@
#include <memory>
#include "base/unguessable_token.h"
+#include "components/leveldb/env_mojo.h"
#include "components/leveldb/public/interfaces/leveldb.mojom.h"
#include "mojo/public/cpp/bindings/interface_request.h"
#include "third_party/leveldatabase/src/include/leveldb/db.h"
@@ -17,8 +18,10 @@ namespace leveldb {
// The backing to a database object that we pass to our called.
class LevelDBDatabaseImpl : public mojom::LevelDBDatabase {
public:
- LevelDBDatabaseImpl(std::unique_ptr<leveldb::Env> environment,
- std::unique_ptr<leveldb::DB> db);
+ LevelDBDatabaseImpl(std::unique_ptr<Env> owned_environment,
+ std::unique_ptr<DB> db);
+ LevelDBDatabaseImpl(std::unique_ptr<MojoEnv::Directory> directory,
+ std::unique_ptr<DB> db);
~LevelDBDatabaseImpl() override;
// Overridden from LevelDBDatabase:
@@ -68,8 +71,9 @@ class LevelDBDatabaseImpl : public mojom::LevelDBDatabase {
leveldb::Status DeletePrefixedHelper(const leveldb::Slice& key_prefix,
leveldb::WriteBatch* batch);
- std::unique_ptr<leveldb::Env> environment_;
- std::unique_ptr<leveldb::DB> db_;
+ std::unique_ptr<Env> owned_environment_;
+ std::unique_ptr<MojoEnv::Directory> directory_;
+ std::unique_ptr<DB> db_;
std::map<base::UnguessableToken, const Snapshot*> snapshot_map_;

Powered by Google App Engine
This is Rietveld 408576698