Set LeaveOpenOnKeyguardHide to false when bouncer is canceled We were setting StatusBarStateController.mLeaveOpenOnKeyguardHide to true when launching bouncer when unlock is needed to access full Shade, but not setting it to false if the bouncer was canceled. This left us in a state where dismissing the bouncer another way would not make the Shade collapse, leaving it in a broken state after unlock. Bug: 319549913 Test: added unit test Flag: NONE (cherry picked from https://googleplex-android-review.googlesource.com/q/commit:fada1c560dee482be330099532fdfd8eac7afd17) Merged-In: Iad7d63ed18fd2d9b7f236086e43c35e6bd9bb112 Change-Id: Iad7d63ed18fd2d9b7f236086e43c35e6bd9bb112
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/LockscreenShadeTransitionController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/LockscreenShadeTransitionController.kt index 4ee8349..9562b8e 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/LockscreenShadeTransitionController.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/LockscreenShadeTransitionController.kt
@@ -603,6 +603,7 @@ } } val cancelHandler = Runnable { + statusBarStateController.setLeaveOpenOnKeyguardHide(false) draggedDownEntry?.apply { setUserLocked(false) notifyHeightChanged(
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/LockscreenShadeTransitionControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/LockscreenShadeTransitionControllerTest.kt index 86116a0..d91019d 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/LockscreenShadeTransitionControllerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/LockscreenShadeTransitionControllerTest.kt
@@ -35,6 +35,8 @@ import com.android.systemui.statusbar.policy.FakeConfigurationController import com.android.systemui.statusbar.policy.ResourcesSplitShadeStateController import com.android.systemui.user.domain.UserDomainLayerModule +import com.android.systemui.util.mockito.any +import com.android.systemui.util.mockito.argumentCaptor import com.android.systemui.util.mockito.mock import dagger.BindsInstance import dagger.Component @@ -55,6 +57,7 @@ import org.mockito.ArgumentMatchers.anyInt import org.mockito.ArgumentMatchers.anyLong import org.mockito.ArgumentMatchers.eq +import org.mockito.ArgumentMatchers.isNull import org.mockito.Mock import org.mockito.Mockito import org.mockito.Mockito.clearInvocations @@ -310,6 +313,17 @@ } @Test + fun testGoToLockedShadeCancelDoesntLeaveShadeOpenOnKeyguardHide() { + whenever(lockScreenUserManager.shouldShowLockscreenNotifications()).thenReturn(false) + whenever(lockScreenUserManager.isLockscreenPublicMode(any())).thenReturn(true) + transitionController.goToLockedShade(null) + val captor = argumentCaptor<Runnable>() + verify(centralSurfaces).showBouncerWithDimissAndCancelIfKeyguard(isNull(), captor.capture()) + captor.value.run() + verify(statusbarStateController).setLeaveOpenOnKeyguardHide(false) + } + + @Test fun testDragDownAmountDoesntCallOutInLockedDownShade() { whenever(nsslController.isInLockedDownShade).thenReturn(true) transitionController.dragDownAmount = 10f