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

Commit 91017454 authored by Beverly Tai's avatar Beverly Tai
Browse files

Revert "Run fpDetect instead of authenticate if keyguard is dismissible"

This reverts commit 0cdcacb4. This does
not remove the ACONFIG flag, but rather removes the logic associated
with the flag.

Reason for revert: UX & Product team decided this feature is undesirable
Fixes: 311145851

Change-Id: I43d2a2b71860834e5757a9356d7b4e9934c11097
parent 3c7133f5
Loading
Loading
Loading
Loading
+5 −30
Original line number Original line Diff line number Diff line
@@ -114,7 +114,6 @@ import com.android.settingslib.WirelessUtils;
import com.android.settingslib.fuelgauge.BatteryStatus;
import com.android.settingslib.fuelgauge.BatteryStatus;
import com.android.systemui.CoreStartable;
import com.android.systemui.CoreStartable;
import com.android.systemui.Dumpable;
import com.android.systemui.Dumpable;
import com.android.systemui.Flags;
import com.android.systemui.biometrics.AuthController;
import com.android.systemui.biometrics.AuthController;
import com.android.systemui.biometrics.FingerprintInteractiveToAuthProvider;
import com.android.systemui.biometrics.FingerprintInteractiveToAuthProvider;
import com.android.systemui.broadcast.BroadcastDispatcher;
import com.android.systemui.broadcast.BroadcastDispatcher;
@@ -383,7 +382,6 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
    private List<SubscriptionInfo> mSubscriptionInfo;
    private List<SubscriptionInfo> mSubscriptionInfo;
    @VisibleForTesting
    @VisibleForTesting
    protected int mFingerprintRunningState = BIOMETRIC_STATE_STOPPED;
    protected int mFingerprintRunningState = BIOMETRIC_STATE_STOPPED;
    private boolean mFingerprintDetectRunning;
    private boolean mIsDreaming;
    private boolean mIsDreaming;
    private boolean mLogoutEnabled;
    private boolean mLogoutEnabled;
    private int mActiveMobileDataSubscription = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
    private int mActiveMobileDataSubscription = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
