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

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

Issue 1062973004: [Sync] Ensure isSyncable is set when signed in. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Improve a comment. Created 5 years, 8 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
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 aeba67f607e4d8ace6affb72da8db34cd2c268cf..13c43f64d55b103d3c722a2e9da2ea9de9567090 100644
--- a/sync/android/javatests/src/org/chromium/sync/AndroidSyncSettingsTest.java
+++ b/sync/android/javatests/src/org/chromium/sync/AndroidSyncSettingsTest.java
@@ -12,6 +12,9 @@ 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.signin.AccountManagerHelper;
+import org.chromium.sync.test.util.AccountHolder;
+import org.chromium.sync.test.util.MockAccountManager;
import org.chromium.sync.test.util.MockSyncContentResolverDelegate;
/**
@@ -81,16 +84,17 @@ public class AndroidSyncSettingsTest extends InstrumentationTestCase {
private Account mAccount;
private Account mAlternateAccount;
private MockSyncSettingsObserver mSyncSettingsObserver;
+ private MockAccountManager mAccountManager;
@Override
protected void setUp() throws Exception {
mSyncContentResolverDelegate = new CountingMockSyncContentResolverDelegate();
Context context = getInstrumentation().getTargetContext();
+ setupTestAccounts(context);
+
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();
@@ -99,6 +103,21 @@ public class AndroidSyncSettingsTest extends InstrumentationTestCase {
super.setUp();
}
+ private void setupTestAccounts(Context context) {
+ mAccountManager = new MockAccountManager(context, context);
+ AccountManagerHelper.overrideAccountManagerHelperForTests(context, mAccountManager);
+ mAccount = setupTestAccount("account@example.com");
+ mAlternateAccount = setupTestAccount("alternate@example.com");
+ }
+
+ private Account setupTestAccount(String accountName) {
+ Account account = AccountManagerHelper.createAccountFromName(accountName);
+ AccountHolder.Builder accountHolder =
+ AccountHolder.create().account(account).password("password").alwaysAccept(true);
+ mAccountManager.addAccountHolderExplicitly(accountHolder.build());
+ return account;
+ }
+
private void enableChromeSyncOnUiThread() {
ThreadUtils.runOnUiThreadBlocking(new Runnable() {
@Override
@@ -294,4 +313,39 @@ public class AndroidSyncSettingsTest extends InstrumentationTestCase {
assertFalse("disableChromeSync shouldn't observers",
mSyncSettingsObserver.receivedNotification());
}
+
+ @SmallTest
+ @Feature({"Sync"})
+ public void testIsSyncableOnSigninAndNotOnSignout() throws InterruptedException {
+ assertTrue(mSyncContentResolverDelegate.getIsSyncable(mAccount, mAuthority) == 1);
+ mAndroid.updateAccount(null);
+ assertTrue(mSyncContentResolverDelegate.getIsSyncable(mAccount, mAuthority) == 0);
+ mAndroid.updateAccount(mAccount);
+ assertTrue(mSyncContentResolverDelegate.getIsSyncable(mAccount, mAuthority) == 1);
+ }
+
+ /**
+ * Regression test for crbug.com/475299.
+ */
+ @SmallTest
+ @Feature({"Sync"})
+ public void testSyncableIsAlwaysSetWhenEnablingSync() throws InterruptedException {
+ // Setup bad state.
+ mSyncContentResolverDelegate.setMasterSyncAutomatically(true);
+ mSyncContentResolverDelegate.waitForLastNotificationCompleted();
+ mSyncContentResolverDelegate.setIsSyncable(mAccount, mAuthority, 1);
+ mSyncContentResolverDelegate.waitForLastNotificationCompleted();
+ mSyncContentResolverDelegate.setSyncAutomatically(mAccount, mAuthority, true);
+ mSyncContentResolverDelegate.waitForLastNotificationCompleted();
+ mSyncContentResolverDelegate.setIsSyncable(mAccount, mAuthority, 0);
+ mSyncContentResolverDelegate.waitForLastNotificationCompleted();
+ assertTrue(mSyncContentResolverDelegate.getIsSyncable(mAccount, mAuthority) == 0);
+ assertTrue(mSyncContentResolverDelegate.getSyncAutomatically(mAccount, mAuthority));
+
+ // Ensure bug is fixed.
+ mAndroid.enableChromeSync();
+ assertTrue(mSyncContentResolverDelegate.getIsSyncable(mAccount, mAuthority) == 1);
+ // Should still be enabled.
+ assertTrue(mSyncContentResolverDelegate.getSyncAutomatically(mAccount, mAuthority));
+ }
}

Powered by Google App Engine
This is Rietveld 408576698