Commit 753a9f07 authored by Alice Wang's avatar Alice Wang Committed by Commit Bot

[Android][WebSignin] Remove all ChromeActivity usage in delegate

This CL removes all ChromeActivity usage in AccountPickerDelegate.

Bug: 1125068
Change-Id: Ib2afc7f5d8ab1ebe8138e96aff41cdd1c1c8dea4
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2398129Reviewed-by: default avatarTanmoy Mollik <triploblastic@chromium.org>
Commit-Queue: Alice Wang <aliceywang@chromium.org>
Cr-Commit-Position: refs/heads/master@{#804921}
parent 2fc6116c
......@@ -81,10 +81,11 @@ public class SigninUtils {
if (signinManager.isSignInAllowed()) {
ChromeActivity activity = (ChromeActivity) windowAndroid.getActivity().get();
AccountPickerBottomSheetCoordinator coordinator =
new AccountPickerBottomSheetCoordinator(activity,
BottomSheetControllerProvider.from(activity.getWindowAndroid()),
new AccountPickerDelegate(
windowAndroid, new WebSigninBridge.Factory(), continueUrl));
new AccountPickerBottomSheetCoordinator(windowAndroid.getContext().get(),
BottomSheetControllerProvider.from(windowAndroid),
new AccountPickerDelegate(windowAndroid, activity.getActivityTab(),
activity.getTabCreator(/*incognito=*/true),
new WebSigninBridge.Factory(), continueUrl));
}
}
......
......@@ -13,7 +13,6 @@ import androidx.annotation.Nullable;
import org.chromium.base.Callback;
import org.chromium.base.ThreadUtils;
import org.chromium.chrome.browser.app.ChromeActivity;
import org.chromium.chrome.browser.help.HelpAndFeedback;
import org.chromium.chrome.browser.incognito.interstitial.IncognitoInterstitialDelegate;
import org.chromium.chrome.browser.profiles.Profile;
......@@ -22,6 +21,7 @@ import org.chromium.chrome.browser.signin.SigninManager;
import org.chromium.chrome.browser.signin.SigninUtils;
import org.chromium.chrome.browser.signin.WebSigninBridge;
import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.browser.tabmodel.TabCreator;
import org.chromium.components.signin.AccountManagerFacadeProvider;
import org.chromium.components.signin.base.CoreAccountInfo;
import org.chromium.components.signin.base.GoogleServiceAuthError;
......@@ -36,21 +36,20 @@ import org.chromium.ui.base.WindowAndroid;
*/
public class AccountPickerDelegate implements WebSigninBridge.Listener {
private final WindowAndroid mWindowAndroid;
private final ChromeActivity mChromeActivity;
private final Tab mTab;
private final Tab mCurrentTab;
private final TabCreator mIncognitoTabCreator;
private final WebSigninBridge.Factory mWebSigninBridgeFactory;
private final String mContinueUrl;
private final SigninManager mSigninManager;
private @Nullable WebSigninBridge mWebSigninBridge;
private Callback<GoogleServiceAuthError> mOnSignInErrorCallback;
public AccountPickerDelegate(WindowAndroid windowAndroid,
WebSigninBridge.Factory webSigninBridgeFactory, String continueUrl) {
public AccountPickerDelegate(WindowAndroid windowAndroid, Tab currentTab,
TabCreator incognitoTabCreator, WebSigninBridge.Factory webSigninBridgeFactory,
String continueUrl) {
mWindowAndroid = windowAndroid;
// TODO(crbug.com/1125459): Remove cast and pass the ChromeActiviy dependencies explicitly
// instead.
mChromeActivity = (ChromeActivity) mWindowAndroid.getActivity().get();
mTab = mChromeActivity.getActivityTab();
mCurrentTab = currentTab;
mIncognitoTabCreator = incognitoTabCreator;
mWebSigninBridgeFactory = webSigninBridgeFactory;
mContinueUrl = continueUrl;
mSigninManager = IdentityServicesProvider.get().getSigninManager(
......@@ -62,9 +61,9 @@ public class AccountPickerDelegate implements WebSigninBridge.Listener {
*/
public IncognitoInterstitialDelegate getIncognitoInterstitialDelegate() {
IncognitoInterstitialDelegate incognitoInterstitialDelegate =
new IncognitoInterstitialDelegate(mChromeActivity,
mChromeActivity.getTabCreator(/*incognito=*/true),
HelpAndFeedback.getInstance(), mTab.getUrlString());
new IncognitoInterstitialDelegate(mWindowAndroid.getActivity().get(),
mIncognitoTabCreator, HelpAndFeedback.getInstance(),
mCurrentTab.getUrlString());
return incognitoInterstitialDelegate;
}
......@@ -135,7 +134,7 @@ public class AccountPickerDelegate implements WebSigninBridge.Listener {
@Override
public void onSigninSucceded() {
ThreadUtils.assertOnUiThread();
mTab.loadUrl(new LoadUrlParams(mContinueUrl));
mCurrentTab.loadUrl(new LoadUrlParams(mContinueUrl));
}
/**
......
......@@ -14,7 +14,6 @@ import static org.mockito.Mockito.when;
import static org.mockito.MockitoAnnotations.initMocks;
import android.accounts.Account;
import android.app.Activity;
import org.junit.After;
import org.junit.Assert;
......@@ -22,7 +21,6 @@ import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Answers;
import org.mockito.ArgumentCaptor;
import org.mockito.Captor;
import org.mockito.InOrder;
......@@ -30,11 +28,12 @@ import org.mockito.Mock;
import org.chromium.base.Callback;
import org.chromium.base.test.BaseRobolectricTestRunner;
import org.chromium.chrome.browser.app.ChromeActivity;
import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.chrome.browser.signin.IdentityServicesProvider;
import org.chromium.chrome.browser.signin.SigninManager;
import org.chromium.chrome.browser.signin.WebSigninBridge;
import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.browser.tabmodel.TabCreator;
import org.chromium.chrome.test.util.browser.signin.AccountManagerTestRule;
import org.chromium.components.signin.base.CoreAccountInfo;
import org.chromium.components.signin.base.GoogleServiceAuthError;
......@@ -43,8 +42,6 @@ import org.chromium.components.signin.identitymanager.IdentityManager;
import org.chromium.content_public.browser.LoadUrlParams;
import org.chromium.ui.base.WindowAndroid;
import java.lang.ref.WeakReference;
/**
* This class tests the {@link AccountPickerDelegate}.
*/
......@@ -70,8 +67,11 @@ public class AccountPickerDelegateTest {
@Mock
private WindowAndroid mWindowAndroidMock;
@Mock(answer = Answers.RETURNS_DEEP_STUBS)
private ChromeActivity mChromeActivityMock;
@Mock
private Tab mTabMock;
@Mock
private TabCreator mTabCreatorMock;
@Captor
private ArgumentCaptor<LoadUrlParams> mLoadUrlParamsCaptor;
......@@ -89,10 +89,8 @@ public class AccountPickerDelegateTest {
when(IdentityServicesProvider.get().getIdentityManager(any())).thenReturn(mIdentityManager);
when(IdentityServicesProvider.get().getSigninManager(any())).thenReturn(mSigninManagerMock);
when(mWindowAndroidMock.getActivity())
.thenReturn(new WeakReference<Activity>(mChromeActivityMock));
mDelegate = new AccountPickerDelegate(
mWindowAndroidMock, mWebSigninBridgeFactoryMock, CONTINUE_URL);
mDelegate = new AccountPickerDelegate(mWindowAndroidMock, mTabMock, mTabCreatorMock,
mWebSigninBridgeFactoryMock, CONTINUE_URL);
when(mWebSigninBridgeFactoryMock.create(eq(mProfileMock), any(), eq(mDelegate)))
.thenReturn(mWebSigninBridgeMock);
}
......@@ -113,7 +111,7 @@ public class AccountPickerDelegateTest {
.create(mProfileMock, coreAccountInfo, mDelegate);
calledInOrder.verify(mSigninManagerMock).signin(eq(coreAccountInfo), any());
mDelegate.onSigninSucceded();
verify(mChromeActivityMock.getActivityTab()).loadUrl(mLoadUrlParamsCaptor.capture());
verify(mTabMock).loadUrl(mLoadUrlParamsCaptor.capture());
LoadUrlParams loadUrlParams = mLoadUrlParamsCaptor.getValue();
Assert.assertEquals("Continue url does not match!", CONTINUE_URL, loadUrlParams.getUrl());
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment