From e8610d7369e4788831991fd2e5e50c164914accd Mon Sep 17 00:00:00 2001 From: Aaron Liu Date: Mon, 7 Aug 2023 09:04:07 -0700 Subject: [PATCH 1/2] Revert "Fix user switcher flicker." This reverts commit dc072507d0f52deb7e23ca5618816dbf18952204. Fixes: 294593868 Test: switcher users in user bouncer. Change-Id: Ie2b830d09a45e5dd95015749bd4631ff00994993 --- .../src/com/android/keyguard/KeyguardSecurityContainer.java | 2 -- .../systemui/bouncer/ui/binder/KeyguardBouncerViewBinder.kt | 2 -- 2 files changed, 4 deletions(-) diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainer.java b/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainer.java index dc1ddc77dd6ca..42a4e7202c824 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainer.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainer.java @@ -1197,8 +1197,6 @@ public class KeyguardSecurityContainer extends ConstraintLayout { }); mPopup.show(); }); - - mUserSwitcherViewGroup.setAlpha(0f); } @Override diff --git a/packages/SystemUI/src/com/android/systemui/bouncer/ui/binder/KeyguardBouncerViewBinder.kt b/packages/SystemUI/src/com/android/systemui/bouncer/ui/binder/KeyguardBouncerViewBinder.kt index d9ec5d0d17442..34e934bec0032 100644 --- a/packages/SystemUI/src/com/android/systemui/bouncer/ui/binder/KeyguardBouncerViewBinder.kt +++ b/packages/SystemUI/src/com/android/systemui/bouncer/ui/binder/KeyguardBouncerViewBinder.kt @@ -120,8 +120,6 @@ object KeyguardBouncerViewBinder { viewModel.isShowing.collect { isShowing -> view.visibility = if (isShowing) View.VISIBLE else View.INVISIBLE if (isShowing) { - // Reset security container because these views are not reinflated. - securityContainerController.reset() securityContainerController.reinflateViewFlipper { // Reset Security Container entirely. securityContainerController.onBouncerVisibilityChanged( From 05445443cf6ddbe44e870b29a49e54a6d3208b14 Mon Sep 17 00:00:00 2001 From: Aaron Liu Date: Mon, 7 Aug 2023 09:36:40 -0700 Subject: [PATCH 2/2] Remove setalpha(0f) from reset. Reset has too many callers for different reasons. It is extremely frail and is causing the user switcher to disappear for various reasons. Largely the user switcher disappears when switching users in the bouncer and persisting the bouncer. Fixes: 290355544 Test: Get multiple users and switch users with bouncer user switcher on. Test: close and open bouncer scrimmed to see that the userswitcher does not flicker. Change-Id: I313240f1c594d5df6071b0dc6a7099496990e274 --- .../KeyguardSecurityContainerController.java | 8 ++++++++ .../bouncer/ui/binder/KeyguardBouncerViewBinder.kt | 2 ++ .../KeyguardSecurityContainerControllerTest.kt | 12 ++++++++++++ 3 files changed, 22 insertions(+) diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainerController.java b/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainerController.java index 3b09910fbe88a..9d69fbab8b4d4 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainerController.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainerController.java @@ -676,6 +676,14 @@ public class KeyguardSecurityContainerController extends ViewController view.visibility = if (isShowing) View.VISIBLE else View.INVISIBLE if (isShowing) { + // Reset security container because these views are not reinflated. + securityContainerController.prepareToShow() securityContainerController.reinflateViewFlipper { // Reset Security Container entirely. securityContainerController.onBouncerVisibilityChanged( diff --git a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardSecurityContainerControllerTest.kt b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardSecurityContainerControllerTest.kt index e447c29b351f4..7ed32865d208d 100644 --- a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardSecurityContainerControllerTest.kt +++ b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardSecurityContainerControllerTest.kt @@ -27,6 +27,7 @@ import android.testing.TestableResources import android.view.Gravity import android.view.LayoutInflater import android.view.MotionEvent +import android.view.View import android.view.WindowInsetsController import android.widget.FrameLayout import androidx.test.filters.SmallTest @@ -80,6 +81,7 @@ import org.mockito.Captor import org.mockito.Mock import org.mockito.Mockito.atLeastOnce import org.mockito.Mockito.clearInvocations +import org.mockito.Mockito.mock import org.mockito.Mockito.never import org.mockito.Mockito.spy import org.mockito.Mockito.verify @@ -772,6 +774,16 @@ class KeyguardSecurityContainerControllerTest : SysuiTestCase() { verify(viewMediatorCallback).keyguardDone(anyBoolean(), anyInt()) } + @Test + fun testResetUserSwitcher() { + val userSwitcher = mock(View::class.java) + whenever(view.findViewById(R.id.keyguard_bouncer_user_switcher)) + .thenReturn(userSwitcher) + + underTest.prepareToShow() + verify(userSwitcher).setAlpha(0f) + } + private val registeredSwipeListener: KeyguardSecurityContainer.SwipeListener get() { underTest.onViewAttached()