From d6bb34422561cf723f2bfb4dd2ff35073b7ff9b0 Mon Sep 17 00:00:00 2001 From: Vinit Nayak Date: Mon, 20 Sep 2021 12:01:31 -0700 Subject: [PATCH] Update edgeBackGestureHandler for Taskbar on init/destroy() * TaskbarDelegate wasn't calling mEdgeBackGestureHandler.onNavBarDetatched() when going from large screen to phone screen * Also cache taskbar visibility to prevent multiple instances of the same listener from being added Bug: 197058461 Test: Went from tablet to phone, used back, saw Launcher#onBackPressed() only got called once Change-Id: I63b742b047cbfac1421c5a0e8422e9e341c62627 --- .../android/systemui/navigationbar/TaskbarDelegate.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/packages/SystemUI/src/com/android/systemui/navigationbar/TaskbarDelegate.java b/packages/SystemUI/src/com/android/systemui/navigationbar/TaskbarDelegate.java index ecc3245e286ab..3d655a8f83730 100644 --- a/packages/SystemUI/src/com/android/systemui/navigationbar/TaskbarDelegate.java +++ b/packages/SystemUI/src/com/android/systemui/navigationbar/TaskbarDelegate.java @@ -71,6 +71,7 @@ public class TaskbarDelegate implements CommandQueue.Callbacks, private int mDisabledFlags; private @WindowVisibleState int mTaskBarWindowState = WINDOW_STATE_SHOWING; private @Behavior int mBehavior; + private boolean mTaskbarVisible = false; @Inject public TaskbarDelegate(Context context) { @@ -96,6 +97,8 @@ public class TaskbarDelegate implements CommandQueue.Callbacks, mOverviewProxyService.removeCallback(this); mNavigationModeController.removeListener(this); mNavigationBarA11yHelper.removeA11yEventListener(mNavA11yEventListener); + mEdgeBackGestureHandler.onNavBarDetached(); + mTaskbarVisible = false; } public void init(int displayId) { @@ -104,6 +107,8 @@ public class TaskbarDelegate implements CommandQueue.Callbacks, mOverviewProxyService.addCallback(this); mNavigationModeController.addListener(this); mNavigationBarA11yHelper.registerA11yEventListener(mNavA11yEventListener); + mEdgeBackGestureHandler.onNavBarAttached(); + mTaskbarVisible = true; // Set initial state for any listeners updateSysuiFlags(); } @@ -180,6 +185,10 @@ public class TaskbarDelegate implements CommandQueue.Callbacks, @Override public void onTaskbarStatusUpdated(boolean visible, boolean stashed) { + if (mTaskbarVisible == visible) { + return; + } + mTaskbarVisible = visible; if (visible) { mEdgeBackGestureHandler.onNavBarAttached(); } else {