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 { ...@@ -81,10 +81,11 @@ public class SigninUtils {
if (signinManager.isSignInAllowed()) { if (signinManager.isSignInAllowed()) {
ChromeActivity activity = (ChromeActivity) windowAndroid.getActivity().get(); ChromeActivity activity = (ChromeActivity) windowAndroid.getActivity().get();
AccountPickerBottomSheetCoordinator coordinator = AccountPickerBottomSheetCoordinator coordinator =
new AccountPickerBottomSheetCoordinator(activity, new AccountPickerBottomSheetCoordinator(windowAndroid.getContext().get(),
BottomSheetControllerProvider.from(activity.getWindowAndroid()), BottomSheetControllerProvider.from(windowAndroid),
new AccountPickerDelegate( new AccountPickerDelegate(windowAndroid, activity.getActivityTab(),
windowAndroid, new WebSigninBridge.Factory(), continueUrl)); activity.getTabCreator(/*incognito=*/true),
new WebSigninBridge.Factory(), continueUrl));
} }
} }
......
...@@ -13,7 +13,6 @@ import androidx.annotation.Nullable; ...@@ -13,7 +13,6 @@ import androidx.annotation.Nullable;
import org.chromium.base.Callback; import org.chromium.base.Callback;
import org.chromium.base.ThreadUtils; import org.chromium.base.ThreadUtils;
import org.chromium.chrome.browser.app.ChromeActivity;
import org.chromium.chrome.browser.help.HelpAndFeedback; import org.chromium.chrome.browser.help.HelpAndFeedback;
import org.chromium.chrome.browser.incognito.interstitial.IncognitoInterstitialDelegate; import org.chromium.chrome.browser.incognito.interstitial.IncognitoInterstitialDelegate;
import org.chromium.chrome.browser.profiles.Profile; import org.chromium.chrome.browser.profiles.Profile;
...@@ -22,6 +21,7 @@ import org.chromium.chrome.browser.signin.SigninManager; ...@@ -22,6 +21,7 @@ import org.chromium.chrome.browser.signin.SigninManager;
import org.chromium.chrome.browser.signin.SigninUtils; import org.chromium.chrome.browser.signin.SigninUtils;
import org.chromium.chrome.browser.signin.WebSigninBridge; import org.chromium.chrome.browser.signin.WebSigninBridge;
import org.chromium.chrome.browser.tab.Tab; 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.AccountManagerFacadeProvider;
import org.chromium.components.signin.base.CoreAccountInfo; import org.chromium.components.signin.base.CoreAccountInfo;
import org.chromium.components.signin.base.GoogleServiceAuthError; import org.chromium.components.signin.base.GoogleServiceAuthError;
...@@ -36,21 +36,20 @@ import org.chromium.ui.base.WindowAndroid; ...@@ -36,21 +36,20 @@ import org.chromium.ui.base.WindowAndroid;
*/ */
public class AccountPickerDelegate implements WebSigninBridge.Listener { public class AccountPickerDelegate implements WebSigninBridge.Listener {
private final WindowAndroid mWindowAndroid; private final WindowAndroid mWindowAndroid;
private final ChromeActivity mChromeActivity; private final Tab mCurrentTab;
private final Tab mTab; private final TabCreator mIncognitoTabCreator;
private final WebSigninBridge.Factory mWebSigninBridgeFactory; private final WebSigninBridge.Factory mWebSigninBridgeFactory;
private final String mContinueUrl; private final String mContinueUrl;
private final SigninManager mSigninManager; private final SigninManager mSigninManager;
private @Nullable WebSigninBridge mWebSigninBridge; private @Nullable WebSigninBridge mWebSigninBridge;
private Callback<GoogleServiceAuthError> mOnSignInErrorCallback; private Callback<GoogleServiceAuthError> mOnSignInErrorCallback;
public AccountPickerDelegate(WindowAndroid windowAndroid, public AccountPickerDelegate(WindowAndroid windowAndroid, Tab currentTab,
WebSigninBridge.Factory webSigninBridgeFactory, String continueUrl) { TabCreator incognitoTabCreator, WebSigninBridge.Factory webSigninBridgeFactory,
String continueUrl) {
mWindowAndroid = windowAndroid; mWindowAndroid = windowAndroid;
// TODO(crbug.com/1125459): Remove cast and pass the ChromeActiviy dependencies explicitly mCurrentTab = currentTab;
// instead. mIncognitoTabCreator = incognitoTabCreator;
mChromeActivity = (ChromeActivity) mWindowAndroid.getActivity().get();
mTab = mChromeActivity.getActivityTab();
mWebSigninBridgeFactory = webSigninBridgeFactory; mWebSigninBridgeFactory = webSigninBridgeFactory;
mContinueUrl = continueUrl; mContinueUrl = continueUrl;
mSigninManager = IdentityServicesProvider.get().getSigninManager( mSigninManager = IdentityServicesProvider.get().getSigninManager(
...@@ -62,9 +61,9 @@ public class AccountPickerDelegate implements WebSigninBridge.Listener { ...@@ -62,9 +61,9 @@ public class AccountPickerDelegate implements WebSigninBridge.Listener {
*/ */
public IncognitoInterstitialDelegate getIncognitoInterstitialDelegate() { public IncognitoInterstitialDelegate getIncognitoInterstitialDelegate() {
IncognitoInterstitialDelegate incognitoInterstitialDelegate = IncognitoInterstitialDelegate incognitoInterstitialDelegate =
new IncognitoInterstitialDelegate(mChromeActivity, new IncognitoInterstitialDelegate(mWindowAndroid.getActivity().get(),
mChromeActivity.getTabCreator(/*incognito=*/true), mIncognitoTabCreator, HelpAndFeedback.getInstance(),
HelpAndFeedback.getInstance(), mTab.getUrlString()); mCurrentTab.getUrlString());
return incognitoInterstitialDelegate; return incognitoInterstitialDelegate;
} }
...@@ -135,7 +134,7 @@ public class AccountPickerDelegate implements WebSigninBridge.Listener { ...@@ -135,7 +134,7 @@ public class AccountPickerDelegate implements WebSigninBridge.Listener {
@Override @Override
public void onSigninSucceded() { public void onSigninSucceded() {
ThreadUtils.assertOnUiThread(); ThreadUtils.assertOnUiThread();
mTab.loadUrl(new LoadUrlParams(mContinueUrl)); mCurrentTab.loadUrl(new LoadUrlParams(mContinueUrl));
} }
/** /**
......
...@@ -14,7 +14,6 @@ import static org.mockito.Mockito.when; ...@@ -14,7 +14,6 @@ import static org.mockito.Mockito.when;
import static org.mockito.MockitoAnnotations.initMocks; import static org.mockito.MockitoAnnotations.initMocks;
import android.accounts.Account; import android.accounts.Account;
import android.app.Activity;
import org.junit.After; import org.junit.After;
import org.junit.Assert; import org.junit.Assert;
...@@ -22,7 +21,6 @@ import org.junit.Before; ...@@ -22,7 +21,6 @@ import org.junit.Before;
import org.junit.Rule; import org.junit.Rule;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.mockito.Answers;
import org.mockito.ArgumentCaptor; import org.mockito.ArgumentCaptor;
import org.mockito.Captor; import org.mockito.Captor;
import org.mockito.InOrder; import org.mockito.InOrder;
...@@ -30,11 +28,12 @@ import org.mockito.Mock; ...@@ -30,11 +28,12 @@ import org.mockito.Mock;
import org.chromium.base.Callback; import org.chromium.base.Callback;
import org.chromium.base.test.BaseRobolectricTestRunner; 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.profiles.Profile;
import org.chromium.chrome.browser.signin.IdentityServicesProvider; import org.chromium.chrome.browser.signin.IdentityServicesProvider;
import org.chromium.chrome.browser.signin.SigninManager; import org.chromium.chrome.browser.signin.SigninManager;
import org.chromium.chrome.browser.signin.WebSigninBridge; 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.chrome.test.util.browser.signin.AccountManagerTestRule;
import org.chromium.components.signin.base.CoreAccountInfo; import org.chromium.components.signin.base.CoreAccountInfo;
import org.chromium.components.signin.base.GoogleServiceAuthError; import org.chromium.components.signin.base.GoogleServiceAuthError;
...@@ -43,8 +42,6 @@ import org.chromium.components.signin.identitymanager.IdentityManager; ...@@ -43,8 +42,6 @@ import org.chromium.components.signin.identitymanager.IdentityManager;
import org.chromium.content_public.browser.LoadUrlParams; import org.chromium.content_public.browser.LoadUrlParams;
import org.chromium.ui.base.WindowAndroid; import org.chromium.ui.base.WindowAndroid;
import java.lang.ref.WeakReference;
/** /**
* This class tests the {@link AccountPickerDelegate}. * This class tests the {@link AccountPickerDelegate}.
*/ */
...@@ -70,8 +67,11 @@ public class AccountPickerDelegateTest { ...@@ -70,8 +67,11 @@ public class AccountPickerDelegateTest {
@Mock @Mock
private WindowAndroid mWindowAndroidMock; private WindowAndroid mWindowAndroidMock;
@Mock(answer = Answers.RETURNS_DEEP_STUBS) @Mock
private ChromeActivity mChromeActivityMock; private Tab mTabMock;
@Mock
private TabCreator mTabCreatorMock;
@Captor @Captor
private ArgumentCaptor<LoadUrlParams> mLoadUrlParamsCaptor; private ArgumentCaptor<LoadUrlParams> mLoadUrlParamsCaptor;
...@@ -89,10 +89,8 @@ public class AccountPickerDelegateTest { ...@@ -89,10 +89,8 @@ public class AccountPickerDelegateTest {
when(IdentityServicesProvider.get().getIdentityManager(any())).thenReturn(mIdentityManager); when(IdentityServicesProvider.get().getIdentityManager(any())).thenReturn(mIdentityManager);
when(IdentityServicesProvider.get().getSigninManager(any())).thenReturn(mSigninManagerMock); when(IdentityServicesProvider.get().getSigninManager(any())).thenReturn(mSigninManagerMock);
when(mWindowAndroidMock.getActivity()) mDelegate = new AccountPickerDelegate(mWindowAndroidMock, mTabMock, mTabCreatorMock,
.thenReturn(new WeakReference<Activity>(mChromeActivityMock)); mWebSigninBridgeFactoryMock, CONTINUE_URL);
mDelegate = new AccountPickerDelegate(
mWindowAndroidMock, mWebSigninBridgeFactoryMock, CONTINUE_URL);
when(mWebSigninBridgeFactoryMock.create(eq(mProfileMock), any(), eq(mDelegate))) when(mWebSigninBridgeFactoryMock.create(eq(mProfileMock), any(), eq(mDelegate)))
.thenReturn(mWebSigninBridgeMock); .thenReturn(mWebSigninBridgeMock);
} }
...@@ -113,7 +111,7 @@ public class AccountPickerDelegateTest { ...@@ -113,7 +111,7 @@ public class AccountPickerDelegateTest {
.create(mProfileMock, coreAccountInfo, mDelegate); .create(mProfileMock, coreAccountInfo, mDelegate);
calledInOrder.verify(mSigninManagerMock).signin(eq(coreAccountInfo), any()); calledInOrder.verify(mSigninManagerMock).signin(eq(coreAccountInfo), any());
mDelegate.onSigninSucceded(); mDelegate.onSigninSucceded();
verify(mChromeActivityMock.getActivityTab()).loadUrl(mLoadUrlParamsCaptor.capture()); verify(mTabMock).loadUrl(mLoadUrlParamsCaptor.capture());
LoadUrlParams loadUrlParams = mLoadUrlParamsCaptor.getValue(); LoadUrlParams loadUrlParams = mLoadUrlParamsCaptor.getValue();
Assert.assertEquals("Continue url does not match!", CONTINUE_URL, loadUrlParams.getUrl()); 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