summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Heemin Seog <hseog@google.com> 2020-03-06 15:01:08 -0800
committer Heemin Seog <hseog@google.com> 2020-03-06 15:25:01 -0800
commit8cfe6c5639b4a4c11070c7e44e06cd2871dc3aad (patch)
tree66a251398f9c24303b445d23032c6c5ef3c3bcb6
parent91b4f26c5b40292eac5a00e477eb747f1f859ba3 (diff)
Clean up navbar for autohide
AutoHideController's reference to the navbar should be removed when nav bar is removed. Bug: 150961453 Test: build Change-Id: Id5e09f529f4898f9991b0bb97fad7ccf4e84b05c
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/NavigationBarController.java1
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarFragment.java49
2 files changed, 29 insertions, 21 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NavigationBarController.java b/packages/SystemUI/src/com/android/systemui/statusbar/NavigationBarController.java
index ebac4b293522..1b7524521d76 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/NavigationBarController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/NavigationBarController.java
@@ -165,6 +165,7 @@ public class NavigationBarController implements Callbacks {
private void removeNavigationBar(int displayId) {
NavigationBarFragment navBar = mNavigationBars.get(displayId);
if (navBar != null) {
+ navBar.setAutoHideController(/* autoHideController */ null);
View navigationWindow = navBar.getView().getRootView();
WindowManagerGlobal.getInstance()
.removeView(navigationWindow, true /* immediate */);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarFragment.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarFragment.java
index 02cf8ccbef8b..b119f0b1f1e2 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarFragment.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarFragment.java
@@ -205,6 +205,28 @@ public class NavigationBarFragment extends LifecycleFragment implements Callback
private final Handler mHandler;
+ private final AutoHideUiElement mAutoHideUiElement = new AutoHideUiElement() {
+ @Override
+ public void synchronizeState() {
+ checkNavBarModes();
+ }
+
+ @Override
+ public boolean shouldHideOnTouch() {
+ return !mNotificationRemoteInputManager.getController().isRemoteInputActive();
+ }
+
+ @Override
+ public boolean isVisible() {
+ return isTransientShown();
+ }
+
+ @Override
+ public void hide() {
+ clearTransient();
+ }
+ };
+
private final OverviewProxyListener mOverviewProxyListener = new OverviewProxyListener() {
@Override
public void onConnectionChanged(boolean isConnected) {
@@ -1052,28 +1074,13 @@ public class NavigationBarFragment extends LifecycleFragment implements Callback
/** Sets {@link AutoHideController} to the navigation bar. */
public void setAutoHideController(AutoHideController autoHideController) {
+ if (mAutoHideController != null) {
+ mAutoHideController.removeAutoHideUiElement(mAutoHideUiElement);
+ }
mAutoHideController = autoHideController;
- mAutoHideController.addAutoHideUiElement(new AutoHideUiElement() {
- @Override
- public void synchronizeState() {
- checkNavBarModes();
- }
-
- @Override
- public boolean shouldHideOnTouch() {
- return !mNotificationRemoteInputManager.getController().isRemoteInputActive();
- }
-
- @Override
- public boolean isVisible() {
- return isTransientShown();
- }
-
- @Override
- public void hide() {
- clearTransient();
- }
- });
+ if (mAutoHideController != null) {
+ mAutoHideController.addAutoHideUiElement(mAutoHideUiElement);
+ }
}
private boolean isTransientShown() {