@@ -1005,7 +1003,6 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
        final boolean wasCancellingRestarting = mFingerprintRunningState
        final boolean wasCancellingRestarting = mFingerprintRunningState
                == BIOMETRIC_STATE_CANCELLING_RESTARTING;
                == BIOMETRIC_STATE_CANCELLING_RESTARTING;
        mFingerprintRunningState = BIOMETRIC_STATE_STOPPED;
        mFingerprintRunningState = BIOMETRIC_STATE_STOPPED;
        mFingerprintDetectRunning = false;
        if (wasCancellingRestarting) {
        if (wasCancellingRestarting) {
            KeyguardUpdateMonitor.this.updateFingerprintListeningState(BIOMETRIC_ACTION_UPDATE);
            KeyguardUpdateMonitor.this.updateFingerprintListeningState(BIOMETRIC_ACTION_UPDATE);
        } else {
        } else {
@@ -1114,9 +1111,6 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
        boolean wasRunning = mFingerprintRunningState == BIOMETRIC_STATE_RUNNING;
        boolean wasRunning = mFingerprintRunningState == BIOMETRIC_STATE_RUNNING;
        boolean isRunning = fingerprintRunningState == BIOMETRIC_STATE_RUNNING;
        boolean isRunning = fingerprintRunningState == BIOMETRIC_STATE_RUNNING;
        mFingerprintRunningState = fingerprintRunningState;
        mFingerprintRunningState = fingerprintRunningState;
        if (mFingerprintRunningState == BIOMETRIC_STATE_STOPPED) {
            mFingerprintDetectRunning = false;
        }
        mLogger.logFingerprintRunningState(mFingerprintRunningState);
        mLogger.logFingerprintRunningState(mFingerprintRunningState);
        // Clients of KeyguardUpdateMonitor don't care about the internal state about the
        // Clients of KeyguardUpdateMonitor don't care about the internal state about the
        // asynchronousness of the cancel cycle. So only notify them if the actually running state
        // asynchronousness of the cancel cycle. So only notify them if the actually running state
@@ -2105,7 +2099,6 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
    @VisibleForTesting
    @VisibleForTesting
    void resetBiometricListeningState() {
    void resetBiometricListeningState() {
        mFingerprintRunningState = BIOMETRIC_STATE_STOPPED;
        mFingerprintRunningState = BIOMETRIC_STATE_STOPPED;
        mFingerprintDetectRunning = false;
    }
    }


    @VisibleForTesting
    @VisibleForTesting
@@ -2544,10 +2537,8 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
            return;
            return;
        }
        }
        final boolean shouldListenForFingerprint = shouldListenForFingerprint(isUdfpsSupported());
        final boolean shouldListenForFingerprint = shouldListenForFingerprint(isUdfpsSupported());
        final boolean running = mFingerprintRunningState == BIOMETRIC_STATE_RUNNING;
        final boolean runningOrRestarting = mFingerprintRunningState == BIOMETRIC_STATE_RUNNING
        final boolean runningOrRestarting = running
                || mFingerprintRunningState == BIOMETRIC_STATE_CANCELLING_RESTARTING;
                || mFingerprintRunningState == BIOMETRIC_STATE_CANCELLING_RESTARTING;
        final boolean runDetect = shouldRunFingerprintDetect();
        if (runningOrRestarting && !shouldListenForFingerprint) {
        if (runningOrRestarting && !shouldListenForFingerprint) {
            if (action == BIOMETRIC_ACTION_START) {
            if (action == BIOMETRIC_ACTION_START) {
                mLogger.v("Ignoring stopListeningForFingerprint()");
                mLogger.v("Ignoring stopListeningForFingerprint()");
@@ -2559,22 +2550,8 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
                mLogger.v("Ignoring startListeningForFingerprint()");
                mLogger.v("Ignoring startListeningForFingerprint()");
                return;
                return;
            }
            }
            startListeningForFingerprint(runDetect);
            startListeningForFingerprint();
        } else if (running && runDetect && !mFingerprintDetectRunning) {
            if (action == BIOMETRIC_ACTION_STOP) {
                mLogger.v("Ignoring startListeningForFingerprint(detect)");
                return;
        }
        }
            // stop running authentication and start running fingerprint detection
            stopListeningForFingerprint();
            startListeningForFingerprint(true);
        }
    }

    private boolean shouldRunFingerprintDetect() {
        return !isUnlockingWithFingerprintAllowed()
                || (Flags.runFingerprintDetectOnDismissibleKeyguard()
                && getUserCanSkipBouncer(mSelectedUserInteractor.getSelectedUserId()));
    }
    }


    /**
    /**
@@ -2832,6 +2809,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
                        && biometricEnabledForUser
                        && biometricEnabledForUser
                        && !isUserInLockdown(user);
                        && !isUserInLockdown(user);
        final boolean strongerAuthRequired = !isUnlockingWithFingerprintAllowed();
        final boolean strongerAuthRequired = !isUnlockingWithFingerprintAllowed();
        final boolean isSideFps = isSfpsSupported() && isSfpsEnrolled();
        final boolean shouldListenBouncerState =
        final boolean shouldListenBouncerState =
                !strongerAuthRequired || !mPrimaryBouncerIsOrWillBeShowing;
                !strongerAuthRequired || !mPrimaryBouncerIsOrWillBeShowing;


@@ -2894,7 +2872,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
        }
        }
    }
    }


    private void startListeningForFingerprint(boolean runDetect) {
    private void startListeningForFingerprint() {
        final int userId = mSelectedUserInteractor.getSelectedUserId();
        final int userId = mSelectedUserInteractor.getSelectedUserId();
        final boolean unlockPossible = isUnlockWithFingerprintPossible(userId);
        final boolean unlockPossible = isUnlockWithFingerprintPossible(userId);
        if (mFingerprintCancelSignal != null) {
        if (mFingerprintCancelSignal != null) {
@@ -2924,20 +2902,18 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
                        mFingerprintInteractiveToAuthProvider.getVendorExtension(userId));
                        mFingerprintInteractiveToAuthProvider.getVendorExtension(userId));
            }
            }


            if (runDetect) {
            if (!isUnlockingWithFingerprintAllowed()) {
                mLogger.v("startListeningForFingerprint - detect");
                mLogger.v("startListeningForFingerprint - detect");
                mFpm.detectFingerprint(
                mFpm.detectFingerprint(
                        mFingerprintCancelSignal,
                        mFingerprintCancelSignal,
                        mFingerprintDetectionCallback,
                        mFingerprintDetectionCallback,
                        fingerprintAuthenticateOptions);
                        fingerprintAuthenticateOptions);
                mFingerprintDetectRunning = true;
            } else {
            } else {
                mLogger.v("startListeningForFingerprint");
                mLogger.v("startListeningForFingerprint");
                mFpm.authenticate(null /* crypto */, mFingerprintCancelSignal,
                mFpm.authenticate(null /* crypto */, mFingerprintCancelSignal,
                        mFingerprintAuthenticationCallback,
                        mFingerprintAuthenticationCallback,
                        null /* handler */,
                        null /* handler */,
                        fingerprintAuthenticateOptions);
                        fingerprintAuthenticateOptions);
                mFingerprintDetectRunning = false;
            }
            }
            setFingerprintRunningState(BIOMETRIC_STATE_RUNNING);
            setFingerprintRunningState(BIOMETRIC_STATE_RUNNING);
        }
        }
