Index: chrome/browser/sync/engine/syncer_types.h |
diff --git a/chrome/browser/sync/engine/syncer_types.h b/chrome/browser/sync/engine/syncer_types.h |
index e4fde71467aee67f013160080d09c025aa73b295..0d422c0f69418078fda049d0b2607b937b8b9571 100644 |
--- a/chrome/browser/sync/engine/syncer_types.h |
+++ b/chrome/browser/sync/engine/syncer_types.h |
@@ -30,15 +30,36 @@ enum UpdateAttemptResponse { |
// Update was applied or safely ignored. |
SUCCESS, |
- // Conflicts with the local data representation. This can also mean that the |
- // entry doesn't currently make sense if we applied it. |
- CONFLICT, |
+ // The conditions described by the following enum values are not mutually |
+ // exclusive. The list has been ordered according to priority in the case of |
+ // overlap, with highest priority first. |
+ // |
+ // For example, in the case where an item had both the IS_UNSYCNED and |
+ // IS_UNAPPLIED_UPDATE flags set (CONFLICT_SIMPLE), and a SERVER_PARENT_ID |
+ // that, if applied, would cause a directory loop (CONFLICT_HIERARCHY), and |
+ // specifics that we can't decrypt right now (CONFLICT_ENCRYPTION), the |
+ // UpdateApplicator would return CONFLICT_ENCRYPTION when attempting to |
+ // process the item. |
+ // |
+ // We do not attempt to resolve CONFLICT_HIERARCHY or CONFLICT_ENCRYPTION |
+ // items. We will leave these updates unapplied and wait for the server |
+ // to send us newer updates that will resolve the conflict. |
// We were unable to decrypt/encrypt this server data. As such, we can't make |
// forward progress on this node, but because the passphrase may not arrive |
// until later we don't want to get the syncer stuck. See UpdateApplicator |
// for how this is handled. |
- CONFLICT_ENCRYPTION |
+ CONFLICT_ENCRYPTION, |
+ |
+ // These are some updates that, if applied, would violate the tree's |
+ // invariants. Examples of this include the server adding children to locally |
+ // deleted directories and directory moves that would create loops. |
+ CONFLICT_HIERARCHY, |
+ |
+ // This indicates that item was modified both remotely (IS_UNAPPLIED_UPDATE) |
+ // and locally (IS_UNSYNCED). We use the ConflictResolver to decide which of |
+ // the changes should take priority, or if we can possibly merge the data. |
+ CONFLICT_SIMPLE |
}; |
enum ServerUpdateProcessingResult { |
@@ -132,14 +153,6 @@ class SyncEngineEventListener { |
virtual ~SyncEngineEventListener() {} |
}; |
-// This struct is passed between parts of the syncer during the processing of |
-// one sync loop. It lives on the stack. We don't expose the number of |
-// conflicts during SyncShare as the conflicts may be solved automatically |
-// by the conflict resolver. |
-typedef std::vector<syncable::Id> ConflictSet; |
- |
-typedef std::map<syncable::Id, ConflictSet*> IdToConflictSetMap; |
- |
} // namespace browser_sync |
#endif // CHROME_BROWSER_SYNC_ENGINE_SYNCER_TYPES_H_ |