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

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: 80 cols, and fix typo 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",
345 Capture(&error, run_loop.QuitClosure()));
346 run_loop.Run();
347 EXPECT_EQ(mojom::DatabaseError::OK, error);
348 }
349
350 {
351 filesystem::mojom::DirectoryPtr directory;
352 temp_directory->Clone(MakeRequest(&directory));
353
354 // Reconnect to the database should fail.
355 mojom::LevelDBDatabaseAssociatedPtr database;
356 base::RunLoop run_loop;
357 leveldb()->Open(std::move(directory), "test",
358 MakeRequest(&database, leveldb().associated_group()),
359 Capture(&error, run_loop.QuitClosure()));
360 run_loop.Run();
361 EXPECT_EQ(mojom::DatabaseError::INVALID_ARGUMENT, error);
362 }
363
364 {
365 filesystem::mojom::DirectoryPtr directory;
366 temp_directory->Clone(MakeRequest(&directory));
367
368 // Destroying a non-existant database should still succeed.
369 base::RunLoop run_loop;
370 leveldb()->Destroy(std::move(directory), "test",
371 Capture(&error, run_loop.QuitClosure()));
372 run_loop.Run();
373 EXPECT_EQ(mojom::DatabaseError::OK, error);
374 }
375 }
376
302 TEST_F(LevelDBServiceTest, GetSnapshotSimple) { 377 TEST_F(LevelDBServiceTest, GetSnapshotSimple) {
303 mojom::DatabaseError error; 378 mojom::DatabaseError error;
304 mojom::LevelDBDatabasePtr database; 379 mojom::LevelDBDatabaseAssociatedPtr database;
305 LevelDBSyncOpenInMemory(leveldb().get(), MakeRequest(&database), &error); 380 LevelDBSyncOpenInMemory(leveldb().get(),
381 MakeRequest(&database, leveldb().associated_group()),
382 &error);
306 EXPECT_EQ(mojom::DatabaseError::OK, error); 383 EXPECT_EQ(mojom::DatabaseError::OK, error);
307 384
308 base::UnguessableToken snapshot; 385 base::UnguessableToken snapshot;
309 base::RunLoop run_loop; 386 base::RunLoop run_loop;
310 database->GetSnapshot(CaptureConstRef(&snapshot, run_loop.QuitClosure())); 387 database->GetSnapshot(CaptureConstRef(&snapshot, run_loop.QuitClosure()));
311 run_loop.Run(); 388 run_loop.Run();
312 EXPECT_FALSE(snapshot.is_empty()); 389 EXPECT_FALSE(snapshot.is_empty());
313 } 390 }
314 391
315 TEST_F(LevelDBServiceTest, GetFromSnapshots) { 392 TEST_F(LevelDBServiceTest, GetFromSnapshots) {
316 mojom::DatabaseError error; 393 mojom::DatabaseError error;
317 mojom::LevelDBDatabasePtr database; 394 mojom::LevelDBDatabaseAssociatedPtr database;
318 LevelDBSyncOpenInMemory(leveldb().get(), MakeRequest(&database), &error); 395 LevelDBSyncOpenInMemory(leveldb().get(),
396 MakeRequest(&database, leveldb().associated_group()),
397 &error);
319 EXPECT_EQ(mojom::DatabaseError::OK, error); 398 EXPECT_EQ(mojom::DatabaseError::OK, error);
320 399
321 // Write a key to the database. 400 // Write a key to the database.
322 error = mojom::DatabaseError::INVALID_ARGUMENT; 401 error = mojom::DatabaseError::INVALID_ARGUMENT;
323 DatabaseSyncPut(database.get(), "key", "value", &error); 402 DatabaseSyncPut(database.get(), "key", "value", &error);
324 EXPECT_EQ(mojom::DatabaseError::OK, error); 403 EXPECT_EQ(mojom::DatabaseError::OK, error);
325 404
326 // Take a snapshot where key=value. 405 // Take a snapshot where key=value.
327 base::UnguessableToken key_value_snapshot; 406 base::UnguessableToken key_value_snapshot;
328 base::RunLoop run_loop; 407 base::RunLoop run_loop;
(...skipping 19 matching lines...) Expand all
348 base::RunLoop run_loop2; 427 base::RunLoop run_loop2;
349 database->GetFromSnapshot( 428 database->GetFromSnapshot(
350 key_value_snapshot, StdStringToUint8Vector("key"), 429 key_value_snapshot, StdStringToUint8Vector("key"),
351 CaptureConstRef(&error, &value, run_loop2.QuitClosure())); 430 CaptureConstRef(&error, &value, run_loop2.QuitClosure()));
352 run_loop2.Run(); 431 run_loop2.Run();
353 EXPECT_EQ(mojom::DatabaseError::OK, error); 432 EXPECT_EQ(mojom::DatabaseError::OK, error);
354 EXPECT_EQ("value", Uint8VectorToStdString(value)); 433 EXPECT_EQ("value", Uint8VectorToStdString(value));
355 } 434 }
356 435
357 TEST_F(LevelDBServiceTest, InvalidArgumentOnInvalidSnapshot) { 436 TEST_F(LevelDBServiceTest, InvalidArgumentOnInvalidSnapshot) {
358 mojom::LevelDBDatabasePtr database; 437 mojom::LevelDBDatabaseAssociatedPtr database;
359 mojom::DatabaseError error = mojom::DatabaseError::INVALID_ARGUMENT; 438 mojom::DatabaseError error = mojom::DatabaseError::INVALID_ARGUMENT;
360 LevelDBSyncOpenInMemory(leveldb().get(), MakeRequest(&database), &error); 439 LevelDBSyncOpenInMemory(leveldb().get(),
440 MakeRequest(&database, leveldb().associated_group()),
441 &error);
361 EXPECT_EQ(mojom::DatabaseError::OK, error); 442 EXPECT_EQ(mojom::DatabaseError::OK, error);
362 443
363 base::UnguessableToken invalid_snapshot = base::UnguessableToken::Create(); 444 base::UnguessableToken invalid_snapshot = base::UnguessableToken::Create();
364 445
365 error = mojom::DatabaseError::OK; 446 error = mojom::DatabaseError::OK;
366 std::vector<uint8_t> value; 447 std::vector<uint8_t> value;
367 base::RunLoop run_loop; 448 base::RunLoop run_loop;
368 database->GetFromSnapshot( 449 database->GetFromSnapshot(
369 invalid_snapshot, StdStringToUint8Vector("key"), 450 invalid_snapshot, StdStringToUint8Vector("key"),
370 CaptureConstRef(&error, &value, run_loop.QuitClosure())); 451 CaptureConstRef(&error, &value, run_loop.QuitClosure()));
371 run_loop.Run(); 452 run_loop.Run();
372 EXPECT_EQ(mojom::DatabaseError::INVALID_ARGUMENT, error); 453 EXPECT_EQ(mojom::DatabaseError::INVALID_ARGUMENT, error);
373 } 454 }
374 455
375 TEST_F(LevelDBServiceTest, MemoryDBReadWrite) { 456 TEST_F(LevelDBServiceTest, MemoryDBReadWrite) {
376 mojom::LevelDBDatabasePtr database; 457 mojom::LevelDBDatabaseAssociatedPtr database;
377 mojom::DatabaseError error = mojom::DatabaseError::INVALID_ARGUMENT; 458 mojom::DatabaseError error = mojom::DatabaseError::INVALID_ARGUMENT;
378 LevelDBSyncOpenInMemory(leveldb().get(), MakeRequest(&database), &error); 459 LevelDBSyncOpenInMemory(leveldb().get(),
460 MakeRequest(&database, leveldb().associated_group()),
461 &error);
379 EXPECT_EQ(mojom::DatabaseError::OK, error); 462 EXPECT_EQ(mojom::DatabaseError::OK, error);
380 463
381 // Write a key to the database. 464 // Write a key to the database.
382 error = mojom::DatabaseError::INVALID_ARGUMENT; 465 error = mojom::DatabaseError::INVALID_ARGUMENT;
383 DatabaseSyncPut(database.get(), "key", "value", &error); 466 DatabaseSyncPut(database.get(), "key", "value", &error);
384 EXPECT_EQ(mojom::DatabaseError::OK, error); 467 EXPECT_EQ(mojom::DatabaseError::OK, error);
385 468
386 // Read the key back from the database. 469 // Read the key back from the database.
387 error = mojom::DatabaseError::INVALID_ARGUMENT; 470 error = mojom::DatabaseError::INVALID_ARGUMENT;
388 std::vector<uint8_t> value; 471 std::vector<uint8_t> value;
(...skipping 13 matching lines...) Expand all
402 error = mojom::DatabaseError::INVALID_ARGUMENT; 485 error = mojom::DatabaseError::INVALID_ARGUMENT;
403 value.clear(); 486 value.clear();
404 DatabaseSyncGet(database.get(), "key", &error, &value); 487 DatabaseSyncGet(database.get(), "key", &error, &value);
405 EXPECT_EQ(mojom::DatabaseError::NOT_FOUND, error); 488 EXPECT_EQ(mojom::DatabaseError::NOT_FOUND, error);
406 EXPECT_EQ("", Uint8VectorToStdString(value)); 489 EXPECT_EQ("", Uint8VectorToStdString(value));
407 } 490 }
408 491
409 TEST_F(LevelDBServiceTest, Prefixed) { 492 TEST_F(LevelDBServiceTest, Prefixed) {
410 // Open an in memory database for speed. 493 // Open an in memory database for speed.
411 mojom::DatabaseError error = mojom::DatabaseError::INVALID_ARGUMENT; 494 mojom::DatabaseError error = mojom::DatabaseError::INVALID_ARGUMENT;
412 mojom::LevelDBDatabasePtr database; 495 mojom::LevelDBDatabaseAssociatedPtr database;
413 LevelDBSyncOpenInMemory(leveldb().get(), MakeRequest(&database), &error); 496 LevelDBSyncOpenInMemory(leveldb().get(),
497 MakeRequest(&database, leveldb().associated_group()),
498 &error);
414 EXPECT_EQ(mojom::DatabaseError::OK, error); 499 EXPECT_EQ(mojom::DatabaseError::OK, error);
415 500
416 const std::string prefix("prefix"); 501 const std::string prefix("prefix");
417 std::vector<mojom::KeyValuePtr> key_values; 502 std::vector<mojom::KeyValuePtr> key_values;
418 503
419 // Completely empty database. 504 // Completely empty database.
420 error = mojom::DatabaseError::INVALID_ARGUMENT; 505 error = mojom::DatabaseError::INVALID_ARGUMENT;
421 DatabaseSyncGetPrefixed(database.get(), prefix, &error, &key_values); 506 DatabaseSyncGetPrefixed(database.get(), prefix, &error, &key_values);
422 EXPECT_EQ(mojom::DatabaseError::OK, error); 507 EXPECT_EQ(mojom::DatabaseError::OK, error);
423 EXPECT_TRUE(key_values.empty()); 508 EXPECT_TRUE(key_values.empty());
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
497 EXPECT_EQ(mojom::DatabaseError::OK, error); 582 EXPECT_EQ(mojom::DatabaseError::OK, error);
498 error = mojom::DatabaseError::INVALID_ARGUMENT; 583 error = mojom::DatabaseError::INVALID_ARGUMENT;
499 key_values.clear(); 584 key_values.clear();
500 DatabaseSyncGetPrefixed(database.get(), prefix, &error, &key_values); 585 DatabaseSyncGetPrefixed(database.get(), prefix, &error, &key_values);
501 EXPECT_EQ(mojom::DatabaseError::OK, error); 586 EXPECT_EQ(mojom::DatabaseError::OK, error);
502 EXPECT_TRUE(key_values.empty()); 587 EXPECT_TRUE(key_values.empty());
503 } 588 }
504 589
505 } // namespace 590 } // namespace
506 } // namespace leveldb 591 } // 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