Index: sync/engine/syncer_proto_util.cc |
diff --git a/sync/engine/syncer_proto_util.cc b/sync/engine/syncer_proto_util.cc |
index fe2a875bccc799ccfdf682b30014df1c3b9dcba6..44ac321a16b5706695a5329222633b4e6dcb72fb 100644 |
--- a/sync/engine/syncer_proto_util.cc |
+++ b/sync/engine/syncer_proto_util.cc |
@@ -420,9 +420,10 @@ SyncerError SyncerProtoUtil::PostClientToServerMessage( |
} |
if (command.has_sessions_commit_delay_seconds()) { |
- session->delegate()->OnReceivedSessionsCommitDelay( |
- base::TimeDelta::FromSeconds( |
- command.sessions_commit_delay_seconds())); |
+ std::map<ModelType, base::TimeDelta> delay_map; |
+ delay_map[SESSIONS] = |
+ base::TimeDelta::FromSeconds(command.sessions_commit_delay_seconds()); |
+ session->delegate()->OnReceivedCustomNudgeDelays(delay_map); |
} |
if (command.has_client_invalidation_hint_buffer_size()) { |
@@ -434,6 +435,22 @@ SyncerError SyncerProtoUtil::PostClientToServerMessage( |
session->delegate()->OnReceivedGuRetryDelay( |
base::TimeDelta::FromSeconds(command.gu_retry_delay_seconds())); |
} |
+ |
+ if (command.custom_nudge_delays_size() > 0) { |
+ // Note that because this happens after the sessions_commit_delay_seconds |
+ // handling, any SESSIONS value in this map will override the one in |
+ // sessions_commit_delay_seconds. |
+ std::map<ModelType, base::TimeDelta> delay_map; |
+ for (int i = 0; i < command.custom_nudge_delays_size(); ++i) { |
+ ModelType type = GetModelTypeFromSpecificsFieldNumber( |
+ command.custom_nudge_delays(i).datatype_id()); |
+ if (ProtocolTypes().Has(type)) { |
+ delay_map[type] = base::TimeDelta::FromMilliseconds( |
+ command.custom_nudge_delays(i).delay_ms()); |
+ } |
+ } |
+ session->delegate()->OnReceivedCustomNudgeDelays(delay_map); |
+ } |
} |
// Now do any special handling for the error type and decide on the return |