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

Side by Side Diff: chrome/browser/sync_file_system/drive_backend/metadata_database.cc

Issue 552723002: [SyncFS] Test MetadataDatabaseTest using both on-memory and on-disk indexes (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 3 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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 "chrome/browser/sync_file_system/drive_backend/metadata_database.h" 5 #include "chrome/browser/sync_file_system/drive_backend/metadata_database.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <stack> 8 #include <stack>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 504 matching lines...) Expand 10 before | Expand all | Expand 10 after
515 if (index->GetFileTrackerIDsByFileID(file_id).empty()) { 515 if (index->GetFileTrackerIDsByFileID(file_id).empty()) {
516 index->RemoveFileMetadata(file_id); 516 index->RemoveFileMetadata(file_id);
517 } 517 }
518 } 518 }
519 519
520 } // namespace 520 } // namespace
521 521
522 struct MetadataDatabase::CreateParam { 522 struct MetadataDatabase::CreateParam {
523 scoped_refptr<base::SequencedTaskRunner> worker_task_runner; 523 scoped_refptr<base::SequencedTaskRunner> worker_task_runner;
524 base::FilePath database_path; 524 base::FilePath database_path;
525 bool enable_on_disk_index;
525 leveldb::Env* env_override; 526 leveldb::Env* env_override;
526 527
527 CreateParam( 528 CreateParam(
528 const scoped_refptr<base::SequencedTaskRunner>& worker_task_runner, 529 const scoped_refptr<base::SequencedTaskRunner>& worker_task_runner,
529 const base::FilePath& database_path, 530 const base::FilePath& database_path,
531 bool enable_on_disk_index,
530 leveldb::Env* env_override) 532 leveldb::Env* env_override)
531 : worker_task_runner(worker_task_runner), 533 : worker_task_runner(worker_task_runner),
532 database_path(database_path), 534 database_path(database_path),
535 enable_on_disk_index(enable_on_disk_index),
533 env_override(env_override) {} 536 env_override(env_override) {}
534 }; 537 };
535 538
536 // static 539 // static
537 void MetadataDatabase::Create( 540 void MetadataDatabase::Create(
538 const scoped_refptr<base::SequencedTaskRunner>& worker_task_runner, 541 const scoped_refptr<base::SequencedTaskRunner>& worker_task_runner,
539 const base::FilePath& database_path, 542 const base::FilePath& database_path,
540 leveldb::Env* env_override, 543 leveldb::Env* env_override,
541 const CreateCallback& callback) { 544 const CreateCallback& callback) {
545 bool enable_on_disk_index = !CommandLine::ForCurrentProcess()->HasSwitch(
546 kDisableMetadataDatabaseOnDisk);
547
548 worker_task_runner->PostTask(FROM_HERE, base::Bind(
549 &MetadataDatabase::CreateOnWorkerTaskRunner,
550 base::Passed(make_scoped_ptr(new CreateParam(
551 worker_task_runner,
552 database_path,
553 enable_on_disk_index,
554 env_override))),
555 callback));
556 }
557
558 // static
559 void MetadataDatabase::CreateOnWorkerForTesting(
560 const scoped_refptr<base::SequencedTaskRunner>& worker_task_runner,
561 const base::FilePath& database_path,
562 bool enable_on_disk_index,
563 leveldb::Env* env_override,
564 const CreateCallback& callback) {
542 worker_task_runner->PostTask(FROM_HERE, base::Bind( 565 worker_task_runner->PostTask(FROM_HERE, base::Bind(
tzik 2014/09/09 08:33:27 This PostTask is no longer needed, though we've no
peria 2014/09/10 05:40:12 Acknowledged.
543 &MetadataDatabase::CreateOnWorkerTaskRunner, 566 &MetadataDatabase::CreateOnWorkerTaskRunner,
544 base::Passed(make_scoped_ptr(new CreateParam( 567 base::Passed(make_scoped_ptr(new CreateParam(
545 worker_task_runner, 568 worker_task_runner,
546 database_path, 569 database_path,
570 enable_on_disk_index,
547 env_override))), 571 env_override))),
548 callback)); 572 callback));
549 } 573 }
550 574
551 // static 575 // static
552 SyncStatusCode MetadataDatabase::CreateForTesting( 576 SyncStatusCode MetadataDatabase::CreateForTesting(
553 scoped_ptr<LevelDBWrapper> db, 577 scoped_ptr<LevelDBWrapper> db,
554 bool enable_on_disk_index, 578 bool enable_on_disk_index,
555 scoped_ptr<MetadataDatabase>* metadata_database_out) { 579 scoped_ptr<MetadataDatabase>* metadata_database_out) {
556 scoped_ptr<MetadataDatabase> metadata_database( 580 scoped_ptr<MetadataDatabase> metadata_database(
(...skipping 861 matching lines...) Expand 10 before | Expand all | Expand 10 after
1418 weak_ptr_factory_(this) { 1442 weak_ptr_factory_(this) {
1419 DCHECK(worker_task_runner.get()); 1443 DCHECK(worker_task_runner.get());
1420 } 1444 }
1421 1445
1422 // static 1446 // static
1423 void MetadataDatabase::CreateOnWorkerTaskRunner( 1447 void MetadataDatabase::CreateOnWorkerTaskRunner(
1424 scoped_ptr<CreateParam> create_param, 1448 scoped_ptr<CreateParam> create_param,
1425 const CreateCallback& callback) { 1449 const CreateCallback& callback) {
1426 DCHECK(create_param->worker_task_runner->RunsTasksOnCurrentThread()); 1450 DCHECK(create_param->worker_task_runner->RunsTasksOnCurrentThread());
1427 1451
1428 bool enable_on_disk_index = !CommandLine::ForCurrentProcess()->HasSwitch(
1429 kDisableMetadataDatabaseOnDisk);
1430 scoped_ptr<MetadataDatabase> metadata_database( 1452 scoped_ptr<MetadataDatabase> metadata_database(
1431 new MetadataDatabase(create_param->worker_task_runner, 1453 new MetadataDatabase(create_param->worker_task_runner,
1432 create_param->database_path, 1454 create_param->database_path,
1433 enable_on_disk_index, 1455 create_param->enable_on_disk_index,
1434 create_param->env_override)); 1456 create_param->env_override));
1435 1457
1436 SyncStatusCode status = metadata_database->Initialize(); 1458 SyncStatusCode status = metadata_database->Initialize();
1437 if (status == SYNC_DATABASE_ERROR_FAILED) { 1459 if (status == SYNC_DATABASE_ERROR_FAILED) {
1438 // Delete the previous instance to avoid creating a LevelDB instance for 1460 // Delete the previous instance to avoid creating a LevelDB instance for
1439 // the same path. 1461 // the same path.
1440 metadata_database.reset(); 1462 metadata_database.reset();
1441 1463
1442 metadata_database.reset( 1464 metadata_database.reset(
1443 new MetadataDatabase(create_param->worker_task_runner, 1465 new MetadataDatabase(create_param->worker_task_runner,
1444 create_param->database_path, 1466 create_param->database_path,
1445 enable_on_disk_index, 1467 create_param->enable_on_disk_index,
1446 create_param->env_override)); 1468 create_param->env_override));
1447 status = metadata_database->Initialize(); 1469 status = metadata_database->Initialize();
1448 } 1470 }
1449 1471
1450 if (status != SYNC_STATUS_OK) 1472 if (status != SYNC_STATUS_OK)
1451 metadata_database.reset(); 1473 metadata_database.reset();
1452 1474
1453 if (metadata_database) 1475 if (metadata_database)
1454 metadata_database->DetachFromSequence(); 1476 metadata_database->DetachFromSequence();
1455 create_param->worker_task_runner->PostTask( 1477 create_param->worker_task_runner->PostTask(
(...skipping 530 matching lines...) Expand 10 before | Expand all | Expand 10 after
1986 return false; 2008 return false;
1987 2009
1988 if (!parents.empty()) 2010 if (!parents.empty())
1989 return false; 2011 return false;
1990 2012
1991 return true; 2013 return true;
1992 } 2014 }
1993 2015
1994 } // namespace drive_backend 2016 } // namespace drive_backend
1995 } // namespace sync_file_system 2017 } // namespace sync_file_system
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698