Index: chrome/android/sync_shell/javatests/src/org/chromium/chrome/browser/sync/SyncTestBase.java |
diff --git a/chrome/android/sync_shell/javatests/src/org/chromium/chrome/browser/sync/SyncTestBase.java b/chrome/android/sync_shell/javatests/src/org/chromium/chrome/browser/sync/SyncTestBase.java |
index bb3993dec21603ba6967aac250df6ebe7d1ccf20..ef3d3d383e5775cb84c3efc561e8707498b66626 100644 |
--- a/chrome/android/sync_shell/javatests/src/org/chromium/chrome/browser/sync/SyncTestBase.java |
+++ b/chrome/android/sync_shell/javatests/src/org/chromium/chrome/browser/sync/SyncTestBase.java |
@@ -15,12 +15,16 @@ import org.chromium.chrome.browser.identity.UuidBasedUniqueIdentificationGenerat |
import org.chromium.chrome.browser.signin.AccountIdProvider; |
import org.chromium.chrome.shell.ChromeShellTestBase; |
import org.chromium.chrome.test.util.browser.sync.SyncTestUtil; |
+import org.chromium.content.browser.test.util.Criteria; |
+import org.chromium.content.browser.test.util.CriteriaHelper; |
import org.chromium.sync.AndroidSyncSettings; |
import org.chromium.sync.signin.AccountManagerHelper; |
import org.chromium.sync.signin.ChromeSigninController; |
import org.chromium.sync.test.util.MockAccountManager; |
import org.chromium.sync.test.util.MockSyncContentResolverDelegate; |
+import java.util.concurrent.atomic.AtomicBoolean; |
+ |
/** |
* Base class for common functionality between sync tests. |
*/ |
@@ -33,6 +37,7 @@ public class SyncTestBase extends ChromeShellTestBase { |
protected MockAccountManager mAccountManager; |
protected SyncController mSyncController; |
protected FakeServerHelper mFakeServerHelper; |
+ protected ProfileSyncService mProfileSyncService; |
@Override |
protected void setUp() throws Exception { |
@@ -42,8 +47,8 @@ public class SyncTestBase extends ChromeShellTestBase { |
mContext = new SyncTestUtil.SyncTestContext(targetContext); |
mapAccountNamesToIds(); |
- setUpMockAccountManager(); |
setUpMockAndroidSyncSettings(); |
+ setUpMockAccountManager(); |
// Initializes ChromeSigninController to use our test context. |
ChromeSigninController.get(mContext); |
@@ -53,10 +58,18 @@ public class SyncTestBase extends ChromeShellTestBase { |
@Override |
public void run() { |
mSyncController = SyncController.get(mContext); |
+ // Ensure SyncController is registered with the new AndroidSyncSettings. |
+ AndroidSyncSettings.get(mContext).registerObserver(mSyncController); |
mFakeServerHelper = FakeServerHelper.get(); |
} |
}); |
FakeServerHelper.useFakeServer(targetContext); |
+ ThreadUtils.runOnUiThreadBlocking(new Runnable() { |
+ @Override |
+ public void run() { |
+ mProfileSyncService = ProfileSyncService.get(mContext); |
+ } |
+ }); |
} |
@Override |
@@ -131,4 +144,40 @@ public class SyncTestBase extends ChromeShellTestBase { |
assertTrue("Sync everything should be enabled", |
SyncTestUtil.isSyncEverythingEnabled(mContext)); |
} |
+ |
+ protected void startSync() throws InterruptedException { |
+ ThreadUtils.runOnUiThreadBlocking(new Runnable() { |
+ @Override |
+ public void run() { |
+ SyncController.get(mContext).start(); |
+ } |
+ }); |
+ waitForSyncInitialized(); |
+ } |
+ |
+ protected void stopSync() { |
+ ThreadUtils.runOnUiThreadBlocking(new Runnable() { |
+ @Override |
+ public void run() { |
+ SyncController.get(mContext).stop(); |
+ } |
+ }); |
+ getInstrumentation().waitForIdleSync(); |
+ } |
+ |
+ protected void waitForSyncInitialized() throws InterruptedException { |
+ assertTrue(CriteriaHelper.pollForCriteria(new Criteria() { |
+ @Override |
+ public boolean isSatisfied() { |
+ final AtomicBoolean isInitialized = new AtomicBoolean(false); |
+ ThreadUtils.runOnUiThreadBlocking(new Runnable() { |
+ @Override |
+ public void run() { |
+ isInitialized.set(mProfileSyncService.isSyncInitialized()); |
+ } |
+ }); |
+ return isInitialized.get(); |
+ } |
+ })); |
+ } |
} |