Index: chrome/browser/sync/engine/process_updates_command.cc |
diff --git a/chrome/browser/sync/engine/process_updates_command.cc b/chrome/browser/sync/engine/process_updates_command.cc |
index 03af30330510ba1213384b02a74b4ebb98c7d852..77a127246f2d6177b41b78a7b18ffb3e5e2843a1 100644 |
--- a/chrome/browser/sync/engine/process_updates_command.cc |
+++ b/chrome/browser/sync/engine/process_updates_command.cc |
@@ -25,6 +25,15 @@ using sessions::StatusController; |
ProcessUpdatesCommand::ProcessUpdatesCommand() {} |
ProcessUpdatesCommand::~ProcessUpdatesCommand() {} |
+bool ProcessUpdatesCommand::ModelNeutralExecuteImpl(SyncSession* session) { |
+ const GetUpdatesResponse& updates = |
+ session->status_controller()->updates_response().get_updates(); |
+ const int update_count = updates.entries_size(); |
+ |
+ // Don't bother processing updates if there were none. |
+ return update_count != 0; |
+} |
+ |
void ProcessUpdatesCommand::ModelChangingExecuteImpl(SyncSession* session) { |
syncable::ScopedDirLookup dir(session->context()->directory_manager(), |
session->context()->account_name()); |
@@ -33,38 +42,8 @@ void ProcessUpdatesCommand::ModelChangingExecuteImpl(SyncSession* session) { |
return; |
} |
- const GetUpdatesResponse& updates = |
- session->status_controller()->updates_response().get_updates(); |
- const int update_count = updates.entries_size(); |
- |
- LOG(INFO) << "Get updates from ts " << dir->last_sync_timestamp() << |
- " returned " << update_count << " updates."; |
- |
StatusController* status = session->status_controller(); |
- if (updates.has_changes_remaining()) { |
- int64 changes_left = updates.changes_remaining(); |
- LOG(INFO) << "Changes remaining:" << changes_left; |
- status->set_num_server_changes_remaining(changes_left); |
- } |
- |
- int64 new_timestamp = 0; |
- if (updates.has_new_timestamp()) { |
- new_timestamp = updates.new_timestamp(); |
- LOG(INFO) << "Get Updates got new timestamp: " << new_timestamp; |
- if (0 == update_count) { |
- if (new_timestamp > dir->last_sync_timestamp()) { |
- dir->set_last_sync_timestamp(new_timestamp); |
- status->set_got_new_timestamp(); |
- } |
- return; |
- } |
- } |
- // If we have updates that are ALL supposed to be skipped, we don't want to |
- // get them again. In fact, the account's final updates are all supposed to |
- // be skipped and we DON'T step past them, we will sync forever. |
- int64 latest_skip_timestamp = 0; |
- bool any_non_skip_results = false; |
const sessions::UpdateProgress& progress(status->update_progress()); |
vector<sessions::VerifiedUpdate>::const_iterator it; |
for (it = progress.VerifiedUpdatesBegin(); |
@@ -72,46 +51,21 @@ void ProcessUpdatesCommand::ModelChangingExecuteImpl(SyncSession* session) { |
++it) { |
const sync_pb::SyncEntity& update = it->second; |
- any_non_skip_results = (it->first != VERIFY_SKIP); |
- if (!any_non_skip_results) { |
- // ALL updates were to be skipped, including this one. |
- if (update.sync_timestamp() > latest_skip_timestamp) { |
- latest_skip_timestamp = update.sync_timestamp(); |
- } |
- } else { |
- latest_skip_timestamp = 0; |
- } |
- |
if (it->first != VERIFY_SUCCESS && it->first != VERIFY_UNDELETE) |
continue; |
switch (ProcessUpdate(dir, update)) { |
case SUCCESS_PROCESSED: |
case SUCCESS_STORED: |
- // We can update the timestamp because we store the update even if we |
- // can't apply it now. |
- if (update.sync_timestamp() > new_timestamp) |
- new_timestamp = update.sync_timestamp(); |
break; |
default: |
NOTREACHED(); |
break; |
} |
- |
- } |
- |
- if (latest_skip_timestamp > new_timestamp) |
- new_timestamp = latest_skip_timestamp; |
- |
- if (new_timestamp > dir->last_sync_timestamp()) { |
- dir->set_last_sync_timestamp(new_timestamp); |
- status->set_got_new_timestamp(); |
} |
status->set_num_consecutive_errors(0); |
- // TODO(tim): Related to bug 30665, the Directory needs last sync timestamp |
- // per data type. Until then, use UNSPECIFIED. |
- status->set_current_sync_timestamp(syncable::UNSPECIFIED, |
- dir->last_sync_timestamp()); |
+ |
+ // TODO(nick): The following line makes no sense to me. |
status->set_syncing(true); |
return; |
} |