Index: sync/android/javatests/src/org/chromium/sync/notifier/signin/SyncStatusHelperTest.java |
diff --git a/sync/android/javatests/src/org/chromium/sync/notifier/signin/SyncStatusHelperTest.java b/sync/android/javatests/src/org/chromium/sync/notifier/signin/SyncStatusHelperTest.java |
deleted file mode 100644 |
index c9b5d33a5bef9242d2f0a44d84b5d8af63aceb3c..0000000000000000000000000000000000000000 |
--- a/sync/android/javatests/src/org/chromium/sync/notifier/signin/SyncStatusHelperTest.java |
+++ /dev/null |
@@ -1,456 +0,0 @@ |
-// Copyright 2012 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-package org.chromium.sync.notifier.signin; |
- |
-import android.accounts.Account; |
-import android.content.Context; |
-import android.test.InstrumentationTestCase; |
-import android.test.suitebuilder.annotation.SmallTest; |
- |
-import org.chromium.base.ThreadUtils; |
-import org.chromium.base.test.util.Feature; |
-import org.chromium.sync.notifier.SyncStatusHelper; |
-import org.chromium.sync.notifier.SyncStatusHelper.CachedAccountSyncSettings; |
-import org.chromium.sync.notifier.SyncStatusHelper.SyncSettingsChangedObserver; |
-import org.chromium.sync.signin.ChromeSigninController; |
-import org.chromium.sync.test.util.MockSyncContentResolverDelegate; |
- |
-public class SyncStatusHelperTest extends InstrumentationTestCase { |
- |
- private static class CountingMockSyncContentResolverDelegate |
- extends MockSyncContentResolverDelegate { |
- private int mGetMasterSyncAutomaticallyCalls; |
- private int mGetSyncAutomaticallyCalls; |
- private int mGetIsSyncableCalls; |
- private int mSetIsSyncableCalls; |
- private int mSetSyncAutomaticallyCalls; |
- |
- @Override |
- public boolean getMasterSyncAutomatically() { |
- mGetMasterSyncAutomaticallyCalls++; |
- return super.getMasterSyncAutomatically(); |
- } |
- |
- @Override |
- public boolean getSyncAutomatically(Account account, String authority) { |
- mGetSyncAutomaticallyCalls++; |
- return super.getSyncAutomatically(account, authority); |
- } |
- |
- @Override |
- public int getIsSyncable(Account account, String authority) { |
- mGetIsSyncableCalls++; |
- return super.getIsSyncable(account, authority); |
- } |
- |
- @Override |
- public void setIsSyncable(Account account, String authority, int syncable) { |
- mSetIsSyncableCalls++; |
- super.setIsSyncable(account, authority, syncable); |
- } |
- |
- @Override |
- public void setSyncAutomatically(Account account, String authority, boolean sync) { |
- mSetSyncAutomaticallyCalls++; |
- super.setSyncAutomatically(account, authority, sync); |
- } |
- } |
- |
- private static class CountingCachedAccountSyncSettings extends CachedAccountSyncSettings { |
- private int mUpdateSyncSettingsForAccountInternalCalls; |
- private int mSetIsSyncableInternalCalls; |
- private int mSetSyncAutomaticallyInternalCalls; |
- |
- public CountingCachedAccountSyncSettings(String contractAuthority, |
- MockSyncContentResolverDelegate contentResolverWrapper) { |
- super(contractAuthority, contentResolverWrapper); |
- } |
- |
- @Override |
- protected void updateSyncSettingsForAccountInternal(Account account) { |
- mUpdateSyncSettingsForAccountInternalCalls++; |
- super.updateSyncSettingsForAccountInternal(account); |
- } |
- |
- @Override |
- protected void setIsSyncableInternal(Account account) { |
- mSetIsSyncableInternalCalls++; |
- super.setIsSyncableInternal(account); |
- } |
- |
- @Override |
- protected void setSyncAutomaticallyInternal(Account account, boolean value) { |
- mSetSyncAutomaticallyInternalCalls++; |
- super.setSyncAutomaticallyInternal(account, value); |
- } |
- |
- public void resetCount() { |
- mUpdateSyncSettingsForAccountInternalCalls = 0; |
- } |
- } |
- |
- private static class MockSyncSettingsObserver implements SyncSettingsChangedObserver { |
- private boolean mReceivedNotification; |
- |
- public void clearNotification() { |
- mReceivedNotification = false; |
- } |
- |
- public boolean didReceiveNotification() { |
- return mReceivedNotification; |
- } |
- |
- @Override |
- public void syncSettingsChanged() { |
- mReceivedNotification = true; |
- } |
- } |
- |
- private SyncStatusHelper mHelper; |
- private CountingMockSyncContentResolverDelegate mSyncContentResolverDelegate; |
- private String mAuthority; |
- private Account mTestAccount; |
- private Account mAlternateTestAccount; |
- private CountingCachedAccountSyncSettings mCachedAccountSyncSettings; |
- private MockSyncSettingsObserver mSyncSettingsObserver; |
- |
- @Override |
- protected void setUp() throws Exception { |
- mSyncContentResolverDelegate = new CountingMockSyncContentResolverDelegate(); |
- Context context = getInstrumentation().getTargetContext(); |
- mCachedAccountSyncSettings = new CountingCachedAccountSyncSettings( |
- context.getPackageName(), mSyncContentResolverDelegate); |
- SyncStatusHelper.overrideSyncStatusHelperForTests( |
- context, mSyncContentResolverDelegate, mCachedAccountSyncSettings); |
- mHelper = SyncStatusHelper.get(getInstrumentation().getTargetContext()); |
- // Need to set the signed in account name to ensure that sync settings notifications |
- // update the right account. |
- ChromeSigninController.get( |
- getInstrumentation().getTargetContext()).setSignedInAccountName( |
- "account@example.com"); |
- mAuthority = SyncStatusHelper.get(getInstrumentation().getTargetContext()) |
- .getContractAuthority(); |
- mTestAccount = new Account("account@example.com", "com.google"); |
- mAlternateTestAccount = new Account("alternateAccount@example.com", "com.google"); |
- |
- mSyncSettingsObserver = new MockSyncSettingsObserver(); |
- mHelper.registerSyncSettingsChangedObserver(mSyncSettingsObserver); |
- |
- super.setUp(); |
- } |
- |
- @SmallTest |
- @Feature({"Sync"}) |
- public void testToggleMasterSyncAutomaticallyFromSettings() throws InterruptedException { |
- mSyncContentResolverDelegate.setMasterSyncAutomatically(true); |
- mSyncContentResolverDelegate.waitForLastNotificationCompleted(); |
- assertTrue("master sync should be set", mHelper.isMasterSyncAutomaticallyEnabled()); |
- |
- mSyncContentResolverDelegate.setMasterSyncAutomatically(false); |
- mSyncContentResolverDelegate.waitForLastNotificationCompleted(); |
- assertFalse("master sync should be unset", mHelper.isMasterSyncAutomaticallyEnabled()); |
- } |
- |
- @SmallTest |
- @Feature({"Sync"}) |
- public void testToggleAccountSyncFromSettings() throws InterruptedException { |
- // Turn on syncability. |
- mSyncContentResolverDelegate.setMasterSyncAutomatically(true); |
- mSyncContentResolverDelegate.waitForLastNotificationCompleted(); |
- |
- // First sync |
- mSyncContentResolverDelegate.setIsSyncable(mTestAccount, mAuthority, 1); |
- mSyncContentResolverDelegate.waitForLastNotificationCompleted(); |
- mSyncContentResolverDelegate.setSyncAutomatically(mTestAccount, mAuthority, true); |
- mSyncContentResolverDelegate.waitForLastNotificationCompleted(); |
- assertTrue("sync should be set", mHelper.isSyncEnabled(mTestAccount)); |
- assertTrue("sync should be set for chrome app", |
- mHelper.isSyncEnabledForChrome(mTestAccount)); |
- |
- // Disable sync automatically for the app |
- mSyncContentResolverDelegate.setSyncAutomatically(mTestAccount, mAuthority, false); |
- mSyncContentResolverDelegate.waitForLastNotificationCompleted(); |
- assertFalse("sync should be unset", mHelper.isSyncEnabled(mTestAccount)); |
- assertFalse("sync should be unset for chrome app", |
- mHelper.isSyncEnabledForChrome(mTestAccount)); |
- |
- // Re-enable sync |
- mSyncContentResolverDelegate.setSyncAutomatically(mTestAccount, mAuthority, true); |
- mSyncContentResolverDelegate.waitForLastNotificationCompleted(); |
- assertTrue("sync should be re-enabled", mHelper.isSyncEnabled(mTestAccount)); |
- assertTrue("sync should be unset for chrome app", |
- mHelper.isSyncEnabledForChrome(mTestAccount)); |
- |
- // Disabled from master sync |
- mSyncContentResolverDelegate.setMasterSyncAutomatically(false); |
- mSyncContentResolverDelegate.waitForLastNotificationCompleted(); |
- assertFalse("sync should be disabled due to master sync", |
- mHelper.isSyncEnabled(mTestAccount)); |
- assertTrue("sync should be set for chrome app", |
- mHelper.isSyncEnabledForChrome(mTestAccount)); |
- } |
- |
- @SmallTest |
- @Feature({"Sync"}) |
- public void testToggleAccountSyncFromApplication() throws InterruptedException { |
- // Turn on syncability. |
- mSyncContentResolverDelegate.setMasterSyncAutomatically(true); |
- mSyncContentResolverDelegate.waitForLastNotificationCompleted(); |
- |
- ThreadUtils.runOnUiThreadBlocking(new Runnable() { |
- @Override |
- public void run() { |
- mHelper.enableAndroidSync(mTestAccount); |
- } |
- }); |
- mSyncContentResolverDelegate.waitForLastNotificationCompleted(); |
- assertTrue("account should be synced", mHelper.isSyncEnabled(mTestAccount)); |
- |
- ThreadUtils.runOnUiThreadBlocking(new Runnable() { |
- @Override |
- public void run() { |
- mHelper.disableAndroidSync(mTestAccount); |
- } |
- }); |
- mSyncContentResolverDelegate.waitForLastNotificationCompleted(); |
- assertFalse("account should not be synced", mHelper.isSyncEnabled(mTestAccount)); |
- } |
- |
- @SmallTest |
- @Feature({"Sync"}) |
- public void testToggleSyncabilityForMultipleAccounts() throws InterruptedException { |
- // Turn on syncability. |
- mSyncContentResolverDelegate.setMasterSyncAutomatically(true); |
- mSyncContentResolverDelegate.waitForLastNotificationCompleted(); |
- |
- ThreadUtils.runOnUiThreadBlocking(new Runnable() { |
- @Override |
- public void run() { |
- mHelper.enableAndroidSync(mTestAccount); |
- } |
- }); |
- mSyncContentResolverDelegate.waitForLastNotificationCompleted(); |
- assertTrue("account should be synced", mHelper.isSyncEnabled(mTestAccount)); |
- |
- ThreadUtils.runOnUiThreadBlocking(new Runnable() { |
- @Override |
- public void run() { |
- mHelper.enableAndroidSync(mAlternateTestAccount); |
- } |
- }); |
- mSyncContentResolverDelegate.waitForLastNotificationCompleted(); |
- assertTrue("alternate account should be synced", |
- mHelper.isSyncEnabled(mAlternateTestAccount)); |
- |
- ThreadUtils.runOnUiThreadBlocking(new Runnable() { |
- @Override |
- public void run() { |
- mHelper.disableAndroidSync(mAlternateTestAccount); |
- } |
- }); |
- mSyncContentResolverDelegate.waitForLastNotificationCompleted(); |
- assertFalse("alternate account should not be synced", |
- mHelper.isSyncEnabled(mAlternateTestAccount)); |
- assertTrue("account should still be synced", mHelper.isSyncEnabled(mTestAccount)); |
- |
- // Ensure we don't erroneously re-use cached data. |
- assertFalse("null account should not be synced", mHelper.isSyncEnabled(null)); |
- } |
- |
- @SmallTest |
- @Feature({"Sync"}) |
- public void testSyncSettingsCaching() throws InterruptedException { |
- // Turn on syncability. |
- mSyncContentResolverDelegate.setMasterSyncAutomatically(true); |
- mSyncContentResolverDelegate.waitForLastNotificationCompleted(); |
- |
- ThreadUtils.runOnUiThreadBlocking(new Runnable() { |
- @Override |
- public void run() { |
- mHelper.enableAndroidSync(mTestAccount); |
- } |
- }); |
- mSyncContentResolverDelegate.waitForLastNotificationCompleted(); |
- assertTrue("account should be synced", mHelper.isSyncEnabled(mTestAccount)); |
- |
- int masterSyncAutomaticallyCalls = |
- mSyncContentResolverDelegate.mGetMasterSyncAutomaticallyCalls; |
- int isSyncableCalls = mSyncContentResolverDelegate.mGetIsSyncableCalls; |
- int getSyncAutomaticallyAcalls = mSyncContentResolverDelegate.mGetSyncAutomaticallyCalls; |
- |
- // Do a bunch of reads. |
- mHelper.isMasterSyncAutomaticallyEnabled(); |
- mHelper.isSyncEnabled(); |
- mHelper.isSyncEnabled(mTestAccount); |
- mHelper.isSyncEnabledForChrome(mTestAccount); |
- |
- // 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. |
- mHelper.isMasterSyncAutomaticallyEnabled(); |
- mHelper.isSyncEnabled(mAlternateTestAccount); |
- mHelper.isSyncEnabledForChrome(mAlternateTestAccount); |
- |
- // Ensure master sync was cached but others are fetched once. |
- assertEquals(masterSyncAutomaticallyCalls, |
- mSyncContentResolverDelegate.mGetMasterSyncAutomaticallyCalls); |
- assertEquals(isSyncableCalls + 1, mSyncContentResolverDelegate.mGetIsSyncableCalls); |
- assertEquals(getSyncAutomaticallyAcalls + 1, |
- mSyncContentResolverDelegate.mGetSyncAutomaticallyCalls); |
- } |
- |
- @SmallTest |
- @Feature({"Sync"}) |
- public void testGetContractAuthority() throws Exception { |
- assertEquals("The contract authority should be the package name.", |
- getInstrumentation().getTargetContext().getPackageName(), |
- mHelper.getContractAuthority()); |
- } |
- |
- @SmallTest |
- @Feature({"Sync"}) |
- public void testCachedAccountSyncSettingsExitEarly() throws InterruptedException { |
- mSyncContentResolverDelegate.disableObserverNotifications(); |
- |
- mCachedAccountSyncSettings.updateSyncSettingsForAccount(null); |
- assertTrue("Update sync settings failed to exit early", mCachedAccountSyncSettings |
- .mUpdateSyncSettingsForAccountInternalCalls == 0); |
- |
- mCachedAccountSyncSettings.updateSyncSettingsForAccount(mTestAccount); |
- assertTrue("Update sync settings should not have exited early", mCachedAccountSyncSettings |
- .mUpdateSyncSettingsForAccountInternalCalls == 1); |
- |
- mCachedAccountSyncSettings.setIsSyncable(mTestAccount); |
- assertTrue("setIsSyncable should not have exited early", |
- mCachedAccountSyncSettings.mSetIsSyncableInternalCalls == 1); |
- |
- mCachedAccountSyncSettings.setIsSyncable(mTestAccount); |
- assertTrue("setIsSyncable failed to exit early", mCachedAccountSyncSettings |
- .mSetIsSyncableInternalCalls == 1); |
- |
- mCachedAccountSyncSettings.setSyncAutomatically(mTestAccount, true); |
- assertTrue("setSyncAutomatically should not have to exited early", |
- mCachedAccountSyncSettings.mSetSyncAutomaticallyInternalCalls == 1); |
- |
- mCachedAccountSyncSettings.setSyncAutomatically(mTestAccount, true); |
- assertTrue("setSyncAutomatically failed to exit early", |
- mCachedAccountSyncSettings.mSetSyncAutomaticallyInternalCalls == 1); |
- |
- mCachedAccountSyncSettings.setSyncAutomatically(mTestAccount, false); |
- assertTrue("setSyncAutomatically should not have to exited early", |
- mCachedAccountSyncSettings.mSetSyncAutomaticallyInternalCalls == 2); |
- |
- mCachedAccountSyncSettings.setSyncAutomatically(mTestAccount, false); |
- assertTrue("setSyncAutomatically failed to exit early", |
- mCachedAccountSyncSettings.mSetSyncAutomaticallyInternalCalls == 2); |
- } |
- |
- @SmallTest |
- @Feature({"Sync"}) |
- public void testCachedAccountSyncSettingsDidUpdate() throws InterruptedException { |
- // Since we're just testing the cache we disable observer notifications to prevent |
- // notifications to SyncStatusHelper from mutating it. |
- mSyncContentResolverDelegate.disableObserverNotifications(); |
- |
- mCachedAccountSyncSettings.clearUpdateStatus(); |
- mCachedAccountSyncSettings.getSyncAutomatically(mTestAccount); |
- assertTrue("getSyncAutomatically on un-populated cache failed to update DidUpdate flag", |
- mCachedAccountSyncSettings.getDidUpdateStatus()); |
- |
- mCachedAccountSyncSettings.clearUpdateStatus(); |
- mCachedAccountSyncSettings.getSyncAutomatically(mTestAccount); |
- assertFalse("getSyncAutomatically on populated cache updated DidUpdate flag", |
- mCachedAccountSyncSettings.getDidUpdateStatus()); |
- |
- mCachedAccountSyncSettings.updateSyncSettingsForAccount(mAlternateTestAccount); |
- assertTrue("updateSyncSettingsForAccount failed to update DidUpdate flag", |
- mCachedAccountSyncSettings.getDidUpdateStatus()); |
- |
- mCachedAccountSyncSettings.clearUpdateStatus(); |
- |
- mCachedAccountSyncSettings.updateSyncSettingsForAccount(mTestAccount); |
- assertTrue("updateSyncSettingsForAccount failed to update DidUpdate flag", |
- mCachedAccountSyncSettings.getDidUpdateStatus()); |
- |
- mCachedAccountSyncSettings.clearUpdateStatus(); |
- |
- mCachedAccountSyncSettings.updateSyncSettingsForAccount(mTestAccount); |
- assertFalse("updateSyncSettingsForAccount updated DidUpdate flag", |
- mCachedAccountSyncSettings.getDidUpdateStatus()); |
- |
- mCachedAccountSyncSettings.clearUpdateStatus(); |
- mCachedAccountSyncSettings.setIsSyncable(mTestAccount); |
- assertTrue("setIsSyncable failed to update DidUpdate flag", |
- mCachedAccountSyncSettings.getDidUpdateStatus()); |
- |
- mCachedAccountSyncSettings.clearUpdateStatus(); |
- mCachedAccountSyncSettings.setIsSyncable(mTestAccount); |
- assertFalse("setIsSyncable updated DidUpdate flag", |
- mCachedAccountSyncSettings.getDidUpdateStatus()); |
- |
- mCachedAccountSyncSettings.clearUpdateStatus(); |
- mCachedAccountSyncSettings.setSyncAutomatically(mTestAccount, true); |
- assertTrue("setSyncAutomatically failed to update DidUpdate flag", |
- mCachedAccountSyncSettings.getDidUpdateStatus()); |
- |
- mCachedAccountSyncSettings.clearUpdateStatus(); |
- mCachedAccountSyncSettings.setSyncAutomatically(mTestAccount, true); |
- assertFalse("setSyncAutomatically updated DidUpdate flag", |
- mCachedAccountSyncSettings.getDidUpdateStatus()); |
- |
- mCachedAccountSyncSettings.clearUpdateStatus(); |
- mCachedAccountSyncSettings.setSyncAutomatically(mTestAccount, false); |
- assertTrue("setSyncAutomatically failed to update DidUpdate flag", |
- mCachedAccountSyncSettings.getDidUpdateStatus()); |
- |
- mCachedAccountSyncSettings.clearUpdateStatus(); |
- mCachedAccountSyncSettings.setSyncAutomatically(mTestAccount, false); |
- assertFalse("setSyncAutomatically updated DidUpdate flag", |
- mCachedAccountSyncSettings.getDidUpdateStatus()); |
- } |
- |
- @SmallTest |
- @Feature({"Sync"}) |
- public void testSyncStatusHelperPostsNotifications() throws InterruptedException { |
- // Turn on syncability. |
- mSyncContentResolverDelegate.setMasterSyncAutomatically(true); |
- mSyncContentResolverDelegate.waitForLastNotificationCompleted(); |
- |
- mSyncSettingsObserver.clearNotification(); |
- mHelper.isSyncEnabled(mAlternateTestAccount); |
- assertTrue("isSyncEnabled on wrongly populated cache did not trigger observers", |
- mSyncSettingsObserver.didReceiveNotification()); |
- |
- mSyncSettingsObserver.clearNotification(); |
- mHelper.isSyncEnabled(mTestAccount); |
- assertTrue("isSyncEnabled on wrongly populated cache did not trigger observers", |
- mSyncSettingsObserver.didReceiveNotification()); |
- |
- mSyncSettingsObserver.clearNotification(); |
- mHelper.enableAndroidSync(mTestAccount); |
- assertTrue("enableAndroidSync did not trigger observers", |
- mSyncSettingsObserver.didReceiveNotification()); |
- |
- mSyncSettingsObserver.clearNotification(); |
- mHelper.enableAndroidSync(mTestAccount); |
- assertFalse("enableAndroidSync triggered observers", |
- mSyncSettingsObserver.didReceiveNotification()); |
- |
- mSyncSettingsObserver.clearNotification(); |
- mHelper.disableAndroidSync(mTestAccount); |
- assertTrue("disableAndroidSync did not trigger observers", |
- mSyncSettingsObserver.didReceiveNotification()); |
- |
- mSyncSettingsObserver.clearNotification(); |
- mHelper.disableAndroidSync(mTestAccount); |
- assertFalse("disableAndroidSync triggered observers", |
- mSyncSettingsObserver.didReceiveNotification()); |
- } |
-} |