@@ -3962,7 +3938,6 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab
                mSelectedUserInteractor.getSelectedUserId()));
                mSelectedUserInteractor.getSelectedUserId()));
        pw.println("  getUserUnlockedWithBiometric()="
        pw.println("  getUserUnlockedWithBiometric()="
                + getUserUnlockedWithBiometric(mSelectedUserInteractor.getSelectedUserId()));
                + getUserUnlockedWithBiometric(mSelectedUserInteractor.getSelectedUserId()));
        pw.println("  mFingerprintDetectRunning=" + mFingerprintDetectRunning);
        pw.println("  SIM States:");
        pw.println("  SIM States:");
        for (SimData data : mSimDatas.values()) {
        for (SimData data : mSimDatas.values()) {
            pw.println("    " + data.toString());
            pw.println("    " + data.toString());
+0 −15
Original line number Original line Diff line number Diff line
@@ -35,7 +35,6 @@ import com.android.systemui.Flags.lightRevealMigration
import com.android.systemui.biometrics.data.repository.FacePropertyRepository
import com.android.systemui.biometrics.data.repository.FacePropertyRepository
import com.android.systemui.biometrics.shared.model.UdfpsOverlayParams
import com.android.systemui.biometrics.shared.model.UdfpsOverlayParams
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.deviceentry.shared.DeviceEntryUdfpsRefactor
import com.android.systemui.keyguard.WakefulnessLifecycle
import com.android.systemui.keyguard.WakefulnessLifecycle
import com.android.systemui.log.core.LogLevel
import com.android.systemui.log.core.LogLevel
import com.android.systemui.plugins.statusbar.StatusBarStateController
import com.android.systemui.plugins.statusbar.StatusBarStateController
@@ -51,7 +50,6 @@ import com.android.systemui.statusbar.phone.BiometricUnlockController
import com.android.systemui.statusbar.policy.ConfigurationController
import com.android.systemui.statusbar.policy.ConfigurationController
import com.android.systemui.statusbar.policy.KeyguardStateController
import com.android.systemui.statusbar.policy.KeyguardStateController
import com.android.systemui.util.ViewController
import com.android.systemui.util.ViewController
import kotlinx.coroutines.ExperimentalCoroutinesApi
import java.io.PrintWriter
import java.io.PrintWriter
import javax.inject.Inject
import javax.inject.Inject
import javax.inject.Provider
import javax.inject.Provider
@@ -64,7 +62,6 @@ import javax.inject.Provider
 *
 *
 * The ripple uses the accent color of the current theme.
 * The ripple uses the accent color of the current theme.
 */
 */
@ExperimentalCoroutinesApi
@SysUISingleton
@SysUISingleton
class AuthRippleController @Inject constructor(
class AuthRippleController @Inject constructor(
    private val sysuiContext: Context,
    private val sysuiContext: Context,
@@ -316,18 +313,6 @@ class AuthRippleController @Inject constructor(
                mView.fadeDwellRipple()
                mView.fadeDwellRipple()
            }
            }
        }
        }

        override fun onBiometricDetected(
                userId: Int,
                biometricSourceType: BiometricSourceType,
                isStrongBiometric: Boolean
        ) {
            // TODO (b/309804148): add support detect auth ripple for deviceEntryUdfpsRefactor
            if (!DeviceEntryUdfpsRefactor.isEnabled &&
                    keyguardUpdateMonitor.getUserCanSkipBouncer(userId)) {
                showUnlockRipple(biometricSourceType)
            }
        }
    }
    }


    private val configurationChangedListener =
    private val configurationChangedListener =
