diff options
4 files changed, 38 insertions, 5 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/navigationbar/TaskbarDelegate.java b/packages/SystemUI/src/com/android/systemui/navigationbar/TaskbarDelegate.java index 6ee86aa021a3..5b02aaf089e0 100644 --- a/packages/SystemUI/src/com/android/systemui/navigationbar/TaskbarDelegate.java +++ b/packages/SystemUI/src/com/android/systemui/navigationbar/TaskbarDelegate.java @@ -41,7 +41,6 @@ import static com.android.systemui.statusbar.phone.BarTransitions.TransitionMode import android.app.StatusBarManager; import android.app.StatusBarManager.WindowVisibleState; -import android.content.ComponentName; import android.content.Context; import android.content.res.Configuration; import android.graphics.Rect; @@ -68,7 +67,6 @@ import com.android.systemui.model.SysUiState; import com.android.systemui.navigationbar.gestural.EdgeBackGestureHandler; import com.android.systemui.recents.OverviewProxyService; import com.android.systemui.shared.recents.utilities.Utilities; -import com.android.systemui.shared.system.ActivityManagerWrapper; import com.android.systemui.shared.system.QuickStepContract; import com.android.systemui.shared.system.TaskStackChangeListener; import com.android.systemui.shared.system.TaskStackChangeListeners; @@ -78,6 +76,7 @@ import com.android.systemui.statusbar.phone.AutoHideController; import com.android.systemui.statusbar.phone.BarTransitions; import com.android.systemui.statusbar.phone.LightBarController; import com.android.systemui.statusbar.phone.LightBarTransitionsController; +import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager; import com.android.wm.shell.back.BackAnimation; import com.android.wm.shell.pip.Pip; @@ -169,16 +168,20 @@ public class TaskbarDelegate implements CommandQueue.Callbacks, private BackAnimation mBackAnimation; + private StatusBarKeyguardViewManager mStatusBarKeyguardViewManager; @Inject public TaskbarDelegate(Context context, EdgeBackGestureHandler.Factory edgeBackGestureHandlerFactory, - LightBarTransitionsController.Factory lightBarTransitionsControllerFactory) { + LightBarTransitionsController.Factory lightBarTransitionsControllerFactory, + StatusBarKeyguardViewManager statusBarKeyguardViewManager) { mLightBarTransitionsControllerFactory = lightBarTransitionsControllerFactory; mEdgeBackGestureHandler = edgeBackGestureHandlerFactory.create(context); mContext = context; mDisplayManager = mContext.getSystemService(DisplayManager.class); mPipListener = mEdgeBackGestureHandler::setPipStashExclusionBounds; + mStatusBarKeyguardViewManager = statusBarKeyguardViewManager; + mStatusBarKeyguardViewManager.setTaskbarDelegate(this); } public void setDependencies(CommandQueue commandQueue, diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java index b0e4668e2a45..80b0262482ac 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java @@ -66,6 +66,7 @@ import com.android.systemui.keyguard.domain.interactor.PrimaryBouncerCallbackInt import com.android.systemui.keyguard.domain.interactor.PrimaryBouncerInteractor; import com.android.systemui.navigationbar.NavigationBarView; import com.android.systemui.navigationbar.NavigationModeController; +import com.android.systemui.navigationbar.TaskbarDelegate; import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.shade.NotificationPanelViewController; import com.android.systemui.shade.ShadeController; @@ -300,6 +301,7 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb @Nullable private KeyguardBypassController mBypassController; @Nullable private OccludingAppBiometricUI mOccludingAppBiometricUI; + @Nullable private TaskbarDelegate mTaskbarDelegate; private final KeyguardUpdateMonitorCallback mUpdateMonitorCallback = new KeyguardUpdateMonitorCallback() { @Override @@ -564,6 +566,10 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb updateStates(); } + public void setTaskbarDelegate(TaskbarDelegate taskbarDelegate) { + mTaskbarDelegate = taskbarDelegate; + } + /** * Show the keyguard. Will handle creating and attaching to the view manager * lazily. @@ -1194,7 +1200,8 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb * Updates the visibility of the nav bar window (which will cause insets changes). */ protected void updateNavigationBarVisibility(boolean navBarVisible) { - if (mCentralSurfaces.getNavigationBarView() != null) { + if (mCentralSurfaces.getNavigationBarView() != null + || (mTaskbarDelegate != null && mTaskbarDelegate.isInitialized())) { if (navBarVisible) { long delay = getNavBarShowDelay(); if (delay == 0) { diff --git a/packages/SystemUI/tests/src/com/android/systemui/navigationbar/TaskbarDelegateTest.kt b/packages/SystemUI/tests/src/com/android/systemui/navigationbar/TaskbarDelegateTest.kt index 537dfb821fef..1c9336a3fc66 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/navigationbar/TaskbarDelegateTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/navigationbar/TaskbarDelegateTest.kt @@ -13,6 +13,7 @@ import com.android.systemui.statusbar.CommandQueue import com.android.systemui.statusbar.phone.AutoHideController import com.android.systemui.statusbar.phone.LightBarController import com.android.systemui.statusbar.phone.LightBarTransitionsController +import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager import com.android.wm.shell.back.BackAnimation import com.android.wm.shell.pip.Pip import org.junit.Before @@ -66,6 +67,8 @@ class TaskbarDelegateTest : SysuiTestCase() { lateinit var mBackAnimation: BackAnimation @Mock lateinit var mCurrentSysUiState: NavBarHelper.CurrentSysuiState + @Mock + lateinit var mStatusBarKeyguardViewManager: StatusBarKeyguardViewManager @Before fun setup() { @@ -76,7 +79,7 @@ class TaskbarDelegateTest : SysuiTestCase() { `when`(mSysUiState.setFlag(anyInt(), anyBoolean())).thenReturn(mSysUiState) mTaskStackChangeListeners = TaskStackChangeListeners.getTestInstance() mTaskbarDelegate = TaskbarDelegate(context, mEdgeBackGestureHandlerFactory, - mLightBarControllerFactory) + mLightBarControllerFactory, mStatusBarKeyguardViewManager) mTaskbarDelegate.setDependencies(mCommandQueue, mOverviewProxyService, mNavBarHelper, mNavigationModeController, mSysUiState, mDumpManager, mAutoHideController, mLightBarController, mOptionalPip, mBackAnimation, mTaskStackChangeListeners) diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManagerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManagerTest.java index d8446f4721b3..1aad83eb73ae 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManagerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManagerTest.java @@ -38,6 +38,8 @@ import android.testing.TestableLooper; import android.view.View; import android.view.ViewGroup; import android.view.ViewRootImpl; +import android.view.WindowInsets; +import android.view.WindowInsetsController; import android.window.BackEvent; import android.window.OnBackAnimationCallback; import android.window.OnBackInvokedCallback; @@ -65,8 +67,10 @@ import com.android.systemui.keyguard.domain.interactor.PrimaryBouncerCallbackInt import com.android.systemui.keyguard.domain.interactor.PrimaryBouncerCallbackInteractor.PrimaryBouncerExpansionCallback; import com.android.systemui.keyguard.domain.interactor.PrimaryBouncerInteractor; import com.android.systemui.navigationbar.NavigationModeController; +import com.android.systemui.navigationbar.TaskbarDelegate; import com.android.systemui.plugins.ActivityStarter.OnDismissAction; import com.android.systemui.shade.NotificationPanelViewController; +import com.android.systemui.shade.NotificationShadeWindowView; import com.android.systemui.shade.ShadeController; import com.android.systemui.shade.ShadeExpansionChangeEvent; import com.android.systemui.shade.ShadeExpansionStateManager; @@ -123,6 +127,9 @@ public class StatusBarKeyguardViewManagerTest extends SysuiTestCase { @Mock private BouncerView mBouncerView; @Mock private BouncerViewDelegate mBouncerViewDelegate; @Mock private OnBackAnimationCallback mBouncerViewDelegateBackCallback; + @Mock private NotificationShadeWindowView mNotificationShadeWindowView; + @Mock private WindowInsetsController mWindowInsetsController; + @Mock private TaskbarDelegate mTaskbarDelegate; private StatusBarKeyguardViewManager mStatusBarKeyguardViewManager; private PrimaryBouncerCallbackInteractor.PrimaryBouncerExpansionCallback @@ -151,6 +158,11 @@ public class StatusBarKeyguardViewManagerTest extends SysuiTestCase { .isEnabled(Flags.WM_ENABLE_PREDICTIVE_BACK_BOUNCER_ANIM)) .thenReturn(true); + when(mCentralSurfaces.getNotificationShadeWindowView()) + .thenReturn(mNotificationShadeWindowView); + when(mNotificationShadeWindowView.getWindowInsetsController()) + .thenReturn(mWindowInsetsController); + mStatusBarKeyguardViewManager = new StatusBarKeyguardViewManager( getContext(), @@ -640,6 +652,14 @@ public class StatusBarKeyguardViewManagerTest extends SysuiTestCase { } @Test + public void testHideTaskbar() { + when(mTaskbarDelegate.isInitialized()).thenReturn(true); + mStatusBarKeyguardViewManager.setTaskbarDelegate(mTaskbarDelegate); + mStatusBarKeyguardViewManager.updateNavigationBarVisibility(false); + verify(mWindowInsetsController).hide(WindowInsets.Type.navigationBars()); + } + + @Test public void hideAlternateBouncer_beforeCentralSurfacesRegistered() { mStatusBarKeyguardViewManager = new StatusBarKeyguardViewManager( |