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 506 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
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 leveldb::Env* env_override; | 525 leveldb::Env* env_override; |
526 | 526 |
527 CreateParam(base::SequencedTaskRunner* worker_task_runner, | 527 CreateParam( |
528 const base::FilePath& database_path, | 528 const scoped_refptr<base::SequencedTaskRunner>& worker_task_runner, |
529 leveldb::Env* env_override) | 529 const base::FilePath& database_path, |
| 530 leveldb::Env* env_override) |
530 : worker_task_runner(worker_task_runner), | 531 : worker_task_runner(worker_task_runner), |
531 database_path(database_path), | 532 database_path(database_path), |
532 env_override(env_override) { | 533 env_override(env_override) {} |
533 } | |
534 }; | 534 }; |
535 | 535 |
536 // static | 536 // static |
537 void MetadataDatabase::Create(base::SequencedTaskRunner* worker_task_runner, | 537 void MetadataDatabase::Create( |
538 const base::FilePath& database_path, | 538 const scoped_refptr<base::SequencedTaskRunner>& worker_task_runner, |
539 leveldb::Env* env_override, | 539 const base::FilePath& database_path, |
540 const CreateCallback& callback) { | 540 leveldb::Env* env_override, |
| 541 const CreateCallback& callback) { |
541 worker_task_runner->PostTask(FROM_HERE, base::Bind( | 542 worker_task_runner->PostTask(FROM_HERE, base::Bind( |
542 &MetadataDatabase::CreateOnWorkerTaskRunner, | 543 &MetadataDatabase::CreateOnWorkerTaskRunner, |
543 base::Passed(make_scoped_ptr(new CreateParam( | 544 base::Passed(make_scoped_ptr(new CreateParam( |
544 worker_task_runner, | 545 worker_task_runner, |
545 database_path, | 546 database_path, |
546 env_override))), | 547 env_override))), |
547 callback)); | 548 callback)); |
548 } | 549 } |
549 | 550 |
550 // static | 551 // static |
(...skipping 844 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1395 !CanClearDirty(*tracker)) | 1396 !CanClearDirty(*tracker)) |
1396 continue; | 1397 continue; |
1397 tracker->set_dirty(false); | 1398 tracker->set_dirty(false); |
1398 index_->StoreFileTracker(tracker.Pass()); | 1399 index_->StoreFileTracker(tracker.Pass()); |
1399 } | 1400 } |
1400 | 1401 |
1401 WriteToDatabase(callback); | 1402 WriteToDatabase(callback); |
1402 } | 1403 } |
1403 | 1404 |
1404 MetadataDatabase::MetadataDatabase( | 1405 MetadataDatabase::MetadataDatabase( |
1405 base::SequencedTaskRunner* worker_task_runner, | 1406 const scoped_refptr<base::SequencedTaskRunner>& worker_task_runner, |
1406 const base::FilePath& database_path, | 1407 const base::FilePath& database_path, |
1407 leveldb::Env* env_override) | 1408 leveldb::Env* env_override) |
1408 : worker_task_runner_(worker_task_runner), | 1409 : worker_task_runner_(worker_task_runner), |
1409 database_path_(database_path), | 1410 database_path_(database_path), |
1410 env_override_(env_override), | 1411 env_override_(env_override), |
1411 largest_known_change_id_(0), | 1412 largest_known_change_id_(0), |
1412 weak_ptr_factory_(this) { | 1413 weak_ptr_factory_(this) { |
1413 DCHECK(worker_task_runner); | 1414 DCHECK(worker_task_runner.get()); |
1414 } | 1415 } |
1415 | 1416 |
1416 // static | 1417 // static |
1417 void MetadataDatabase::CreateOnWorkerTaskRunner( | 1418 void MetadataDatabase::CreateOnWorkerTaskRunner( |
1418 scoped_ptr<CreateParam> create_param, | 1419 scoped_ptr<CreateParam> create_param, |
1419 const CreateCallback& callback) { | 1420 const CreateCallback& callback) { |
1420 DCHECK(create_param->worker_task_runner->RunsTasksOnCurrentThread()); | 1421 DCHECK(create_param->worker_task_runner->RunsTasksOnCurrentThread()); |
1421 | 1422 |
1422 scoped_ptr<MetadataDatabase> metadata_database( | 1423 scoped_ptr<MetadataDatabase> metadata_database( |
1423 new MetadataDatabase(create_param->worker_task_runner.get(), | 1424 new MetadataDatabase(create_param->worker_task_runner, |
1424 create_param->database_path, | 1425 create_param->database_path, |
1425 create_param->env_override)); | 1426 create_param->env_override)); |
1426 SyncStatusCode status = metadata_database->Initialize(); | 1427 SyncStatusCode status = metadata_database->Initialize(); |
1427 if (status != SYNC_STATUS_OK) | 1428 if (status != SYNC_STATUS_OK) |
1428 metadata_database.reset(); | 1429 metadata_database.reset(); |
1429 | 1430 |
1430 metadata_database->DetachFromSequence(); | 1431 metadata_database->DetachFromSequence(); |
1431 create_param->worker_task_runner->PostTask( | 1432 create_param->worker_task_runner->PostTask( |
1432 FROM_HERE, | 1433 FROM_HERE, |
1433 base::Bind( | 1434 base::Bind( |
(...skipping 519 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1953 return false; | 1954 return false; |
1954 | 1955 |
1955 if (!parents.empty()) | 1956 if (!parents.empty()) |
1956 return false; | 1957 return false; |
1957 | 1958 |
1958 return true; | 1959 return true; |
1959 } | 1960 } |
1960 | 1961 |
1961 } // namespace drive_backend | 1962 } // namespace drive_backend |
1962 } // namespace sync_file_system | 1963 } // namespace sync_file_system |
OLD | NEW |