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

Unified Diff: chrome/browser/sync/syncable/syncable.cc

Issue 8772074: [Sync] Convert syncable/ directory to ModelEnumSet (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix typo 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 side-by-side diff with in-line comments
Download patch
« 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 »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/sync/syncable/syncable.cc
diff --git a/chrome/browser/sync/syncable/syncable.cc b/chrome/browser/sync/syncable/syncable.cc
index 6a931f38f7cd4ed13d2cc4af13639db84d7bee4f..3c90757d5e2e43830af268090dbbb9db8ff977df 100644
--- a/chrome/browser/sync/syncable/syncable.cc
+++ b/chrome/browser/sync/syncable/syncable.cc
@@ -819,13 +819,8 @@ void Directory::VacuumAfterSaveChanges(const SaveChangesSnapshot& snapshot) {
}
}
-void Directory::PurgeEntriesWithTypeIn(const std::set<ModelType>& types) {
- if (types.count(UNSPECIFIED) != 0U || types.count(TOP_LEVEL_FOLDER) != 0U) {
- NOTREACHED() << "Don't support purging unspecified or top level entries.";
- return;
- }
-
- if (types.empty())
+void Directory::PurgeEntriesWithTypeIn(ModelEnumSet types) {
+ if (types.Empty())
return;
{
@@ -841,7 +836,8 @@ void Directory::PurgeEntriesWithTypeIn(const std::set<ModelType>& types) {
ModelType server_type = GetModelTypeFromSpecifics(server_specifics);
// Note the dance around incrementing |it|, since we sometimes erase().
- if (types.count(local_type) > 0 || types.count(server_type) > 0) {
+ if ((IsRealDataType(local_type) && types.Has(local_type)) ||
+ (IsRealDataType(server_type) && types.Has(server_type))) {
UnlinkEntryFromOrder(*it, NULL, &lock);
int64 handle = (*it)->ref(META_HANDLE);
kernel_->metahandles_to_purge->insert(handle);
@@ -867,10 +863,10 @@ void Directory::PurgeEntriesWithTypeIn(const std::set<ModelType>& types) {
}
// Ensure meta tracking for these data types reflects the deleted state.
- for (std::set<ModelType>::const_iterator it = types.begin();
- it != types.end(); ++it) {
- set_initial_sync_ended_for_type_unsafe(*it, false);
- kernel_->persisted_info.reset_download_progress(*it);
+ for (syncable::ModelEnumSet::Iterator it = types.First();
+ it.Good(); it.Inc()) {
+ set_initial_sync_ended_for_type_unsafe(it.Get(), false);
+ kernel_->persisted_info.reset_download_progress(it.Get());
}
}
}
@@ -930,7 +926,7 @@ void Directory::SetDownloadProgress(
bool Directory::initial_sync_ended_for_type(ModelType type) const {
ScopedKernelLock lock(this);
- return kernel_->persisted_info.initial_sync_ended[type];
+ return kernel_->persisted_info.initial_sync_ended.Has(type);
}
template <class T> void Directory::TestAndSet(
@@ -948,9 +944,13 @@ void Directory::set_initial_sync_ended_for_type(ModelType type, bool x) {
void Directory::set_initial_sync_ended_for_type_unsafe(ModelType type,
bool x) {
- if (kernel_->persisted_info.initial_sync_ended[type] == x)
+ if (kernel_->persisted_info.initial_sync_ended.Has(type) == x)
return;
- kernel_->persisted_info.initial_sync_ended.set(type, x);
+ if (x) {
+ kernel_->persisted_info.initial_sync_ended.Put(type);
+ } else {
+ kernel_->persisted_info.initial_sync_ended.Remove(type);
+ }
kernel_->info_status = KERNEL_SHARE_INFO_DIRTY;
}
@@ -1308,7 +1308,7 @@ ImmutableEntryKernelMutationMap WriteTransaction::RecordMutations() {
void WriteTransaction::UnlockAndNotify(
const ImmutableEntryKernelMutationMap& mutations) {
// Work while transaction mutex is held.
- ModelTypeBitSet models_with_changes;
+ ModelEnumSet models_with_changes;
bool has_mutations = !mutations.Get().empty();
if (has_mutations) {
models_with_changes = NotifyTransactionChangingAndEnding(mutations);
@@ -1321,7 +1321,7 @@ void WriteTransaction::UnlockAndNotify(
}
}
-ModelTypeBitSet WriteTransaction::NotifyTransactionChangingAndEnding(
+ModelEnumSet WriteTransaction::NotifyTransactionChangingAndEnding(
const ImmutableEntryKernelMutationMap& mutations) {
dirkernel_->transaction_mutex.AssertAcquired();
DCHECK(!mutations.Get().empty());
@@ -1341,7 +1341,7 @@ ModelTypeBitSet WriteTransaction::NotifyTransactionChangingAndEnding(
immutable_write_transaction_info, this);
}
- ModelTypeBitSet models_with_changes =
+ ModelEnumSet models_with_changes =
delegate->HandleTransactionEndingChangeEvent(
immutable_write_transaction_info, this);
@@ -1353,7 +1353,7 @@ ModelTypeBitSet WriteTransaction::NotifyTransactionChangingAndEnding(
}
void WriteTransaction::NotifyTransactionComplete(
- ModelTypeBitSet models_with_changes) {
+ ModelEnumSet models_with_changes) {
dirkernel_->delegate->HandleTransactionCompleteChangeEvent(
models_with_changes);
}
« 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