Chromium Code Reviews| Index: content/browser/indexed_db/leveldb/leveldb_transaction.h |
| diff --git a/content/browser/indexed_db/leveldb/leveldb_transaction.h b/content/browser/indexed_db/leveldb/leveldb_transaction.h |
| index a701a94748a6b02c10dcfdbd4f947084fa0f2a8f..444c4545931c31b9d182114a42ba9457c01096bf 100644 |
| --- a/content/browser/indexed_db/leveldb/leveldb_transaction.h |
| +++ b/content/browser/indexed_db/leveldb/leveldb_transaction.h |
| @@ -21,6 +21,7 @@ |
| namespace content { |
| class LevelDBTransactionRangeTest; |
| +class LevelDBTransactionTest; |
| class LevelDBWriteBatch; |
| class CONTENT_EXPORT LevelDBTransaction |
| @@ -50,6 +51,7 @@ class CONTENT_EXPORT LevelDBTransaction |
| private: |
| friend class base::RefCounted<LevelDBTransaction>; |
| friend class content::LevelDBTransactionRangeTest; |
| + friend class content::LevelDBTransactionTest; |
| FRIEND_TEST_ALL_PREFIXES(LevelDBTransactionTest, GetAndPut); |
| FRIEND_TEST_ALL_PREFIXES(LevelDBTransactionTest, Commit); |
| FRIEND_TEST_ALL_PREFIXES(LevelDBTransactionTest, Iterator); |
| @@ -93,6 +95,7 @@ class CONTENT_EXPORT LevelDBTransaction |
| leveldb::Status Prev() override; |
| base::StringPiece Key() const override; |
| base::StringPiece Value() const override; |
| + |
| bool IsDeleted() const; |
| // Mark the current record as deleted. |
| @@ -123,6 +126,9 @@ class CONTENT_EXPORT LevelDBTransaction |
| leveldb::Status Prev() override; |
| base::StringPiece Key() const override; |
| base::StringPiece Value() const override; |
| + void PurgeMemory() override; |
| + bool IsMemoryPurged() const override; |
|
jsbell
2017/03/22 23:55:32
I think I'd keep this called 'IsEvicted' to be con
dmurph
2017/03/23 20:56:48
Done.
|
| + |
| void DataChanged(); |
| // Mark the current record as deleted. If an existing record |
| @@ -133,6 +139,12 @@ class CONTENT_EXPORT LevelDBTransaction |
| private: |
| enum Direction { FORWARD, REVERSE }; |
| + enum class DBIteratorState { |
| + ACTIVE, |
| + EVICTED_AND_VALID, |
| + EVICTED_AND_INVALID |
| + }; |
| + |
| explicit TransactionIterator(scoped_refptr<LevelDBTransaction> transaction); |
| void HandleConflictsAndDeletes(); |
| void SetCurrentIteratorToSmallestKey(); |
| @@ -141,12 +153,17 @@ class CONTENT_EXPORT LevelDBTransaction |
| bool DataIteratorIsLower() const; |
| bool DataIteratorIsHigher() const; |
| + void LoadDBIteratorIfEvicted(); |
|
jsbell
2017/03/22 23:55:32
Maybe 'RestoreDBIteratorIfEvicted' ?
dmurph
2017/03/23 20:56:48
Done.
|
| + |
| scoped_refptr<LevelDBTransaction> transaction_; |
| const LevelDBComparator* comparator_; |
| mutable std::unique_ptr<DataIterator> data_iterator_; |
| std::unique_ptr<LevelDBIterator> db_iterator_; |
| + DBIteratorState db_iterator_state_ = DBIteratorState::ACTIVE; |
| LevelDBIterator* current_ = nullptr; |
| + std::string db_key_before_eviction_; |
| + |
| Direction direction_ = FORWARD; |
| mutable bool data_changed_ = false; |