| Index: chrome/android/sync_shell/javatests/src/chromium/chrome/browser/sync/SyncTestBase.java
|
| diff --git a/chrome/android/sync_shell/javatests/src/chromium/chrome/browser/sync/SyncTestBase.java b/chrome/android/sync_shell/javatests/src/chromium/chrome/browser/sync/SyncTestBase.java
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..56dab66c3467619e946eea4feacf3365377382bc
|
| --- /dev/null
|
| +++ b/chrome/android/sync_shell/javatests/src/chromium/chrome/browser/sync/SyncTestBase.java
|
| @@ -0,0 +1,133 @@
|
| +// 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.
|
| +
|
| +package org.chromium.chrome.browser.sync;
|
| +
|
| +import android.accounts.Account;
|
| +import android.app.Activity;
|
| +import android.content.Context;
|
| +
|
| +import org.chromium.base.ThreadUtils;
|
| +import org.chromium.chrome.browser.identity.UniqueIdentificationGenerator;
|
| +import org.chromium.chrome.browser.identity.UniqueIdentificationGeneratorFactory;
|
| +import org.chromium.chrome.browser.identity.UuidBasedUniqueIdentificationGenerator;
|
| +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.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;
|
| +
|
| +/**
|
| + * Base class for common functionality between sync tests.
|
| + */
|
| +public class SyncTestBase extends ChromeShellTestBase {
|
| + private static final String TAG = "SyncTestBase";
|
| +
|
| + protected static final String CLIENT_ID = "Client_ID";
|
| +
|
| + protected SyncTestUtil.SyncTestContext mContext;
|
| + protected MockAccountManager mAccountManager;
|
| + protected SyncController mSyncController;
|
| + protected FakeServerHelper mFakeServerHelper;
|
| +
|
| + @Override
|
| + protected void setUp() throws Exception {
|
| + super.setUp();
|
| + clearAppData();
|
| + Context targetContext = getInstrumentation().getTargetContext();
|
| + mContext = new SyncTestUtil.SyncTestContext(targetContext);
|
| +
|
| + mapAccountNamesToIds();
|
| + setUpMockAccountManager();
|
| + setUpMockAndroidSyncSettings();
|
| +
|
| + // Initializes ChromeSigninController to use our test context.
|
| + ChromeSigninController.get(mContext);
|
| +
|
| + startChromeBrowserProcessSync(targetContext);
|
| + ThreadUtils.runOnUiThreadBlocking(new Runnable() {
|
| + @Override
|
| + public void run() {
|
| + mSyncController = SyncController.get(mContext);
|
| + mFakeServerHelper = FakeServerHelper.get();
|
| + }
|
| + });
|
| + FakeServerHelper.useFakeServer(targetContext);
|
| + }
|
| +
|
| + @Override
|
| + protected void tearDown() throws Exception {
|
| + ThreadUtils.runOnUiThreadBlocking(new Runnable() {
|
| + @Override
|
| + public void run() {
|
| + mSyncController.stop();
|
| + FakeServerHelper.deleteFakeServer();
|
| + }
|
| + });
|
| +
|
| + super.tearDown();
|
| + }
|
| +
|
| + private void mapAccountNamesToIds() {
|
| + ThreadUtils.runOnUiThreadBlocking(new Runnable() {
|
| + @Override
|
| + public void run() {
|
| + if (AccountIdProvider.getInstance() != null) {
|
| + return;
|
| + }
|
| +
|
| + AccountIdProvider.setInstance(new AccountIdProvider() {
|
| + public String getAccountId(Context ctx, String accountName) {
|
| + return "gaia-id-" + accountName;
|
| + }
|
| + });
|
| + }
|
| + });
|
| + }
|
| +
|
| + private void setUpMockAccountManager() {
|
| + mAccountManager = new MockAccountManager(mContext, getInstrumentation().getContext());
|
| + AccountManagerHelper.overrideAccountManagerHelperForTests(mContext, mAccountManager);
|
| + }
|
| +
|
| + private void setUpMockAndroidSyncSettings() {
|
| + MockSyncContentResolverDelegate syncContentResolverDelegate =
|
| + new MockSyncContentResolverDelegate();
|
| + syncContentResolverDelegate.setMasterSyncAutomatically(true);
|
| + AndroidSyncSettings.overrideForTests(mContext, syncContentResolverDelegate);
|
| + }
|
| +
|
| + protected void setupTestAccountAndSignInToSync(
|
| + final String syncClientIdentifier)
|
| + throws InterruptedException {
|
| + Account defaultTestAccount = SyncTestUtil.setupTestAccountThatAcceptsAllAuthTokens(
|
| + mAccountManager, SyncTestUtil.DEFAULT_TEST_ACCOUNT, SyncTestUtil.DEFAULT_PASSWORD);
|
| +
|
| + UniqueIdentificationGeneratorFactory.registerGenerator(
|
| + UuidBasedUniqueIdentificationGenerator.GENERATOR_ID,
|
| + new UniqueIdentificationGenerator() {
|
| + @Override
|
| + public String getUniqueId(String salt) {
|
| + return syncClientIdentifier;
|
| + }
|
| + }, true);
|
| +
|
| + SyncTestUtil.verifySyncIsSignedOut(getActivity());
|
| +
|
| + final Activity activity = launchChromeShellWithBlankPage();
|
| + ThreadUtils.runOnUiThreadBlocking(new Runnable() {
|
| + @Override
|
| + public void run() {
|
| + mSyncController.signIn(activity, SyncTestUtil.DEFAULT_TEST_ACCOUNT);
|
| + }
|
| + });
|
| +
|
| + SyncTestUtil.verifySyncIsSignedIn(mContext, defaultTestAccount);
|
| + assertTrue("Sync everything should be enabled",
|
| + SyncTestUtil.isSyncEverythingEnabled(mContext));
|
| + }
|
| +}
|
|
|