Chromium Code Reviews| Index: chrome/browser/sync/engine/conflict_resolver.cc |
| diff --git a/chrome/browser/sync/engine/conflict_resolver.cc b/chrome/browser/sync/engine/conflict_resolver.cc |
| index a262ff72614945654b61bc009e2f5254ae40ba18..3fc1ecd584c1e51ecbbb1a6a758ee3238c8bf46d 100644 |
| --- a/chrome/browser/sync/engine/conflict_resolver.cc |
| +++ b/chrome/browser/sync/engine/conflict_resolver.cc |
| @@ -361,13 +361,12 @@ ConflictResolver::ProcessSimpleConflict(WriteTransaction* trans, |
| } |
| } |
| -bool ConflictResolver::ResolveSimpleConflicts( |
| - syncable::WriteTransaction* trans, |
| - const Cryptographer* cryptographer, |
| - const ConflictProgress& progress, |
| - sessions::StatusController* status) { |
| +bool ConflictResolver::ResolveConflicts(syncable::WriteTransaction* trans, |
|
Nicolas Zea
2012/02/01 19:16:19
I think it would be good to have a comment above h
rlarocque
2012/02/02 00:32:56
I'm trying to remove the concept of conflict sets
|
| + const Cryptographer* cryptographer, |
| + const ConflictProgress& progress, |
| + sessions::StatusController* status) { |
| bool forward_progress = false; |
| - // First iterate over simple conflict items (those that belong to no set). |
| + // First iterate over simple conflict items. |
|
Nicolas Zea
2012/02/01 19:16:19
Remove first
rlarocque
2012/02/02 00:32:56
Done.
|
| set<Id>::const_iterator conflicting_item_it; |
| set<Id> processed_items; |
| for (conflicting_item_it = progress.ConflictingItemsBegin(); |
| @@ -376,64 +375,39 @@ bool ConflictResolver::ResolveSimpleConflicts( |
| Id id = *conflicting_item_it; |
| if (processed_items.count(id) > 0) |
| continue; |
| - map<Id, ConflictSet*>::const_iterator item_set_it = |
| - progress.IdToConflictSetFind(id); |
| - if (item_set_it == progress.IdToConflictSetEnd() || |
| - 0 == item_set_it->second) { |
| - // We have a simple conflict. In order check if positions have changed, |
| - // we need to process conflicting predecessors before successors. Traverse |
| - // backwards through all continuous conflicting predecessors, building a |
| - // stack of items to resolve in predecessor->successor order, then process |
| - // each item individually. |
| - list<Id> predecessors; |
| - Id prev_id = id; |
| - do { |
| - predecessors.push_back(prev_id); |
| - Entry entry(trans, syncable::GET_BY_ID, prev_id); |
| - // Any entry in conflict must be valid. |
| - CHECK(entry.good()); |
| - Id new_prev_id = entry.Get(syncable::PREV_ID); |
| - if (new_prev_id == prev_id) |
| + |
| + // We have a simple conflict. In order check if positions have changed, |
|
rlarocque
2012/01/31 19:12:17
There are lots of indentation changes because I re
|
| + // we need to process conflicting predecessors before successors. Traverse |
| + // backwards through all continuous conflicting predecessors, building a |
| + // stack of items to resolve in predecessor->successor order, then process |
| + // each item individually. |
| + list<Id> predecessors; |
| + Id prev_id = id; |
| + do { |
| + predecessors.push_back(prev_id); |
| + Entry entry(trans, syncable::GET_BY_ID, prev_id); |
| + // Any entry in conflict must be valid. |
| + CHECK(entry.good()); |
| + Id new_prev_id = entry.Get(syncable::PREV_ID); |
| + if (new_prev_id == prev_id) |
| + break; |
| + prev_id = new_prev_id; |
| + } while (processed_items.count(prev_id) == 0 && |
| + progress.HasSimpleConflictItem(prev_id)); // Excludes root. |
| + while (!predecessors.empty()) { |
| + id = predecessors.back(); |
| + predecessors.pop_back(); |
| + switch (ProcessSimpleConflict(trans, id, cryptographer, status)) { |
| + case NO_SYNC_PROGRESS: |
| + break; |
| + case SYNC_PROGRESS: |
| + forward_progress = true; |
| break; |
| - prev_id = new_prev_id; |
| - } while (processed_items.count(prev_id) == 0 && |
| - progress.HasSimpleConflictItem(prev_id)); // Excludes root. |
| - while (!predecessors.empty()) { |
| - id = predecessors.back(); |
| - predecessors.pop_back(); |
| - switch (ProcessSimpleConflict(trans, id, cryptographer, status)) { |
| - case NO_SYNC_PROGRESS: |
| - break; |
| - case SYNC_PROGRESS: |
| - forward_progress = true; |
| - break; |
| - } |
| - processed_items.insert(id); |
| } |
| + processed_items.insert(id); |
| } |
| } |
| return forward_progress; |
| } |
| -bool ConflictResolver::ResolveConflicts(syncable::WriteTransaction* trans, |
| - const Cryptographer* cryptographer, |
| - const ConflictProgress& progress, |
| - sessions::StatusController* status) { |
| - // TODO(rlarocque): A good amount of code related to the resolution of |
| - // conflict sets has been deleted here. This was done because the code had |
| - // not been used in years. An unrelated bug fix accidentally re-enabled the |
| - // code, forcing us to make a decision about what we should do with the code. |
| - // We decided to do the safe thing and delete it for now. This restores the |
| - // behaviour we've relied on for quite some time. We should think about what |
| - // that code was trying to do and consider re-enabling parts of it. |
| - |
| - if (progress.ConflictSetsSize() > 0) { |
| - DVLOG(1) << "Detected " << progress.IdToConflictSetSize() |
| - << " non-simple conflicting entries in " << progress.ConflictSetsSize() |
| - << " unprocessed conflict sets."; |
| - } |
| - |
| - return ResolveSimpleConflicts(trans, cryptographer, progress, status); |
| -} |
| - |
| } // namespace browser_sync |