OLD | NEW |
---|---|
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 Loading... | |
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 Loading... | |
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 Loading... | |
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 |
OLD | NEW |