Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(300)

Unified Diff: sync/sessions/nudge_tracker_unittest.cc

Issue 19309002: sync: Add pre-commit update avoidance mode + flag (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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;

Powered by Google App Engine
This is Rietveld 408576698