| Index: sync/engine/store_timestamps_command.cc
 | 
| diff --git a/sync/engine/store_timestamps_command.cc b/sync/engine/store_timestamps_command.cc
 | 
| index 6f381b0d7a36510fdb1f0e64a658c5d001f47422..cbff68fec50df8a8344d596ae2cdadc4706a620c 100644
 | 
| --- a/sync/engine/store_timestamps_command.cc
 | 
| +++ b/sync/engine/store_timestamps_command.cc
 | 
| @@ -4,39 +4,44 @@
 | 
|  
 | 
|  #include "sync/engine/store_timestamps_command.h"
 | 
|  
 | 
| -#include "sync/internal_api/public/base/model_type.h"
 | 
| +#include "base/logging.h"
 | 
|  #include "sync/sessions/status_controller.h"
 | 
|  #include "sync/sessions/sync_session.h"
 | 
|  #include "sync/syncable/directory.h"
 | 
|  
 | 
|  namespace syncer {
 | 
|  
 | 
| +ModelTypeSet ProcessNewProgressMarkers(
 | 
| +    const sync_pb::GetUpdatesResponse& response,
 | 
| +    syncable::Directory* dir) {
 | 
| +  ModelTypeSet forward_progress_types;
 | 
| +  // If a marker was omitted for any one type, that indicates no
 | 
| +  // change from the previous state.
 | 
| +  for (int i = 0; i < response.new_progress_marker_size(); ++i) {
 | 
| +    int field_number = response.new_progress_marker(i).data_type_id();
 | 
| +    ModelType model_type = GetModelTypeFromSpecificsFieldNumber(field_number);
 | 
| +    if (!IsRealDataType(model_type)) {
 | 
| +      DLOG(WARNING) << "Unknown field number " << field_number;
 | 
| +      continue;
 | 
| +    }
 | 
| +    forward_progress_types.Put(model_type);
 | 
| +    dir->SetDownloadProgress(model_type, response.new_progress_marker(i));
 | 
| +  }
 | 
| +  return forward_progress_types;
 | 
| +}
 | 
| +
 | 
|  StoreTimestampsCommand::StoreTimestampsCommand() {}
 | 
|  StoreTimestampsCommand::~StoreTimestampsCommand() {}
 | 
|  
 | 
|  SyncerError StoreTimestampsCommand::ExecuteImpl(
 | 
|      sessions::SyncSession* session) {
 | 
| -  syncable::Directory* dir = session->context()->directory();
 | 
| -
 | 
|    const sync_pb::GetUpdatesResponse& updates =
 | 
|        session->status_controller().updates_response().get_updates();
 | 
|  
 | 
|    sessions::StatusController* status = session->mutable_status_controller();
 | 
|  
 | 
| -  // Update the progress marker tokens from the server result.  If a marker
 | 
| -  // was omitted for any one type, that indicates no change from the previous
 | 
| -  // state.
 | 
| -  ModelTypeSet forward_progress_types;
 | 
| -  for (int i = 0; i < updates.new_progress_marker_size(); ++i) {
 | 
| -    int field_number = updates.new_progress_marker(i).data_type_id();
 | 
| -    ModelType model_type = GetModelTypeFromSpecificsFieldNumber(field_number);
 | 
| -    if (!IsRealDataType(model_type)) {
 | 
| -      NOTREACHED() << "Unknown field number " << field_number;
 | 
| -      continue;
 | 
| -    }
 | 
| -    forward_progress_types.Put(model_type);
 | 
| -    dir->SetDownloadProgress(model_type, updates.new_progress_marker(i));
 | 
| -  }
 | 
| +  ModelTypeSet forward_progress_types =
 | 
| +      ProcessNewProgressMarkers(updates, session->context()->directory());
 | 
|    DCHECK(!forward_progress_types.Empty() ||
 | 
|           updates.changes_remaining() == 0);
 | 
|    if (VLOG_IS_ON(1)) {
 | 
| 
 |