Chromium Code Reviews| Index: sync/engine/conflict_resolver.cc |
| diff --git a/sync/engine/conflict_resolver.cc b/sync/engine/conflict_resolver.cc |
| index 0af30977c331e8840fe7ef27a77362114de875af..c321c0e5660f1af12f27e579b372653f22a77a34 100644 |
| --- a/sync/engine/conflict_resolver.cc |
| +++ b/sync/engine/conflict_resolver.cc |
| @@ -116,7 +116,10 @@ void ConflictResolver::ProcessSimpleConflict(WriteTransaction* trans, |
| // f) Otherwise, it's in general safer to ignore local changes, with the |
| // exception of deletion conflicts (choose to undelete) and conflicts |
| // where the non_unique_name or parent don't match. |
| - if (!entry.GetServerIsDel()) { |
| + // e) Except for the case of extensions and apps, where we want uninstalls to |
| + // win over local modifications to avoid "back from the dead" reinstalls. |
| + ModelType type = entry.GetModelType(); |
| + if (!entry.GetServerIsDel() || (type == EXTENSIONS || type == APPS)) { |
|
Nicolas Zea
2016/02/18 19:28:55
The more I think about it, the more I think it wou
|
| // TODO(nick): The current logic is arbitrary; instead, it ought to be made |
| // consistent with the ModelAssociator behavior for a datatype. It would |
| // be nice if we could route this back to ModelAssociator code to pick one |