[Android][WebSignin] Fix crash when bottomSheetController is null
This CL dismisses the account picker bottom sheet when the bottom
sheet controller is null.
(cherry picked from commit d910f8292f551edad96cfaeda88eaf0e4e72df48)
Bug: 1136799
Change-Id: I9814c10f6becb07c3e95ab93f0d81b69af936853
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2463307
Commit-Queue: Alice Wang <[email protected]>
Reviewed-by: Boris Sazonov <[email protected]>
Cr-Original-Commit-Position: refs/heads/master@{#815676}
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2463575
Reviewed-by: Alice Wang <[email protected]>
Cr-Commit-Position: refs/branch-heads/4280@{#309}
Cr-Branched-From: ea420fb963f9658c9969b6513c56b8f47efa1a2a-refs/heads/master@{#812852}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninUtils.java
index 75f7006..6a87990 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninUtils.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/signin/SigninUtils.java
@@ -27,6 +27,7 @@
import org.chromium.chrome.browser.sync.settings.AccountManagementFragment;
import org.chromium.chrome.browser.tabmodel.TabCreator;
import org.chromium.chrome.browser.tabmodel.TabModel;
+import org.chromium.components.browser_ui.bottomsheet.BottomSheetController;
import org.chromium.components.browser_ui.bottomsheet.BottomSheetControllerProvider;
import org.chromium.components.browser_ui.settings.ManagedPreferencesUtils;
import org.chromium.components.signin.AccountManagerFacadeProvider;
@@ -96,8 +97,16 @@
AccountConsistencyPromoAction.SUPPRESSED_NO_ACCOUNTS);
return;
}
- ChromeActivity activity = (ChromeActivity) windowAndroid.getActivity().get();
+ BottomSheetController bottomSheetController =
+ BottomSheetControllerProvider.from(windowAndroid);
+ if (bottomSheetController == null) {
+ // The bottomSheetController can be null when google.com is just opened inside a
+ // bottom sheet for example. In this case, it's better to disable the account picker
+ // bottom sheet.
+ return;
+ }
+ ChromeActivity activity = (ChromeActivity) windowAndroid.getActivity().get();
// To close the current regular tab after the user clicks on "Continue" in the incognito
// interstitial.
TabModel regularTabModel = activity.getTabModelSelector().getModel(/*incognito=*/false);
@@ -109,7 +118,7 @@
HelpAndFeedback.getInstance());
AccountPickerBottomSheetCoordinator coordinator = new AccountPickerBottomSheetCoordinator(
- windowAndroid.getContext().get(), BottomSheetControllerProvider.from(windowAndroid),
+ windowAndroid.getContext().get(), bottomSheetController,
new AccountPickerDelegate(windowAndroid, activity.getActivityTab(),
new WebSigninBridge.Factory(), continueUrl),
incognitoInterstitialDelegate);