| Index: chrome/browser/sync/engine/syncer_thread_unittest.cc
|
| ===================================================================
|
| --- chrome/browser/sync/engine/syncer_thread_unittest.cc (revision 52107)
|
| +++ chrome/browser/sync/engine/syncer_thread_unittest.cc (working copy)
|
| @@ -716,6 +716,43 @@
|
| EXPECT_TRUE(syncer_thread()->Stop(2000));
|
| }
|
|
|
| +TEST_F(SyncerThreadWithSyncerTest, StopSyncPermanently) {
|
| + // The SyncerThread should request an exit from the Syncer and set
|
| + // conditions for termination.
|
| + const TimeDelta poll_interval = TimeDelta::FromMilliseconds(10);
|
| + syncer_thread()->SetSyncerShortPollInterval(poll_interval);
|
| +
|
| + ListenerMock listener;
|
| + WaitableEvent sync_cycle_ended_event(false, false);
|
| + WaitableEvent syncer_thread_exiting_event(false, false);
|
| + scoped_ptr<ChannelHookup<SyncerEvent> > hookup;
|
| + hookup.reset(syncer_thread()->relay_channel()->AddObserver(&listener));
|
| +
|
| + EXPECT_CALL(listener, HandleChannelEvent(
|
| + Field(&SyncerEvent::what_happened, SyncerEvent::STATUS_CHANGED))).
|
| + Times(AnyNumber());
|
| +
|
| + EXPECT_CALL(listener, HandleChannelEvent(
|
| + Field(&SyncerEvent::what_happened, SyncerEvent::SYNC_CYCLE_ENDED))).
|
| + Times(AnyNumber()).
|
| + WillOnce(SignalEvent(&sync_cycle_ended_event));
|
| +
|
| + EXPECT_CALL(listener, HandleChannelEvent(
|
| + Field(&SyncerEvent::what_happened,
|
| + SyncerEvent::STOP_SYNCING_PERMANENTLY)));
|
| + EXPECT_CALL(listener, HandleChannelEvent(
|
| + Field(&SyncerEvent::what_happened, SyncerEvent::SYNCER_THREAD_EXITING))).
|
| + WillOnce(SignalEvent(&syncer_thread_exiting_event));
|
| +
|
| + EXPECT_TRUE(syncer_thread()->Start());
|
| + metadb()->Open();
|
| + ASSERT_TRUE(sync_cycle_ended_event.TimedWait(max_wait_time_));
|
| +
|
| + connection()->set_store_birthday("NotYourLuckyDay");
|
| + ASSERT_TRUE(syncer_thread_exiting_event.TimedWait(max_wait_time_));
|
| + EXPECT_TRUE(syncer_thread()->Stop(0));
|
| +}
|
| +
|
| TEST_F(SyncerThreadWithSyncerTest, AuthInvalid) {
|
| SyncShareIntercept interceptor;
|
| connection()->SetMidCommitObserver(&interceptor);
|
| @@ -783,6 +820,8 @@
|
| EXPECT_CALL(listener, HandleChannelEvent(
|
| Field(&SyncerEvent::what_happened, SyncerEvent::SYNC_CYCLE_ENDED))).
|
| WillOnce(SignalEvent(&sync_cycle_ended_event));
|
| + EXPECT_CALL(listener, HandleChannelEvent(
|
| + Field(&SyncerEvent::what_happened, SyncerEvent::SYNCER_THREAD_EXITING)));
|
| ASSERT_TRUE(syncer_thread()->Start());
|
| metadb()->Open();
|
| ASSERT_TRUE(sync_cycle_ended_event.TimedWait(max_wait_time_));
|
| @@ -823,6 +862,8 @@
|
| EXPECT_CALL(listener, HandleChannelEvent(
|
| Field(&SyncerEvent::what_happened, SyncerEvent::STATUS_CHANGED))).
|
| Times(AnyNumber());
|
| + EXPECT_CALL(listener, HandleChannelEvent(
|
| + Field(&SyncerEvent::what_happened, SyncerEvent::SYNCER_THREAD_EXITING)));
|
|
|
| connection()->SetServerNotReachable();
|
| metadb()->Open();
|
| @@ -922,6 +963,9 @@
|
| EXPECT_CALL(listener, HandleChannelEvent(
|
| Field(&SyncerEvent::what_happened, SyncerEvent::SYNC_CYCLE_ENDED))).
|
| WillOnce(SignalEvent(&sync_cycle_ended_event));
|
| + EXPECT_CALL(listener, HandleChannelEvent(
|
| + Field(&SyncerEvent::what_happened, SyncerEvent::SYNCER_THREAD_EXITING)));
|
| +
|
| syncer_thread()->NudgeSyncer(0, SyncerThread::kUnknown);
|
| ASSERT_TRUE(sync_cycle_ended_event.TimedWait(max_wait_time_));
|
|
|
| @@ -953,9 +997,11 @@
|
| EXPECT_CALL(listener, HandleChannelEvent(
|
| Field(&SyncerEvent::what_happened, SyncerEvent::SYNC_CYCLE_ENDED))).
|
| WillOnce(SignalEvent(&sync_cycle_ended_event));
|
| + EXPECT_CALL(listener, HandleChannelEvent(
|
| + Field(&SyncerEvent::what_happened, SyncerEvent::SYNCER_THREAD_EXITING)));
|
| +
|
| ASSERT_TRUE(Resume(&listener));
|
| ASSERT_TRUE(sync_cycle_ended_event.TimedWait(max_wait_time_));
|
| -
|
| EXPECT_TRUE(syncer_thread()->Stop(2000));
|
| }
|
|
|
|
|