From e6a7308fca175399497b8cf3cfbe79f178450136 Mon Sep 17 00:00:00 2001 From: Aaron Liu Date: Fri, 24 Mar 2023 11:23:48 -0700 Subject: [PATCH] Set needs input after inflating. Make sure that we setNeedsInput after inflating the view. Bug: 274550142 Test: open bouncer with pin/password/pattern/simpin/simpuk Change-Id: I43f93cbf829caa87cde0dc1db34f4da7fe4e094d --- ...KeyguardSecurityViewFlipperController.java | 7 ++++++- ...uardSecurityViewFlipperControllerTest.java | 19 ++++++++++++++++++- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityViewFlipperController.java b/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityViewFlipperController.java index 68e1dd7d8eab1..ddf11997d3a72 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityViewFlipperController.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityViewFlipperController.java @@ -54,19 +54,23 @@ public class KeyguardSecurityViewFlipperController private final Factory mKeyguardSecurityViewControllerFactory; private final FeatureFlags mFeatureFlags; + private final ViewMediatorCallback mViewMediatorCallback; + @Inject protected KeyguardSecurityViewFlipperController(KeyguardSecurityViewFlipper view, LayoutInflater layoutInflater, AsyncLayoutInflater asyncLayoutInflater, KeyguardInputViewController.Factory keyguardSecurityViewControllerFactory, EmergencyButtonController.Factory emergencyButtonControllerFactory, - FeatureFlags featureFlags) { + FeatureFlags featureFlags, + ViewMediatorCallback viewMediatorCallback) { super(view); mKeyguardSecurityViewControllerFactory = keyguardSecurityViewControllerFactory; mLayoutInflater = layoutInflater; mEmergencyButtonControllerFactory = emergencyButtonControllerFactory; mAsyncLayoutInflater = asyncLayoutInflater; mFeatureFlags = featureFlags; + mViewMediatorCallback = viewMediatorCallback; } @Override @@ -152,6 +156,7 @@ public class KeyguardSecurityViewFlipperController keyguardSecurityCallback); childController.init(); mChildren.add(childController); + mViewMediatorCallback.setNeedsInput(childController.needsInput()); if (onViewInflatedListener != null) { onViewInflatedListener.onViewInflated(); } diff --git a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardSecurityViewFlipperControllerTest.java b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardSecurityViewFlipperControllerTest.java index afb54d2df49f9..eaf7b1ec21005 100644 --- a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardSecurityViewFlipperControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardSecurityViewFlipperControllerTest.java @@ -35,6 +35,7 @@ import androidx.asynclayoutinflater.view.AsyncLayoutInflater; import androidx.test.filters.SmallTest; import com.android.keyguard.KeyguardSecurityModel.SecurityMode; +import com.android.systemui.R; import com.android.systemui.SysuiTestCase; import com.android.systemui.flags.FeatureFlags; @@ -42,6 +43,7 @@ import org.junit.Before; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; +import org.mockito.ArgumentCaptor; import org.mockito.Mock; import org.mockito.junit.MockitoJUnit; import org.mockito.junit.MockitoRule; @@ -76,6 +78,8 @@ public class KeyguardSecurityViewFlipperControllerTest extends SysuiTestCase { private KeyguardSecurityCallback mKeyguardSecurityCallback; @Mock private FeatureFlags mFeatureFlags; + @Mock + private ViewMediatorCallback mViewMediatorCallback; private KeyguardSecurityViewFlipperController mKeyguardSecurityViewFlipperController; @@ -92,7 +96,7 @@ public class KeyguardSecurityViewFlipperControllerTest extends SysuiTestCase { mKeyguardSecurityViewFlipperController = new KeyguardSecurityViewFlipperController(mView, mLayoutInflater, mAsyncLayoutInflater, mKeyguardSecurityViewControllerFactory, - mEmergencyButtonControllerFactory, mFeatureFlags); + mEmergencyButtonControllerFactory, mFeatureFlags, mViewMediatorCallback); } @Test @@ -122,6 +126,19 @@ public class KeyguardSecurityViewFlipperControllerTest extends SysuiTestCase { AsyncLayoutInflater.OnInflateFinishedListener.class)); } + @Test + public void asynchronouslyInflateView_setNeedsInput() { + ArgumentCaptor argumentCaptor = + ArgumentCaptor.forClass(AsyncLayoutInflater.OnInflateFinishedListener.class); + mKeyguardSecurityViewFlipperController.asynchronouslyInflateView(SecurityMode.PIN, + mKeyguardSecurityCallback, null); + verify(mAsyncLayoutInflater).inflate(anyInt(), eq(mView), argumentCaptor.capture()); + argumentCaptor.getValue().onInflateFinished( + LayoutInflater.from(getContext()).inflate(R.layout.keyguard_password_view, null), + R.layout.keyguard_password_view, mView); + verify(mViewMediatorCallback).setNeedsInput(anyBoolean()); + } + @Test public void onDensityOrFontScaleChanged() { mKeyguardSecurityViewFlipperController.clearViews();