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

Side by Side Diff: components/leveldb/leveldb_service_unittest.cc

Issue 2625873004: Delete and try to recreate localstorage database on invalid schema version. (Closed)
Patch Set: add unit test for Destroy 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 "base/bind.h" 5 #include "base/bind.h"
6 #include "base/macros.h" 6 #include "base/macros.h"
7 #include "base/run_loop.h" 7 #include "base/run_loop.h"
8 #include "components/filesystem/public/interfaces/directory.mojom.h" 8 #include "components/filesystem/public/interfaces/directory.mojom.h"
9 #include "components/filesystem/public/interfaces/file_system.mojom.h" 9 #include "components/filesystem/public/interfaces/file_system.mojom.h"
10 #include "components/filesystem/public/interfaces/types.mojom.h" 10 #include "components/filesystem/public/interfaces/types.mojom.h"
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
88 void DatabaseSyncDeletePrefixed(mojom::LevelDBDatabase* database, 88 void DatabaseSyncDeletePrefixed(mojom::LevelDBDatabase* database,
89 const std::string& key_prefix, 89 const std::string& key_prefix,
90 mojom::DatabaseError* out_error) { 90 mojom::DatabaseError* out_error) {
91 base::RunLoop run_loop; 91 base::RunLoop run_loop;
92 database->DeletePrefixed(StdStringToUint8Vector(key_prefix), 92 database->DeletePrefixed(StdStringToUint8Vector(key_prefix),
93 Capture(out_error, run_loop.QuitClosure())); 93 Capture(out_error, run_loop.QuitClosure()));
94 run_loop.Run(); 94 run_loop.Run();
95 } 95 }
96 96
97 void LevelDBSyncOpenInMemory(mojom::LevelDBService* leveldb, 97 void LevelDBSyncOpenInMemory(mojom::LevelDBService* leveldb,
98 mojom::LevelDBDatabaseRequest database, 98 mojom::LevelDBDatabaseAssociatedRequest database,
99 mojom::DatabaseError* out_error) { 99 mojom::DatabaseError* out_error) {
100 base::RunLoop run_loop; 100 base::RunLoop run_loop;
101 leveldb->OpenInMemory(std::move(database), 101 leveldb->OpenInMemory(std::move(database),
102 Capture(out_error, run_loop.QuitClosure())); 102 Capture(out_error, run_loop.QuitClosure()));
103 run_loop.Run(); 103 run_loop.Run();
104 } 104 }
105 105
106 class LevelDBServiceTest : public service_manager::test::ServiceTest { 106 class LevelDBServiceTest : public service_manager::test::ServiceTest {
107 public: 107 public:
108 LevelDBServiceTest() : ServiceTest("leveldb_service_unittests") {} 108 LevelDBServiceTest() : ServiceTest("leveldb_service_unittests") {}
(...skipping 27 matching lines...) Expand all
136 136
137 private: 137 private:
138 filesystem::mojom::FileSystemPtr files_; 138 filesystem::mojom::FileSystemPtr files_;
139 mojom::LevelDBServicePtr leveldb_; 139 mojom::LevelDBServicePtr leveldb_;
140 140
141 DISALLOW_COPY_AND_ASSIGN(LevelDBServiceTest); 141 DISALLOW_COPY_AND_ASSIGN(LevelDBServiceTest);
142 }; 142 };
143 143
144 TEST_F(LevelDBServiceTest, Basic) { 144 TEST_F(LevelDBServiceTest, Basic) {
145 mojom::DatabaseError error; 145 mojom::DatabaseError error;
146 mojom::LevelDBDatabasePtr database; 146 mojom::LevelDBDatabaseAssociatedPtr database;
147 LevelDBSyncOpenInMemory(leveldb().get(), MakeRequest(&database), &error); 147 LevelDBSyncOpenInMemory(leveldb().get(),
148 MakeRequest(&database, leveldb().associated_group()),
149 &error);
148 EXPECT_EQ(mojom::DatabaseError::OK, error); 150 EXPECT_EQ(mojom::DatabaseError::OK, error);
149 151
150 // Write a key to the database. 152 // Write a key to the database.
151 error = mojom::DatabaseError::INVALID_ARGUMENT; 153 error = mojom::DatabaseError::INVALID_ARGUMENT;
152 DatabaseSyncPut(database.get(), "key", "value", &error); 154 DatabaseSyncPut(database.get(), "key", "value", &error);
153 EXPECT_EQ(mojom::DatabaseError::OK, error); 155 EXPECT_EQ(mojom::DatabaseError::OK, error);
154 156
155 // Read the key back from the database. 157 // Read the key back from the database.
156 error = mojom::DatabaseError::INVALID_ARGUMENT; 158 error = mojom::DatabaseError::INVALID_ARGUMENT;
157 std::vector<uint8_t> value; 159 std::vector<uint8_t> value;
(...skipping 12 matching lines...) Expand all
170 // Read the key back from the database. 172 // Read the key back from the database.
171 error = mojom::DatabaseError::INVALID_ARGUMENT; 173 error = mojom::DatabaseError::INVALID_ARGUMENT;
172 value.clear(); 174 value.clear();
173 DatabaseSyncGet(database.get(), "key", &error, &value); 175 DatabaseSyncGet(database.get(), "key", &error, &value);
174 EXPECT_EQ(mojom::DatabaseError::NOT_FOUND, error); 176 EXPECT_EQ(mojom::DatabaseError::NOT_FOUND, error);
175 EXPECT_EQ("", Uint8VectorToStdString(value)); 177 EXPECT_EQ("", Uint8VectorToStdString(value));
176 } 178 }
177 179
178 TEST_F(LevelDBServiceTest, WriteBatch) { 180 TEST_F(LevelDBServiceTest, WriteBatch) {
179 mojom::DatabaseError error; 181 mojom::DatabaseError error;
180 mojom::LevelDBDatabasePtr database; 182 mojom::LevelDBDatabaseAssociatedPtr database;
181 LevelDBSyncOpenInMemory(leveldb().get(), MakeRequest(&database), &error); 183 LevelDBSyncOpenInMemory(leveldb().get(),
184 MakeRequest(&database, leveldb().associated_group()),
185 &error);
182 EXPECT_EQ(mojom::DatabaseError::OK, error); 186 EXPECT_EQ(mojom::DatabaseError::OK, error);
183 187
184 // Write a key to the database. 188 // Write a key to the database.
185 DatabaseSyncPut(database.get(), "key", "value", &error); 189 DatabaseSyncPut(database.get(), "key", "value", &error);
186 EXPECT_EQ(mojom::DatabaseError::OK, error); 190 EXPECT_EQ(mojom::DatabaseError::OK, error);
187 191
188 // Create a batched operation which both deletes "key" and adds another write. 192 // Create a batched operation which both deletes "key" and adds another write.
189 std::vector<mojom::BatchedOperationPtr> operations; 193 std::vector<mojom::BatchedOperationPtr> operations;
190 mojom::BatchedOperationPtr item = mojom::BatchedOperation::New(); 194 mojom::BatchedOperationPtr item = mojom::BatchedOperation::New();
191 item->type = mojom::BatchOperationType::DELETE_KEY; 195 item->type = mojom::BatchOperationType::DELETE_KEY;
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
252 TEST_F(LevelDBServiceTest, Reconnect) { 256 TEST_F(LevelDBServiceTest, Reconnect) {
253 mojom::DatabaseError error; 257 mojom::DatabaseError error;
254 258
255 filesystem::mojom::DirectoryPtr temp_directory; 259 filesystem::mojom::DirectoryPtr temp_directory;
256 GetTempDirectory(&temp_directory); 260 GetTempDirectory(&temp_directory);
257 261
258 { 262 {
259 filesystem::mojom::DirectoryPtr directory; 263 filesystem::mojom::DirectoryPtr directory;
260 temp_directory->Clone(MakeRequest(&directory)); 264 temp_directory->Clone(MakeRequest(&directory));
261 265
262 mojom::LevelDBDatabasePtr database; 266 mojom::LevelDBDatabaseAssociatedPtr database;
263 leveldb::mojom::OpenOptionsPtr options = leveldb::mojom::OpenOptions::New(); 267 leveldb::mojom::OpenOptionsPtr options = leveldb::mojom::OpenOptions::New();
264 options->error_if_exists = true; 268 options->error_if_exists = true;
265 options->create_if_missing = true; 269 options->create_if_missing = true;
266 base::RunLoop run_loop; 270 base::RunLoop run_loop;
267 leveldb()->OpenWithOptions(std::move(options), std::move(directory), "test", 271 leveldb()->OpenWithOptions(
268 MakeRequest(&database), 272 std::move(options), std::move(directory), "test",
269 Capture(&error, run_loop.QuitClosure())); 273 MakeRequest(&database, leveldb().associated_group()),
274 Capture(&error, run_loop.QuitClosure()));
270 run_loop.Run(); 275 run_loop.Run();
271 EXPECT_EQ(mojom::DatabaseError::OK, error); 276 EXPECT_EQ(mojom::DatabaseError::OK, error);
272 277
273 // Write a key to the database. 278 // Write a key to the database.
274 error = mojom::DatabaseError::INVALID_ARGUMENT; 279 error = mojom::DatabaseError::INVALID_ARGUMENT;
275 DatabaseSyncPut(database.get(), "key", "value", &error); 280 DatabaseSyncPut(database.get(), "key", "value", &error);
276 EXPECT_EQ(mojom::DatabaseError::OK, error); 281 EXPECT_EQ(mojom::DatabaseError::OK, error);
277 282
278 // The database should go out of scope here. 283 // The database should go out of scope here.
279 } 284 }
280 285
281 { 286 {
282 filesystem::mojom::DirectoryPtr directory; 287 filesystem::mojom::DirectoryPtr directory;
283 temp_directory->Clone(MakeRequest(&directory)); 288 temp_directory->Clone(MakeRequest(&directory));
284 289
285 // Reconnect to the database. 290 // Reconnect to the database.
286 mojom::LevelDBDatabasePtr database; 291 mojom::LevelDBDatabaseAssociatedPtr database;
287 base::RunLoop run_loop; 292 base::RunLoop run_loop;
288 leveldb()->Open(std::move(directory), "test", MakeRequest(&database), 293 leveldb()->Open(std::move(directory), "test",
294 MakeRequest(&database, leveldb().associated_group()),
289 Capture(&error, run_loop.QuitClosure())); 295 Capture(&error, run_loop.QuitClosure()));
290 run_loop.Run(); 296 run_loop.Run();
291 EXPECT_EQ(mojom::DatabaseError::OK, error); 297 EXPECT_EQ(mojom::DatabaseError::OK, error);
292 298
293 // We should still be able to read the key back from the database. 299 // We should still be able to read the key back from the database.
294 error = mojom::DatabaseError::INVALID_ARGUMENT; 300 error = mojom::DatabaseError::INVALID_ARGUMENT;
295 std::vector<uint8_t> value; 301 std::vector<uint8_t> value;
296 DatabaseSyncGet(database.get(), "key", &error, &value); 302 DatabaseSyncGet(database.get(), "key", &error, &value);
297 EXPECT_EQ(mojom::DatabaseError::OK, error); 303 EXPECT_EQ(mojom::DatabaseError::OK, error);
298 EXPECT_EQ("value", Uint8VectorToStdString(value)); 304 EXPECT_EQ("value", Uint8VectorToStdString(value));
299 } 305 }
300 } 306 }
301 307
308 TEST_F(LevelDBServiceTest, Destroy) {
309 mojom::DatabaseError error;
310
311 filesystem::mojom::DirectoryPtr temp_directory;
312 GetTempDirectory(&temp_directory);
313
314 {
315 filesystem::mojom::DirectoryPtr directory;
316 temp_directory->Clone(MakeRequest(&directory));
317
318 mojom::LevelDBDatabaseAssociatedPtr database;
319 leveldb::mojom::OpenOptionsPtr options = leveldb::mojom::OpenOptions::New();
320 options->error_if_exists = true;
321 options->create_if_missing = true;
322 base::RunLoop run_loop;
323 leveldb()->OpenWithOptions(
324 std::move(options), std::move(directory), "test",
325 MakeRequest(&database, leveldb().associated_group()),
326 Capture(&error, run_loop.QuitClosure()));
327 run_loop.Run();
328 EXPECT_EQ(mojom::DatabaseError::OK, error);
329
330 // Write a key to the database.
331 error = mojom::DatabaseError::INVALID_ARGUMENT;
332 DatabaseSyncPut(database.get(), "key", "value", &error);
333 EXPECT_EQ(mojom::DatabaseError::OK, error);
334
335 // The database should go out of scope here.
336 }
337
338 {
339 filesystem::mojom::DirectoryPtr directory;
340 temp_directory->Clone(MakeRequest(&directory));
341
342 // Destroy the database.
343 base::RunLoop run_loop;
344 leveldb()->Destroy(std::move(directory), "test", Capture(&error, run_loop.Qu itClosure()));
jam 2017/01/14 00:17:55 nit: 80 chars, also below
345 run_loop.Run();
346 EXPECT_EQ(mojom::DatabaseError::OK, error);
347 }
348
349 {
350 filesystem::mojom::DirectoryPtr directory;
351 temp_directory->Clone(MakeRequest(&directory));
352
353 // Reconnect to the database shuold fail.
jam 2017/01/14 00:17:55 nit: should
354 mojom::LevelDBDatabaseAssociatedPtr database;
355 base::RunLoop run_loop;
356 leveldb()->Open(std::move(directory), "test",
357 MakeRequest(&database, leveldb().associated_group()),
358 Capture(&error, run_loop.QuitClosure()));
359 run_loop.Run();
360 EXPECT_EQ(mojom::DatabaseError::INVALID_ARGUMENT, error);
361 }
362
363 {
364 filesystem::mojom::DirectoryPtr directory;
365 temp_directory->Clone(MakeRequest(&directory));
366
367 // Destroying a non-existant database should still succeed.
368 base::RunLoop run_loop;
369 leveldb()->Destroy(std::move(directory), "test", Capture(&error, run_loop.Qu itClosure()));
370 run_loop.Run();
371 EXPECT_EQ(mojom::DatabaseError::OK, error);
372 }
373 }
374
302 TEST_F(LevelDBServiceTest, GetSnapshotSimple) { 375 TEST_F(LevelDBServiceTest, GetSnapshotSimple) {
303 mojom::DatabaseError error; 376 mojom::DatabaseError error;
304 mojom::LevelDBDatabasePtr database; 377 mojom::LevelDBDatabaseAssociatedPtr database;
305 LevelDBSyncOpenInMemory(leveldb().get(), MakeRequest(&database), &error); 378 LevelDBSyncOpenInMemory(leveldb().get(),
379 MakeRequest(&database, leveldb().associated_group()),
380 &error);
306 EXPECT_EQ(mojom::DatabaseError::OK, error); 381 EXPECT_EQ(mojom::DatabaseError::OK, error);
307 382
308 base::UnguessableToken snapshot; 383 base::UnguessableToken snapshot;
309 base::RunLoop run_loop; 384 base::RunLoop run_loop;
310 database->GetSnapshot(CaptureConstRef(&snapshot, run_loop.QuitClosure())); 385 database->GetSnapshot(CaptureConstRef(&snapshot, run_loop.QuitClosure()));
311 run_loop.Run(); 386 run_loop.Run();
312 EXPECT_FALSE(snapshot.is_empty()); 387 EXPECT_FALSE(snapshot.is_empty());
313 } 388 }
314 389
315 TEST_F(LevelDBServiceTest, GetFromSnapshots) { 390 TEST_F(LevelDBServiceTest, GetFromSnapshots) {
316 mojom::DatabaseError error; 391 mojom::DatabaseError error;
317 mojom::LevelDBDatabasePtr database; 392 mojom::LevelDBDatabaseAssociatedPtr database;
318 LevelDBSyncOpenInMemory(leveldb().get(), MakeRequest(&database), &error); 393 LevelDBSyncOpenInMemory(leveldb().get(),
394 MakeRequest(&database, leveldb().associated_group()),
395 &error);
319 EXPECT_EQ(mojom::DatabaseError::OK, error); 396 EXPECT_EQ(mojom::DatabaseError::OK, error);
320 397
321 // Write a key to the database. 398 // Write a key to the database.
322 error = mojom::DatabaseError::INVALID_ARGUMENT; 399 error = mojom::DatabaseError::INVALID_ARGUMENT;
323 DatabaseSyncPut(database.get(), "key", "value", &error); 400 DatabaseSyncPut(database.get(), "key", "value", &error);
324 EXPECT_EQ(mojom::DatabaseError::OK, error); 401 EXPECT_EQ(mojom::DatabaseError::OK, error);
325 402
326 // Take a snapshot where key=value. 403 // Take a snapshot where key=value.
327 base::UnguessableToken key_value_snapshot; 404 base::UnguessableToken key_value_snapshot;
328 base::RunLoop run_loop; 405 base::RunLoop run_loop;
(...skipping 19 matching lines...) Expand all
348 base::RunLoop run_loop2; 425 base::RunLoop run_loop2;
349 database->GetFromSnapshot( 426 database->GetFromSnapshot(
350 key_value_snapshot, StdStringToUint8Vector("key"), 427 key_value_snapshot, StdStringToUint8Vector("key"),
351 CaptureConstRef(&error, &value, run_loop2.QuitClosure())); 428 CaptureConstRef(&error, &value, run_loop2.QuitClosure()));
352 run_loop2.Run(); 429 run_loop2.Run();
353 EXPECT_EQ(mojom::DatabaseError::OK, error); 430 EXPECT_EQ(mojom::DatabaseError::OK, error);
354 EXPECT_EQ("value", Uint8VectorToStdString(value)); 431 EXPECT_EQ("value", Uint8VectorToStdString(value));
355 } 432 }
356 433
357 TEST_F(LevelDBServiceTest, InvalidArgumentOnInvalidSnapshot) { 434 TEST_F(LevelDBServiceTest, InvalidArgumentOnInvalidSnapshot) {
358 mojom::LevelDBDatabasePtr database; 435 mojom::LevelDBDatabaseAssociatedPtr database;
359 mojom::DatabaseError error = mojom::DatabaseError::INVALID_ARGUMENT; 436 mojom::DatabaseError error = mojom::DatabaseError::INVALID_ARGUMENT;
360 LevelDBSyncOpenInMemory(leveldb().get(), MakeRequest(&database), &error); 437 LevelDBSyncOpenInMemory(leveldb().get(),
438 MakeRequest(&database, leveldb().associated_group()),
439 &error);
361 EXPECT_EQ(mojom::DatabaseError::OK, error); 440 EXPECT_EQ(mojom::DatabaseError::OK, error);
362 441
363 base::UnguessableToken invalid_snapshot = base::UnguessableToken::Create(); 442 base::UnguessableToken invalid_snapshot = base::UnguessableToken::Create();
364 443
365 error = mojom::DatabaseError::OK; 444 error = mojom::DatabaseError::OK;
366 std::vector<uint8_t> value; 445 std::vector<uint8_t> value;
367 base::RunLoop run_loop; 446 base::RunLoop run_loop;
368 database->GetFromSnapshot( 447 database->GetFromSnapshot(
369 invalid_snapshot, StdStringToUint8Vector("key"), 448 invalid_snapshot, StdStringToUint8Vector("key"),
370 CaptureConstRef(&error, &value, run_loop.QuitClosure())); 449 CaptureConstRef(&error, &value, run_loop.QuitClosure()));
371 run_loop.Run(); 450 run_loop.Run();
372 EXPECT_EQ(mojom::DatabaseError::INVALID_ARGUMENT, error); 451 EXPECT_EQ(mojom::DatabaseError::INVALID_ARGUMENT, error);
373 } 452 }
374 453
375 TEST_F(LevelDBServiceTest, MemoryDBReadWrite) { 454 TEST_F(LevelDBServiceTest, MemoryDBReadWrite) {
376 mojom::LevelDBDatabasePtr database; 455 mojom::LevelDBDatabaseAssociatedPtr database;
377 mojom::DatabaseError error = mojom::DatabaseError::INVALID_ARGUMENT; 456 mojom::DatabaseError error = mojom::DatabaseError::INVALID_ARGUMENT;
378 LevelDBSyncOpenInMemory(leveldb().get(), MakeRequest(&database), &error); 457 LevelDBSyncOpenInMemory(leveldb().get(),
458 MakeRequest(&database, leveldb().associated_group()),
459 &error);
379 EXPECT_EQ(mojom::DatabaseError::OK, error); 460 EXPECT_EQ(mojom::DatabaseError::OK, error);
380 461
381 // Write a key to the database. 462 // Write a key to the database.
382 error = mojom::DatabaseError::INVALID_ARGUMENT; 463 error = mojom::DatabaseError::INVALID_ARGUMENT;
383 DatabaseSyncPut(database.get(), "key", "value", &error); 464 DatabaseSyncPut(database.get(), "key", "value", &error);
384 EXPECT_EQ(mojom::DatabaseError::OK, error); 465 EXPECT_EQ(mojom::DatabaseError::OK, error);
385 466
386 // Read the key back from the database. 467 // Read the key back from the database.
387 error = mojom::DatabaseError::INVALID_ARGUMENT; 468 error = mojom::DatabaseError::INVALID_ARGUMENT;
388 std::vector<uint8_t> value; 469 std::vector<uint8_t> value;
(...skipping 13 matching lines...) Expand all
402 error = mojom::DatabaseError::INVALID_ARGUMENT; 483 error = mojom::DatabaseError::INVALID_ARGUMENT;
403 value.clear(); 484 value.clear();
404 DatabaseSyncGet(database.get(), "key", &error, &value); 485 DatabaseSyncGet(database.get(), "key", &error, &value);
405 EXPECT_EQ(mojom::DatabaseError::NOT_FOUND, error); 486 EXPECT_EQ(mojom::DatabaseError::NOT_FOUND, error);
406 EXPECT_EQ("", Uint8VectorToStdString(value)); 487 EXPECT_EQ("", Uint8VectorToStdString(value));
407 } 488 }
408 489
409 TEST_F(LevelDBServiceTest, Prefixed) { 490 TEST_F(LevelDBServiceTest, Prefixed) {
410 // Open an in memory database for speed. 491 // Open an in memory database for speed.
411 mojom::DatabaseError error = mojom::DatabaseError::INVALID_ARGUMENT; 492 mojom::DatabaseError error = mojom::DatabaseError::INVALID_ARGUMENT;
412 mojom::LevelDBDatabasePtr database; 493 mojom::LevelDBDatabaseAssociatedPtr database;
413 LevelDBSyncOpenInMemory(leveldb().get(), MakeRequest(&database), &error); 494 LevelDBSyncOpenInMemory(leveldb().get(),
495 MakeRequest(&database, leveldb().associated_group()),
496 &error);
414 EXPECT_EQ(mojom::DatabaseError::OK, error); 497 EXPECT_EQ(mojom::DatabaseError::OK, error);
415 498
416 const std::string prefix("prefix"); 499 const std::string prefix("prefix");
417 std::vector<mojom::KeyValuePtr> key_values; 500 std::vector<mojom::KeyValuePtr> key_values;
418 501
419 // Completely empty database. 502 // Completely empty database.
420 error = mojom::DatabaseError::INVALID_ARGUMENT; 503 error = mojom::DatabaseError::INVALID_ARGUMENT;
421 DatabaseSyncGetPrefixed(database.get(), prefix, &error, &key_values); 504 DatabaseSyncGetPrefixed(database.get(), prefix, &error, &key_values);
422 EXPECT_EQ(mojom::DatabaseError::OK, error); 505 EXPECT_EQ(mojom::DatabaseError::OK, error);
423 EXPECT_TRUE(key_values.empty()); 506 EXPECT_TRUE(key_values.empty());
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
497 EXPECT_EQ(mojom::DatabaseError::OK, error); 580 EXPECT_EQ(mojom::DatabaseError::OK, error);
498 error = mojom::DatabaseError::INVALID_ARGUMENT; 581 error = mojom::DatabaseError::INVALID_ARGUMENT;
499 key_values.clear(); 582 key_values.clear();
500 DatabaseSyncGetPrefixed(database.get(), prefix, &error, &key_values); 583 DatabaseSyncGetPrefixed(database.get(), prefix, &error, &key_values);
501 EXPECT_EQ(mojom::DatabaseError::OK, error); 584 EXPECT_EQ(mojom::DatabaseError::OK, error);
502 EXPECT_TRUE(key_values.empty()); 585 EXPECT_TRUE(key_values.empty());
503 } 586 }
504 587
505 } // namespace 588 } // namespace
506 } // namespace leveldb 589 } // namespace leveldb
OLDNEW
« no previous file with comments | « components/leveldb/leveldb_service_impl.cc ('k') | components/leveldb/public/interfaces/leveldb.mojom » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698