@SmallTest @Feature({"Sync"}) public void testToggleSyncabilityForMultipleAccounts() throws InterruptedException { // Turn on syncability. mSyncContentResolverDelegate.setMasterSyncAutomatically(true); mSyncContentResolverDelegate.waitForLastNotificationCompleted(); enableChromeSyncOnUiThread(); mSyncContentResolverDelegate.waitForLastNotificationCompleted(); assertTrue("account should be synced", AndroidSyncSettings.isSyncEnabled(mContext)); AndroidSyncSettings.updateAccount(mContext, mAlternateAccount); enableChromeSyncOnUiThread(); mSyncContentResolverDelegate.waitForLastNotificationCompleted(); assertTrue("alternate account should be synced", AndroidSyncSettings.isSyncEnabled(mContext)); disableChromeSyncOnUiThread(); mSyncContentResolverDelegate.waitForLastNotificationCompleted(); assertFalse( "alternate account should not be synced", AndroidSyncSettings.isSyncEnabled(mContext)); AndroidSyncSettings.updateAccount(mContext, mAccount); assertTrue("account should still be synced", AndroidSyncSettings.isSyncEnabled(mContext)); // Ensure we don't erroneously re-use cached data. AndroidSyncSettings.updateAccount(mContext, null); assertFalse("null account should not be synced", AndroidSyncSettings.isSyncEnabled(mContext)); }
@SmallTest @Feature({"Sync"}) public void testIsSyncableOnSigninAndNotOnSignout() throws InterruptedException { assertTrue(mSyncContentResolverDelegate.getIsSyncable(mAccount, mAuthority) == 1); AndroidSyncSettings.updateAccount(mContext, null); mAccountManager.waitForGetAccountsTask(); assertTrue(mSyncContentResolverDelegate.getIsSyncable(mAccount, mAuthority) == 0); AndroidSyncSettings.updateAccount(mContext, mAccount); assertTrue(mSyncContentResolverDelegate.getIsSyncable(mAccount, mAuthority) == 1); }
@SmallTest @Feature({"Sync"}) public void testAccountInitialization() throws InterruptedException { // mAccount was set to be syncable and not have periodic syncs. assertEquals(1, mSyncContentResolverDelegate.mSetIsSyncableCalls); assertEquals(1, mSyncContentResolverDelegate.mRemovePeriodicSyncCalls); AndroidSyncSettings.updateAccount(mContext, null); mAccountManager.waitForGetAccountsTask(); // mAccount was set to be not syncable. assertEquals(2, mSyncContentResolverDelegate.mSetIsSyncableCalls); assertEquals(1, mSyncContentResolverDelegate.mRemovePeriodicSyncCalls); AndroidSyncSettings.updateAccount(mContext, mAlternateAccount); // mAlternateAccount was set to be syncable and not have periodic syncs. assertEquals(3, mSyncContentResolverDelegate.mSetIsSyncableCalls); assertEquals(2, mSyncContentResolverDelegate.mRemovePeriodicSyncCalls); }
@SmallTest @Feature({"Sync"}) public void testAndroidSyncSettingsPostsNotifications() throws InterruptedException { // Turn on syncability. mSyncContentResolverDelegate.setMasterSyncAutomatically(true); mSyncContentResolverDelegate.waitForLastNotificationCompleted(); mSyncSettingsObserver.clearNotification(); AndroidSyncSettings.enableChromeSync(mContext); assertTrue( "enableChromeSync should trigger observers", mSyncSettingsObserver.receivedNotification()); mSyncSettingsObserver.clearNotification(); AndroidSyncSettings.updateAccount(mContext, mAlternateAccount); assertTrue( "switching to account with different settings should notify", mSyncSettingsObserver.receivedNotification()); mSyncSettingsObserver.clearNotification(); AndroidSyncSettings.updateAccount(mContext, mAccount); assertTrue( "switching to account with different settings should notify", mSyncSettingsObserver.receivedNotification()); mSyncSettingsObserver.clearNotification(); AndroidSyncSettings.enableChromeSync(mContext); assertFalse( "enableChromeSync shouldn't trigger observers", mSyncSettingsObserver.receivedNotification()); mSyncSettingsObserver.clearNotification(); AndroidSyncSettings.disableChromeSync(mContext); assertTrue( "disableChromeSync should trigger observers", mSyncSettingsObserver.receivedNotification()); mSyncSettingsObserver.clearNotification(); AndroidSyncSettings.disableChromeSync(mContext); assertFalse( "disableChromeSync shouldn't observers", mSyncSettingsObserver.receivedNotification()); }
@Override protected void setUp() throws Exception { mSyncContentResolverDelegate = new CountingMockSyncContentResolverDelegate(); mContext = getInstrumentation().getTargetContext(); setupTestAccounts(mContext); AndroidSyncSettings.overrideForTests(mContext, mSyncContentResolverDelegate); mAuthority = AndroidSyncSettings.getContractAuthority(mContext); AndroidSyncSettings.updateAccount(mContext, mAccount); mSyncSettingsObserver = new MockSyncSettingsObserver(); AndroidSyncSettings.registerObserver(mContext, mSyncSettingsObserver); super.setUp(); }
@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); }