Chromium Code Reviews| Index: content/browser/indexed_db/leveldb/leveldb_transaction.cc |
| diff --git a/content/browser/indexed_db/leveldb/leveldb_transaction.cc b/content/browser/indexed_db/leveldb/leveldb_transaction.cc |
| index 252059f0ad415929d31a8be204790fa22564e216..0f939403b1e09de07eb2588ec1a2db3f96fbcc72 100644 |
| --- a/content/browser/indexed_db/leveldb/leveldb_transaction.cc |
| +++ b/content/browser/indexed_db/leveldb/leveldb_transaction.cc |
| @@ -54,11 +54,14 @@ void LevelDBTransaction::Set(const StringPiece& key, |
| record->key.assign(key.begin(), key.end() - key.begin()); |
| record->value.swap(*value); |
| record->deleted = deleted; |
| + size_ += sizeof(Record) + key.size() * 2 + value->size(); |
|
pwnall
2017/05/23 23:01:09
This book-keeping looks subtle enough to require t
dmurph
2017/05/24 02:01:58
BAsed on our convo, recording right before the jou
|
| data_[record->key] = std::move(record); |
| NotifyIterators(); |
| return; |
| } |
| + size_ += value->size(); |
| it->second->value.swap(*value); |
| + size_ -= value->size(); |
| it->second->deleted = deleted; |
| } |
| @@ -375,10 +378,12 @@ void LevelDBTransaction::TransactionIterator::Delete() { |
| DCHECK(IsValid()); |
| if (current_ == data_iterator_.get()) { |
| data_iterator_->Delete(); |
| + transaction_->size_ -= data_iterator_->Value().size(); |
|
pwnall
2017/05/23 23:01:10
IIUC, this removes the record from the map, so I t
dmurph
2017/05/24 02:01:58
Added tests. Offline convo - record isn't removed
|
| } else { |
| std::unique_ptr<Record> record = base::MakeUnique<Record>(); |
| record->key = Key().as_string(); |
| record->deleted = true; |
| + transaction_->size_ += sizeof(Record) + record->key.size() * 2; |
| transaction_->data_[record->key] = std::move(record); |
| } |
| } |