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

Commit 3e2fe15e authored by Beverly Tai's avatar Beverly Tai Committed by Android (Google) Code Review
Browse files

Merge "Don't reset the biometricUnlockState until the next time keyguard shows" into main

parents 109b07f3 2c000e76
Loading
Loading
Loading
Loading
+17 −3
Original line number Diff line number Diff line
@@ -51,6 +51,9 @@ import com.android.systemui.dump.DumpManager;
import com.android.systemui.keyguard.KeyguardViewMediator;
import com.android.systemui.keyguard.WakefulnessLifecycle;
import com.android.systemui.keyguard.domain.interactor.BiometricUnlockInteractor;
import com.android.systemui.keyguard.domain.interactor.KeyguardTransitionInteractor;
import com.android.systemui.keyguard.shared.model.KeyguardState;
import com.android.systemui.keyguard.shared.model.TransitionStep;
import com.android.systemui.log.SessionTracker;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.res.R;
@@ -59,6 +62,7 @@ import com.android.systemui.statusbar.NotificationShadeWindowController;
import com.android.systemui.statusbar.VibratorHelper;
import com.android.systemui.statusbar.policy.KeyguardStateController;
import com.android.systemui.user.domain.interactor.SelectedUserInteractor;
import com.android.systemui.util.kotlin.JavaAdapter;
import com.android.systemui.util.time.SystemClock;

import dagger.Lazy;
@@ -286,7 +290,9 @@ public class BiometricUnlockController extends KeyguardUpdateMonitorCallback imp
            VibratorHelper vibrator,
            SystemClock systemClock,
            Lazy<SelectedUserInteractor> selectedUserInteractor,
            BiometricUnlockInteractor biometricUnlockInteractor
            BiometricUnlockInteractor biometricUnlockInteractor,
            JavaAdapter javaAdapter,
            KeyguardTransitionInteractor keyguardTransitionInteractor
    ) {
        mPowerManager = powerManager;
        mUpdateMonitor = keyguardUpdateMonitor;
@@ -317,10 +323,19 @@ public class BiometricUnlockController extends KeyguardUpdateMonitorCallback imp
        mOrderUnlockAndWake = resources.getBoolean(
                com.android.internal.R.bool.config_orderUnlockAndWake);
        mSelectedUserInteractor = selectedUserInteractor;

        javaAdapter.alwaysCollectFlow(
                keyguardTransitionInteractor.getStartedKeyguardTransitionStep(),
                this::consumeTransitionStepOnStartedKeyguardState);
        dumpManager.registerDumpable(this);
    }

    @VisibleForTesting
    protected void consumeTransitionStepOnStartedKeyguardState(TransitionStep transitionStep) {
        if (transitionStep.getFrom() == KeyguardState.GONE) {
            mBiometricUnlockInteractor.setBiometricUnlockState(MODE_NONE);
        }
    }

    public void setKeyguardViewController(KeyguardViewController keyguardViewController) {
        mKeyguardViewController = keyguardViewController;
    }
@@ -773,7 +788,6 @@ public class BiometricUnlockController extends KeyguardUpdateMonitorCallback imp
        for (BiometricUnlockEventsListener listener : mBiometricUnlockEventsListeners) {
            listener.onResetMode();
        }
        mBiometricUnlockInteractor.setBiometricUnlockState(MODE_NONE);
        mNumConsecutiveFpFailures = 0;
        mLastFpFailureUptimeMillis = 0;
    }
+33 −1
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

package com.android.systemui.statusbar.phone;

import static com.android.systemui.statusbar.phone.BiometricUnlockController.MODE_NONE;
import static com.android.systemui.statusbar.phone.BiometricUnlockController.MODE_WAKE_AND_UNLOCK;

import static com.google.common.truth.Truth.assertThat;
@@ -26,6 +27,7 @@ import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.anyLong;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.reset;
import static org.mockito.Mockito.verify;
@@ -51,6 +53,10 @@ import com.android.systemui.dump.DumpManager;
import com.android.systemui.keyguard.KeyguardViewMediator;
import com.android.systemui.keyguard.WakefulnessLifecycle;
import com.android.systemui.keyguard.domain.interactor.BiometricUnlockInteractor;
import com.android.systemui.keyguard.domain.interactor.KeyguardTransitionInteractor;
import com.android.systemui.keyguard.shared.model.KeyguardState;
import com.android.systemui.keyguard.shared.model.TransitionState;
import com.android.systemui.keyguard.shared.model.TransitionStep;
import com.android.systemui.log.SessionTracker;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.statusbar.NotificationMediaManager;
@@ -58,6 +64,7 @@ import com.android.systemui.statusbar.NotificationShadeWindowController;
import com.android.systemui.statusbar.VibratorHelper;
import com.android.systemui.statusbar.policy.KeyguardStateController;
import com.android.systemui.user.domain.interactor.SelectedUserInteractor;
import com.android.systemui.util.kotlin.JavaAdapter;
import com.android.systemui.util.time.FakeSystemClock;

import org.junit.Before;
@@ -158,7 +165,9 @@ public class BiometricsUnlockControllerTest extends SysuiTestCase {
                mSessionTracker, mLatencyTracker, mScreenOffAnimationController, mVibratorHelper,
                mSystemClock,
                () -> mSelectedUserInteractor,
                mBiometricUnlockInteractor
                mBiometricUnlockInteractor,
                mock(JavaAdapter.class),
                mock(KeyguardTransitionInteractor.class)
        );
        biometricUnlockController.setKeyguardViewController(mStatusBarKeyguardViewManager);
        biometricUnlockController.addListener(mBiometricUnlockEventsListener);
@@ -461,6 +470,29 @@ public class BiometricsUnlockControllerTest extends SysuiTestCase {
        verify(mPowerManager, never()).wakeUp(anyLong(), anyInt(), anyString());
    }

    @Test
    public void biometricUnlockStateResetOnTransitionFromGone() {
        mBiometricUnlockController.consumeTransitionStepOnStartedKeyguardState(
                new TransitionStep(
                        KeyguardState.AOD,
                        KeyguardState.GONE,
                        .1f /* value */,
                        TransitionState.STARTED
                )
        );
        verify(mBiometricUnlockInteractor, never()).setBiometricUnlockState(anyInt());

        mBiometricUnlockController.consumeTransitionStepOnStartedKeyguardState(
                new TransitionStep(
                        KeyguardState.GONE,
                        KeyguardState.AOD,
                        .1f /* value */,
                        TransitionState.STARTED
                )
        );
        verify(mBiometricUnlockInteractor).setBiometricUnlockState(eq(MODE_NONE));
    }

    @Test
    public void onFingerprintDetect_showBouncer() {
        // WHEN fingerprint detect occurs