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
This commit is contained in:
Vinit Nayak
2021-09-20 12:01:31 -07:00
parent b954ad84e2
commit d6bb344225

View File

@@ -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 {