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

Side by Side Diff: content/browser/leveldb_wrapper_impl.cc

Issue 2605133002: Add method to delete storage for origins to LocalStorageContextMojo. (Closed)
Patch Set: delete storage for physical origin Created 3 years, 11 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 unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/browser/leveldb_wrapper_impl.h" 5 #include "content/browser/leveldb_wrapper_impl.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/threading/thread_task_runner_handle.h" 8 #include "base/threading/thread_task_runner_handle.h"
9 #include "components/leveldb/public/cpp/util.h" 9 #include "components/leveldb/public/cpp/util.h"
10 #include "content/public/browser/browser_thread.h" 10 #include "content/public/browser/browser_thread.h"
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
64 } 64 }
65 65
66 void LevelDBWrapperImpl::Bind(mojom::LevelDBWrapperRequest request) { 66 void LevelDBWrapperImpl::Bind(mojom::LevelDBWrapperRequest request) {
67 bindings_.AddBinding(this, std::move(request)); 67 bindings_.AddBinding(this, std::move(request));
68 } 68 }
69 69
70 void LevelDBWrapperImpl::EnableAggressiveCommitDelay() { 70 void LevelDBWrapperImpl::EnableAggressiveCommitDelay() {
71 s_aggressive_flushing_enabled_ = true; 71 s_aggressive_flushing_enabled_ = true;
72 } 72 }
73 73
74 void LevelDBWrapperImpl::ScheduleImmediateCommit() {
75 if (!on_load_complete_tasks_.empty()) {
76 LoadMap(base::Bind(&LevelDBWrapperImpl::ScheduleImmediateCommit,
77 base::Unretained(this)));
78 return;
79 }
80
81 if (!database_ || !commit_batch_)
82 return;
83 CommitChanges();
84 }
85
74 void LevelDBWrapperImpl::AddObserver( 86 void LevelDBWrapperImpl::AddObserver(
75 mojom::LevelDBObserverAssociatedPtrInfo observer) { 87 mojom::LevelDBObserverAssociatedPtrInfo observer) {
76 mojom::LevelDBObserverAssociatedPtr observer_ptr; 88 mojom::LevelDBObserverAssociatedPtr observer_ptr;
77 observer_ptr.Bind(std::move(observer)); 89 observer_ptr.Bind(std::move(observer));
78 observers_.AddPtr(std::move(observer_ptr)); 90 observers_.AddPtr(std::move(observer_ptr));
79 } 91 }
80 92
81 void LevelDBWrapperImpl::Put(const std::vector<uint8_t>& key, 93 void LevelDBWrapperImpl::Put(const std::vector<uint8_t>& key,
82 const std::vector<uint8_t>& value, 94 const std::vector<uint8_t>& value,
83 const std::string& source, 95 const std::string& source,
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
161 bytes_used_ -= key.size() + old_value.size(); 173 bytes_used_ -= key.size() + old_value.size();
162 observers_.ForAllPtrs( 174 observers_.ForAllPtrs(
163 [&key, &source, &old_value](mojom::LevelDBObserver* observer) { 175 [&key, &source, &old_value](mojom::LevelDBObserver* observer) {
164 observer->KeyDeleted(key, old_value, source); 176 observer->KeyDeleted(key, old_value, source);
165 }); 177 });
166 callback.Run(true); 178 callback.Run(true);
167 } 179 }
168 180
169 void LevelDBWrapperImpl::DeleteAll(const std::string& source, 181 void LevelDBWrapperImpl::DeleteAll(const std::string& source,
170 const DeleteAllCallback& callback) { 182 const DeleteAllCallback& callback) {
171 if (!map_) { 183 if (!map_ && !on_load_complete_tasks_.empty()) {
172 LoadMap( 184 LoadMap(
173 base::Bind(&LevelDBWrapperImpl::DeleteAll, base::Unretained(this), 185 base::Bind(&LevelDBWrapperImpl::DeleteAll, base::Unretained(this),
174 source, callback)); 186 source, callback));
175 return; 187 return;
176 } 188 }
177 189
178 if (database_ && !map_->empty()) { 190 if (database_ && (!map_ || !map_->empty())) {
179 CreateCommitBatchIfNeeded(); 191 CreateCommitBatchIfNeeded();
180 commit_batch_->clear_all_first = true; 192 commit_batch_->clear_all_first = true;
181 commit_batch_->changed_keys.clear(); 193 commit_batch_->changed_keys.clear();
182 } 194 }
195 if (!map_)
196 map_.reset(new ValueMap);
197
183 map_->clear(); 198 map_->clear();
184 bytes_used_ = 0; 199 bytes_used_ = 0;
185 observers_.ForAllPtrs( 200 observers_.ForAllPtrs(
186 [&source](mojom::LevelDBObserver* observer) { 201 [&source](mojom::LevelDBObserver* observer) {
187 observer->AllDeleted(source); 202 observer->AllDeleted(source);
188 }); 203 });
189 callback.Run(true); 204 callback.Run(true);
190 } 205 }
191 206
192 void LevelDBWrapperImpl::Get(const std::vector<uint8_t>& key, 207 void LevelDBWrapperImpl::Get(const std::vector<uint8_t>& key,
(...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after
376 weak_ptr_factory_.GetWeakPtr())); 391 weak_ptr_factory_.GetWeakPtr()));
377 } 392 }
378 393
379 void LevelDBWrapperImpl::OnCommitComplete(leveldb::mojom::DatabaseError error) { 394 void LevelDBWrapperImpl::OnCommitComplete(leveldb::mojom::DatabaseError error) {
380 // TODO(michaeln): What if it fails, uma here or in the DB class? 395 // TODO(michaeln): What if it fails, uma here or in the DB class?
381 --commit_batches_in_flight_; 396 --commit_batches_in_flight_;
382 StartCommitTimer(); 397 StartCommitTimer();
383 } 398 }
384 399
385 } // namespace content 400 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/leveldb_wrapper_impl.h ('k') | content/browser/leveldb_wrapper_impl_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698