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

Side by Side Diff: content/browser/leveldb_wrapper_impl_unittest.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
« no previous file with comments | « content/browser/leveldb_wrapper_impl.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/memory/ptr_util.h" 7 #include "base/memory/ptr_util.h"
8 #include "base/run_loop.h" 8 #include "base/run_loop.h"
9 #include "components/leveldb/public/cpp/util.h" 9 #include "components/leveldb/public/cpp/util.h"
10 #include "content/public/test/test_browser_thread_bundle.h" 10 #include "content/public/test/test_browser_thread_bundle.h"
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
68 callback.Run(); 68 callback.Run();
69 } 69 }
70 70
71 void SuccessCallback(const base::Closure& callback, 71 void SuccessCallback(const base::Closure& callback,
72 bool* success_out, 72 bool* success_out,
73 bool success) { 73 bool success) {
74 *success_out = success; 74 *success_out = success;
75 callback.Run(); 75 callback.Run();
76 } 76 }
77 77
78 void NoOpSuccessCallback(bool success) {}
79
78 } // namespace 80 } // namespace
79 81
80 class LevelDBWrapperImplTest : public testing::Test, 82 class LevelDBWrapperImplTest : public testing::Test,
81 public mojom::LevelDBObserver { 83 public mojom::LevelDBObserver {
82 public: 84 public:
83 struct Observation { 85 struct Observation {
84 enum { kAdd, kChange, kDelete, kDeleteAll } type; 86 enum { kAdd, kChange, kDelete, kDeleteAll } type;
85 std::string key; 87 std::string key;
86 std::string old_value; 88 std::string old_value;
87 std::string new_value; 89 std::string new_value;
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
167 bool DeleteAllSync() { 169 bool DeleteAllSync() {
168 base::RunLoop run_loop; 170 base::RunLoop run_loop;
169 bool success = false; 171 bool success = false;
170 wrapper()->DeleteAll( 172 wrapper()->DeleteAll(
171 kTestSource, 173 kTestSource,
172 base::Bind(&SuccessCallback, run_loop.QuitClosure(), &success)); 174 base::Bind(&SuccessCallback, run_loop.QuitClosure(), &success));
173 run_loop.Run(); 175 run_loop.Run();
174 return success; 176 return success;
175 } 177 }
176 178
177 void CommitChanges() { 179 void CommitChanges() { level_db_wrapper_.ScheduleImmediateCommit(); }
178 ASSERT_TRUE(level_db_wrapper_.commit_batch_);
179 level_db_wrapper_.CommitChanges();
180 }
181 180
182 const std::vector<Observation>& observations() { return observations_; } 181 const std::vector<Observation>& observations() { return observations_; }
183 182
184 private: 183 private:
185 // LevelDBObserver: 184 // LevelDBObserver:
186 void KeyAdded(const std::vector<uint8_t>& key, 185 void KeyAdded(const std::vector<uint8_t>& key,
187 const std::vector<uint8_t>& value, 186 const std::vector<uint8_t>& value,
188 const std::string& source) override { 187 const std::string& source) override {
189 observations_.push_back({Observation::kAdd, Uint8VectorToStdString(key), "", 188 observations_.push_back({Observation::kAdd, Uint8VectorToStdString(key), "",
190 Uint8VectorToStdString(value), source}); 189 Uint8VectorToStdString(value), source});
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after
325 EXPECT_EQ(key, observations()[0].key); 324 EXPECT_EQ(key, observations()[0].key);
326 EXPECT_EQ(value, observations()[0].old_value); 325 EXPECT_EQ(value, observations()[0].old_value);
327 EXPECT_EQ(kTestSource, observations()[0].source); 326 EXPECT_EQ(kTestSource, observations()[0].source);
328 327
329 EXPECT_TRUE(has_mock_data(kTestPrefix + key)); 328 EXPECT_TRUE(has_mock_data(kTestPrefix + key));
330 329
331 CommitChanges(); 330 CommitChanges();
332 EXPECT_FALSE(has_mock_data(kTestPrefix + key)); 331 EXPECT_FALSE(has_mock_data(kTestPrefix + key));
333 } 332 }
334 333
335 TEST_F(LevelDBWrapperImplTest, DeleteAll) { 334 TEST_F(LevelDBWrapperImplTest, DeleteAllWithoutLoadedMap) {
336 std::string key = "newkey"; 335 std::string key = "newkey";
337 std::string value = "foo"; 336 std::string value = "foo";
338 std::string dummy_key = "foobar"; 337 std::string dummy_key = "foobar";
339 set_mock_data(dummy_key, value); 338 set_mock_data(dummy_key, value);
340 set_mock_data(kTestPrefix + key, value); 339 set_mock_data(kTestPrefix + key, value);
341 340
342 EXPECT_TRUE(DeleteAllSync()); 341 EXPECT_TRUE(DeleteAllSync());
343 ASSERT_EQ(1u, observations().size()); 342 ASSERT_EQ(1u, observations().size());
344 EXPECT_EQ(Observation::kDeleteAll, observations()[0].type); 343 EXPECT_EQ(Observation::kDeleteAll, observations()[0].type);
345 EXPECT_EQ(kTestSource, observations()[0].source); 344 EXPECT_EQ(kTestSource, observations()[0].source);
346 345
347 EXPECT_TRUE(has_mock_data(kTestPrefix + key)); 346 EXPECT_TRUE(has_mock_data(kTestPrefix + key));
348 EXPECT_TRUE(has_mock_data(dummy_key)); 347 EXPECT_TRUE(has_mock_data(dummy_key));
349 348
350 CommitChanges(); 349 CommitChanges();
351 EXPECT_FALSE(has_mock_data(kTestPrefix + key)); 350 EXPECT_FALSE(has_mock_data(kTestPrefix + key));
352 EXPECT_TRUE(has_mock_data(dummy_key)); 351 EXPECT_TRUE(has_mock_data(dummy_key));
353 352
354 // Deleting all again should still work, an cause an observation. 353 // Deleting all again should still work, an cause an observation.
355 EXPECT_TRUE(DeleteAllSync()); 354 EXPECT_TRUE(DeleteAllSync());
356 ASSERT_EQ(2u, observations().size()); 355 ASSERT_EQ(2u, observations().size());
357 EXPECT_EQ(Observation::kDeleteAll, observations()[1].type); 356 EXPECT_EQ(Observation::kDeleteAll, observations()[1].type);
358 EXPECT_EQ(kTestSource, observations()[1].source); 357 EXPECT_EQ(kTestSource, observations()[1].source);
359 358
360 // And now we've deleted all, writing something the quota size should work. 359 // And now we've deleted all, writing something the quota size should work.
361 EXPECT_TRUE(PutSync(std::vector<uint8_t>(kTestSizeLimit, 'b'), 360 EXPECT_TRUE(PutSync(std::vector<uint8_t>(kTestSizeLimit, 'b'),
362 std::vector<uint8_t>())); 361 std::vector<uint8_t>()));
363 } 362 }
364 363
364 TEST_F(LevelDBWrapperImplTest, DeleteAllWithLoadedMap) {
365 std::string key = "newkey";
366 std::string value = "foo";
367 std::string dummy_key = "foobar";
368 set_mock_data(dummy_key, value);
369
370 EXPECT_TRUE(
371 PutSync(StdStringToUint8Vector(key), StdStringToUint8Vector(value)));
372
373 EXPECT_TRUE(DeleteAllSync());
374 ASSERT_EQ(2u, observations().size());
375 EXPECT_EQ(Observation::kDeleteAll, observations()[1].type);
376 EXPECT_EQ(kTestSource, observations()[1].source);
377
378 EXPECT_TRUE(has_mock_data(dummy_key));
379
380 CommitChanges();
381 EXPECT_FALSE(has_mock_data(kTestPrefix + key));
382 EXPECT_TRUE(has_mock_data(dummy_key));
383 }
384
385 TEST_F(LevelDBWrapperImplTest, DeleteAllWithPendingMapLoad) {
386 std::string key = "newkey";
387 std::string value = "foo";
388 std::string dummy_key = "foobar";
389 set_mock_data(dummy_key, value);
390
391 wrapper()->Put(StdStringToUint8Vector(key), StdStringToUint8Vector(value),
392 kTestSource, base::Bind(&NoOpSuccessCallback));
393
394 EXPECT_TRUE(DeleteAllSync());
395 ASSERT_EQ(2u, observations().size());
396 EXPECT_EQ(Observation::kDeleteAll, observations()[1].type);
397 EXPECT_EQ(kTestSource, observations()[1].source);
398
399 EXPECT_TRUE(has_mock_data(dummy_key));
400
401 CommitChanges();
402 EXPECT_FALSE(has_mock_data(kTestPrefix + key));
403 EXPECT_TRUE(has_mock_data(dummy_key));
404 }
405
365 TEST_F(LevelDBWrapperImplTest, PutOverQuotaLargeValue) { 406 TEST_F(LevelDBWrapperImplTest, PutOverQuotaLargeValue) {
366 std::vector<uint8_t> key = StdStringToUint8Vector("newkey"); 407 std::vector<uint8_t> key = StdStringToUint8Vector("newkey");
367 std::vector<uint8_t> value(kTestSizeLimit, 4); 408 std::vector<uint8_t> value(kTestSizeLimit, 4);
368 409
369 EXPECT_FALSE(PutSync(key, value)); 410 EXPECT_FALSE(PutSync(key, value));
370 411
371 value.resize(kTestSizeLimit / 2); 412 value.resize(kTestSizeLimit / 2);
372 EXPECT_TRUE(PutSync(key, value)); 413 EXPECT_TRUE(PutSync(key, value));
373 } 414 }
374 415
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
425 // Reducing size should also succeed. 466 // Reducing size should also succeed.
426 value.clear(); 467 value.clear();
427 EXPECT_TRUE(PutSync(key, value)); 468 EXPECT_TRUE(PutSync(key, value));
428 469
429 // Increasing size should fail. 470 // Increasing size should fail.
430 value.resize(1, 'a'); 471 value.resize(1, 'a');
431 EXPECT_FALSE(PutSync(key, value)); 472 EXPECT_FALSE(PutSync(key, value));
432 } 473 }
433 474
434 } // namespace content 475 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/leveldb_wrapper_impl.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698