예제 #1
0
  @SmallTest
  @Feature({"Sync"})
  public void testSyncSettingsCaching() throws InterruptedException {
    // Turn on syncability.
    mSyncContentResolverDelegate.setMasterSyncAutomatically(true);
    mSyncContentResolverDelegate.waitForLastNotificationCompleted();

    enableChromeSyncOnUiThread();
    mSyncContentResolverDelegate.waitForLastNotificationCompleted();
    assertTrue("account should be synced", AndroidSyncSettings.isSyncEnabled(mContext));

    int masterSyncAutomaticallyCalls =
        mSyncContentResolverDelegate.mGetMasterSyncAutomaticallyCalls;
    int isSyncableCalls = mSyncContentResolverDelegate.mGetIsSyncableCalls;
    int getSyncAutomaticallyAcalls = mSyncContentResolverDelegate.mGetSyncAutomaticallyCalls;

    // Do a bunch of reads.
    AndroidSyncSettings.isMasterSyncEnabled(mContext);
    AndroidSyncSettings.isSyncEnabled(mContext);
    AndroidSyncSettings.isChromeSyncEnabled(mContext);

    // Ensure values were read from cache.
    assertEquals(
        masterSyncAutomaticallyCalls,
        mSyncContentResolverDelegate.mGetMasterSyncAutomaticallyCalls);
    assertEquals(isSyncableCalls, mSyncContentResolverDelegate.mGetIsSyncableCalls);
    assertEquals(
        getSyncAutomaticallyAcalls, mSyncContentResolverDelegate.mGetSyncAutomaticallyCalls);

    // Do a bunch of reads for alternate account.
    AndroidSyncSettings.updateAccount(mContext, mAlternateAccount);
    AndroidSyncSettings.isMasterSyncEnabled(mContext);
    AndroidSyncSettings.isSyncEnabled(mContext);
    AndroidSyncSettings.isChromeSyncEnabled(mContext);

    // Ensure settings were only fetched once.
    assertEquals(
        masterSyncAutomaticallyCalls + 1,
        mSyncContentResolverDelegate.mGetMasterSyncAutomaticallyCalls);
    assertEquals(isSyncableCalls + 1, mSyncContentResolverDelegate.mGetIsSyncableCalls);
    assertEquals(
        getSyncAutomaticallyAcalls + 1, mSyncContentResolverDelegate.mGetSyncAutomaticallyCalls);
  }
예제 #2
0
  @SmallTest
  @Feature({"Sync"})
  public void testToggleChromeSyncFromSettings() throws InterruptedException {
    // Turn on syncability.
    mSyncContentResolverDelegate.setMasterSyncAutomatically(true);
    mSyncContentResolverDelegate.waitForLastNotificationCompleted();

    // First sync
    mSyncContentResolverDelegate.setIsSyncable(mAccount, mAuthority, 1);
    mSyncContentResolverDelegate.waitForLastNotificationCompleted();
    mSyncContentResolverDelegate.setSyncAutomatically(mAccount, mAuthority, true);
    mSyncContentResolverDelegate.waitForLastNotificationCompleted();
    assertTrue("sync should be set", AndroidSyncSettings.isSyncEnabled(mContext));
    assertTrue(
        "sync should be set for chrome app", AndroidSyncSettings.isChromeSyncEnabled(mContext));

    // Disable sync automatically for the app
    mSyncContentResolverDelegate.setSyncAutomatically(mAccount, mAuthority, false);
    mSyncContentResolverDelegate.waitForLastNotificationCompleted();
    assertFalse("sync should be unset", AndroidSyncSettings.isSyncEnabled(mContext));
    assertFalse(
        "sync should be unset for chrome app", AndroidSyncSettings.isChromeSyncEnabled(mContext));

    // Re-enable sync
    mSyncContentResolverDelegate.setSyncAutomatically(mAccount, mAuthority, true);
    mSyncContentResolverDelegate.waitForLastNotificationCompleted();
    assertTrue("sync should be re-enabled", AndroidSyncSettings.isSyncEnabled(mContext));
    assertTrue(
        "sync should be set for chrome app", AndroidSyncSettings.isChromeSyncEnabled(mContext));

    // Disabled from master sync
    mSyncContentResolverDelegate.setMasterSyncAutomatically(false);
    mSyncContentResolverDelegate.waitForLastNotificationCompleted();
    assertFalse(
        "sync should be disabled due to master sync", AndroidSyncSettings.isSyncEnabled(mContext));
    assertFalse(
        "master sync should be disabled", AndroidSyncSettings.isMasterSyncEnabled(mContext));
    assertTrue(
        "sync should be set for chrome app", AndroidSyncSettings.isChromeSyncEnabled(mContext));
  }