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

Side by Side Diff: chrome/browser/sync/syncable/syncable.cc

Issue 8919021: [Sync] Rename ModelEnumSet to ModelTypeSet (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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/syncable/syncable.h" 5 #include "chrome/browser/sync/syncable/syncable.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <cstring> 8 #include <cstring>
9 #include <functional> 9 #include <functional>
10 #include <iomanip> 10 #include <iomanip>
(...skipping 801 matching lines...) Expand 10 before | Expand all | Expand 10 after
812 812
813 // Might not be in it 813 // Might not be in it
814 num_erased = kernel_->client_tag_index->erase(entry); 814 num_erased = kernel_->client_tag_index->erase(entry);
815 DCHECK_EQ(entry->ref(UNIQUE_CLIENT_TAG).empty(), !num_erased); 815 DCHECK_EQ(entry->ref(UNIQUE_CLIENT_TAG).empty(), !num_erased);
816 CHECK(!kernel_->parent_id_child_index->count(entry)); 816 CHECK(!kernel_->parent_id_child_index->count(entry));
817 delete entry; 817 delete entry;
818 } 818 }
819 } 819 }
820 } 820 }
821 821
822 void Directory::PurgeEntriesWithTypeIn(ModelEnumSet types) { 822 void Directory::PurgeEntriesWithTypeIn(ModelTypeSet types) {
823 if (types.Empty()) 823 if (types.Empty())
824 return; 824 return;
825 825
826 { 826 {
827 WriteTransaction trans(FROM_HERE, PURGE_ENTRIES, this); 827 WriteTransaction trans(FROM_HERE, PURGE_ENTRIES, this);
828 { 828 {
829 ScopedKernelLock lock(this); 829 ScopedKernelLock lock(this);
830 MetahandlesIndex::iterator it = kernel_->metahandles_index->begin(); 830 MetahandlesIndex::iterator it = kernel_->metahandles_index->begin();
831 while (it != kernel_->metahandles_index->end()) { 831 while (it != kernel_->metahandles_index->end()) {
832 const sync_pb::EntitySpecifics& local_specifics = (*it)->ref(SPECIFICS); 832 const sync_pb::EntitySpecifics& local_specifics = (*it)->ref(SPECIFICS);
(...skipping 23 matching lines...) Expand all
856 num_erased = kernel_->parent_id_child_index->erase(entry); 856 num_erased = kernel_->parent_id_child_index->erase(entry);
857 DCHECK_EQ(entry->ref(IS_DEL), !num_erased); 857 DCHECK_EQ(entry->ref(IS_DEL), !num_erased);
858 kernel_->metahandles_index->erase(it++); 858 kernel_->metahandles_index->erase(it++);
859 delete entry; 859 delete entry;
860 } else { 860 } else {
861 ++it; 861 ++it;
862 } 862 }
863 } 863 }
864 864
865 // Ensure meta tracking for these data types reflects the deleted state. 865 // Ensure meta tracking for these data types reflects the deleted state.
866 for (syncable::ModelEnumSet::Iterator it = types.First(); 866 for (syncable::ModelTypeSet::Iterator it = types.First();
867 it.Good(); it.Inc()) { 867 it.Good(); it.Inc()) {
868 set_initial_sync_ended_for_type_unsafe(it.Get(), false); 868 set_initial_sync_ended_for_type_unsafe(it.Get(), false);
869 kernel_->persisted_info.reset_download_progress(it.Get()); 869 kernel_->persisted_info.reset_download_progress(it.Get());
870 } 870 }
871 } 871 }
872 } 872 }
873 } 873 }
874 874
875 void Directory::HandleSaveChangesFailure(const SaveChangesSnapshot& snapshot) { 875 void Directory::HandleSaveChangesFailure(const SaveChangesSnapshot& snapshot) {
876 ScopedKernelLock lock(this); 876 ScopedKernelLock lock(this);
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after
1018 ScopedKernelLock lock(this); 1018 ScopedKernelLock lock(this);
1019 copy(kernel_->unsynced_metahandles->begin(), 1019 copy(kernel_->unsynced_metahandles->begin(),
1020 kernel_->unsynced_metahandles->end(), back_inserter(*result)); 1020 kernel_->unsynced_metahandles->end(), back_inserter(*result));
1021 } 1021 }
1022 1022
1023 int64 Directory::unsynced_entity_count() const { 1023 int64 Directory::unsynced_entity_count() const {
1024 ScopedKernelLock lock(this); 1024 ScopedKernelLock lock(this);
1025 return kernel_->unsynced_metahandles->size(); 1025 return kernel_->unsynced_metahandles->size();
1026 } 1026 }
1027 1027
1028 FullModelEnumSet Directory::GetServerTypesWithUnappliedUpdates( 1028 FullModelTypeSet Directory::GetServerTypesWithUnappliedUpdates(
1029 BaseTransaction* trans) const { 1029 BaseTransaction* trans) const {
1030 syncable::FullModelEnumSet server_types; 1030 syncable::FullModelTypeSet server_types;
1031 ScopedKernelLock lock(this); 1031 ScopedKernelLock lock(this);
1032 for (int i = UNSPECIFIED; i < MODEL_TYPE_COUNT; ++i) { 1032 for (int i = UNSPECIFIED; i < MODEL_TYPE_COUNT; ++i) {
1033 const ModelType type = ModelTypeFromInt(i); 1033 const ModelType type = ModelTypeFromInt(i);
1034 if (!kernel_->unapplied_update_metahandles[type].empty()) { 1034 if (!kernel_->unapplied_update_metahandles[type].empty()) {
1035 server_types.Put(type); 1035 server_types.Put(type);
1036 } 1036 }
1037 } 1037 }
1038 return server_types; 1038 return server_types;
1039 } 1039 }
1040 1040
1041 void Directory::GetUnappliedUpdateMetaHandles( 1041 void Directory::GetUnappliedUpdateMetaHandles(
1042 BaseTransaction* trans, 1042 BaseTransaction* trans,
1043 FullModelEnumSet server_types, 1043 FullModelTypeSet server_types,
1044 UnappliedUpdateMetaHandles* result) { 1044 UnappliedUpdateMetaHandles* result) {
1045 result->clear(); 1045 result->clear();
1046 ScopedKernelLock lock(this); 1046 ScopedKernelLock lock(this);
1047 for (int i = UNSPECIFIED; i < MODEL_TYPE_COUNT; ++i) { 1047 for (int i = UNSPECIFIED; i < MODEL_TYPE_COUNT; ++i) {
1048 const ModelType type = ModelTypeFromInt(i); 1048 const ModelType type = ModelTypeFromInt(i);
1049 if (server_types.Has(type)) { 1049 if (server_types.Has(type)) {
1050 std::copy(kernel_->unapplied_update_metahandles[type].begin(), 1050 std::copy(kernel_->unapplied_update_metahandles[type].begin(),
1051 kernel_->unapplied_update_metahandles[type].end(), 1051 kernel_->unapplied_update_metahandles[type].end(),
1052 back_inserter(*result)); 1052 back_inserter(*result));
1053 } 1053 }
(...skipping 247 matching lines...) Expand 10 before | Expand all | Expand 10 after
1301 // Not actually mutated, so erase from |mutations_|. 1301 // Not actually mutated, so erase from |mutations_|.
1302 mutations_.erase(it++); 1302 mutations_.erase(it++);
1303 } 1303 }
1304 } 1304 }
1305 return ImmutableEntryKernelMutationMap(&mutations_); 1305 return ImmutableEntryKernelMutationMap(&mutations_);
1306 } 1306 }
1307 1307
1308 void WriteTransaction::UnlockAndNotify( 1308 void WriteTransaction::UnlockAndNotify(
1309 const ImmutableEntryKernelMutationMap& mutations) { 1309 const ImmutableEntryKernelMutationMap& mutations) {
1310 // Work while transaction mutex is held. 1310 // Work while transaction mutex is held.
1311 ModelEnumSet models_with_changes; 1311 ModelTypeSet models_with_changes;
1312 bool has_mutations = !mutations.Get().empty(); 1312 bool has_mutations = !mutations.Get().empty();
1313 if (has_mutations) { 1313 if (has_mutations) {
1314 models_with_changes = NotifyTransactionChangingAndEnding(mutations); 1314 models_with_changes = NotifyTransactionChangingAndEnding(mutations);
1315 } 1315 }
1316 Unlock(); 1316 Unlock();
1317 1317
1318 // Work after mutex is relased. 1318 // Work after mutex is relased.
1319 if (has_mutations) { 1319 if (has_mutations) {
1320 NotifyTransactionComplete(models_with_changes); 1320 NotifyTransactionComplete(models_with_changes);
1321 } 1321 }
1322 } 1322 }
1323 1323
1324 ModelEnumSet WriteTransaction::NotifyTransactionChangingAndEnding( 1324 ModelTypeSet WriteTransaction::NotifyTransactionChangingAndEnding(
1325 const ImmutableEntryKernelMutationMap& mutations) { 1325 const ImmutableEntryKernelMutationMap& mutations) {
1326 dirkernel_->transaction_mutex.AssertAcquired(); 1326 dirkernel_->transaction_mutex.AssertAcquired();
1327 DCHECK(!mutations.Get().empty()); 1327 DCHECK(!mutations.Get().empty());
1328 1328
1329 WriteTransactionInfo write_transaction_info( 1329 WriteTransactionInfo write_transaction_info(
1330 dirkernel_->next_write_transaction_id, from_here_, writer_, mutations); 1330 dirkernel_->next_write_transaction_id, from_here_, writer_, mutations);
1331 ++dirkernel_->next_write_transaction_id; 1331 ++dirkernel_->next_write_transaction_id;
1332 1332
1333 ImmutableWriteTransactionInfo immutable_write_transaction_info( 1333 ImmutableWriteTransactionInfo immutable_write_transaction_info(
1334 &write_transaction_info); 1334 &write_transaction_info);
1335 DirectoryChangeDelegate* const delegate = dirkernel_->delegate; 1335 DirectoryChangeDelegate* const delegate = dirkernel_->delegate;
1336 if (writer_ == syncable::SYNCAPI) { 1336 if (writer_ == syncable::SYNCAPI) {
1337 delegate->HandleCalculateChangesChangeEventFromSyncApi( 1337 delegate->HandleCalculateChangesChangeEventFromSyncApi(
1338 immutable_write_transaction_info, this); 1338 immutable_write_transaction_info, this);
1339 } else { 1339 } else {
1340 delegate->HandleCalculateChangesChangeEventFromSyncer( 1340 delegate->HandleCalculateChangesChangeEventFromSyncer(
1341 immutable_write_transaction_info, this); 1341 immutable_write_transaction_info, this);
1342 } 1342 }
1343 1343
1344 ModelEnumSet models_with_changes = 1344 ModelTypeSet models_with_changes =
1345 delegate->HandleTransactionEndingChangeEvent( 1345 delegate->HandleTransactionEndingChangeEvent(
1346 immutable_write_transaction_info, this); 1346 immutable_write_transaction_info, this);
1347 1347
1348 dirkernel_->transaction_observer.Call(FROM_HERE, 1348 dirkernel_->transaction_observer.Call(FROM_HERE,
1349 &TransactionObserver::OnTransactionWrite, 1349 &TransactionObserver::OnTransactionWrite,
1350 immutable_write_transaction_info, models_with_changes); 1350 immutable_write_transaction_info, models_with_changes);
1351 1351
1352 return models_with_changes; 1352 return models_with_changes;
1353 } 1353 }
1354 1354
1355 void WriteTransaction::NotifyTransactionComplete( 1355 void WriteTransaction::NotifyTransactionComplete(
1356 ModelEnumSet models_with_changes) { 1356 ModelTypeSet models_with_changes) {
1357 dirkernel_->delegate->HandleTransactionCompleteChangeEvent( 1357 dirkernel_->delegate->HandleTransactionCompleteChangeEvent(
1358 models_with_changes); 1358 models_with_changes);
1359 } 1359 }
1360 1360
1361 WriteTransaction::~WriteTransaction() { 1361 WriteTransaction::~WriteTransaction() {
1362 const ImmutableEntryKernelMutationMap& mutations = RecordMutations(); 1362 const ImmutableEntryKernelMutationMap& mutations = RecordMutations();
1363 1363
1364 if (OFF != kInvariantCheckLevel) { 1364 if (OFF != kInvariantCheckLevel) {
1365 const bool full_scan = (FULL_DB_VERIFICATION == kInvariantCheckLevel); 1365 const bool full_scan = (FULL_DB_VERIFICATION == kInvariantCheckLevel);
1366 if (full_scan) 1366 if (full_scan)
(...skipping 745 matching lines...) Expand 10 before | Expand all | Expand 10 after
2112 if (entry->ref(NEXT_ID).IsRoot() || 2112 if (entry->ref(NEXT_ID).IsRoot() ||
2113 entry->ref(NEXT_ID) != entry->ref(PREV_ID)) { 2113 entry->ref(NEXT_ID) != entry->ref(PREV_ID)) {
2114 return entry; 2114 return entry;
2115 } 2115 }
2116 } 2116 }
2117 // There were no children in the linked list. 2117 // There were no children in the linked list.
2118 return NULL; 2118 return NULL;
2119 } 2119 }
2120 2120
2121 } // namespace syncable 2121 } // namespace syncable
OLDNEW
« no previous file with comments | « chrome/browser/sync/syncable/syncable.h ('k') | chrome/browser/sync/syncable/syncable_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698