OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 package org.chromium.components.sync; | 5 package org.chromium.components.sync; |
6 | 6 |
7 import android.accounts.Account; | 7 import android.accounts.Account; |
8 import android.content.Context; | 8 import android.content.Context; |
9 import android.os.Bundle; | 9 import android.os.Bundle; |
10 import android.support.test.filters.SmallTest; | 10 import android.support.test.filters.SmallTest; |
11 import android.test.InstrumentationTestCase; | 11 import android.test.InstrumentationTestCase; |
12 | 12 |
| 13 import org.chromium.base.Callback; |
13 import org.chromium.base.ThreadUtils; | 14 import org.chromium.base.ThreadUtils; |
| 15 import org.chromium.base.test.util.CallbackHelper; |
14 import org.chromium.base.test.util.DisabledTest; | 16 import org.chromium.base.test.util.DisabledTest; |
15 import org.chromium.base.test.util.Feature; | 17 import org.chromium.base.test.util.Feature; |
16 import org.chromium.components.signin.AccountManagerHelper; | 18 import org.chromium.components.signin.AccountManagerHelper; |
17 import org.chromium.components.signin.test.util.AccountHolder; | 19 import org.chromium.components.signin.test.util.AccountHolder; |
18 import org.chromium.components.signin.test.util.MockAccountManager; | 20 import org.chromium.components.signin.test.util.MockAccountManager; |
19 import org.chromium.components.sync.AndroidSyncSettings.AndroidSyncSettingsObser
ver; | 21 import org.chromium.components.sync.AndroidSyncSettings.AndroidSyncSettingsObser
ver; |
20 import org.chromium.components.sync.test.util.MockSyncContentResolverDelegate; | 22 import org.chromium.components.sync.test.util.MockSyncContentResolverDelegate; |
21 | 23 |
| 24 import java.util.concurrent.TimeoutException; |
| 25 |
22 /** | 26 /** |
23 * Tests for AndroidSyncSettings. | 27 * Tests for AndroidSyncSettings. |
24 */ | 28 */ |
25 @DisabledTest(message = "https://crbug.com/605567") | 29 @DisabledTest(message = "https://crbug.com/605567") |
26 public class AndroidSyncSettingsTest extends InstrumentationTestCase { | 30 public class AndroidSyncSettingsTest extends InstrumentationTestCase { |
27 private static class CountingMockSyncContentResolverDelegate | 31 private static class CountingMockSyncContentResolverDelegate |
28 extends MockSyncContentResolverDelegate { | 32 extends MockSyncContentResolverDelegate { |
29 private int mGetMasterSyncAutomaticallyCalls; | 33 private int mGetMasterSyncAutomaticallyCalls; |
30 private int mGetSyncAutomaticallyCalls; | 34 private int mGetSyncAutomaticallyCalls; |
31 private int mGetIsSyncableCalls; | 35 private int mGetIsSyncableCalls; |
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
145 ThreadUtils.runOnUiThreadBlocking(new Runnable() { | 149 ThreadUtils.runOnUiThreadBlocking(new Runnable() { |
146 @Override | 150 @Override |
147 public void run() { | 151 public void run() { |
148 AndroidSyncSettings.disableChromeSync(mContext); | 152 AndroidSyncSettings.disableChromeSync(mContext); |
149 } | 153 } |
150 }); | 154 }); |
151 } | 155 } |
152 | 156 |
153 @SmallTest | 157 @SmallTest |
154 @Feature({"Sync"}) | 158 @Feature({"Sync"}) |
155 public void testAccountInitialization() throws InterruptedException { | 159 public void testAccountInitialization() throws InterruptedException, Timeout
Exception { |
156 // mAccount was set to be syncable and not have periodic syncs. | 160 // mAccount was set to be syncable and not have periodic syncs. |
157 assertEquals(1, mSyncContentResolverDelegate.mSetIsSyncableCalls); | 161 assertEquals(1, mSyncContentResolverDelegate.mSetIsSyncableCalls); |
158 assertEquals(1, mSyncContentResolverDelegate.mRemovePeriodicSyncCalls); | 162 assertEquals(1, mSyncContentResolverDelegate.mRemovePeriodicSyncCalls); |
159 AndroidSyncSettings.updateAccount(mContext, null); | 163 |
160 mAccountManager.waitForGetAccountsTask(); | 164 final CallbackHelper callbackHelper = new CallbackHelper(); |
| 165 AndroidSyncSettings.updateAccount(mContext, null, new Callback<Boolean>(
) { |
| 166 @Override |
| 167 public void onResult(Boolean result) { |
| 168 callbackHelper.notifyCalled(); |
| 169 } |
| 170 }); |
| 171 callbackHelper.waitForCallback(0); |
| 172 |
161 // mAccount was set to be not syncable. | 173 // mAccount was set to be not syncable. |
162 assertEquals(2, mSyncContentResolverDelegate.mSetIsSyncableCalls); | 174 assertEquals(2, mSyncContentResolverDelegate.mSetIsSyncableCalls); |
163 assertEquals(1, mSyncContentResolverDelegate.mRemovePeriodicSyncCalls); | 175 assertEquals(1, mSyncContentResolverDelegate.mRemovePeriodicSyncCalls); |
164 AndroidSyncSettings.updateAccount(mContext, mAlternateAccount); | 176 AndroidSyncSettings.updateAccount(mContext, mAlternateAccount); |
165 // mAlternateAccount was set to be syncable and not have periodic syncs. | 177 // mAlternateAccount was set to be syncable and not have periodic syncs. |
166 assertEquals(3, mSyncContentResolverDelegate.mSetIsSyncableCalls); | 178 assertEquals(3, mSyncContentResolverDelegate.mSetIsSyncableCalls); |
167 assertEquals(2, mSyncContentResolverDelegate.mRemovePeriodicSyncCalls); | 179 assertEquals(2, mSyncContentResolverDelegate.mRemovePeriodicSyncCalls); |
168 } | 180 } |
169 | 181 |
170 @SmallTest | 182 @SmallTest |
(...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
350 mSyncSettingsObserver.receivedNotification()); | 362 mSyncSettingsObserver.receivedNotification()); |
351 | 363 |
352 mSyncSettingsObserver.clearNotification(); | 364 mSyncSettingsObserver.clearNotification(); |
353 AndroidSyncSettings.disableChromeSync(mContext); | 365 AndroidSyncSettings.disableChromeSync(mContext); |
354 assertFalse("disableChromeSync shouldn't observers", | 366 assertFalse("disableChromeSync shouldn't observers", |
355 mSyncSettingsObserver.receivedNotification()); | 367 mSyncSettingsObserver.receivedNotification()); |
356 } | 368 } |
357 | 369 |
358 @SmallTest | 370 @SmallTest |
359 @Feature({"Sync"}) | 371 @Feature({"Sync"}) |
360 public void testIsSyncableOnSigninAndNotOnSignout() throws InterruptedExcept
ion { | 372 public void testIsSyncableOnSigninAndNotOnSignout() |
| 373 throws InterruptedException, TimeoutException { |
361 assertTrue(mSyncContentResolverDelegate.getIsSyncable(mAccount, mAuthori
ty) == 1); | 374 assertTrue(mSyncContentResolverDelegate.getIsSyncable(mAccount, mAuthori
ty) == 1); |
362 AndroidSyncSettings.updateAccount(mContext, null); | 375 |
363 mAccountManager.waitForGetAccountsTask(); | 376 final CallbackHelper callbackHelper = new CallbackHelper(); |
| 377 AndroidSyncSettings.updateAccount(mContext, null, new Callback<Boolean>(
) { |
| 378 @Override |
| 379 public void onResult(Boolean result) { |
| 380 callbackHelper.notifyCalled(); |
| 381 } |
| 382 }); |
| 383 callbackHelper.waitForCallback(0); |
| 384 |
364 assertTrue(mSyncContentResolverDelegate.getIsSyncable(mAccount, mAuthori
ty) == 0); | 385 assertTrue(mSyncContentResolverDelegate.getIsSyncable(mAccount, mAuthori
ty) == 0); |
365 AndroidSyncSettings.updateAccount(mContext, mAccount); | 386 AndroidSyncSettings.updateAccount(mContext, mAccount); |
366 assertTrue(mSyncContentResolverDelegate.getIsSyncable(mAccount, mAuthori
ty) == 1); | 387 assertTrue(mSyncContentResolverDelegate.getIsSyncable(mAccount, mAuthori
ty) == 1); |
367 } | 388 } |
368 | 389 |
369 /** | 390 /** |
370 * Regression test for crbug.com/475299. | 391 * Regression test for crbug.com/475299. |
371 */ | 392 */ |
372 @SmallTest | 393 @SmallTest |
373 @Feature({"Sync"}) | 394 @Feature({"Sync"}) |
(...skipping 10 matching lines...) Expand all Loading... |
384 assertTrue(mSyncContentResolverDelegate.getIsSyncable(mAccount, mAuthori
ty) == 0); | 405 assertTrue(mSyncContentResolverDelegate.getIsSyncable(mAccount, mAuthori
ty) == 0); |
385 assertTrue(mSyncContentResolverDelegate.getSyncAutomatically(mAccount, m
Authority)); | 406 assertTrue(mSyncContentResolverDelegate.getSyncAutomatically(mAccount, m
Authority)); |
386 | 407 |
387 // Ensure bug is fixed. | 408 // Ensure bug is fixed. |
388 AndroidSyncSettings.enableChromeSync(mContext); | 409 AndroidSyncSettings.enableChromeSync(mContext); |
389 assertTrue(mSyncContentResolverDelegate.getIsSyncable(mAccount, mAuthori
ty) == 1); | 410 assertTrue(mSyncContentResolverDelegate.getIsSyncable(mAccount, mAuthori
ty) == 1); |
390 // Should still be enabled. | 411 // Should still be enabled. |
391 assertTrue(mSyncContentResolverDelegate.getSyncAutomatically(mAccount, m
Authority)); | 412 assertTrue(mSyncContentResolverDelegate.getSyncAutomatically(mAccount, m
Authority)); |
392 } | 413 } |
393 } | 414 } |
OLD | NEW |