| Index: sync/engine/apply_control_data_updates.cc
|
| diff --git a/sync/engine/apply_control_data_updates.cc b/sync/engine/apply_control_data_updates.cc
|
| index 3e167b1e547aafddbe5e0da498212ea2271f9f5d..49825b8385aa0dd9baf45d748bd9ac0c39ebc635 100644
|
| --- a/sync/engine/apply_control_data_updates.cc
|
| +++ b/sync/engine/apply_control_data_updates.cc
|
| @@ -32,13 +32,25 @@ void ApplyControlDataUpdates(syncable::Directory* dir) {
|
| ModelTypeSet control_types = ControlTypes();
|
| for (ModelTypeSet::Iterator iter = control_types.First(); iter.Good();
|
| iter.Inc()) {
|
| - syncable::MutableEntry entry(&trans, syncable::GET_TYPE_ROOT, iter.Get());
|
| + ModelType type = iter.Get();
|
| + syncable::MutableEntry entry(&trans, syncable::GET_TYPE_ROOT, type);
|
| if (!entry.good())
|
| continue;
|
| - if (!entry.GetIsUnappliedUpdate())
|
| +
|
| + if (!entry.GetIsUnappliedUpdate()) {
|
| + // If this is a type with client generated root, the root node has been
|
| + // created locally and might never be updated by the server. In that case
|
| + // it has to be marked as having the initial download completed (which is
|
| + // done by changing the root's base version to a value other than
|
| + // CHANGES_VERSION). This does nothing if the root's base version is
|
| + // already other than CHANGES_VERSION.
|
| + if (IsTypeWithClientGeneratedRoot(type)) {
|
| + dir->MarkInitialSyncEndedForType(&trans, type);
|
| + }
|
| continue;
|
| + }
|
|
|
| - ModelType type = entry.GetServerModelType();
|
| + DCHECK_EQ(type, entry.GetServerModelType());
|
| if (type == NIGORI) {
|
| // Nigori node applications never fail.
|
| ApplyNigoriUpdate(&trans,
|
|
|