| 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 "sync/syncable/directory.h" | 5 #include "sync/syncable/directory.h" |
| 6 | 6 |
| 7 #include "base/debug/trace_event.h" | 7 #include "base/debug/trace_event.h" |
| 8 #include "base/perftimer.h" | 8 #include "base/perftimer.h" |
| 9 #include "base/stl_util.h" | 9 #include "base/stl_util.h" |
| 10 #include "base/string_number_conversions.h" | 10 #include "base/string_number_conversions.h" |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 75 const std::string& name, | 75 const std::string& name, |
| 76 DirectoryChangeDelegate* delegate, | 76 DirectoryChangeDelegate* delegate, |
| 77 const WeakHandle<TransactionObserver>& transaction_observer) { | 77 const WeakHandle<TransactionObserver>& transaction_observer) { |
| 78 DCHECK(!kernel_); | 78 DCHECK(!kernel_); |
| 79 kernel_ = new Kernel(name, KernelLoadInfo(), delegate, transaction_observer); | 79 kernel_ = new Kernel(name, KernelLoadInfo(), delegate, transaction_observer); |
| 80 } | 80 } |
| 81 | 81 |
| 82 Directory::PersistedKernelInfo::PersistedKernelInfo() | 82 Directory::PersistedKernelInfo::PersistedKernelInfo() |
| 83 : next_id(0) { | 83 : next_id(0) { |
| 84 for (int i = FIRST_REAL_MODEL_TYPE; i < MODEL_TYPE_COUNT; ++i) { | 84 for (int i = FIRST_REAL_MODEL_TYPE; i < MODEL_TYPE_COUNT; ++i) { |
| 85 reset_download_progress(ModelTypeFromInt(i)); | 85 ModelType type = ModelTypeFromInt(i); |
| 86 if (VirtualTypes().Has(type)) |
| 87 continue; |
| 88 reset_download_progress(type); |
| 86 transaction_version[i] = 0; | 89 transaction_version[i] = 0; |
| 87 } | 90 } |
| 88 } | 91 } |
| 89 | 92 |
| 90 Directory::PersistedKernelInfo::~PersistedKernelInfo() {} | 93 Directory::PersistedKernelInfo::~PersistedKernelInfo() {} |
| 91 | 94 |
| 92 void Directory::PersistedKernelInfo::reset_download_progress( | 95 void Directory::PersistedKernelInfo::reset_download_progress( |
| 93 ModelType model_type) { | 96 ModelType model_type) { |
| 94 download_progress[model_type].set_data_type_id( | 97 download_progress[model_type].set_data_type_id( |
| 95 GetSpecificsFieldNumberFromModelType(model_type)); | 98 GetSpecificsFieldNumberFromModelType(model_type)); |
| (...skipping 461 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 557 } | 560 } |
| 558 if (trans.unrecoverable_error_set()) | 561 if (trans.unrecoverable_error_set()) |
| 559 return false; | 562 return false; |
| 560 } | 563 } |
| 561 return true; | 564 return true; |
| 562 } | 565 } |
| 563 | 566 |
| 564 bool Directory::PurgeEntriesWithTypeIn(ModelTypeSet types, | 567 bool Directory::PurgeEntriesWithTypeIn(ModelTypeSet types, |
| 565 ModelTypeSet types_to_journal) { | 568 ModelTypeSet types_to_journal) { |
| 566 DCHECK(types.HasAll(types_to_journal)); | 569 DCHECK(types.HasAll(types_to_journal)); |
| 570 types.RemoveAll(VirtualTypes()); |
| 567 | 571 |
| 568 if (types.Empty()) | 572 if (types.Empty()) |
| 569 return true; | 573 return true; |
| 570 | 574 |
| 571 { | 575 { |
| 572 WriteTransaction trans(FROM_HERE, PURGE_ENTRIES, this); | 576 WriteTransaction trans(FROM_HERE, PURGE_ENTRIES, this); |
| 573 | 577 |
| 574 EntryKernelSet entries_to_journal; | 578 EntryKernelSet entries_to_journal; |
| 575 STLElementDeleter<EntryKernelSet> journal_deleter(&entries_to_journal); | 579 STLElementDeleter<EntryKernelSet> journal_deleter(&entries_to_journal); |
| 576 | 580 |
| (...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 697 return kernel_->persisted_info.transaction_version[type]; | 701 return kernel_->persisted_info.transaction_version[type]; |
| 698 } | 702 } |
| 699 | 703 |
| 700 void Directory::IncrementTransactionVersion(ModelType type) { | 704 void Directory::IncrementTransactionVersion(ModelType type) { |
| 701 kernel_->transaction_mutex.AssertAcquired(); | 705 kernel_->transaction_mutex.AssertAcquired(); |
| 702 kernel_->persisted_info.transaction_version[type]++; | 706 kernel_->persisted_info.transaction_version[type]++; |
| 703 } | 707 } |
| 704 | 708 |
| 705 ModelTypeSet Directory::InitialSyncEndedTypes() { | 709 ModelTypeSet Directory::InitialSyncEndedTypes() { |
| 706 syncable::ReadTransaction trans(FROM_HERE, this); | 710 syncable::ReadTransaction trans(FROM_HERE, this); |
| 707 const ModelTypeSet all_types = ModelTypeSet::All(); | 711 ModelTypeSet all_types = ModelTypeSet::All(); |
| 712 all_types.RemoveAll(VirtualTypes()); |
| 708 ModelTypeSet initial_sync_ended_types; | 713 ModelTypeSet initial_sync_ended_types; |
| 709 for (ModelTypeSet::Iterator i = all_types.First(); i.Good(); i.Inc()) { | 714 for (ModelTypeSet::Iterator i = all_types.First(); i.Good(); i.Inc()) { |
| 710 if (InitialSyncEndedForType(&trans, i.Get())) { | 715 if (InitialSyncEndedForType(&trans, i.Get())) { |
| 711 initial_sync_ended_types.Put(i.Get()); | 716 initial_sync_ended_types.Put(i.Get()); |
| 712 } | 717 } |
| 713 } | 718 } |
| 714 return initial_sync_ended_types; | 719 return initial_sync_ended_types; |
| 715 } | 720 } |
| 716 | 721 |
| 717 bool Directory::InitialSyncEndedForType(ModelType type) { | 722 bool Directory::InitialSyncEndedForType(ModelType type) { |
| (...skipping 583 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1301 // There were no children in the linked list. | 1306 // There were no children in the linked list. |
| 1302 return NULL; | 1307 return NULL; |
| 1303 } | 1308 } |
| 1304 | 1309 |
| 1305 ScopedKernelLock::ScopedKernelLock(const Directory* dir) | 1310 ScopedKernelLock::ScopedKernelLock(const Directory* dir) |
| 1306 : scoped_lock_(dir->kernel_->mutex), dir_(const_cast<Directory*>(dir)) { | 1311 : scoped_lock_(dir->kernel_->mutex), dir_(const_cast<Directory*>(dir)) { |
| 1307 } | 1312 } |
| 1308 | 1313 |
| 1309 } // namespace syncable | 1314 } // namespace syncable |
| 1310 } // namespace syncer | 1315 } // namespace syncer |
| OLD | NEW |