Index: chrome/browser/sync/engine/sync_scheduler_unittest.cc |
diff --git a/chrome/browser/sync/engine/sync_scheduler_unittest.cc b/chrome/browser/sync/engine/sync_scheduler_unittest.cc |
index 18107065f830a2500d0cff6b3046342fcf08e3af..4f1058d78498938535b0fd62a2846e6520035ee7 100644 |
--- a/chrome/browser/sync/engine/sync_scheduler_unittest.cc |
+++ b/chrome/browser/sync/engine/sync_scheduler_unittest.cc |
@@ -629,6 +629,37 @@ TEST_F(SyncSchedulerTest, PollIntervalUpdate) { |
AnalyzePollRun(records, kMinNumSamples, optimal_start, poll2); |
} |
+// Test that the sessions commit delay is updated when needed. |
+TEST_F(SyncSchedulerTest, SessionsCommitDelay) { |
+ SyncShareRecords records; |
+ TimeDelta delay1(TimeDelta::FromMilliseconds(120)); |
+ TimeDelta delay2(TimeDelta::FromMilliseconds(30)); |
+ scheduler()->OnReceivedSessionsCommitDelay(delay1); |
+ |
+ EXPECT_CALL(*syncer(), SyncShare(_,_,_)) |
+ .WillOnce( |
+ DoAll( |
+ WithArg<0>( |
+ sessions::test_util::SimulateSessionsCommitDelayUpdate( |
+ delay2)), |
+ Invoke(sessions::test_util::SimulateSuccess), |
+ QuitLoopNowAction())); |
+ |
+ EXPECT_EQ(delay1, scheduler()->sessions_commit_delay()); |
+ StartSyncScheduler(SyncScheduler::NORMAL_MODE); |
+ RunLoop(); |
+ |
+ EXPECT_EQ(delay1, scheduler()->sessions_commit_delay()); |
+ syncable::ModelTypeBitSet model_types; |
+ model_types[syncable::BOOKMARKS] = true; |
+ scheduler()->ScheduleNudge( |
+ zero(), NUDGE_SOURCE_LOCAL, model_types, FROM_HERE); |
+ RunLoop(); |
+ |
+ EXPECT_EQ(delay2, scheduler()->sessions_commit_delay()); |
+ scheduler()->Stop(); |
+} |
+ |
// Test that a sync session is run through to completion. |
TEST_F(SyncSchedulerTest, HasMoreToSync) { |
EXPECT_CALL(*syncer(), SyncShare(_,_,_)) |