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

Unified Diff: chrome/android/javatests/src/org/chromium/chrome/browser/invalidation/DelayedInvalidationsControllerTest.java

Issue 2798613002: [Sync] Store only latest versions of invalidations in DelayedInvalidationsController (Closed)
Patch Set: Address comments Created 3 years, 8 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: chrome/android/javatests/src/org/chromium/chrome/browser/invalidation/DelayedInvalidationsControllerTest.java
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/invalidation/DelayedInvalidationsControllerTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/invalidation/DelayedInvalidationsControllerTest.java
index 4fccac7c3a68026b12c080cc4d01ddf0b8e2abbe..59551b843ea1e2277e198525e8c58ed381bb951c 100644
--- a/chrome/android/javatests/src/org/chromium/chrome/browser/invalidation/DelayedInvalidationsControllerTest.java
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/invalidation/DelayedInvalidationsControllerTest.java
@@ -189,4 +189,70 @@ public class DelayedInvalidationsControllerTest {
Assert.assertEquals(1, mController.mBundles.size());
Assert.assertEquals(allInvalidations, new PendingInvalidation(mController.mBundles.get(0)));
}
+
+ @Test
+ @SmallTest
+ @Feature({"Sync", "Invalidation"})
+ @UiThreadTest
+ public void testSameObjectInvalidationsGetCombined() throws InterruptedException {
+ // First make sure there are no pending invalidations.
+ mController.clearPendingInvalidations(mContext);
+ Assert.assertFalse(mController.notifyPendingInvalidations(mContext));
+ Assert.assertFalse(mController.mInvalidated);
+
+ // Create invalidations with the same id/src, but different versions and payloads.
+ PendingInvalidation lowerVersionInv =
+ new PendingInvalidation(OBJECT_ID, OBJECT_SRC, VERSION, PAYLOAD);
+ PendingInvalidation higherVersionInv =
+ new PendingInvalidation(OBJECT_ID, OBJECT_SRC, VERSION_2, PAYLOAD_2);
+
+ // Can't invalidate while Chrome is in the background.
+ setApplicationState(ActivityState.STOPPED);
+ Assert.assertFalse(mController.shouldNotifyInvalidation(new Bundle()));
+
+ // Add multiple pending invalidations.
+ mController.addPendingInvalidation(mContext, TEST_ACCOUNT, lowerVersionInv);
+ mController.addPendingInvalidation(mContext, TEST_ACCOUNT, higherVersionInv);
+
+ // Make sure there are pending invalidations.
+ Assert.assertTrue(mController.notifyPendingInvalidations(mContext));
+ Assert.assertTrue(mController.mInvalidated);
+
+ // As Invalidation for all ids has been received, it will supersede all other invalidations.
+ Assert.assertEquals(1, mController.mBundles.size());
+ Assert.assertEquals(higherVersionInv, new PendingInvalidation(mController.mBundles.get(0)));
+ }
+
+ @Test
+ @SmallTest
+ @Feature({"Sync", "Invalidation"})
+ @UiThreadTest
+ public void testSameObjectLowerVersionInvalidationGetsDiscarded() throws InterruptedException {
+ // First make sure there are no pending invalidations.
+ mController.clearPendingInvalidations(mContext);
+ Assert.assertFalse(mController.notifyPendingInvalidations(mContext));
+ Assert.assertFalse(mController.mInvalidated);
+
+ // Create invalidations with the same id/src, but different versions and payloads.
+ PendingInvalidation lowerVersionInv =
+ new PendingInvalidation(OBJECT_ID, OBJECT_SRC, VERSION, PAYLOAD);
+ PendingInvalidation higherVersionInv =
+ new PendingInvalidation(OBJECT_ID, OBJECT_SRC, VERSION_2, PAYLOAD_2);
+
+ // Can't invalidate while Chrome is in the background.
+ setApplicationState(ActivityState.STOPPED);
+ Assert.assertFalse(mController.shouldNotifyInvalidation(new Bundle()));
+
+ // Add multiple pending invalidations.
+ mController.addPendingInvalidation(mContext, TEST_ACCOUNT, higherVersionInv);
+ mController.addPendingInvalidation(mContext, TEST_ACCOUNT, lowerVersionInv);
+
+ // Make sure there are pending invalidations.
+ Assert.assertTrue(mController.notifyPendingInvalidations(mContext));
+ Assert.assertTrue(mController.mInvalidated);
+
+ // As Invalidation for all ids has been received, it will supersede all other invalidations.
+ Assert.assertEquals(1, mController.mBundles.size());
+ Assert.assertEquals(higherVersionInv, new PendingInvalidation(mController.mBundles.get(0)));
+ }
}

Powered by Google App Engine
This is Rietveld 408576698