summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/browser/sync/engine/syncer.cc11
-rw-r--r--chrome/browser/sync/sessions/status_controller.cc2
-rw-r--r--chrome/browser/sync/sessions/status_controller_unittest.cc8
3 files changed, 16 insertions, 5 deletions
diff --git a/chrome/browser/sync/engine/syncer.cc b/chrome/browser/sync/engine/syncer.cc
index b906062..fe2a49c 100644
--- a/chrome/browser/sync/engine/syncer.cc
+++ b/chrome/browser/sync/engine/syncer.cc
@@ -273,12 +273,15 @@ void Syncer::SyncShare(sessions::SyncSession* session,
apply_updates.Execute(session);
int after_blocking_conflicting_updates =
status->TotalNumBlockingConflictingItems();
+ // If the following call sets the conflicts_resolved value to true,
+ // SyncSession::HasMoreToSync() will send us into another sync cycle
+ // after this one completes.
+ //
+ // TODO(rlarocque, 109072): Make conflict resolution not require
+ // extra sync cycles/GetUpdates.
status->update_conflicts_resolved(before_blocking_conflicting_updates >
after_blocking_conflicting_updates);
- if (status->conflicts_resolved())
- next_step = RESOLVE_CONFLICTS;
- else
- next_step = SYNCER_END;
+ next_step = SYNCER_END;
break;
}
case CLEAR_PRIVATE_DATA: {
diff --git a/chrome/browser/sync/sessions/status_controller.cc b/chrome/browser/sync/sessions/status_controller.cc
index e359c58..4e83a79 100644
--- a/chrome/browser/sync/sessions/status_controller.cc
+++ b/chrome/browser/sync/sessions/status_controller.cc
@@ -234,7 +234,7 @@ void StatusController::update_conflict_sets_built(bool built) {
shared_.control_params.conflict_sets_built |= built;
}
void StatusController::update_conflicts_resolved(bool resolved) {
- shared_.control_params.conflict_sets_built |= resolved;
+ shared_.control_params.conflicts_resolved |= resolved;
}
void StatusController::reset_conflicts_resolved() {
shared_.control_params.conflicts_resolved = false;
diff --git a/chrome/browser/sync/sessions/status_controller_unittest.cc b/chrome/browser/sync/sessions/status_controller_unittest.cc
index d39ee78..4b6b036 100644
--- a/chrome/browser/sync/sessions/status_controller_unittest.cc
+++ b/chrome/browser/sync/sessions/status_controller_unittest.cc
@@ -130,6 +130,14 @@ TEST_F(StatusControllerTest, ReadYourWrites) {
status.set_syncer_stuck(true);
EXPECT_TRUE(status.syncer_status().syncer_stuck);
+ EXPECT_FALSE(status.conflicts_resolved());
+ status.update_conflicts_resolved(true);
+ EXPECT_TRUE(status.conflicts_resolved());
+
+ EXPECT_FALSE(status.conflict_sets_built());
+ status.update_conflict_sets_built(true);
+ EXPECT_TRUE(status.conflict_sets_built());
+
status.set_last_download_updates_result(SYNCER_OK);
EXPECT_EQ(SYNCER_OK, status.error().last_download_updates_result);