summaryrefslogtreecommitdiffstats
path: root/chrome/browser/sync/engine/syncer_thread_unittest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/sync/engine/syncer_thread_unittest.cc')
-rw-r--r--chrome/browser/sync/engine/syncer_thread_unittest.cc48
1 files changed, 47 insertions, 1 deletions
diff --git a/chrome/browser/sync/engine/syncer_thread_unittest.cc b/chrome/browser/sync/engine/syncer_thread_unittest.cc
index 79e2665..a9798ad 100644
--- a/chrome/browser/sync/engine/syncer_thread_unittest.cc
+++ b/chrome/browser/sync/engine/syncer_thread_unittest.cc
@@ -716,6 +716,43 @@ TEST_F(SyncerThreadWithSyncerTest, Throttling) {
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);
@@ -789,6 +826,8 @@ TEST_F(SyncerThreadWithSyncerTest, MAYBE_Pause) {
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_));
@@ -829,6 +868,8 @@ TEST_F(SyncerThreadWithSyncerTest, StartWhenNotConnected) {
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();
@@ -928,6 +969,9 @@ TEST_F(SyncerThreadWithSyncerTest, FLAKY_PauseWhenNotConnected) {
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_));
@@ -959,9 +1003,11 @@ TEST_F(SyncerThreadWithSyncerTest, PauseResumeWhenNotRunning) {
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));
}