| Index: chrome/android/javatests/src/org/chromium/chrome/browser/invalidation/InvalidationControllerTest.java
|
| diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/invalidation/InvalidationControllerTest.java b/chrome/android/javatests/src/org/chromium/chrome/browser/invalidation/InvalidationControllerTest.java
|
| index aada9f28d2a095a9884f5da939e1e2e47f50212a..3e05ffb618987fff47ab2e83ae039b2ef492534c 100644
|
| --- a/chrome/android/javatests/src/org/chromium/chrome/browser/invalidation/InvalidationControllerTest.java
|
| +++ b/chrome/android/javatests/src/org/chromium/chrome/browser/invalidation/InvalidationControllerTest.java
|
| @@ -19,6 +19,8 @@ import org.chromium.base.ActivityStatus;
|
| import org.chromium.base.CollectionUtil;
|
| import org.chromium.base.test.util.AdvancedMockContext;
|
| import org.chromium.base.test.util.Feature;
|
| +import org.chromium.chrome.browser.identity.UniqueIdentificationGenerator;
|
| +import org.chromium.chrome.browser.identity.UniqueIdentificationGeneratorFactory;
|
| import org.chromium.sync.internal_api.pub.base.ModelType;
|
| import org.chromium.sync.notifier.InvalidationIntentProtocol;
|
| import org.chromium.sync.notifier.InvalidationPreferences;
|
| @@ -28,6 +30,7 @@ import org.chromium.sync.signin.AccountManagerHelper;
|
| import org.chromium.sync.signin.ChromeSigninController;
|
| import org.chromium.sync.test.util.MockSyncContentResolverDelegate;
|
|
|
| +import java.util.Arrays;
|
| import java.util.ArrayList;
|
| import java.util.HashSet;
|
| import java.util.List;
|
| @@ -35,6 +38,8 @@ import java.util.Set;
|
| import java.util.concurrent.atomic.AtomicBoolean;
|
| import java.util.concurrent.atomic.AtomicReference;
|
|
|
| +import javax.annotation.Nullable;
|
| +
|
| /**
|
| * Tests for the {@link InvalidationController}.
|
| */
|
| @@ -60,7 +65,7 @@ public class InvalidationControllerTest extends InstrumentationTestCase {
|
| assertEquals(1, mContext.getNumStartedIntents());
|
| Intent intent = mContext.getStartedIntent(0);
|
| validateIntentComponent(intent);
|
| - assertNull(intent.getExtras());
|
| + assertTrue(intent.hasExtra(InvalidationIntentProtocol.EXTRA_CLIENT_NAME));
|
| }
|
|
|
| @SmallTest
|
| @@ -70,7 +75,8 @@ public class InvalidationControllerTest extends InstrumentationTestCase {
|
| assertEquals(1, mContext.getNumStartedIntents());
|
| Intent intent = mContext.getStartedIntent(0);
|
| validateIntentComponent(intent);
|
| - assertEquals(1, intent.getExtras().size());
|
| + assertEquals(2, intent.getExtras().size());
|
| + assertTrue(intent.hasExtra(InvalidationIntentProtocol.EXTRA_CLIENT_NAME));
|
| assertTrue(intent.hasExtra(InvalidationIntentProtocol.EXTRA_STOP));
|
| assertTrue(intent.getBooleanExtra(InvalidationIntentProtocol.EXTRA_STOP, false));
|
| }
|
| @@ -84,7 +90,6 @@ public class InvalidationControllerTest extends InstrumentationTestCase {
|
| assertEquals(1, mContext.getNumStartedIntents());
|
| Intent intent = mContext.getStartedIntent(0);
|
| validateIntentComponent(intent);
|
| - assertNull(intent.getExtras());
|
| }
|
|
|
| @SmallTest
|
| @@ -105,7 +110,8 @@ public class InvalidationControllerTest extends InstrumentationTestCase {
|
| assertEquals(1, mContext.getNumStartedIntents());
|
| Intent intent = mContext.getStartedIntent(0);
|
| validateIntentComponent(intent);
|
| - assertEquals(1, intent.getExtras().size());
|
| + assertEquals(2, intent.getExtras().size());
|
| + assertTrue(intent.hasExtra(InvalidationIntentProtocol.EXTRA_CLIENT_NAME));
|
| assertTrue(intent.hasExtra(InvalidationIntentProtocol.EXTRA_STOP));
|
| assertTrue(intent.getBooleanExtra(InvalidationIntentProtocol.EXTRA_STOP, false));
|
| }
|
| @@ -312,6 +318,41 @@ public class InvalidationControllerTest extends InstrumentationTestCase {
|
| assertTrue(objectIds.contains(ObjectId.newInstance(2, "b".getBytes())));
|
| }
|
|
|
| + @SmallTest
|
| + @Feature({"Sync"})
|
| + public void testFallbackClientId() {
|
| + // Test that the InvalidationController consistently returns the same ID even when it has to
|
| + // resort to its "fallback" ID generation code.
|
| + InvalidationController controller = new InvalidationController(mContext);
|
| + byte[] id1 = controller.getInvalidatorClientId();
|
| + byte[] id2 = controller.getInvalidatorClientId();
|
| +
|
| + assertTrue(Arrays.equals(id1, id2));
|
| +
|
| + // Even if initialize the generator late, the ID will remain consistent.
|
| + registerHardCodedIdGenerator();
|
| +
|
| + byte[] id3 = controller.getInvalidatorClientId();
|
| + assertTrue(Arrays.equals(id2, id3));
|
| + }
|
| +
|
| + @SmallTest
|
| + @Feature({"Sync"})
|
| + public void testPreRegisteredClientId() {
|
| + registerHardCodedIdGenerator();
|
| +
|
| + UniqueIdentificationGenerator generator =
|
| + UniqueIdentificationGeneratorFactory.getInstance(InvalidationController.ID_GENERATOR);
|
| + String generatorId = generator.getUniqueId(null);
|
| +
|
| + InvalidationController controller = new InvalidationController(mContext);
|
| + byte[] id = controller.getInvalidatorClientId();
|
| + byte[] id2 = controller.getInvalidatorClientId();
|
| +
|
| + assertTrue(Arrays.equals(generatorId.getBytes(), id));
|
| + assertTrue(Arrays.equals(id, id2));
|
| + }
|
| +
|
| /**
|
| * Asserts that {@code intent} is destined for the correct component.
|
| */
|
| @@ -350,4 +391,15 @@ public class InvalidationControllerTest extends InstrumentationTestCase {
|
| return getBaseContext().getPackageManager();
|
| }
|
| }
|
| +
|
| + private static void registerHardCodedIdGenerator() {
|
| + UniqueIdentificationGeneratorFactory.registerGenerator(
|
| + InvalidationController.ID_GENERATOR,
|
| + new UniqueIdentificationGenerator() {
|
| + public String getUniqueId(@Nullable String salt) {
|
| + return "Testable ID";
|
| + }
|
| + },
|
| + true);
|
| + }
|
| }
|
|
|