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
This commit is contained in:
Aaron Liu
2023-03-24 11:23:48 -07:00
parent 1ee9c3e866
commit e6a7308fca
2 changed files with 24 additions and 2 deletions

View File

@@ -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();
}

View File

@@ -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<AsyncLayoutInflater.OnInflateFinishedListener> 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();