diff --git a/packages/CarSystemUI/src/com/android/systemui/navigationbar/car/CarNavigationBar.java b/packages/CarSystemUI/src/com/android/systemui/navigationbar/car/CarNavigationBar.java index 3ee92bd7f3d01..df82753bed3e4 100644 --- a/packages/CarSystemUI/src/com/android/systemui/navigationbar/car/CarNavigationBar.java +++ b/packages/CarSystemUI/src/com/android/systemui/navigationbar/car/CarNavigationBar.java @@ -150,7 +150,7 @@ public class CarNavigationBar extends SystemUI implements CommandQueue.Callbacks ex.rethrowFromSystemServer(); } - mAutoHideController.addAutoHideUiElement(new AutoHideUiElement() { + mAutoHideController.setNavigationBar(new AutoHideUiElement() { @Override public void synchronizeState() { // No op. diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/AutoHideController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/AutoHideController.java index c05119de1e79d..d6039af9232a5 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/AutoHideController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/AutoHideController.java @@ -19,7 +19,6 @@ package com.android.systemui.statusbar.phone; import android.content.Context; import android.os.Handler; import android.os.RemoteException; -import android.util.ArraySet; import android.util.Log; import android.view.IWindowManager; import android.view.MotionEvent; @@ -27,8 +26,6 @@ import android.view.MotionEvent; import com.android.systemui.dagger.qualifiers.Main; import com.android.systemui.statusbar.AutoHideUiElement; -import java.util.Set; - import javax.inject.Inject; /** A controller to control all auto-hide things. Also see {@link AutoHideUiElement}. */ @@ -38,8 +35,9 @@ public class AutoHideController { private final IWindowManager mWindowManagerService; private final Handler mHandler; - private final Set mElements; + private AutoHideUiElement mStatusBar; + private AutoHideUiElement mNavigationBar; private int mDisplayId; private boolean mAutoHideSuspended; @@ -55,28 +53,24 @@ public class AutoHideController { IWindowManager iWindowManager) { mHandler = handler; mWindowManagerService = iWindowManager; - mElements = new ArraySet<>(); mDisplayId = context.getDisplayId(); } /** - * Adds an {@link AutoHideUiElement} whose behavior should be controlled by the + * Sets a {@link AutoHideUiElement} status bar that should be controlled by the * {@link AutoHideController}. */ - public void addAutoHideUiElement(AutoHideUiElement element) { - if (element != null) { - mElements.add(element); - } + public void setStatusBar(AutoHideUiElement element) { + mStatusBar = element; } /** - * Remove an {@link AutoHideUiElement} that was previously added. + * Sets a {@link AutoHideUiElement} navigation bar that should be controlled by the + * {@link AutoHideController}. */ - public void removeAutoHideUiElement(AutoHideUiElement element) { - if (element != null) { - mElements.remove(element); - } + public void setNavigationBar(AutoHideUiElement element) { + mNavigationBar = element; } private void hideTransientBars() { @@ -86,8 +80,12 @@ public class AutoHideController { Log.w(TAG, "Cannot get WindowManager"); } - for (AutoHideUiElement element : mElements) { - element.hide(); + if (mStatusBar != null) { + mStatusBar.hide(); + } + + if (mNavigationBar != null) { + mNavigationBar.hide(); } } @@ -121,15 +119,13 @@ public class AutoHideController { } private Runnable getCheckBarModesRunnable() { - if (mElements.isEmpty()) { + if (mStatusBar != null) { + return () -> mStatusBar.synchronizeState(); + } else if (mNavigationBar != null) { + return () -> mNavigationBar.synchronizeState(); + } else { return null; } - - return () -> { - for (AutoHideUiElement element : mElements) { - element.synchronizeState(); - } - }; } private void cancelAutoHide() { @@ -147,8 +143,11 @@ public class AutoHideController { && event.getAction() == MotionEvent.ACTION_OUTSIDE // touch outside the source bar. && event.getX() == 0 && event.getY() == 0; - for (AutoHideUiElement element : mElements) { - shouldHide &= element.shouldHideOnTouch(); + if (mStatusBar != null) { + shouldHide &= mStatusBar.shouldHideOnTouch(); + } + if (mNavigationBar != null) { + shouldHide &= mNavigationBar.shouldHideOnTouch(); } if (shouldHide) { @@ -162,11 +161,14 @@ public class AutoHideController { } private boolean isAnyTransientBarShown() { - for (AutoHideUiElement element : mElements) { - if (element.isVisible()) { - return true; - } + if (mStatusBar != null && mStatusBar.isVisible()) { + return true; } + + if (mNavigationBar != null && mNavigationBar.isVisible()) { + return true; + } + return false; } } 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 31266db9e1446..6fd3bb2c82220 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarFragment.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarFragment.java @@ -1075,12 +1075,9 @@ 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; if (mAutoHideController != null) { - mAutoHideController.addAutoHideUiElement(mAutoHideUiElement); + mAutoHideController.setNavigationBar(mAutoHideUiElement); } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java index d343090900a14..119662c75857d 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java @@ -1073,7 +1073,7 @@ public class StatusBar extends SystemUI implements DemoMode, } }); - mAutoHideController.addAutoHideUiElement(new AutoHideUiElement() { + mAutoHideController.setStatusBar(new AutoHideUiElement() { @Override public void synchronizeState() { checkBarModes();