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

Commit 8834fee9 authored by Istvan Nagy's avatar Istvan Nagy Committed by Android (Google) Code Review
Browse files

Merge "Disable double-click on Bouncer" into main

parents 3462c573 ddba6ada
Loading
Loading
Loading
Loading
+20 −1
Original line number Diff line number Diff line
@@ -41,6 +41,7 @@ import com.android.keyguard.domain.interactor.KeyguardKeyboardInteractor
import com.android.systemui.Flags as AConfigFlags
import com.android.systemui.SysuiTestCase
import com.android.systemui.biometrics.FaceAuthAccessibilityDelegate
import com.android.systemui.bouncer.domain.interactor.BouncerInteractor
import com.android.systemui.bouncer.domain.interactor.PrimaryBouncerInteractor
import com.android.systemui.bouncer.shared.constants.KeyguardBouncerConstants
import com.android.systemui.classifier.FalsingA11yDelegate
@@ -161,6 +162,7 @@ class KeyguardSecurityContainerControllerTest : SysuiTestCase() {
    @Mock private lateinit var postureController: DevicePostureController
    @Mock private lateinit var devicePolicyManager: DevicePolicyManager
    @Mock private lateinit var mUserActivityNotifier: UserActivityNotifier
    @Mock private lateinit var bouncerInteractor: BouncerInteractor

    @Captor
    private lateinit var swipeListenerArgumentCaptor:
@@ -291,6 +293,7 @@ class KeyguardSecurityContainerControllerTest : SysuiTestCase() {
                executor,
                { deviceEntryInteractor },
                { kosmos.windowRootViewBlurInteractor },
                { bouncerInteractor },
            )
    }

@@ -306,6 +309,7 @@ class KeyguardSecurityContainerControllerTest : SysuiTestCase() {
                eq(userSwitcherController),
                any(),
                eq(falsingA11yDelegate),
                any(),
            )
    }

@@ -345,6 +349,7 @@ class KeyguardSecurityContainerControllerTest : SysuiTestCase() {
                eq(userSwitcherController),
                any(),
                eq(falsingA11yDelegate),
                any(),
            )

        // Update rotation. Should trigger update
@@ -358,6 +363,7 @@ class KeyguardSecurityContainerControllerTest : SysuiTestCase() {
                eq(userSwitcherController),
                any(),
                eq(falsingA11yDelegate),
                any(),
            )
    }

@@ -399,6 +405,7 @@ class KeyguardSecurityContainerControllerTest : SysuiTestCase() {
                eq(userSwitcherController),
                any(),
                eq(falsingA11yDelegate),
                any(),
            )
    }

@@ -415,6 +422,7 @@ class KeyguardSecurityContainerControllerTest : SysuiTestCase() {
                eq(userSwitcherController),
                any(),
                eq(falsingA11yDelegate),
                any(),
            )
    }

@@ -431,6 +439,7 @@ class KeyguardSecurityContainerControllerTest : SysuiTestCase() {
                eq(userSwitcherController),
                any(),
                eq(falsingA11yDelegate),
                any(),
            )
    }

@@ -447,6 +456,7 @@ class KeyguardSecurityContainerControllerTest : SysuiTestCase() {
                eq(userSwitcherController),
                any(),
                eq(falsingA11yDelegate),
                any(),
            )
    }

@@ -463,6 +473,7 @@ class KeyguardSecurityContainerControllerTest : SysuiTestCase() {
                eq(userSwitcherController),
                any(),
                eq(falsingA11yDelegate),
                any(),
            )
    }

