[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);