| Index: sync/sessions/nudge_tracker_unittest.cc
|
| diff --git a/sync/sessions/nudge_tracker_unittest.cc b/sync/sessions/nudge_tracker_unittest.cc
|
| index 0b00d5e19c470b5d86aa64c11a4eb6711d43369a..50b596b7f6120e44d642b1b3373c9a0d527eb0ac 100644
|
| --- a/sync/sessions/nudge_tracker_unittest.cc
|
| +++ b/sync/sessions/nudge_tracker_unittest.cc
|
| @@ -728,6 +728,85 @@ TEST_F(NudgeTrackerTest, IsRetryRequired_FailedCycleIncludesUpdate) {
|
| nudge_tracker_.RecordSuccessfulSyncCycle();
|
| }
|
|
|
| +// Test the default nudge delays for various types.
|
| +TEST_F(NudgeTrackerTest, NudgeDelayTest) {
|
| + // Set to a known value to compare against.
|
| + nudge_tracker_.SetDefaultNudgeDelay(base::TimeDelta());
|
| +
|
| + // Bookmarks and preference both have "slow nudge" delays.
|
| + EXPECT_EQ(nudge_tracker_.RecordLocalChange(ModelTypeSet(BOOKMARKS)),
|
| + nudge_tracker_.RecordLocalChange(ModelTypeSet(PREFERENCES)));
|
| +
|
| + // Typed URLs has a default delay.
|
| + EXPECT_EQ(nudge_tracker_.RecordLocalChange(ModelTypeSet(TYPED_URLS)),
|
| + base::TimeDelta());
|
| +
|
| + // "Slow nudge" delays are longer than the default.
|
| + EXPECT_GT(nudge_tracker_.RecordLocalChange(ModelTypeSet(BOOKMARKS)),
|
| + base::TimeDelta());
|
| +
|
| + // Sessions is longer than "slow nudge".
|
| + EXPECT_GT(nudge_tracker_.RecordLocalChange(ModelTypeSet(SESSIONS)),
|
| + nudge_tracker_.RecordLocalChange(ModelTypeSet(BOOKMARKS)));
|
| +
|
| + // Favicons have the same delay as sessions.
|
| + EXPECT_EQ(nudge_tracker_.RecordLocalChange(ModelTypeSet(SESSIONS)),
|
| + nudge_tracker_.RecordLocalChange(ModelTypeSet(FAVICON_TRACKING)));
|
| +
|
| + // Autofill has the longer delay of all.
|
| + EXPECT_GT(nudge_tracker_.RecordLocalChange(ModelTypeSet(AUTOFILL)),
|
| + nudge_tracker_.RecordLocalChange(ModelTypeSet(SESSIONS)));
|
| +
|
| + // A nudge with no types takes the longest delay.
|
| + EXPECT_EQ(nudge_tracker_.RecordLocalChange(ModelTypeSet(AUTOFILL)),
|
| + nudge_tracker_.RecordLocalChange(ModelTypeSet()));
|
| +
|
| + // The actual nudge delay should be the shortest of the set.
|
| + EXPECT_EQ(
|
| + nudge_tracker_.RecordLocalChange(ModelTypeSet(TYPED_URLS)),
|
| + nudge_tracker_.RecordLocalChange(ModelTypeSet(TYPED_URLS, AUTOFILL)));
|
| +}
|
| +
|
| +// Test that custom nudge delays are used over the defaults.
|
| +TEST_F(NudgeTrackerTest, CustomDelayTest) {
|
| + // Set some custom delays.
|
| + std::map<ModelType, base::TimeDelta> delay_map;
|
| + delay_map[BOOKMARKS] = base::TimeDelta::FromSeconds(10);
|
| + delay_map[SESSIONS] = base::TimeDelta::FromSeconds(2);
|
| + nudge_tracker_.OnReceivedCustomNudgeDelays(delay_map);
|
| +
|
| + // Only those with custom delays should be affected, not another type.
|
| + EXPECT_NE(nudge_tracker_.RecordLocalChange(ModelTypeSet(BOOKMARKS)),
|
| + nudge_tracker_.RecordLocalChange(ModelTypeSet(PREFERENCES)));
|
| +
|
| + EXPECT_EQ(base::TimeDelta::FromSeconds(10),
|
| + nudge_tracker_.RecordLocalChange(ModelTypeSet(BOOKMARKS)));
|
| + EXPECT_EQ(base::TimeDelta::FromSeconds(2),
|
| + nudge_tracker_.RecordLocalChange(ModelTypeSet(SESSIONS)));
|
| +}
|
| +
|
| +// Check that custom nudge delays can never result in a value shorter than the
|
| +// minimum nudge delay.
|
| +TEST_F(NudgeTrackerTest, NoTypesShorterThanDefault) {
|
| + // Set delay to a known value.
|
| + nudge_tracker_.SetDefaultNudgeDelay(base::TimeDelta::FromMilliseconds(500));
|
| +
|
| + std::map<ModelType, base::TimeDelta> delay_map;
|
| + ModelTypeSet protocol_types = syncer::ProtocolTypes();
|
| + for (ModelTypeSet::Iterator iter = protocol_types.First(); iter.Good();
|
| + iter.Inc()) {
|
| + delay_map[iter.Get()] = base::TimeDelta();
|
| + }
|
| + nudge_tracker_.OnReceivedCustomNudgeDelays(delay_map);
|
| +
|
| + // All types should still have a nudge greater than or equal to the minimum.
|
| + for (ModelTypeSet::Iterator iter = protocol_types.First(); iter.Good();
|
| + iter.Inc()) {
|
| + EXPECT_GE(nudge_tracker_.RecordLocalChange(ModelTypeSet(iter.Get())),
|
| + base::TimeDelta::FromMilliseconds(500));
|
| + }
|
| +}
|
| +
|
| class NudgeTrackerAckTrackingTest : public NudgeTrackerTest {
|
| public:
|
| NudgeTrackerAckTrackingTest() {}
|
|
|