| Index: content/browser/leveldb_wrapper_impl.cc
|
| diff --git a/content/browser/leveldb_wrapper_impl.cc b/content/browser/leveldb_wrapper_impl.cc
|
| index fa973e4c80800db0b38f1a86c539a2300ea0561a..6ec51c70862c569e9e5db571bde7a3c73bcf338c 100644
|
| --- a/content/browser/leveldb_wrapper_impl.cc
|
| +++ b/content/browser/leveldb_wrapper_impl.cc
|
| @@ -71,6 +71,18 @@ void LevelDBWrapperImpl::EnableAggressiveCommitDelay() {
|
| s_aggressive_flushing_enabled_ = true;
|
| }
|
|
|
| +void LevelDBWrapperImpl::ScheduleImmediateCommit() {
|
| + if (!on_load_complete_tasks_.empty()) {
|
| + LoadMap(base::Bind(&LevelDBWrapperImpl::ScheduleImmediateCommit,
|
| + base::Unretained(this)));
|
| + return;
|
| + }
|
| +
|
| + if (!database_ || !commit_batch_)
|
| + return;
|
| + CommitChanges();
|
| +}
|
| +
|
| void LevelDBWrapperImpl::AddObserver(
|
| mojom::LevelDBObserverAssociatedPtrInfo observer) {
|
| mojom::LevelDBObserverAssociatedPtr observer_ptr;
|
| @@ -168,18 +180,21 @@ void LevelDBWrapperImpl::Delete(const std::vector<uint8_t>& key,
|
|
|
| void LevelDBWrapperImpl::DeleteAll(const std::string& source,
|
| const DeleteAllCallback& callback) {
|
| - if (!map_) {
|
| + if (!map_ && !on_load_complete_tasks_.empty()) {
|
| LoadMap(
|
| base::Bind(&LevelDBWrapperImpl::DeleteAll, base::Unretained(this),
|
| source, callback));
|
| return;
|
| }
|
|
|
| - if (database_ && !map_->empty()) {
|
| + if (database_ && (!map_ || !map_->empty())) {
|
| CreateCommitBatchIfNeeded();
|
| commit_batch_->clear_all_first = true;
|
| commit_batch_->changed_keys.clear();
|
| }
|
| + if (!map_)
|
| + map_.reset(new ValueMap);
|
| +
|
| map_->clear();
|
| bytes_used_ = 0;
|
| observers_.ForAllPtrs(
|
|
|