Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e6a7308f authored by Aaron Liu's avatar Aaron Liu
Browse files

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
parent 1ee9c3e8
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -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();
                        }
+18 −1
Original line number Diff line number Diff line
@@ -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();