Skip to content

Commit

Permalink
[Android][Test] Remove shared states in SigninTestUtil
Browse files Browse the repository at this point in the history
This CL removes the shared states from SigninTestUtil since they are
not needed any more.

Bug: 1004418
Change-Id: I3686c791b1adc401c35e17aa9f6819786ef2d75d
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2270205
Reviewed-by: Alex Ilin <alexilin@chromium.org>
Reviewed-by: Mihai Sardarescu <msarda@chromium.org>
Commit-Queue: Alice Wang <aliceywang@chromium.org>
Cr-Commit-Position: refs/heads/master@{#785382}
  • Loading branch information
Alice Wang authored and Commit Bot committed Jul 6, 2020
1 parent a2956c2 commit 8dc45d0
Show file tree
Hide file tree
Showing 2 changed files with 4 additions and 108 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,6 @@
package org.chromium.chrome.test.util.browser.signin;

import android.accounts.Account;
import android.annotation.SuppressLint;

import androidx.annotation.WorkerThread;

import org.junit.Assert;

Expand All @@ -16,74 +13,24 @@
import org.chromium.chrome.browser.SyncFirstSetupCompleteSource;
import org.chromium.chrome.browser.signin.IdentityServicesProvider;
import org.chromium.chrome.browser.signin.SigninManager;
import org.chromium.chrome.browser.signin.SigninPreferencesManager;
import org.chromium.chrome.browser.sync.ProfileSyncService;
import org.chromium.components.signin.AccountManagerFacadeImpl;
import org.chromium.components.signin.AccountManagerFacadeProvider;
import org.chromium.components.signin.AccountTrackerService;
import org.chromium.components.signin.AccountUtils;
import org.chromium.components.signin.ChromeSigninController;
import org.chromium.components.signin.base.CoreAccountInfo;
import org.chromium.components.signin.identitymanager.ConsentLevel;
import org.chromium.components.signin.metrics.SigninAccessPoint;
import org.chromium.components.signin.metrics.SignoutReason;
import org.chromium.components.signin.test.util.AccountHolder;
import org.chromium.components.signin.test.util.FakeAccountManagerDelegate;
import org.chromium.content_public.browser.test.util.TestThreadUtils;

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeoutException;

/**
* Utility class for test signin functionality.
*/
public final class SigninTestUtil {
private static final String DEFAULT_ACCOUNT = "test@gmail.com";

@SuppressLint("StaticFieldLeak")
private static FakeAccountManagerDelegate sAccountManager;
@SuppressLint("StaticFieldLeak")
private static List<AccountHolder> sAddedAccounts = new ArrayList<>();

/**
* Sets up the test authentication environment.
*
* This must be called before native is loaded.
*/
@WorkerThread
public static void setUpAuthForTesting() {
sAccountManager = new FakeAccountManagerDelegate();
TestThreadUtils.runOnUiThreadBlocking(() -> {
AccountManagerFacadeProvider.setInstanceForTests(
new AccountManagerFacadeImpl(sAccountManager));
});
}

/**
* Tears down the test authentication environment.
*/
@WorkerThread
public static void tearDownAuthForTesting() {
if (getCurrentAccount() != null) {
signOut();
}
for (AccountHolder accountHolder : sAddedAccounts) {
sAccountManager.removeAccountHolderBlocking(accountHolder);
}
sAddedAccounts.clear();
AccountManagerFacadeProvider.resetInstanceForTests();
// TODO(https://crbug.com/1046412): Remove this.
// Clear cached signed account name.
ChromeSigninController.get().setSignedInAccountName(null);

SigninPreferencesManager.getInstance().clearAccountsStateSharedPrefsForTesting();
}

final class SigninTestUtil {
/**
* Returns the currently signed in account.
*/
public static Account getCurrentAccount() {
static Account getCurrentAccount() {
return TestThreadUtils.runOnUiThreadBlockingNoException(() -> {
return CoreAccountInfo.getAndroidAccountFrom(
IdentityServicesProvider.get().getIdentityManager().getPrimaryAccountInfo(
Expand All @@ -92,34 +39,7 @@ public static Account getCurrentAccount() {
}

/**
* Add an account with the default name.
*/
public static Account addTestAccount() {
return addTestAccount(DEFAULT_ACCOUNT);
}

/**
* Add an account with a given name.
*/
public static Account addTestAccount(String name) {
Account account = AccountUtils.createAccountFromName(name);
AccountHolder accountHolder = AccountHolder.builder(account).alwaysAccept(true).build();
sAccountManager.addAccountHolderBlocking(accountHolder);
sAddedAccounts.add(accountHolder);
seedAccounts();
return account;
}

/**
* Add and sign in an account with the default name.
*/
public static Account addAndSignInTestAccount() {
Account account = addTestAccount(DEFAULT_ACCOUNT);
signIn(account);
return account;
}
/**
* Sign into an account. Account should be added by {@link #addTestAccount} first.
* Sign into an account.
*/
static void signIn(Account account) {
CallbackHelper callbackHelper = new CallbackHelper();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -156,8 +156,7 @@ public void addAccountHolderExplicitly(AccountHolder accountHolder) {
/**
* Remove an AccountHolder.
*
* WARNING: this method will not wait for the cache in AccountManagerFacade to be updated. Tests
* that get accounts from AccountManagerFacade should use {@link #removeAccountHolderBlocking}.
* WARNING: This method will not wait for the cache in AccountManagerFacade to be updated.
*
* @param accountHolder the account holder to remove
*/
Expand Down Expand Up @@ -197,29 +196,6 @@ public void addAccountHolderBlocking(AccountHolder accountHolder) {
}
}

/**
* Removes an AccountHolder and waits for AccountManagerFacade to update its cache. Requires
* AccountManagerFacade to be initialized with this delegate.
*
* @param accountHolder the account holder to remove
*/
public void removeAccountHolderBlocking(AccountHolder accountHolder) {
ThreadUtils.assertOnBackgroundThread();

CountDownLatch cacheUpdated = new CountDownLatch(1);
try {
ThreadUtils.runOnUiThreadBlocking(() -> {
removeAccountHolderExplicitly(accountHolder);
AccountManagerFacadeProvider.getInstance().waitForPendingUpdates(
cacheUpdated::countDown);
});

cacheUpdated.await();
} catch (InterruptedException e) {
throw new RuntimeException("Exception occurred while waiting for updates", e);
}
}

@Override
public AccessTokenData getAuthToken(Account account, String authTokenScope)
throws AuthException {
Expand Down

0 comments on commit 8dc45d0

Please sign in to comment.