Commit e039af6d authored by Alice Wang's avatar Alice Wang Committed by Commit Bot

[Signin][Android] Redirect to the continue_url in web sign-in

This CL redirects the web sign-in flow to the continue_url from Gaia
once the sign-in is finished.

Bug: 1092399
Change-Id: Ie51cfdab614c5c414abb2dee40759803c8d29491
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2264557Reviewed-by: default avatarBoris Sazonov <bsazonov@chromium.org>
Commit-Queue: Alice Wang <aliceywang@chromium.org>
Cr-Commit-Position: refs/heads/master@{#782972}
parent 3302737d
...@@ -71,14 +71,15 @@ public class SigninUtils { ...@@ -71,14 +71,15 @@ public class SigninUtils {
} }
@CalledByNative @CalledByNative
private static void openAccountPickerBottomSheet(WindowAndroid windowAndroid) { private static void openAccountPickerBottomSheet(
WindowAndroid windowAndroid, String continueUrl) {
ThreadUtils.assertOnUiThread(); ThreadUtils.assertOnUiThread();
if (IdentityServicesProvider.get().getSigninManager().isSignInAllowed()) { if (IdentityServicesProvider.get().getSigninManager().isSignInAllowed()) {
ChromeActivity activity = (ChromeActivity) windowAndroid.getActivity().get(); ChromeActivity activity = (ChromeActivity) windowAndroid.getActivity().get();
AccountPickerBottomSheetCoordinator coordinator = AccountPickerBottomSheetCoordinator coordinator =
new AccountPickerBottomSheetCoordinator(activity, new AccountPickerBottomSheetCoordinator(activity,
activity.getBottomSheetController(), activity.getBottomSheetController(),
new AccountPickerDelegate(activity)); new AccountPickerDelegate(activity, continueUrl));
} }
} }
......
...@@ -30,11 +30,13 @@ import org.chromium.content_public.browser.UiThreadTaskTraits; ...@@ -30,11 +30,13 @@ import org.chromium.content_public.browser.UiThreadTaskTraits;
public class AccountPickerDelegate implements AccountPickerCoordinator.Listener { public class AccountPickerDelegate implements AccountPickerCoordinator.Listener {
private final ChromeActivity mChromeActivity; private final ChromeActivity mChromeActivity;
private final Tab mTab; private final Tab mTab;
private final String mContinueUrl;
public AccountPickerDelegate(ChromeActivity chromeActivity) { public AccountPickerDelegate(ChromeActivity chromeActivity, String continueUrl) {
mChromeActivity = chromeActivity; mChromeActivity = chromeActivity;
// TODO(https://crbug.com/1095554): Check if website redirects after sign-in // TODO(https://crbug.com/1095554): Check if website redirects after sign-in
mTab = mChromeActivity.getActivityTab(); mTab = mChromeActivity.getActivityTab();
mContinueUrl = continueUrl;
} }
/** /**
* Notifies that the user has selected an account. * Notifies that the user has selected an account.
...@@ -54,11 +56,8 @@ public class AccountPickerDelegate implements AccountPickerCoordinator.Listener ...@@ -54,11 +56,8 @@ public class AccountPickerDelegate implements AccountPickerCoordinator.Listener
// We should wait for the cookie signin and cookie regeneration here, // We should wait for the cookie signin and cookie regeneration here,
// PostTask.postDelayedTask is just a temporary measure for testing the // PostTask.postDelayedTask is just a temporary measure for testing the
// flow, it will be removed soon. // flow, it will be removed soon.
PostTask.postDelayedTask(UiThreadTaskTraits.DEFAULT, () -> { PostTask.postDelayedTask(UiThreadTaskTraits.DEFAULT,
// TODO(https//crbug.com/1092399): () -> { mTab.loadUrl(new LoadUrlParams(mContinueUrl)); }, 2000);
// Replace this with a continue URL got from GAIA
mTab.loadUrl(new LoadUrlParams("https://google.com"));
}, 2000);
} }
@Override @Override
......
...@@ -28,10 +28,14 @@ void SigninUtils::OpenAccountManagementScreen( ...@@ -28,10 +28,14 @@ void SigninUtils::OpenAccountManagementScreen(
: base::android::ConvertUTF8ToJavaString(env, email)); : base::android::ConvertUTF8ToJavaString(env, email));
} }
void SigninUtils::OpenAccountPickerBottomSheet(ui::WindowAndroid* window) { void SigninUtils::OpenAccountPickerBottomSheet(
ui::WindowAndroid* window,
const std::string& continue_url) {
DCHECK(window); DCHECK(window);
JNIEnv* env = base::android::AttachCurrentThread(); JNIEnv* env = base::android::AttachCurrentThread();
Java_SigninUtils_openAccountPickerBottomSheet(env, window->GetJavaObject()); Java_SigninUtils_openAccountPickerBottomSheet(
env, window->GetJavaObject(),
base::android::ConvertUTF8ToJavaString(env, continue_url));
} }
static void JNI_SigninUtils_LogEvent(JNIEnv* env, static void JNI_SigninUtils_LogEvent(JNIEnv* env,
......
...@@ -23,7 +23,8 @@ class SigninUtils { ...@@ -23,7 +23,8 @@ class SigninUtils {
const std::string& email); const std::string& email);
// Opens the account picker bottomsheet // Opens the account picker bottomsheet
static void OpenAccountPickerBottomSheet(ui::WindowAndroid* window); static void OpenAccountPickerBottomSheet(ui::WindowAndroid* window,
const std::string& continue_url);
private: private:
DISALLOW_COPY_AND_ASSIGN(SigninUtils); DISALLOW_COPY_AND_ASSIGN(SigninUtils);
......
...@@ -297,7 +297,10 @@ void ProcessMirrorHeader( ...@@ -297,7 +297,10 @@ void ProcessMirrorHeader(
if (manage_accounts_params.show_consistency_promo && if (manage_accounts_params.show_consistency_promo &&
base::FeatureList::IsEnabled(kMobileIdentityConsistency)) { base::FeatureList::IsEnabled(kMobileIdentityConsistency)) {
auto* window = web_contents->GetNativeView()->GetWindowAndroid(); auto* window = web_contents->GetNativeView()->GetWindowAndroid();
SigninUtils::OpenAccountPickerBottomSheet(window); SigninUtils::OpenAccountPickerBottomSheet(
window, manage_accounts_params.continue_url.empty()
? chrome::kChromeUINativeNewTabURL
: manage_accounts_params.continue_url);
return; return;
} }
if (service_type == signin::GAIA_SERVICE_TYPE_INCOGNITO) { if (service_type == signin::GAIA_SERVICE_TYPE_INCOGNITO) {
......
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