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

Commit 0bfe7ee9 authored by Beverly's avatar Beverly Committed by Beverly Tai
Browse files

Check for UDFPS finger down for face auth device entry

Previously any successful face-auth triggered from touching
the udfps area would result in the user entering the device.
Instead, check that the finger is down on success to proceed
to device entry.

Test: atest SystemUITests
Fixes: 233213741
Bug: 195161518
Change-Id: Ie7a2fb034cfb811022771b16494d2bea71058459
parent b87eac30
Loading
Loading
Loading
Loading
+0 −22
Original line number Diff line number Diff line
@@ -1571,9 +1571,6 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
                public void onUdfpsPointerDown(int sensorId) {
                    Log.d(TAG, "onUdfpsPointerDown, sensorId: " + sensorId);
                    requestFaceAuth(true);
                    if (isFaceDetectionRunning()) {
                        mKeyguardBypassController.setUserHasDeviceEntryIntent(true);
                    }
                }

                /**
@@ -1606,9 +1603,6 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
                                "faceFailure-" + reason);

                    handleFaceAuthFailed();
                    if (mKeyguardBypassController != null) {
                        mKeyguardBypassController.setUserHasDeviceEntryIntent(false);
                    }
                }

                @Override
@@ -1616,10 +1610,6 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
                    Trace.beginSection("KeyguardUpdateMonitor#onAuthenticationSucceeded");
                    handleFaceAuthenticated(result.getUserId(), result.isStrongBiometric());
                    Trace.endSection();

                    if (mKeyguardBypassController != null) {
                        mKeyguardBypassController.setUserHasDeviceEntryIntent(false);
                    }
                }

                @Override
@@ -1630,9 +1620,6 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
                @Override
                public void onAuthenticationError(int errMsgId, CharSequence errString) {
                    handleFaceError(errMsgId, errString.toString());
                    if (mKeyguardBypassController != null) {
                        mKeyguardBypassController.setUserHasDeviceEntryIntent(false);
                    }

                    if (mActiveUnlockConfig.shouldRequestActiveUnlockOnFaceError(errMsgId)) {
                        requestActiveUnlock(
@@ -2315,10 +2302,6 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
        updateFaceListeningState(BIOMETRIC_ACTION_START);
    }

    public boolean isFaceAuthUserRequested() {
        return mIsFaceAuthUserRequested;
    }

    /**
     * In case face auth is running, cancel it.
     */
@@ -3179,11 +3162,6 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
            mSecureCameraLaunched = false;
        }

        if (mKeyguardBypassController != null) {
            // LS visibility has changed, so reset deviceEntryIntent
            mKeyguardBypassController.setUserHasDeviceEntryIntent(false);
        }

        for (int i = 0; i < mCallbacks.size(); i++) {
            KeyguardUpdateMonitorCallback cb = mCallbacks.get(i).get();
            if (cb != null) {
+1 −1
Original line number Diff line number Diff line
@@ -579,7 +579,7 @@ public class BiometricUnlockController extends KeyguardUpdateMonitorCallback imp
                mUpdateMonitor.isUnlockingWithBiometricAllowed(isStrongBiometric);
        boolean deviceDreaming = mUpdateMonitor.isDreaming();
        boolean bypass = mKeyguardBypassController.getBypassEnabled()
                || mKeyguardBypassController.getUserHasDeviceEntryIntent();
                || mAuthController.isUdfpsFingerDown();
        if (!mUpdateMonitor.isDeviceInteractive()) {
            if (!mKeyguardViewController.isShowing()) {
                return bypass ? MODE_WAKE_AND_UNLOCK : MODE_ONLY_WAKE;
+0 −2
Original line number Diff line number Diff line
@@ -43,7 +43,6 @@ open class KeyguardBypassController : Dumpable, StackScrollAlgorithm.BypassContr
    private var hasFaceFeature: Boolean
    private var pendingUnlock: PendingUnlock? = null
    private val listeners = mutableListOf<OnBypassStateChangedListener>()
    var userHasDeviceEntryIntent: Boolean = false // ie: attempted udfps auth

    private val faceAuthEnabledChangedCallback = object : KeyguardStateController.Callback {
        override fun onFaceAuthEnabledChanged() = notifyListeners()
@@ -217,7 +216,6 @@ open class KeyguardBypassController : Dumpable, StackScrollAlgorithm.BypassContr
        pw.println("  launchingAffordance: $launchingAffordance")
        pw.println("  qSExpanded: $qSExpanded")
        pw.println("  hasFaceFeature: $hasFaceFeature")
        pw.println("  userHasDeviceEntryIntent: $userHasDeviceEntryIntent")
    }

    /** Registers a listener for bypass state changes. */