@SmallTest
  @Feature({"Sync"})
  public void testRegisterForSpecificTypes() {
    final String controllerFlag = "resolveModelTypes";
    final ModelTypeResolver resolver =
        new ModelTypeResolver() {
          @Override
          public Set<ModelType> resolveModelTypes(Set<ModelType> modelTypes) {
            mContext.setFlag(controllerFlag);
            return modelTypes;
          }
        };
    InvalidationController controller =
        new InvalidationController(mContext) {
          @Override
          ModelTypeResolver getModelTypeResolver() {
            return resolver;
          }
        };
    Account account = new Account("*****@*****.**", "bogus");
    controller.setRegisteredTypes(
        account, false, Sets.newHashSet(ModelType.BOOKMARK, ModelType.SESSION));
    assertEquals(1, mContext.getNumStartedIntents());

    // Validate destination.
    Intent intent = mContext.getStartedIntent(0);
    validateIntentComponent(intent);
    assertEquals(IntentProtocol.ACTION_REGISTER, intent.getAction());

    // Validate account.
    Account intentAccount = intent.getParcelableExtra(IntentProtocol.EXTRA_ACCOUNT);
    assertEquals(account, intentAccount);

    // Validate registered types.
    Set<String> expectedTypes =
        Sets.newHashSet(ModelType.BOOKMARK.name(), ModelType.SESSION.name());
    Set<String> actualTypes = Sets.newHashSet();
    actualTypes.addAll(intent.getStringArrayListExtra(IntentProtocol.EXTRA_REGISTERED_TYPES));
    assertEquals(expectedTypes, actualTypes);
    assertTrue(mContext.isFlagSet(controllerFlag));
  }
  @SmallTest
  @Feature({"Sync"})
  public void testRegisterForAllTypes() {
    Account account = new Account("*****@*****.**", "bogus");
    mController.setRegisteredTypes(
        account, true, Sets.newHashSet(ModelType.BOOKMARK, ModelType.SESSION));
    assertEquals(1, mContext.getNumStartedIntents());

    // Validate destination.
    Intent intent = mContext.getStartedIntent(0);
    validateIntentComponent(intent);
    assertEquals(IntentProtocol.ACTION_REGISTER, intent.getAction());

    // Validate account.
    Account intentAccount = intent.getParcelableExtra(IntentProtocol.EXTRA_ACCOUNT);
    assertEquals(account, intentAccount);

    // Validate registered types.
    Set<String> expectedTypes = Sets.newHashSet(ModelType.ALL_TYPES_TYPE);
    Set<String> actualTypes = Sets.newHashSet();
    actualTypes.addAll(intent.getStringArrayListExtra(IntentProtocol.EXTRA_REGISTERED_TYPES));
    assertEquals(expectedTypes, actualTypes);
  }