+4 −40
Original line number Original line Diff line number Diff line
@@ -121,7 +121,6 @@ import com.android.internal.widget.LockPatternUtils;
import com.android.keyguard.KeyguardUpdateMonitor.BiometricAuthenticated;
import com.android.keyguard.KeyguardUpdateMonitor.BiometricAuthenticated;
import com.android.keyguard.logging.KeyguardUpdateMonitorLogger;
import com.android.keyguard.logging.KeyguardUpdateMonitorLogger;
import com.android.settingslib.fuelgauge.BatteryStatus;
import com.android.settingslib.fuelgauge.BatteryStatus;
import com.android.systemui.Flags;
import com.android.systemui.SysuiTestCase;
import com.android.systemui.SysuiTestCase;
import com.android.systemui.biometrics.AuthController;
import com.android.systemui.biometrics.AuthController;
import com.android.systemui.biometrics.FingerprintInteractiveToAuthProvider;
import com.android.systemui.biometrics.FingerprintInteractiveToAuthProvider;
@@ -930,7 +929,8 @@ public class KeyguardUpdateMonitorTest extends SysuiTestCase {
    @Test
    @Test
    public void trustAgentHasTrust() {
    public void trustAgentHasTrust() {
        // WHEN user has trust
        // WHEN user has trust
        givenSelectedUserCanSkipBouncerFromTrustedState();
        mKeyguardUpdateMonitor.onTrustChanged(true, true,
                mSelectedUserInteractor.getSelectedUserId(), 0, null);


        // THEN user is considered as "having trust" and bouncer can be skipped
        // THEN user is considered as "having trust" and bouncer can be skipped
        Assert.assertTrue(mKeyguardUpdateMonitor.getUserHasTrust(
        Assert.assertTrue(mKeyguardUpdateMonitor.getUserHasTrust(
@@ -954,7 +954,8 @@ public class KeyguardUpdateMonitorTest extends SysuiTestCase {
    @Test
    @Test
    public void trustAgentHasTrust_fingerprintLockout() {
    public void trustAgentHasTrust_fingerprintLockout() {
        // GIVEN user has trust
        // GIVEN user has trust
        givenSelectedUserCanSkipBouncerFromTrustedState();
        mKeyguardUpdateMonitor.onTrustChanged(true, true,
                mSelectedUserInteractor.getSelectedUserId(), 0, null);
        Assert.assertTrue(mKeyguardUpdateMonitor.getUserHasTrust(
        Assert.assertTrue(mKeyguardUpdateMonitor.getUserHasTrust(
                mSelectedUserInteractor.getSelectedUserId()));
                mSelectedUserInteractor.getSelectedUserId()));


@@ -1996,43 +1997,6 @@ public class KeyguardUpdateMonitorTest extends SysuiTestCase {
                .isEqualTo(BIOMETRIC_STATE_STOPPED);
                .isEqualTo(BIOMETRIC_STATE_STOPPED);
    }
    }


    @Test
    public void runFpDetectFlagDisabled_sideFps_keyguardDismissible_fingerprintAuthenticateRuns() {
        mSetFlagsRule.disableFlags(Flags.FLAG_RUN_FINGERPRINT_DETECT_ON_DISMISSIBLE_KEYGUARD);

        // Clear invocations, since previous setup (e.g. registering BiometricManager callbacks)
        // will trigger updateBiometricListeningState();
        clearInvocations(mFingerprintManager);
        mKeyguardUpdateMonitor.resetBiometricListeningState();

        // GIVEN the user can skip the bouncer
        givenSelectedUserCanSkipBouncerFromTrustedState();
        when(mStrongAuthTracker.isUnlockingWithBiometricAllowed(anyBoolean())).thenReturn(true);
        mKeyguardUpdateMonitor.dispatchStartedGoingToSleep(0 /* why */);
        mTestableLooper.processAllMessages();

        // WHEN verify authenticate runs
        verifyFingerprintAuthenticateCall();
    }

    @Test
    public void sideFps_keyguardDismissible_fingerprintDetectRuns() {
        mSetFlagsRule.enableFlags(Flags.FLAG_RUN_FINGERPRINT_DETECT_ON_DISMISSIBLE_KEYGUARD);
        // Clear invocations, since previous setup (e.g. registering BiometricManager callbacks)
        // will trigger updateBiometricListeningState();
        clearInvocations(mFingerprintManager);
        mKeyguardUpdateMonitor.resetBiometricListeningState();

        // GIVEN the user can skip the bouncer
        givenSelectedUserCanSkipBouncerFromTrustedState();
        when(mStrongAuthTracker.isUnlockingWithBiometricAllowed(anyBoolean())).thenReturn(true);
        mKeyguardUpdateMonitor.dispatchStartedGoingToSleep(0 /* why */);
        mTestableLooper.processAllMessages();

        // WHEN verify detect runs
        verifyFingerprintDetectCall();
    }

    @Test
    @Test
    public void testFingerprintSensorProperties() throws RemoteException {
    public void testFingerprintSensorProperties() throws RemoteException {
        mFingerprintAuthenticatorsRegisteredCallback.onAllAuthenticatorsRegistered(
        mFingerprintAuthenticatorsRegisteredCallback.onAllAuthenticatorsRegistered(