Commit 3100eaf4 authored by Jinsuk Kim's avatar Jinsuk Kim Committed by Commit Bot

Android: Fix IllegaStateException from gesture navigation

The reported exception comes from HistoryNavigationDelgateFactory
trying to get BottomSheetController when the activity is already
destroyed. This CL puts a guard against the access to the activity
in a wrong state.

Bug: 990987
Change-Id: I86e9ea0611dafd301eefcb07a3a6b1ade5792a2a
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1898161Reviewed-by: default avatarMatthew Jones <mdjones@chromium.org>
Reviewed-by: default avatarJinsuk Kim <jinsukkim@chromium.org>
Commit-Queue: Jinsuk Kim <jinsukkim@chromium.org>
Cr-Commit-Position: refs/heads/master@{#712765}
parent b52ac904
......@@ -11,6 +11,7 @@ import android.view.WindowInsets;
import org.chromium.base.BuildInfo;
import org.chromium.base.Supplier;
import org.chromium.chrome.browser.ChromeActivity;
import org.chromium.chrome.browser.ChromeFeatureList;
import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.browser.widget.bottomsheet.BottomSheetController;
......@@ -63,6 +64,13 @@ public class HistoryNavigationDelegateFactory {
if (!isFeatureFlagEnabled() || tab.getActivity() == null) return DEFAULT;
return new HistoryNavigationDelegate() {
// TODO(jinsukkim): Avoid getting activity from tab.
private final Supplier<BottomSheetController> mController = () -> {
ChromeActivity activity = tab.getActivity();
return activity == null || activity.isActivityFinishingOrDestroyed()
? null
: activity.getBottomSheetController();
};
private Runnable mInsetsChangeRunnable;
@Override
......@@ -77,8 +85,7 @@ public class HistoryNavigationDelegateFactory {
@Override
public Supplier<BottomSheetController> getBottomSheetController() {
// TODO(jinsukkim): Avoid getting activity from tab.
return tab.getActivity()::getBottomSheetController;
return mController;
}
@TargetApi(Build.VERSION_CODES.O)
......
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