| Index: sync/sessions/nudge_tracker_unittest.cc
|
| diff --git a/sync/sessions/nudge_tracker_unittest.cc b/sync/sessions/nudge_tracker_unittest.cc
|
| index 8439af1d8203e102b49fdc13e953e00076de7df3..598a3e6b430e4f4c94aed8988c44c7ffb164d3bc 100644
|
| --- a/sync/sessions/nudge_tracker_unittest.cc
|
| +++ b/sync/sessions/nudge_tracker_unittest.cc
|
| @@ -61,6 +61,7 @@ TEST_F(NudgeTrackerTest, EmptyNudgeTracker) {
|
| NudgeTracker nudge_tracker;
|
|
|
| EXPECT_FALSE(nudge_tracker.IsSyncRequired());
|
| + EXPECT_FALSE(nudge_tracker.IsGetUpdatesRequired());
|
| EXPECT_EQ(sync_pb::GetUpdatesCallerInfo::UNKNOWN,
|
| nudge_tracker.updates_source());
|
|
|
| @@ -300,6 +301,33 @@ TEST_F(NudgeTrackerTest, IsSyncRequired) {
|
| EXPECT_FALSE(nudge_tracker.IsSyncRequired());
|
| }
|
|
|
| +// Basic tests for the IsGetUpdatesRequired() flag.
|
| +TEST_F(NudgeTrackerTest, IsGetUpdatesRequired) {
|
| + NudgeTracker nudge_tracker;
|
| + EXPECT_FALSE(nudge_tracker.IsGetUpdatesRequired());
|
| +
|
| + // Local changes.
|
| + nudge_tracker.RecordLocalChange(ModelTypeSet(SESSIONS));
|
| + EXPECT_FALSE(nudge_tracker.IsGetUpdatesRequired());
|
| + nudge_tracker.RecordSuccessfulSyncCycle();
|
| + EXPECT_FALSE(nudge_tracker.IsGetUpdatesRequired());
|
| +
|
| + // Refresh requests.
|
| + nudge_tracker.RecordLocalRefreshRequest(ModelTypeSet(SESSIONS));
|
| + EXPECT_TRUE(nudge_tracker.IsGetUpdatesRequired());
|
| + nudge_tracker.RecordSuccessfulSyncCycle();
|
| + EXPECT_FALSE(nudge_tracker.IsGetUpdatesRequired());
|
| +
|
| + // Invalidations.
|
| + ModelTypeInvalidationMap invalidation_map =
|
| + ModelTypeSetToInvalidationMap(ModelTypeSet(PREFERENCES),
|
| + std::string("hint"));
|
| + nudge_tracker.RecordRemoteInvalidation(invalidation_map);
|
| + EXPECT_TRUE(nudge_tracker.IsGetUpdatesRequired());
|
| + nudge_tracker.RecordSuccessfulSyncCycle();
|
| + EXPECT_FALSE(nudge_tracker.IsGetUpdatesRequired());
|
| +}
|
| +
|
| // Test IsSyncRequired() responds correctly to data type throttling.
|
| TEST_F(NudgeTrackerTest, IsSyncRequired_Throttling) {
|
| NudgeTracker nudge_tracker;
|
| @@ -320,7 +348,7 @@ TEST_F(NudgeTrackerTest, IsSyncRequired_Throttling) {
|
| EXPECT_FALSE(nudge_tracker.IsSyncRequired());
|
|
|
| // A refresh request for bookmarks means we have reason to sync again.
|
| - nudge_tracker.RecordLocalChange(ModelTypeSet(BOOKMARKS));
|
| + nudge_tracker.RecordLocalRefreshRequest(ModelTypeSet(BOOKMARKS));
|
| EXPECT_TRUE(nudge_tracker.IsSyncRequired());
|
|
|
| // A successful sync cycle means we took care of bookmarks.
|
| @@ -335,6 +363,41 @@ TEST_F(NudgeTrackerTest, IsSyncRequired_Throttling) {
|
| EXPECT_TRUE(nudge_tracker.IsSyncRequired());
|
| }
|
|
|
| +// Test IsGetUpdatesRequired() responds correctly to data type throttling.
|
| +TEST_F(NudgeTrackerTest, IsGetUpdatesRequired_Throttling) {
|
| + NudgeTracker nudge_tracker;
|
| + const base::TimeTicks t0 = base::TimeTicks::FromInternalValue(1234);
|
| + const base::TimeDelta throttle_length = base::TimeDelta::FromMinutes(10);
|
| + const base::TimeTicks t1 = t0 + throttle_length;
|
| +
|
| + EXPECT_FALSE(nudge_tracker.IsGetUpdatesRequired());
|
| +
|
| + // A refresh request to sessions enables the flag.
|
| + nudge_tracker.RecordLocalRefreshRequest(ModelTypeSet(SESSIONS));
|
| + EXPECT_TRUE(nudge_tracker.IsGetUpdatesRequired());
|
| +
|
| + // But the throttling of sessions unsets it.
|
| + nudge_tracker.SetTypesThrottledUntil(ModelTypeSet(SESSIONS),
|
| + throttle_length,
|
| + t0);
|
| + EXPECT_FALSE(nudge_tracker.IsGetUpdatesRequired());
|
| +
|
| + // A refresh request for bookmarks means we have reason to sync again.
|
| + nudge_tracker.RecordLocalRefreshRequest(ModelTypeSet(BOOKMARKS));
|
| + EXPECT_TRUE(nudge_tracker.IsGetUpdatesRequired());
|
| +
|
| + // A successful sync cycle means we took care of bookmarks.
|
| + nudge_tracker.RecordSuccessfulSyncCycle();
|
| + EXPECT_FALSE(nudge_tracker.IsGetUpdatesRequired());
|
| +
|
| + // But we still haven't dealt with sessions. We'll need to remember
|
| + // that sessions are out of sync and re-enable the flag when their
|
| + // throttling interval expires.
|
| + nudge_tracker.UpdateTypeThrottlingState(t1);
|
| + EXPECT_FALSE(nudge_tracker.IsTypeThrottled(SESSIONS));
|
| + EXPECT_TRUE(nudge_tracker.IsGetUpdatesRequired());
|
| +}
|
| +
|
| // Tests throttling-related getter functions when no types are throttled.
|
| TEST_F(NudgeTrackerTest, NoTypesThrottled) {
|
| NudgeTracker nudge_tracker;
|
|
|