Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(231)

Unified Diff: sync/android/javatests/src/org/chromium/sync/AndroidSyncSettingsTest.java

Issue 879533004: Rewrite AndroidSyncSettings to be significantly simpler. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@android-sync
Patch Set: Address comments and fix AccountManagementFragment. Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « sync/android/java/src/org/chromium/sync/signin/ChromeSigninController.java ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: sync/android/javatests/src/org/chromium/sync/AndroidSyncSettingsTest.java
diff --git a/sync/android/javatests/src/org/chromium/sync/AndroidSyncSettingsTest.java b/sync/android/javatests/src/org/chromium/sync/AndroidSyncSettingsTest.java
index f3dea91f8b2474f3a3246084b2c21f96a1c4660b..aeba67f607e4d8ace6affb72da8db34cd2c268cf 100644
--- a/sync/android/javatests/src/org/chromium/sync/AndroidSyncSettingsTest.java
+++ b/sync/android/javatests/src/org/chromium/sync/AndroidSyncSettingsTest.java
@@ -1,4 +1,4 @@
-// Copyright 2012 The Chromium Authors. All rights reserved.
+// Copyright 2015 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.
@@ -12,8 +12,6 @@ import android.test.suitebuilder.annotation.SmallTest;
import org.chromium.base.ThreadUtils;
import org.chromium.base.test.util.Feature;
import org.chromium.sync.AndroidSyncSettings.AndroidSyncSettingsObserver;
-import org.chromium.sync.AndroidSyncSettings.CachedAccountSyncSettings;
-import org.chromium.sync.signin.ChromeSigninController;
import org.chromium.sync.test.util.MockSyncContentResolverDelegate;
/**
@@ -60,39 +58,6 @@ public class AndroidSyncSettingsTest extends InstrumentationTestCase {
}
}
- 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 AndroidSyncSettingsObserver {
private boolean mReceivedNotification;
@@ -100,7 +65,7 @@ public class AndroidSyncSettingsTest extends InstrumentationTestCase {
mReceivedNotification = false;
}
- public boolean didReceiveNotification() {
+ public boolean receivedNotification() {
return mReceivedNotification;
}
@@ -113,29 +78,20 @@ public class AndroidSyncSettingsTest extends InstrumentationTestCase {
private AndroidSyncSettings mAndroid;
private CountingMockSyncContentResolverDelegate mSyncContentResolverDelegate;
private String mAuthority;
- private Account mTestAccount;
- private Account mAlternateTestAccount;
- private CountingCachedAccountSyncSettings mCachedAccountSyncSettings;
+ private Account mAccount;
+ private Account mAlternateAccount;
private MockSyncSettingsObserver mSyncSettingsObserver;
@Override
protected void setUp() throws Exception {
mSyncContentResolverDelegate = new CountingMockSyncContentResolverDelegate();
Context context = getInstrumentation().getTargetContext();
- mCachedAccountSyncSettings = new CountingCachedAccountSyncSettings(
- context.getPackageName(), mSyncContentResolverDelegate);
- AndroidSyncSettings.overrideAndroidSyncSettingsForTests(
- context, mSyncContentResolverDelegate, mCachedAccountSyncSettings);
- mAndroid = AndroidSyncSettings.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 = AndroidSyncSettings.get(getInstrumentation().getTargetContext())
- .getContractAuthority();
- mTestAccount = new Account("account@example.com", "com.google");
- mAlternateTestAccount = new Account("alternateAccount@example.com", "com.google");
+ AndroidSyncSettings.overrideForTests(context, mSyncContentResolverDelegate);
+ mAndroid = AndroidSyncSettings.get(context);
+ mAuthority = mAndroid.getContractAuthority();
+ mAccount = new Account("account@example.com", "com.google");
+ mAlternateAccount = new Account("alternateAccount@example.com", "com.google");
+ mAndroid.updateAccount(mAccount);
mSyncSettingsObserver = new MockSyncSettingsObserver();
mAndroid.registerObserver(mSyncSettingsObserver);
@@ -143,9 +99,27 @@ public class AndroidSyncSettingsTest extends InstrumentationTestCase {
super.setUp();
}
+ private void enableChromeSyncOnUiThread() {
+ ThreadUtils.runOnUiThreadBlocking(new Runnable() {
+ @Override
+ public void run() {
+ mAndroid.enableChromeSync();
+ }
+ });
+ }
+
+ private void disableChromeSyncOnUiThread() {
+ ThreadUtils.runOnUiThreadBlocking(new Runnable() {
+ @Override
+ public void run() {
+ mAndroid.disableChromeSync();
+ }
+ });
+ }
+
@SmallTest
@Feature({"Sync"})
- public void testToggleMasterSyncAutomaticallyFromSettings() throws InterruptedException {
+ public void testToggleMasterSyncFromSettings() throws InterruptedException {
mSyncContentResolverDelegate.setMasterSyncAutomatically(true);
mSyncContentResolverDelegate.waitForLastNotificationCompleted();
assertTrue("master sync should be set", mAndroid.isMasterSyncEnabled());
@@ -157,41 +131,37 @@ public class AndroidSyncSettingsTest extends InstrumentationTestCase {
@SmallTest
@Feature({"Sync"})
- public void testToggleAccountSyncFromSettings() throws InterruptedException {
+ public void testToggleChromeSyncFromSettings() throws InterruptedException {
// Turn on syncability.
mSyncContentResolverDelegate.setMasterSyncAutomatically(true);
mSyncContentResolverDelegate.waitForLastNotificationCompleted();
// First sync
- mSyncContentResolverDelegate.setIsSyncable(mTestAccount, mAuthority, 1);
+ mSyncContentResolverDelegate.setIsSyncable(mAccount, mAuthority, 1);
mSyncContentResolverDelegate.waitForLastNotificationCompleted();
- mSyncContentResolverDelegate.setSyncAutomatically(mTestAccount, mAuthority, true);
+ mSyncContentResolverDelegate.setSyncAutomatically(mAccount, mAuthority, true);
mSyncContentResolverDelegate.waitForLastNotificationCompleted();
- assertTrue("sync should be set", mAndroid.isSyncEnabled(mTestAccount));
- assertTrue("sync should be set for chrome app",
- mAndroid.isChromeSyncEnabled(mTestAccount));
+ assertTrue("sync should be set", mAndroid.isSyncEnabled());
+ assertTrue("sync should be set for chrome app", mAndroid.isChromeSyncEnabled());
// Disable sync automatically for the app
- mSyncContentResolverDelegate.setSyncAutomatically(mTestAccount, mAuthority, false);
+ mSyncContentResolverDelegate.setSyncAutomatically(mAccount, mAuthority, false);
mSyncContentResolverDelegate.waitForLastNotificationCompleted();
- assertFalse("sync should be unset", mAndroid.isSyncEnabled(mTestAccount));
- assertFalse("sync should be unset for chrome app",
- mAndroid.isChromeSyncEnabled(mTestAccount));
+ assertFalse("sync should be unset", mAndroid.isSyncEnabled());
+ assertFalse("sync should be unset for chrome app", mAndroid.isChromeSyncEnabled());
// Re-enable sync
- mSyncContentResolverDelegate.setSyncAutomatically(mTestAccount, mAuthority, true);
+ mSyncContentResolverDelegate.setSyncAutomatically(mAccount, mAuthority, true);
mSyncContentResolverDelegate.waitForLastNotificationCompleted();
- assertTrue("sync should be re-enabled", mAndroid.isSyncEnabled(mTestAccount));
- assertTrue("sync should be unset for chrome app",
- mAndroid.isChromeSyncEnabled(mTestAccount));
+ assertTrue("sync should be re-enabled", mAndroid.isSyncEnabled());
+ assertTrue("sync should be set for chrome app", mAndroid.isChromeSyncEnabled());
// Disabled from master sync
mSyncContentResolverDelegate.setMasterSyncAutomatically(false);
mSyncContentResolverDelegate.waitForLastNotificationCompleted();
- assertFalse("sync should be disabled due to master sync",
- mAndroid.isSyncEnabled(mTestAccount));
- assertTrue("sync should be set for chrome app",
- mAndroid.isChromeSyncEnabled(mTestAccount));
+ assertFalse("sync should be disabled due to master sync", mAndroid.isSyncEnabled());
+ assertFalse("master sync should be disabled", mAndroid.isMasterSyncEnabled());
+ assertTrue("sync should be set for chrome app", mAndroid.isChromeSyncEnabled());
}
@SmallTest
@@ -201,23 +171,13 @@ public class AndroidSyncSettingsTest extends InstrumentationTestCase {
mSyncContentResolverDelegate.setMasterSyncAutomatically(true);
mSyncContentResolverDelegate.waitForLastNotificationCompleted();
- ThreadUtils.runOnUiThreadBlocking(new Runnable() {
- @Override
- public void run() {
- mAndroid.enableChromeSync(mTestAccount);
- }
- });
+ enableChromeSyncOnUiThread();
mSyncContentResolverDelegate.waitForLastNotificationCompleted();
- assertTrue("account should be synced", mAndroid.isSyncEnabled(mTestAccount));
+ assertTrue("account should be synced", mAndroid.isSyncEnabled());
- ThreadUtils.runOnUiThreadBlocking(new Runnable() {
- @Override
- public void run() {
- mAndroid.disableChromeSync(mTestAccount);
- }
- });
+ disableChromeSyncOnUiThread();
mSyncContentResolverDelegate.waitForLastNotificationCompleted();
- assertFalse("account should not be synced", mAndroid.isSyncEnabled(mTestAccount));
+ assertFalse("account should not be synced", mAndroid.isSyncEnabled());
}
@SmallTest
@@ -227,38 +187,24 @@ public class AndroidSyncSettingsTest extends InstrumentationTestCase {
mSyncContentResolverDelegate.setMasterSyncAutomatically(true);
mSyncContentResolverDelegate.waitForLastNotificationCompleted();
- ThreadUtils.runOnUiThreadBlocking(new Runnable() {
- @Override
- public void run() {
- mAndroid.enableChromeSync(mTestAccount);
- }
- });
+ enableChromeSyncOnUiThread();
mSyncContentResolverDelegate.waitForLastNotificationCompleted();
- assertTrue("account should be synced", mAndroid.isSyncEnabled(mTestAccount));
+ assertTrue("account should be synced", mAndroid.isSyncEnabled());
- ThreadUtils.runOnUiThreadBlocking(new Runnable() {
- @Override
- public void run() {
- mAndroid.enableChromeSync(mAlternateTestAccount);
- }
- });
+ mAndroid.updateAccount(mAlternateAccount);
+ enableChromeSyncOnUiThread();
mSyncContentResolverDelegate.waitForLastNotificationCompleted();
- assertTrue("alternate account should be synced",
- mAndroid.isSyncEnabled(mAlternateTestAccount));
+ assertTrue("alternate account should be synced", mAndroid.isSyncEnabled());
- ThreadUtils.runOnUiThreadBlocking(new Runnable() {
- @Override
- public void run() {
- mAndroid.disableChromeSync(mAlternateTestAccount);
- }
- });
+ disableChromeSyncOnUiThread();
mSyncContentResolverDelegate.waitForLastNotificationCompleted();
- assertFalse("alternate account should not be synced",
- mAndroid.isSyncEnabled(mAlternateTestAccount));
- assertTrue("account should still be synced", mAndroid.isSyncEnabled(mTestAccount));
+ assertFalse("alternate account should not be synced", mAndroid.isSyncEnabled());
+ mAndroid.updateAccount(mAccount);
+ assertTrue("account should still be synced", mAndroid.isSyncEnabled());
// Ensure we don't erroneously re-use cached data.
- assertFalse("null account should not be synced", mAndroid.isSyncEnabled(null));
+ mAndroid.updateAccount(null);
+ assertFalse("null account should not be synced", mAndroid.isSyncEnabled());
}
@SmallTest
@@ -268,14 +214,9 @@ public class AndroidSyncSettingsTest extends InstrumentationTestCase {
mSyncContentResolverDelegate.setMasterSyncAutomatically(true);
mSyncContentResolverDelegate.waitForLastNotificationCompleted();
- ThreadUtils.runOnUiThreadBlocking(new Runnable() {
- @Override
- public void run() {
- mAndroid.enableChromeSync(mTestAccount);
- }
- });
+ enableChromeSyncOnUiThread();
mSyncContentResolverDelegate.waitForLastNotificationCompleted();
- assertTrue("account should be synced", mAndroid.isSyncEnabled(mTestAccount));
+ assertTrue("account should be synced", mAndroid.isSyncEnabled());
int masterSyncAutomaticallyCalls =
mSyncContentResolverDelegate.mGetMasterSyncAutomaticallyCalls;
@@ -285,8 +226,7 @@ public class AndroidSyncSettingsTest extends InstrumentationTestCase {
// Do a bunch of reads.
mAndroid.isMasterSyncEnabled();
mAndroid.isSyncEnabled();
- mAndroid.isSyncEnabled(mTestAccount);
- mAndroid.isChromeSyncEnabled(mTestAccount);
+ mAndroid.isChromeSyncEnabled();
// Ensure values were read from cache.
assertEquals(masterSyncAutomaticallyCalls,
@@ -296,12 +236,13 @@ public class AndroidSyncSettingsTest extends InstrumentationTestCase {
mSyncContentResolverDelegate.mGetSyncAutomaticallyCalls);
// Do a bunch of reads for alternate account.
+ mAndroid.updateAccount(mAlternateAccount);
mAndroid.isMasterSyncEnabled();
- mAndroid.isSyncEnabled(mAlternateTestAccount);
- mAndroid.isChromeSyncEnabled(mAlternateTestAccount);
+ mAndroid.isSyncEnabled();
+ mAndroid.isChromeSyncEnabled();
- // Ensure master sync was cached but others are fetched once.
- assertEquals(masterSyncAutomaticallyCalls,
+ // Ensure settings were only fetched once.
+ assertEquals(masterSyncAutomaticallyCalls + 1,
mSyncContentResolverDelegate.mGetMasterSyncAutomaticallyCalls);
assertEquals(isSyncableCalls + 1, mSyncContentResolverDelegate.mGetIsSyncableCalls);
assertEquals(getSyncAutomaticallyAcalls + 1,
@@ -318,141 +259,39 @@ public class AndroidSyncSettingsTest extends InstrumentationTestCase {
@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 AndroidSyncSettings 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 testAndroidSyncSettingsPostsNotifications() throws InterruptedException {
// Turn on syncability.
mSyncContentResolverDelegate.setMasterSyncAutomatically(true);
mSyncContentResolverDelegate.waitForLastNotificationCompleted();
mSyncSettingsObserver.clearNotification();
- mAndroid.isSyncEnabled(mAlternateTestAccount);
- assertTrue("isSyncEnabled on wrongly populated cache did not trigger observers",
- mSyncSettingsObserver.didReceiveNotification());
+ mAndroid.enableChromeSync();
+ assertTrue("enableChromeSync should trigger observers",
+ mSyncSettingsObserver.receivedNotification());
mSyncSettingsObserver.clearNotification();
- mAndroid.isSyncEnabled(mTestAccount);
- assertTrue("isSyncEnabled on wrongly populated cache did not trigger observers",
- mSyncSettingsObserver.didReceiveNotification());
+ mAndroid.updateAccount(mAlternateAccount);
+ assertTrue("switching to account with different settings should notify",
+ mSyncSettingsObserver.receivedNotification());
mSyncSettingsObserver.clearNotification();
- mAndroid.enableChromeSync(mTestAccount);
- assertTrue("enableChromeSync did not trigger observers",
- mSyncSettingsObserver.didReceiveNotification());
+ mAndroid.updateAccount(mAccount);
+ assertTrue("switching to account with different settings should notify",
+ mSyncSettingsObserver.receivedNotification());
mSyncSettingsObserver.clearNotification();
- mAndroid.enableChromeSync(mTestAccount);
- assertFalse("enableChromeSync triggered observers",
- mSyncSettingsObserver.didReceiveNotification());
+ mAndroid.enableChromeSync();
+ assertFalse("enableChromeSync shouldn't trigger observers",
+ mSyncSettingsObserver.receivedNotification());
mSyncSettingsObserver.clearNotification();
- mAndroid.disableChromeSync(mTestAccount);
- assertTrue("disableChromeSync did not trigger observers",
- mSyncSettingsObserver.didReceiveNotification());
+ mAndroid.disableChromeSync();
+ assertTrue("disableChromeSync should trigger observers",
+ mSyncSettingsObserver.receivedNotification());
mSyncSettingsObserver.clearNotification();
- mAndroid.disableChromeSync(mTestAccount);
- assertFalse("disableChromeSync triggered observers",
- mSyncSettingsObserver.didReceiveNotification());
+ mAndroid.disableChromeSync();
+ assertFalse("disableChromeSync shouldn't observers",
+ mSyncSettingsObserver.receivedNotification());
}
}
« no previous file with comments | « sync/android/java/src/org/chromium/sync/signin/ChromeSigninController.java ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698