@@ -472,7 +483,15 @@ class KeyguardSecurityContainerControllerTest : SysuiTestCase() {
        val captor = ArgumentCaptor.forClass(UserSwitcherCallback::class.java)
        setupGetSecurityView(SecurityMode.Password)
        verify(view)
            .initMode(anyInt(), any(), any(), any(), captor.capture(), eq(falsingA11yDelegate))
            .initMode(
                anyInt(),
                any(),
                any(),
                any(),
                captor.capture(),
                eq(falsingA11yDelegate),
                any(),
            )
        captor.value.showUnlockToContinueMessage()
        viewControllerImmediately
        verify(keyguardPasswordViewControllerMock)
+4 −1
Original line number Diff line number Diff line
@@ -57,6 +57,7 @@ import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.filters.SmallTest;

import com.android.systemui.SysuiTestCase;
import com.android.systemui.bouncer.domain.interactor.BouncerInteractor;
import com.android.systemui.classifier.FalsingA11yDelegate;
import com.android.systemui.plugins.FalsingManager;
import com.android.systemui.res.R;
@@ -99,6 +100,8 @@ public class KeyguardSecurityContainerTest extends SysuiTestCase {
    private UserSwitcherController mUserSwitcherController;
    @Mock
    private FalsingA11yDelegate mFalsingA11yDelegate;
    @Mock
    private BouncerInteractor mBouncerInteractor;
    @Captor
    private ArgumentCaptor<UserSwitchCallback> mUserSwitchCallbackCaptor =
            ArgumentCaptor.forClass(UserSwitchCallback.class);
@@ -528,7 +531,7 @@ public class KeyguardSecurityContainerTest extends SysuiTestCase {
    private void initMode(int mode) {
        mKeyguardSecurityContainer.initMode(mode, mGlobalSettings, mFalsingManager,
                mUserSwitcherController, () -> {
                }, mFalsingA11yDelegate);
                }, mFalsingA11yDelegate, mBouncerInteractor);
    }

    private void ensureViewFlipperIsMocked() {
+30 −9
Original line number Diff line number Diff line
@@ -33,6 +33,7 @@ import static androidx.constraintlayout.widget.ConstraintSet.TOP;
import static androidx.constraintlayout.widget.ConstraintSet.WRAP_CONTENT;

import static com.android.systemui.Flags.bouncerUiRevamp2;
import static com.android.systemui.Flags.disableDoubleClickSwapOnBouncer;
import static com.android.systemui.plugins.FalsingManager.LOW_PENALTY;

import static java.lang.Integer.max;
@@ -101,6 +102,7 @@ import com.android.settingslib.drawable.CircleFramedDrawable;
import com.android.systemui.Flags;
import com.android.systemui.FontStyles;
import com.android.systemui.Gefingerpoken;
import com.android.systemui.bouncer.domain.interactor.BouncerInteractor;
import com.android.systemui.bouncer.ui.BouncerColors;
import com.android.systemui.classifier.FalsingA11yDelegate;
import com.android.systemui.plugins.FalsingManager;
@@ -180,6 +182,7 @@ public class KeyguardSecurityContainer extends ConstraintLayout {
    private boolean mIsInteractable;
    protected ViewMediatorCallback mViewMediatorCallback;
    private Executor mBgExecutor;
    private BouncerInteractor mBouncerInteractor;
    /*
     * Using MODE_UNINITIALIZED to mean the view mode is set to DefaultViewMode, but init() has not
     * yet been called on it. This will happen when the ViewController is initialized.
@@ -367,7 +370,8 @@ public class KeyguardSecurityContainer extends ConstraintLayout {
    void initMode(@Mode int mode, GlobalSettings globalSettings, FalsingManager falsingManager,
            UserSwitcherController userSwitcherController,
            UserSwitcherViewMode.UserSwitcherCallback userSwitcherCallback,
            FalsingA11yDelegate falsingA11yDelegate) {
            FalsingA11yDelegate falsingA11yDelegate,
            BouncerInteractor bouncerInteractor) {
        if (mCurrentMode == mode) return;
        Log.i(TAG, "Switching mode from " + modeToString(mCurrentMode) + " to "
                + modeToString(mode));
@@ -388,6 +392,8 @@ public class KeyguardSecurityContainer extends ConstraintLayout {
        mFalsingManager = falsingManager;
        mFalsingA11yDelegate = falsingA11yDelegate;
        mUserSwitcherController = userSwitcherController;
        mBouncerInteractor = bouncerInteractor;

        setupViewMode();
    }

@@ -413,7 +419,7 @@ public class KeyguardSecurityContainer extends ConstraintLayout {
        }

        mViewMode.init(this, mGlobalSettings, mSecurityViewFlipper, mFalsingManager,
                mUserSwitcherController, mFalsingA11yDelegate);
                mUserSwitcherController, mFalsingA11yDelegate, mBouncerInteractor);
    }

    @Mode int getMode() {
@@ -901,7 +907,8 @@ public class KeyguardSecurityContainer extends ConstraintLayout {
                @NonNull KeyguardSecurityViewFlipper viewFlipper,
                @NonNull FalsingManager falsingManager,
                @NonNull UserSwitcherController userSwitcherController,
                @NonNull FalsingA11yDelegate falsingA11yDelegate) {};
                @NonNull FalsingA11yDelegate falsingA11yDelegate,
                @NonNull BouncerInteractor bouncerInteractor) {};

        /** Reinitialize the location */
        default void updateSecurityViewLocation() {};
@@ -940,15 +947,21 @@ public class KeyguardSecurityContainer extends ConstraintLayout {
        private ConstraintLayout mView;
        private GlobalSettings mGlobalSettings;
        private int mDefaultSideSetting;
        private boolean mDisableDoubleClickSwap;
        private BouncerInteractor mBouncerInteractor;

        public void init(ConstraintLayout v, KeyguardSecurityViewFlipper viewFlipper,
                GlobalSettings globalSettings, boolean leftAlignedByDefault) {
                GlobalSettings globalSettings, boolean leftAlignedByDefault,
                BouncerInteractor bouncerInteractor) {
            mView = v;
            mViewFlipper = viewFlipper;
            mGlobalSettings = globalSettings;
            mDefaultSideSetting =
                    leftAlignedByDefault ? Settings.Global.ONE_HANDED_KEYGUARD_SIDE_LEFT
                            : Settings.Global.ONE_HANDED_KEYGUARD_SIDE_RIGHT;
            mBouncerInteractor = bouncerInteractor;
            mDisableDoubleClickSwap = disableDoubleClickSwapOnBouncer()
                    && mBouncerInteractor.isImproveLargeScreenInteractionEnabled();
        }

        /**
@@ -957,6 +970,9 @@ public class KeyguardSecurityContainer extends ConstraintLayout {
         */
        @Override
        public void handleDoubleTap(MotionEvent event) {
            if (mDisableDoubleClickSwap) {
                return;
            }
            boolean currentlyLeftAligned = isLeftAligned();
            // Did the tap hit the "other" side of the bouncer?
            if (isTouchOnTheOtherSideOfSecurity(event, currentlyLeftAligned)) {
@@ -1010,7 +1026,8 @@ public class KeyguardSecurityContainer extends ConstraintLayout {
                @NonNull KeyguardSecurityViewFlipper viewFlipper,
                @NonNull FalsingManager falsingManager,
                @NonNull UserSwitcherController userSwitcherController,
                @NonNull FalsingA11yDelegate falsingA11yDelegate) {
                @NonNull FalsingA11yDelegate falsingA11yDelegate,
                @NonNull BouncerInteractor bouncerInteractor) {
            mView = v;
            mViewFlipper = viewFlipper;

@@ -1069,8 +1086,10 @@ public class KeyguardSecurityContainer extends ConstraintLayout {
                @NonNull KeyguardSecurityViewFlipper viewFlipper,
                @NonNull FalsingManager falsingManager,
                @NonNull UserSwitcherController userSwitcherController,
                @NonNull FalsingA11yDelegate falsingA11yDelegate) {
            init(v, viewFlipper, globalSettings, /* leftAlignedByDefault= */false);
                @NonNull FalsingA11yDelegate falsingA11yDelegate,
                @NonNull BouncerInteractor bouncerInteractor) {
            init(v, viewFlipper, globalSettings, /* leftAlignedByDefault= */false,
                    bouncerInteractor);
            mView = v;
            mViewFlipper = viewFlipper;
            mFalsingManager = falsingManager;
@@ -1414,8 +1433,10 @@ public class KeyguardSecurityContainer extends ConstraintLayout {
                @NonNull KeyguardSecurityViewFlipper viewFlipper,
                @NonNull FalsingManager falsingManager,
                @NonNull UserSwitcherController userSwitcherController,
                @NonNull FalsingA11yDelegate falsingA11yDelegate) {
            init(v, viewFlipper, globalSettings, /* leftAlignedByDefault= */true);
                @NonNull FalsingA11yDelegate falsingA11yDelegate,
                @NonNull BouncerInteractor bouncerInteractor) {
            init(v, viewFlipper, globalSettings, /* leftAlignedByDefault= */true,
                    bouncerInteractor);
            mView = v;
            mViewFlipper = viewFlipper;

+6 −2
Original line number Diff line number Diff line
@@ -74,6 +74,7 @@ import com.android.settingslib.utils.ThreadUtils;
import com.android.systemui.Flags;
import com.android.systemui.Gefingerpoken;
import com.android.systemui.biometrics.FaceAuthAccessibilityDelegate;
import com.android.systemui.bouncer.domain.interactor.BouncerInteractor;
import com.android.systemui.bouncer.domain.interactor.BouncerMessageInteractor;
import com.android.systemui.bouncer.domain.interactor.PrimaryBouncerInteractor;
import com.android.systemui.classifier.FalsingA11yDelegate;
@@ -437,6 +438,7 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard
    private final Provider<JavaAdapter> mJavaAdapter;
    private final DeviceProvisionedController mDeviceProvisionedController;
    private final Lazy<PrimaryBouncerInteractor> mPrimaryBouncerInteractor;
    private final Lazy<BouncerInteractor> mBouncerInteractor;
    private final Executor mBgExecutor;
    @Nullable
    private Job mSceneTransitionCollectionJob;
@@ -474,7 +476,8 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard
            Lazy<PrimaryBouncerInteractor> primaryBouncerInteractor,
            @Background Executor bgExecutor,
            Provider<DeviceEntryInteractor> deviceEntryInteractor,
            Lazy<WindowRootViewBlurInteractor> rootViewBlurInteractorProvider
            Lazy<WindowRootViewBlurInteractor> rootViewBlurInteractorProvider,
            Lazy<BouncerInteractor> bouncerInteractor
    ) {
        super(view);
        mRootViewBlurInteractor = rootViewBlurInteractorProvider;
@@ -510,6 +513,7 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard
        mPrimaryBouncerInteractor = primaryBouncerInteractor;
        mDevicePolicyManager = devicePolicyManager;
        mBgExecutor = bgExecutor;
        mBouncerInteractor = bouncerInteractor;
    }

    @Override
@@ -1173,7 +1177,7 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard
                        String msg = getContext().getString(R.string.keyguard_unlock_to_continue);
                        showMessage(msg, /* colorState= */ null, /* animated= */ true);
                        mBouncerMessageInteractor.setUnlockToContinueMessage(msg);
                }, mFalsingA11yDelegate);
                }, mFalsingA11yDelegate, mBouncerInteractor.get());
    }

    public void reportFailedUnlockAttempt(int userId, int timeoutMs) {