 Chromium Code Reviews
 Chromium Code Reviews Issue 6286067:
  sync: add a SyncSessionJobPurpose for clearing sync user data.  (Closed) 
  Base URL: svn://svn.chromium.org/chrome/trunk/src/chrome
    
  
    Issue 6286067:
  sync: add a SyncSessionJobPurpose for clearing sync user data.  (Closed) 
  Base URL: svn://svn.chromium.org/chrome/trunk/src/chrome| Index: chrome/browser/sync/engine/syncer_thread2_unittest.cc | 
| diff --git a/chrome/browser/sync/engine/syncer_thread2_unittest.cc b/chrome/browser/sync/engine/syncer_thread2_unittest.cc | 
| index 3b2742c0e886bfcc56236561d96b268a1c4f45e5..1268593f2e370df7df42343951e5304d48371913 100644 | 
| --- a/chrome/browser/sync/engine/syncer_thread2_unittest.cc | 
| +++ b/chrome/browser/sync/engine/syncer_thread2_unittest.cc | 
| @@ -32,7 +32,8 @@ using sync_pb::GetUpdatesCallerInfo; | 
| class MockSyncer : public Syncer { | 
| public: | 
| - MOCK_METHOD1(SyncShare, void(sessions::SyncSession*)); | 
| + MOCK_METHOD3(SyncShare, void(sessions::SyncSession*, SyncerStep, | 
| + SyncerStep)); | 
| }; | 
| namespace s3 { | 
| @@ -183,7 +184,7 @@ TEST_F(SyncerThread2Test, Nudge) { | 
| syncable::ModelTypeBitSet model_types; | 
| model_types[syncable::BOOKMARKS] = true; | 
| - EXPECT_CALL(*syncer(), SyncShare(_)) | 
| + EXPECT_CALL(*syncer(), SyncShare(_,_,_)) | 
| .WillOnce(DoAll(Invoke(sessions::test_util::SimulateSuccess), | 
| WithArg<0>(RecordSyncShare(&records, 1U, &done)))) | 
| .RetiresOnSaturation(); | 
| @@ -200,7 +201,7 @@ TEST_F(SyncerThread2Test, Nudge) { | 
| SyncShareRecords records2; | 
| model_types[syncable::BOOKMARKS] = false; | 
| model_types[syncable::AUTOFILL] = true; | 
| - EXPECT_CALL(*syncer(), SyncShare(_)) | 
| + EXPECT_CALL(*syncer(), SyncShare(_,_,_)) | 
| .WillOnce(DoAll(Invoke(sessions::test_util::SimulateSuccess), | 
| WithArg<0>(RecordSyncShare(&records2, 1U, &done)))); | 
| syncer_thread()->ScheduleNudge(zero(), NUDGE_SOURCE_LOCAL, model_types); | 
| @@ -218,7 +219,7 @@ TEST_F(SyncerThread2Test, NudgeCoalescing) { | 
| syncer_thread()->Start(SyncerThread::NORMAL_MODE); | 
| base::WaitableEvent done(false, false); | 
| SyncShareRecords r; | 
| - EXPECT_CALL(*syncer(), SyncShare(_)) | 
| + EXPECT_CALL(*syncer(), SyncShare(_,_,_)) | 
| .WillOnce(DoAll(Invoke(sessions::test_util::SimulateSuccess), | 
| WithArg<0>(RecordSyncShare(&r, 1U, &done)))); | 
| syncable::ModelTypeBitSet types1, types2, types3; | 
| @@ -240,7 +241,7 @@ TEST_F(SyncerThread2Test, NudgeCoalescing) { | 
| r.snapshots[0]->source.updates_source); | 
| SyncShareRecords r2; | 
| - EXPECT_CALL(*syncer(), SyncShare(_)) | 
| + EXPECT_CALL(*syncer(), SyncShare(_,_,_)) | 
| .WillOnce(DoAll(Invoke(sessions::test_util::SimulateSuccess), | 
| WithArg<0>(RecordSyncShare(&r2, 1U, &done)))); | 
| syncer_thread()->ScheduleNudge(zero(), NUDGE_SOURCE_NOTIFICATION, types3); | 
| @@ -260,7 +261,7 @@ TEST_F(SyncerThread2Test, NudgeWithPayloads) { | 
| sessions::TypePayloadMap model_types_with_payloads; | 
| model_types_with_payloads[syncable::BOOKMARKS] = "test"; | 
| - EXPECT_CALL(*syncer(), SyncShare(_)) | 
| + EXPECT_CALL(*syncer(), SyncShare(_,_,_)) | 
| .WillOnce(DoAll(Invoke(sessions::test_util::SimulateSuccess), | 
| WithArg<0>(RecordSyncShare(&records, 1U, &done)))) | 
| .RetiresOnSaturation(); | 
| @@ -277,7 +278,7 @@ TEST_F(SyncerThread2Test, NudgeWithPayloads) { | 
| SyncShareRecords records2; | 
| model_types_with_payloads.erase(syncable::BOOKMARKS); | 
| model_types_with_payloads[syncable::AUTOFILL] = "test2"; | 
| - EXPECT_CALL(*syncer(), SyncShare(_)) | 
| + EXPECT_CALL(*syncer(), SyncShare(_,_,_)) | 
| .WillOnce(DoAll(Invoke(sessions::test_util::SimulateSuccess), | 
| WithArg<0>(RecordSyncShare(&records2, 1U, &done)))); | 
| syncer_thread()->ScheduleNudgeWithPayloads(zero(), NUDGE_SOURCE_LOCAL, | 
| @@ -295,7 +296,7 @@ TEST_F(SyncerThread2Test, NudgeWithPayloadsCoalescing) { | 
| syncer_thread()->Start(SyncerThread::NORMAL_MODE); | 
| base::WaitableEvent done(false, false); | 
| SyncShareRecords r; | 
| - EXPECT_CALL(*syncer(), SyncShare(_)) | 
| + EXPECT_CALL(*syncer(), SyncShare(_,_,_)) | 
| .WillOnce(DoAll(Invoke(sessions::test_util::SimulateSuccess), | 
| WithArg<0>(RecordSyncShare(&r, 1U, &done)))); | 
| sessions::TypePayloadMap types1, types2, types3; | 
| @@ -323,7 +324,7 @@ TEST_F(SyncerThread2Test, NudgeWithPayloadsCoalescing) { | 
| r.snapshots[0]->source.updates_source); | 
| SyncShareRecords r2; | 
| - EXPECT_CALL(*syncer(), SyncShare(_)) | 
| + EXPECT_CALL(*syncer(), SyncShare(_,_,_)) | 
| .WillOnce(DoAll(Invoke(sessions::test_util::SimulateSuccess), | 
| WithArg<0>(RecordSyncShare(&r2, 1U, &done)))); | 
| syncer_thread()->ScheduleNudgeWithPayloads(zero(), NUDGE_SOURCE_NOTIFICATION, | 
| @@ -341,7 +342,7 @@ TEST_F(SyncerThread2Test, Polling) { | 
| base::WaitableEvent done(false, false); | 
| TimeDelta poll_interval(TimeDelta::FromMilliseconds(30)); | 
| syncer_thread()->OnReceivedLongPollIntervalUpdate(poll_interval); | 
| - EXPECT_CALL(*syncer(), SyncShare(_)).Times(AtLeast(kMinNumSamples)) | 
| + EXPECT_CALL(*syncer(), SyncShare(_,_,_)).Times(AtLeast(kMinNumSamples)) | 
| .WillRepeatedly(DoAll(Invoke(sessions::test_util::SimulateSuccess), | 
| WithArg<0>(RecordSyncShare(&records, kMinNumSamples, &done)))); | 
| @@ -360,7 +361,7 @@ TEST_F(SyncerThread2Test, PollNotificationsDisabled) { | 
| TimeDelta poll_interval(TimeDelta::FromMilliseconds(30)); | 
| syncer_thread()->OnReceivedShortPollIntervalUpdate(poll_interval); | 
| syncer_thread()->set_notifications_enabled(false); | 
| - EXPECT_CALL(*syncer(), SyncShare(_)).Times(AtLeast(kMinNumSamples)) | 
| + EXPECT_CALL(*syncer(), SyncShare(_,_,_)).Times(AtLeast(kMinNumSamples)) | 
| .WillRepeatedly(DoAll(Invoke(sessions::test_util::SimulateSuccess), | 
| WithArg<0>(RecordSyncShare(&records, kMinNumSamples, &done)))); | 
| @@ -379,7 +380,7 @@ TEST_F(SyncerThread2Test, PollIntervalUpdate) { | 
| TimeDelta poll1(TimeDelta::FromMilliseconds(120)); | 
| TimeDelta poll2(TimeDelta::FromMilliseconds(30)); | 
| syncer_thread()->OnReceivedLongPollIntervalUpdate(poll1); | 
| - EXPECT_CALL(*syncer(), SyncShare(_)).Times(AtLeast(kMinNumSamples)) | 
| + EXPECT_CALL(*syncer(), SyncShare(_,_,_)).Times(AtLeast(kMinNumSamples)) | 
| .WillOnce(WithArg<0>( | 
| sessions::test_util::SimulatePollIntervalUpdate(poll2))) | 
| .WillRepeatedly(DoAll(Invoke(sessions::test_util::SimulateSuccess), | 
| @@ -397,7 +398,7 @@ TEST_F(SyncerThread2Test, PollIntervalUpdate) { | 
| TEST_F(SyncerThread2Test, HasMoreToSync) { | 
| syncer_thread()->Start(SyncerThread::NORMAL_MODE); | 
| base::WaitableEvent done(false, false); | 
| - EXPECT_CALL(*syncer(), SyncShare(_)) | 
| + EXPECT_CALL(*syncer(), SyncShare(_,_,_)) | 
| .WillOnce(Invoke(sessions::test_util::SimulateHasMoreToSync)) | 
| .WillOnce(DoAll(Invoke(sessions::test_util::SimulateSuccess), | 
| SignalEvent(&done))); | 
| @@ -415,7 +416,7 @@ TEST_F(SyncerThread2Test, ThrottlingDoesThrottle) { | 
| TimeDelta poll(TimeDelta::FromMilliseconds(5)); | 
| TimeDelta throttle(TimeDelta::FromMinutes(10)); | 
| syncer_thread()->OnReceivedLongPollIntervalUpdate(poll); | 
| - EXPECT_CALL(*syncer(), SyncShare(_)) | 
| + EXPECT_CALL(*syncer(), SyncShare(_,_,_)) | 
| .WillOnce(WithArg<0>(sessions::test_util::SimulateThrottled(throttle))); | 
| syncer_thread()->Start(SyncerThread::NORMAL_MODE); | 
| @@ -436,10 +437,10 @@ TEST_F(SyncerThread2Test, ThrottlingExpires) { | 
| syncer_thread()->OnReceivedLongPollIntervalUpdate(poll); | 
| ::testing::InSequence seq; | 
| - EXPECT_CALL(*syncer(), SyncShare(_)) | 
| + EXPECT_CALL(*syncer(), SyncShare(_,_,_)) | 
| .WillOnce(WithArg<0>(sessions::test_util::SimulateThrottled(throttle1))) | 
| .RetiresOnSaturation(); | 
| - EXPECT_CALL(*syncer(), SyncShare(_)) | 
| + EXPECT_CALL(*syncer(), SyncShare(_,_,_)) | 
| .WillRepeatedly(DoAll(Invoke(sessions::test_util::SimulateSuccess), | 
| WithArg<0>(RecordSyncShare(&records, kMinNumSamples, &done)))); | 
| @@ -456,7 +457,7 @@ TEST_F(SyncerThread2Test, ConfigurationMode) { | 
| TimeDelta poll(TimeDelta::FromMilliseconds(15)); | 
| base::WaitableEvent done(false, false); | 
| syncer_thread()->OnReceivedLongPollIntervalUpdate(poll); | 
| - EXPECT_CALL(*syncer(), SyncShare(_)).Times(0); | 
| + EXPECT_CALL(*syncer(), SyncShare(_,_,_)).Times(0); | 
| syncer_thread()->Start(SyncerThread::CONFIGURATION_MODE); | 
| syncable::ModelTypeBitSet nudge_types; | 
| nudge_types[syncable::AUTOFILL] = true; | 
| @@ -476,35 +477,35 @@ TEST_F(SyncerThread2Test, BackoffTriggers) { | 
| base::WaitableEvent done(false, false); | 
| UseMockDelayProvider(); | 
| - EXPECT_CALL(*syncer(), SyncShare(_)) | 
| + EXPECT_CALL(*syncer(), SyncShare(_,_,_)) | 
| .WillOnce(Invoke(sessions::test_util::SimulateDownloadUpdatesFailed)) | 
| .WillOnce(DoAll(Invoke(sessions::test_util::SimulateSuccess), | 
| SignalEvent(&done))); | 
| EXPECT_FALSE(GetBackoffAndResetTest(&done)); | 
| // Note GetBackoffAndResetTest clears mocks and re-instantiates the syncer. | 
| - EXPECT_CALL(*syncer(), SyncShare(_)) | 
| + EXPECT_CALL(*syncer(), SyncShare(_,_,_)) | 
| .WillOnce(Invoke(sessions::test_util::SimulateCommitFailed)) | 
| .WillOnce(DoAll(Invoke(sessions::test_util::SimulateSuccess), | 
| SignalEvent(&done))); | 
| EXPECT_FALSE(GetBackoffAndResetTest(&done)); | 
| - EXPECT_CALL(*syncer(), SyncShare(_)) | 
| + EXPECT_CALL(*syncer(), SyncShare(_,_,_)) | 
| .WillOnce(Invoke(sessions::test_util::SimulateDownloadUpdatesFailed)) | 
| .WillRepeatedly(DoAll(Invoke( | 
| sessions::test_util::SimulateDownloadUpdatesFailed), | 
| SignalEvent(&done))); | 
| EXPECT_TRUE(GetBackoffAndResetTest(&done)); | 
| - EXPECT_CALL(*syncer(), SyncShare(_)) | 
| + EXPECT_CALL(*syncer(), SyncShare(_,_,_)) | 
| .WillOnce(Invoke(sessions::test_util::SimulateCommitFailed)) | 
| .WillRepeatedly(DoAll(Invoke(sessions::test_util::SimulateCommitFailed), | 
| SignalEvent(&done))); | 
| EXPECT_TRUE(GetBackoffAndResetTest(&done)); | 
| - EXPECT_CALL(*syncer(), SyncShare(_)) | 
| + EXPECT_CALL(*syncer(), SyncShare(_,_,_)) | 
| .WillOnce(Invoke(sessions::test_util::SimulateDownloadUpdatesFailed)) | 
| .WillOnce(Invoke(sessions::test_util::SimulateDownloadUpdatesFailed)) | 
| .WillRepeatedly(DoAll(Invoke(sessions::test_util::SimulateSuccess), | 
| SignalEvent(&done))); | 
| EXPECT_FALSE(GetBackoffAndResetTest(&done)); | 
| - EXPECT_CALL(*syncer(), SyncShare(_)) | 
| + EXPECT_CALL(*syncer(), SyncShare(_,_,_)) | 
| .WillOnce(Invoke(sessions::test_util::SimulateCommitFailed)) | 
| .WillOnce(Invoke(sessions::test_util::SimulateCommitFailed)) | 
| .WillRepeatedly(DoAll(Invoke(sessions::test_util::SimulateSuccess), | 
| @@ -522,7 +523,7 @@ TEST_F(SyncerThread2Test, BackoffDropsJobs) { | 
| syncer_thread()->OnReceivedLongPollIntervalUpdate(poll); | 
| UseMockDelayProvider(); | 
| - EXPECT_CALL(*syncer(), SyncShare(_)).Times(2) | 
| + EXPECT_CALL(*syncer(), SyncShare(_,_,_)).Times(2) | 
| .WillRepeatedly(DoAll(Invoke(sessions::test_util::SimulateCommitFailed), | 
| RecordSyncShareAndPostSignal(&r, 2U, this, &done))); | 
| EXPECT_CALL(*delay(), GetDelay(_)) | 
| @@ -539,7 +540,7 @@ TEST_F(SyncerThread2Test, BackoffDropsJobs) { | 
| EXPECT_EQ(GetUpdatesCallerInfo::SYNC_CYCLE_CONTINUATION, | 
| r.snapshots[1]->source.updates_source); | 
| - EXPECT_CALL(*syncer(), SyncShare(_)).Times(1) | 
| + EXPECT_CALL(*syncer(), SyncShare(_,_,_)).Times(1) | 
| .WillOnce(DoAll(Invoke(sessions::test_util::SimulateCommitFailed), | 
| RecordSyncShareAndPostSignal(&r, 1U, this, &done))); | 
| @@ -555,7 +556,7 @@ TEST_F(SyncerThread2Test, BackoffDropsJobs) { | 
| EXPECT_EQ(GetUpdatesCallerInfo::LOCAL, | 
| r.snapshots[2]->source.updates_source); | 
| - EXPECT_CALL(*syncer(), SyncShare(_)).Times(0); | 
| + EXPECT_CALL(*syncer(), SyncShare(_,_,_)).Times(0); | 
| EXPECT_CALL(*delay(), GetDelay(_)).Times(0); | 
| syncer_thread()->Start(SyncerThread::CONFIGURATION_MODE); | 
| @@ -582,7 +583,7 @@ TEST_F(SyncerThread2Test, BackoffElevation) { | 
| const TimeDelta fourth = TimeDelta::FromMilliseconds(30); | 
| const TimeDelta fifth = TimeDelta::FromDays(1); | 
| - EXPECT_CALL(*syncer(), SyncShare(_)).Times(kMinNumSamples) | 
| + EXPECT_CALL(*syncer(), SyncShare(_,_,_)).Times(kMinNumSamples) | 
| .WillRepeatedly(DoAll(Invoke(sessions::test_util::SimulateCommitFailed), | 
| RecordSyncShareAndPostSignal(&r, kMinNumSamples, this, &done))); | 
| @@ -613,7 +614,7 @@ TEST_F(SyncerThread2Test, BackoffRelief) { | 
| const TimeDelta backoff = TimeDelta::FromMilliseconds(100); | 
| - EXPECT_CALL(*syncer(), SyncShare(_)) | 
| + EXPECT_CALL(*syncer(), SyncShare(_,_,_)) | 
| .WillOnce(Invoke(sessions::test_util::SimulateCommitFailed)) | 
| .WillOnce(Invoke(sessions::test_util::SimulateCommitFailed)) | 
| .WillRepeatedly(DoAll(Invoke(sessions::test_util::SimulateSuccess), | 
| @@ -655,6 +656,40 @@ TEST_F(SyncerThread2Test, GetRecommendedDelay) { | 
| TimeDelta::FromSeconds(kMaxBackoffSeconds + 1))); | 
| } | 
| +// Test that appropriate syncer steps are requested for each job type. | 
| +TEST_F(SyncerThread2Test, SyncerSteps) { | 
| + // Nudges. | 
| + base::WaitableEvent done(false, false); | 
| + EXPECT_CALL(*syncer(), SyncShare(_, SYNCER_BEGIN, SYNCER_END)) | 
| + .Times(1); | 
| + syncer_thread()->Start(SyncerThread::NORMAL_MODE); | 
| + syncer_thread()->ScheduleNudge(zero(), NUDGE_SOURCE_LOCAL, ModelTypeBitSet()); | 
| + FlushLastTask(&done); | 
| + syncer_thread()->Stop(); | 
| + Mock::VerifyAndClearExpectations(syncer()); | 
| + | 
| + // ClearUserData. | 
| + EXPECT_CALL(*syncer(), SyncShare(_, CLEAR_PRIVATE_DATA, SYNCER_END)) | 
| + .Times(1); | 
| + syncer_thread()->Start(SyncerThread::NORMAL_MODE); | 
| + syncer_thread()->ScheduleClearUserData(); | 
| + FlushLastTask(&done); | 
| + syncer_thread()->Stop(); | 
| + Mock::VerifyAndClearExpectations(syncer()); | 
| + | 
| + // Poll. | 
| + EXPECT_CALL(*syncer(), SyncShare(_, SYNCER_BEGIN, SYNCER_END)) | 
| + .Times(AtLeast(1)) | 
| + .WillRepeatedly(SignalEvent(&done)); | 
| + const TimeDelta poll(TimeDelta::FromMilliseconds(10)); | 
| + syncer_thread()->OnReceivedLongPollIntervalUpdate(poll); | 
| + syncer_thread()->Start(SyncerThread::NORMAL_MODE); | 
| + done.TimedWait(timeout()); | 
| + syncer_thread()->Stop(); | 
| + Mock::VerifyAndClearExpectations(syncer()); | 
| + done.Reset(); | 
| 
Nicolas Zea
2011/02/03 00:39:07
Test configuration as well?
 
tim (not reviewing)
2011/02/03 00:56:15
Well... I didn't actually implement configuration
 | 
| +} | 
| + | 
| // Test config tasks don't run during normal mode. | 
| // TODO(tim): Implement this test and then the functionality! | 
| TEST_F(SyncerThread2Test, DISABLED_NoConfigDuringNormal) { |