diff options
Diffstat (limited to 'chrome/browser/sync/engine/syncer_thread_unittest.cc')
-rw-r--r-- | chrome/browser/sync/engine/syncer_thread_unittest.cc | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/chrome/browser/sync/engine/syncer_thread_unittest.cc b/chrome/browser/sync/engine/syncer_thread_unittest.cc index b2238eb..521b292 100644 --- a/chrome/browser/sync/engine/syncer_thread_unittest.cc +++ b/chrome/browser/sync/engine/syncer_thread_unittest.cc @@ -732,6 +732,52 @@ TEST_F(SyncerThreadWithSyncerTest, NudgeWithDataTypes) { EXPECT_TRUE(syncer_thread()->vault_.pending_nudge_types_.none()); } +TEST_F(SyncerThreadWithSyncerTest, NudgeWithDataTypesCoalesced) { + SyncShareIntercept interceptor; + connection()->SetMidCommitObserver(&interceptor); + // We don't want a poll to happen during this test (except the first one). + PreventThreadFromPolling(); + EXPECT_TRUE(syncer_thread()->Start()); + metadb()->Open(); + syncer_thread()->CreateSyncer(metadb()->name()); + const TimeDelta poll_interval = TimeDelta::FromMinutes(5); + interceptor.WaitForSyncShare(1, poll_interval + poll_interval); + EXPECT_EQ(static_cast<unsigned int>(1), + interceptor.times_sync_occured().size()); + + // The SyncerThread should be waiting for the poll now. Nudge it to sync + // immediately (5ms). + syncable::ModelTypeBitSet model_types; + model_types[syncable::BOOKMARKS] = true; + + // Paused so we can verify the nudge types safely. + syncer_thread()->RequestPause(); + syncer_thread()->NudgeSyncerWithDataTypes(100, + SyncerThread::kUnknown, + model_types); + EXPECT_EQ(model_types, syncer_thread()->vault_.pending_nudge_types_); + + model_types[syncable::BOOKMARKS] = false; + model_types[syncable::AUTOFILL] = true; + syncer_thread()->NudgeSyncerWithDataTypes(0, + SyncerThread::kUnknown, + model_types); + + // Reset BOOKMARKS for expectations. + model_types[syncable::BOOKMARKS] = true; + EXPECT_EQ(model_types, syncer_thread()->vault_.pending_nudge_types_); + + syncer_thread()->RequestResume(); + + interceptor.WaitForSyncShare(1, TimeDelta::FromSeconds(1)); + EXPECT_EQ(static_cast<unsigned int>(2), + interceptor.times_sync_occured().size()); + + // SyncerThread should be waiting again. Signal it to stop. + EXPECT_TRUE(syncer_thread()->Stop(2000)); + EXPECT_TRUE(syncer_thread()->vault_.pending_nudge_types_.none()); +} + TEST_F(SyncerThreadWithSyncerTest, Throttling) { SyncShareIntercept interceptor; connection()->SetMidCommitObserver(&interceptor); |