| 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 b83322dacb65da921ed7339a88347b682c8010c3..095f822f2016a492b90f480b03e89b016d1b9d16 100644
|
| --- a/chrome/browser/sync/engine/sync_scheduler_unittest.cc
|
| +++ b/chrome/browser/sync/engine/sync_scheduler_unittest.cc
|
| @@ -480,6 +480,43 @@ TEST_F(SyncSchedulerTest, NudgeCoalescing) {
|
| r2.snapshots[0]->source.updates_source);
|
| }
|
|
|
| +// Test that nudges are coalesced.
|
| +TEST_F(SyncSchedulerTest, NudgeCoalescingWithDifferentTimings) {
|
| + StartSyncScheduler(SyncScheduler::NORMAL_MODE);
|
| + RunLoop();
|
| +
|
| + SyncShareRecords r;
|
| + EXPECT_CALL(*syncer(), SyncShare(_,_,_))
|
| + .WillOnce(DoAll(Invoke(sessions::test_util::SimulateSuccess),
|
| + WithArg<0>(RecordSyncShare(&r))));
|
| + syncable::ModelTypeBitSet types1, types2, types3;
|
| + types1[syncable::BOOKMARKS] = true;
|
| + types2[syncable::AUTOFILL] = true;
|
| +
|
| + // Create a huge time delay.
|
| + TimeDelta delay = TimeDelta::FromSeconds(1200);
|
| +
|
| + scheduler()->ScheduleNudge(
|
| + delay, NUDGE_SOURCE_UNKNOWN, types1, FROM_HERE);
|
| +
|
| + scheduler()->ScheduleNudge(
|
| + zero(), NUDGE_SOURCE_UNKNOWN, types2, FROM_HERE);
|
| +
|
| + TimeTicks min_time = TimeTicks::Now();
|
| + TimeTicks max_time = TimeTicks::Now() + delay;
|
| +
|
| + RunLoop();
|
| +
|
| + // Make sure the sync has happened.
|
| + ASSERT_EQ(1U, r.snapshots.size());
|
| + EXPECT_TRUE(CompareModelTypeBitSetToModelTypePayloadMap(
|
| + types1 | types2, r.snapshots[0]->source.types));
|
| +
|
| + // Make sure the sync happened at the right time.
|
| + EXPECT_GE(r.times[0], min_time);
|
| + EXPECT_LE(r.times[0], max_time);
|
| +}
|
| +
|
| // Test nudge scheduling.
|
| TEST_F(SyncSchedulerTest, NudgeWithPayloads) {
|
| StartSyncScheduler(SyncScheduler::NORMAL_MODE);
|
|
|