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

Commit bd9c80a4 authored by Beverly's avatar Beverly
Browse files

Add session id to keyguard metrics

Test: manual, atest SystemUITests
Fixes: 213483562
Change-Id: I030b92a357079117b6060e3f1e0c387ab7fbe56a
parent 7d8c3ad7
Loading
Loading
Loading
Loading
+13 −16
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

package com.android.keyguard

import android.app.StatusBarManager.SESSION_KEYGUARD
import android.content.Context
import android.hardware.biometrics.BiometricSourceType
import com.android.internal.annotations.VisibleForTesting
@@ -28,7 +29,7 @@ import com.android.internal.widget.LockPatternUtils.StrongAuthTracker.STRONG_AUT
import com.android.keyguard.KeyguardBiometricLockoutLogger.PrimaryAuthRequiredEvent
import com.android.systemui.CoreStartable
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dump.DumpManager
import com.android.systemui.log.SessionTracker
import java.io.FileDescriptor
import java.io.PrintWriter
import javax.inject.Inject
@@ -44,7 +45,7 @@ class KeyguardBiometricLockoutLogger @Inject constructor(
    context: Context?,
    private val uiEventLogger: UiEventLogger,
    private val keyguardUpdateMonitor: KeyguardUpdateMonitor,
    private val dumpManager: DumpManager
    private val sessionTracker: SessionTracker
) : CoreStartable(context) {
    private var fingerprintLockedOut = false
    private var faceLockedOut = false
@@ -53,7 +54,6 @@ class KeyguardBiometricLockoutLogger @Inject constructor(
    private var timeout = false

    override fun start() {
        dumpManager.registerDumpable(this)
        mKeyguardUpdateMonitorCallback.onStrongAuthStateChanged(
                KeyguardUpdateMonitor.getCurrentUser())
        keyguardUpdateMonitor.registerCallback(mKeyguardUpdateMonitorCallback)
@@ -65,22 +65,17 @@ class KeyguardBiometricLockoutLogger @Inject constructor(
            if (biometricSourceType == BiometricSourceType.FINGERPRINT) {
                val lockedOut = keyguardUpdateMonitor.isFingerprintLockedOut
                if (lockedOut && !fingerprintLockedOut) {
                    uiEventLogger.log(
                            PrimaryAuthRequiredEvent.PRIMARY_AUTH_REQUIRED_FINGERPRINT_LOCKED_OUT)
                    log(PrimaryAuthRequiredEvent.PRIMARY_AUTH_REQUIRED_FINGERPRINT_LOCKED_OUT)
                } else if (!lockedOut && fingerprintLockedOut) {
                    uiEventLogger.log(
                            PrimaryAuthRequiredEvent
                                    .PRIMARY_AUTH_REQUIRED_FINGERPRINT_LOCKED_OUT_RESET)
                    log(PrimaryAuthRequiredEvent.PRIMARY_AUTH_REQUIRED_FINGERPRINT_LOCKED_OUT_RESET)
                }
                fingerprintLockedOut = lockedOut
            } else if (biometricSourceType == BiometricSourceType.FACE) {
                val lockedOut = keyguardUpdateMonitor.isFaceLockedOut
                if (lockedOut && !faceLockedOut) {
                    uiEventLogger.log(
                            PrimaryAuthRequiredEvent.PRIMARY_AUTH_REQUIRED_FACE_LOCKED_OUT)
                    log(PrimaryAuthRequiredEvent.PRIMARY_AUTH_REQUIRED_FACE_LOCKED_OUT)
                } else if (!lockedOut && faceLockedOut) {
                    uiEventLogger.log(
                            PrimaryAuthRequiredEvent.PRIMARY_AUTH_REQUIRED_FACE_LOCKED_OUT_RESET)
                    log(PrimaryAuthRequiredEvent.PRIMARY_AUTH_REQUIRED_FACE_LOCKED_OUT_RESET)
                }
                faceLockedOut = lockedOut
            }
@@ -95,20 +90,19 @@ class KeyguardBiometricLockoutLogger @Inject constructor(

            val newEncryptedOrLockdown = keyguardUpdateMonitor.isEncryptedOrLockdown(userId)
            if (newEncryptedOrLockdown && !encryptedOrLockdown) {
                uiEventLogger.log(
                        PrimaryAuthRequiredEvent.PRIMARY_AUTH_REQUIRED_ENCRYPTED_OR_LOCKDOWN)
                log(PrimaryAuthRequiredEvent.PRIMARY_AUTH_REQUIRED_ENCRYPTED_OR_LOCKDOWN)
            }
            encryptedOrLockdown = newEncryptedOrLockdown

            val newUnattendedUpdate = isUnattendedUpdate(strongAuthFlags)
            if (newUnattendedUpdate && !unattendedUpdate) {
                uiEventLogger.log(PrimaryAuthRequiredEvent.PRIMARY_AUTH_REQUIRED_UNATTENDED_UPDATE)
                log(PrimaryAuthRequiredEvent.PRIMARY_AUTH_REQUIRED_UNATTENDED_UPDATE)
            }
            unattendedUpdate = newUnattendedUpdate

            val newTimeout = isStrongAuthTimeout(strongAuthFlags)
            if (newTimeout && !timeout) {
                uiEventLogger.log(PrimaryAuthRequiredEvent.PRIMARY_AUTH_REQUIRED_TIMEOUT)
                log(PrimaryAuthRequiredEvent.PRIMARY_AUTH_REQUIRED_TIMEOUT)
            }
            timeout = newTimeout
        }
@@ -123,6 +117,9 @@ class KeyguardBiometricLockoutLogger @Inject constructor(
    ) = containsFlag(flags, STRONG_AUTH_REQUIRED_AFTER_TIMEOUT) ||
            containsFlag(flags, STRONG_AUTH_REQUIRED_AFTER_NON_STRONG_BIOMETRICS_TIMEOUT)

    private fun log(event: PrimaryAuthRequiredEvent) =
            uiEventLogger.log(event, sessionTracker.getSessionId(SESSION_KEYGUARD))

    override fun dump(fd: FileDescriptor, pw: PrintWriter, args: Array<String>) {
        pw.println("  mFingerprintLockedOut=$fingerprintLockedOut")
        pw.println("  mFaceLockedOut=$faceLockedOut")
+21 −5
Original line number Diff line number Diff line
@@ -16,6 +16,8 @@

package com.android.keyguard;

import static android.app.StatusBarManager.SESSION_KEYGUARD;

import static com.android.keyguard.KeyguardSecurityContainer.BOUNCER_DISMISS_BIOMETRIC;
import static com.android.keyguard.KeyguardSecurityContainer.BOUNCER_DISMISS_EXTENDED_ACCESS;
import static com.android.keyguard.KeyguardSecurityContainer.BOUNCER_DISMISS_NONE_SECURITY;
@@ -36,7 +38,10 @@ import android.util.Log;
import android.util.Slog;
import android.view.MotionEvent;

import androidx.annotation.Nullable;

import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.logging.InstanceId;
import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.UiEventLogger;
import com.android.internal.logging.nano.MetricsProto;
@@ -53,6 +58,7 @@ import com.android.systemui.R;
import com.android.systemui.classifier.FalsingCollector;
import com.android.systemui.flags.FeatureFlags;
import com.android.systemui.flags.Flags;
import com.android.systemui.log.SessionTracker;
import com.android.systemui.plugins.FalsingManager;
import com.android.systemui.shared.system.SysUiStatsLog;
import com.android.systemui.statusbar.policy.ConfigurationController;
@@ -86,6 +92,7 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard
    private final UserSwitcherController mUserSwitcherController;
    private final GlobalSettings mGlobalSettings;
    private final FeatureFlags mFeatureFlags;
    private final SessionTracker mSessionTracker;

    private int mLastOrientation = Configuration.ORIENTATION_UNDEFINED;

@@ -191,7 +198,7 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard
            mMetricsLogger.write(new LogMaker(MetricsEvent.BOUNCER)
                    .setType(success ? MetricsEvent.TYPE_SUCCESS : MetricsEvent.TYPE_FAILURE));
            mUiEventLogger.log(success ? BouncerUiEvent.BOUNCER_PASSWORD_SUCCESS
                    : BouncerUiEvent.BOUNCER_PASSWORD_FAILURE);
                            : BouncerUiEvent.BOUNCER_PASSWORD_FAILURE, getSessionId());
        }

        public void reset() {
@@ -242,7 +249,8 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard
            FalsingManager falsingManager,
            UserSwitcherController userSwitcherController,
            FeatureFlags featureFlags,
            GlobalSettings globalSettings) {
            GlobalSettings globalSettings,
            SessionTracker sessionTracker) {
        super(view);
        mLockPatternUtils = lockPatternUtils;
        mUpdateMonitor = keyguardUpdateMonitor;
@@ -261,6 +269,7 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard
        mUserSwitcherController = userSwitcherController;
        mFeatureFlags = featureFlags;
        mGlobalSettings = globalSettings;
        mSessionTracker = sessionTracker;
    }

    @Override
@@ -456,7 +465,7 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard
                    .setType(MetricsProto.MetricsEvent.TYPE_DISMISS).setSubtype(eventSubtype));
        }
        if (uiEvent != BouncerUiEvent.UNKNOWN) {
            mUiEventLogger.log(uiEvent);
            mUiEventLogger.log(uiEvent, getSessionId());
        }
        if (finish) {
            mSecurityCallback.finish(strongAuth, targetUserId);
@@ -599,6 +608,10 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard
        }
    }

    private @Nullable InstanceId getSessionId() {
        return mSessionTracker.getSessionId(SESSION_KEYGUARD);
    }

    /** Update keyguard position based on a tapped X coordinate. */
    public void updateKeyguardPosition(float x) {
        mView.updatePositionByTouchX(x);
@@ -622,6 +635,7 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard
        private final GlobalSettings mGlobalSettings;
        private final FeatureFlags mFeatureFlags;
        private final UserSwitcherController mUserSwitcherController;
        private final SessionTracker mSessionTracker;

        @Inject
        Factory(KeyguardSecurityContainer view,
@@ -639,7 +653,8 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard
                FalsingManager falsingManager,
                UserSwitcherController userSwitcherController,
                FeatureFlags featureFlags,
                GlobalSettings globalSettings) {
                GlobalSettings globalSettings,
                SessionTracker sessionTracker) {
            mView = view;
            mAdminSecondaryLockScreenControllerFactory = adminSecondaryLockScreenControllerFactory;
            mLockPatternUtils = lockPatternUtils;
@@ -655,6 +670,7 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard
            mFeatureFlags = featureFlags;
            mGlobalSettings = globalSettings;
            mUserSwitcherController = userSwitcherController;
            mSessionTracker = sessionTracker;
        }

        public KeyguardSecurityContainerController create(
@@ -664,7 +680,7 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard
                    mKeyguardUpdateMonitor, mKeyguardSecurityModel, mMetricsLogger, mUiEventLogger,
                    mKeyguardStateController, securityCallback, mSecurityViewFlipperController,
                    mConfigurationController, mFalsingCollector, mFalsingManager,
                    mUserSwitcherController, mFeatureFlags, mGlobalSettings);
                    mUserSwitcherController, mFeatureFlags, mGlobalSettings, mSessionTracker);
        }
    }
}
+18 −6
Original line number Diff line number Diff line
@@ -16,6 +16,8 @@

package com.android.systemui.statusbar.phone;

import static android.app.StatusBarManager.SESSION_KEYGUARD;

import android.annotation.IntDef;
import android.content.Context;
import android.content.res.Resources;
@@ -28,7 +30,10 @@ import android.os.SystemClock;
import android.os.Trace;
import android.util.Log;

import androidx.annotation.Nullable;

import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.logging.InstanceId;
import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.UiEvent;
import com.android.internal.logging.UiEventLogger;
@@ -48,6 +53,7 @@ import com.android.systemui.keyguard.KeyguardUnlockAnimationController;
import com.android.systemui.keyguard.KeyguardViewMediator;
import com.android.systemui.keyguard.ScreenLifecycle;
import com.android.systemui.keyguard.WakefulnessLifecycle;
import com.android.systemui.log.SessionTracker;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.statusbar.CommandQueue;
import com.android.systemui.statusbar.NotificationMediaManager;
@@ -156,6 +162,7 @@ public class BiometricUnlockController extends KeyguardUpdateMonitorCallback imp
    private final DozeParameters mDozeParameters;
    private final KeyguardStateController mKeyguardStateController;
    private final NotificationShadeWindowController mNotificationShadeWindowController;
    private final SessionTracker mSessionTracker;
    private final Context mContext;
    private final int mWakeUpDelay;
    private int mMode;
@@ -273,7 +280,8 @@ public class BiometricUnlockController extends KeyguardUpdateMonitorCallback imp
            ScreenLifecycle screenLifecycle,
            AuthController authController,
            StatusBarStateController statusBarStateController,
            KeyguardUnlockAnimationController keyguardUnlockAnimationController) {
            KeyguardUnlockAnimationController keyguardUnlockAnimationController,
            SessionTracker sessionTracker) {
        mContext = context;
        mPowerManager = powerManager;
        mShadeController = shadeController;
@@ -297,6 +305,7 @@ public class BiometricUnlockController extends KeyguardUpdateMonitorCallback imp
        mAuthController = authController;
        mStatusBarStateController = statusBarStateController;
        mKeyguardUnlockAnimationController = keyguardUnlockAnimationController;
        mSessionTracker = sessionTracker;
        dumpManager.registerDumpable(getClass().getName(), this);
    }

@@ -376,7 +385,7 @@ public class BiometricUnlockController extends KeyguardUpdateMonitorCallback imp
        mMetricsLogger.write(new LogMaker(MetricsEvent.BIOMETRIC_AUTH)
                .setType(MetricsEvent.TYPE_SUCCESS).setSubtype(toSubtype(biometricSourceType)));
        Optional.ofNullable(BiometricUiEvent.SUCCESS_EVENT_BY_SOURCE_TYPE.get(biometricSourceType))
                .ifPresent(UI_EVENT_LOGGER::log);
                .ifPresent(event -> UI_EVENT_LOGGER.log(event, getSessionId()));

        boolean unlockAllowed =
                mKeyguardStateController.isOccluded()
@@ -641,7 +650,7 @@ public class BiometricUnlockController extends KeyguardUpdateMonitorCallback imp
        mMetricsLogger.write(new LogMaker(MetricsEvent.BIOMETRIC_AUTH)
                .setType(MetricsEvent.TYPE_FAILURE).setSubtype(toSubtype(biometricSourceType)));
        Optional.ofNullable(BiometricUiEvent.FAILURE_EVENT_BY_SOURCE_TYPE.get(biometricSourceType))
                .ifPresent(UI_EVENT_LOGGER::log);
                .ifPresent(event -> UI_EVENT_LOGGER.log(event, getSessionId()));

        if (biometricSourceType == BiometricSourceType.FINGERPRINT
                && mUpdateMonitor.isUdfpsSupported()) {
@@ -656,7 +665,7 @@ public class BiometricUnlockController extends KeyguardUpdateMonitorCallback imp

            if (mNumConsecutiveFpFailures >= FP_ATTEMPTS_BEFORE_SHOW_BOUNCER) {
                startWakeAndUnlock(MODE_SHOW_BOUNCER);
                UI_EVENT_LOGGER.log(BiometricUiEvent.BIOMETRIC_BOUNCER_SHOWN);
                UI_EVENT_LOGGER.log(BiometricUiEvent.BIOMETRIC_BOUNCER_SHOWN, getSessionId());
                mNumConsecutiveFpFailures = 0;
            }
        }
@@ -670,7 +679,7 @@ public class BiometricUnlockController extends KeyguardUpdateMonitorCallback imp
                .setType(MetricsEvent.TYPE_ERROR).setSubtype(toSubtype(biometricSourceType))
                .addTaggedData(MetricsEvent.FIELD_BIOMETRIC_AUTH_ERROR, msgId));
        Optional.ofNullable(BiometricUiEvent.ERROR_EVENT_BY_SOURCE_TYPE.get(biometricSourceType))
                .ifPresent(UI_EVENT_LOGGER::log);
                .ifPresent(event -> UI_EVENT_LOGGER.log(event, getSessionId()));

        // if we're on the shade and we're locked out, immediately show the bouncer
        if (biometricSourceType == BiometricSourceType.FINGERPRINT
@@ -680,7 +689,7 @@ public class BiometricUnlockController extends KeyguardUpdateMonitorCallback imp
                && (mStatusBarStateController.getState() == StatusBarState.SHADE
                    || mStatusBarStateController.getState() == StatusBarState.SHADE_LOCKED)) {
            startWakeAndUnlock(MODE_SHOW_BOUNCER);
            UI_EVENT_LOGGER.log(BiometricUiEvent.BIOMETRIC_BOUNCER_SHOWN);
            UI_EVENT_LOGGER.log(BiometricUiEvent.BIOMETRIC_BOUNCER_SHOWN, getSessionId());
        }
        cleanup();
    }
@@ -786,6 +795,9 @@ public class BiometricUnlockController extends KeyguardUpdateMonitorCallback imp
        return mBiometricType;
    }

    private @Nullable InstanceId getSessionId() {
        return mSessionTracker.getSessionId(SESSION_KEYGUARD);
    }
    /**
     * Translates biometric source type for logging purpose.
     */
+17 −13
Original line number Diff line number Diff line
@@ -20,11 +20,12 @@ import android.hardware.biometrics.BiometricSourceType
import org.mockito.Mockito.verify
import android.testing.AndroidTestingRunner
import androidx.test.filters.SmallTest
import com.android.internal.logging.InstanceId
import com.android.internal.logging.UiEventLogger
import com.android.internal.widget.LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_AFTER_TIMEOUT
import com.android.internal.widget.LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_FOR_UNATTENDED_UPDATE
import com.android.systemui.SysuiTestCase
import com.android.systemui.dump.DumpManager
import com.android.systemui.log.SessionTracker
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
@@ -44,9 +45,11 @@ class KeyguardBiometricLockoutLoggerTest : SysuiTestCase() {
    @Mock
    lateinit var keyguardUpdateMonitor: KeyguardUpdateMonitor
    @Mock
    lateinit var dumpManager: DumpManager
    @Mock
    lateinit var strongAuthTracker: KeyguardUpdateMonitor.StrongAuthTracker
    @Mock
    lateinit var sessionTracker: SessionTracker
    @Mock
    lateinit var sessionId: InstanceId

    @Captor
    lateinit var updateMonitorCallbackCaptor: ArgumentCaptor<KeyguardUpdateMonitorCallback>
@@ -58,11 +61,12 @@ class KeyguardBiometricLockoutLoggerTest : SysuiTestCase() {
    fun setUp() {
        MockitoAnnotations.initMocks(this)
        whenever(keyguardUpdateMonitor.strongAuthTracker).thenReturn(strongAuthTracker)
        whenever(sessionTracker.getSessionId(anyInt())).thenReturn(sessionId)
        keyguardBiometricLockoutLogger = KeyguardBiometricLockoutLogger(
                mContext,
                uiEventLogger,
                keyguardUpdateMonitor,
                dumpManager)
                sessionTracker)
    }

    @Test
@@ -76,7 +80,7 @@ class KeyguardBiometricLockoutLoggerTest : SysuiTestCase() {

        // THEN encrypted / lockdown state is logged
        verify(uiEventLogger).log(KeyguardBiometricLockoutLogger.PrimaryAuthRequiredEvent
                .PRIMARY_AUTH_REQUIRED_ENCRYPTED_OR_LOCKDOWN)
                .PRIMARY_AUTH_REQUIRED_ENCRYPTED_OR_LOCKDOWN, sessionId)
    }

    @Test
@@ -93,7 +97,7 @@ class KeyguardBiometricLockoutLoggerTest : SysuiTestCase() {

        // THEN primary auth required state is logged
        verify(uiEventLogger).log(KeyguardBiometricLockoutLogger.PrimaryAuthRequiredEvent
                .PRIMARY_AUTH_REQUIRED_TIMEOUT)
                .PRIMARY_AUTH_REQUIRED_TIMEOUT, sessionId)
    }

    @Test
@@ -110,7 +114,7 @@ class KeyguardBiometricLockoutLoggerTest : SysuiTestCase() {

        // THEN primary auth required state is logged
        verify(uiEventLogger).log(KeyguardBiometricLockoutLogger.PrimaryAuthRequiredEvent
                .PRIMARY_AUTH_REQUIRED_UNATTENDED_UPDATE)
                .PRIMARY_AUTH_REQUIRED_UNATTENDED_UPDATE, sessionId)
    }

    @Test
@@ -128,9 +132,9 @@ class KeyguardBiometricLockoutLoggerTest : SysuiTestCase() {

        // THEN primary auth required state is logged with all the reasons
        verify(uiEventLogger).log(KeyguardBiometricLockoutLogger.PrimaryAuthRequiredEvent
                .PRIMARY_AUTH_REQUIRED_TIMEOUT)
                .PRIMARY_AUTH_REQUIRED_TIMEOUT, sessionId)
        verify(uiEventLogger).log(KeyguardBiometricLockoutLogger.PrimaryAuthRequiredEvent
                .PRIMARY_AUTH_REQUIRED_UNATTENDED_UPDATE)
                .PRIMARY_AUTH_REQUIRED_UNATTENDED_UPDATE, sessionId)

        // WHEN onStrongAuthStateChanged is called again
        updateMonitorCallback.onStrongAuthStateChanged(0)
@@ -152,7 +156,7 @@ class KeyguardBiometricLockoutLoggerTest : SysuiTestCase() {

        // THEN primary auth required state is logged
        verify(uiEventLogger).log(KeyguardBiometricLockoutLogger.PrimaryAuthRequiredEvent
                .PRIMARY_AUTH_REQUIRED_FACE_LOCKED_OUT)
                .PRIMARY_AUTH_REQUIRED_FACE_LOCKED_OUT, sessionId)

        // WHEN face lockout is reset
        whenever(keyguardUpdateMonitor.isFaceLockedOut).thenReturn(false)
@@ -160,7 +164,7 @@ class KeyguardBiometricLockoutLoggerTest : SysuiTestCase() {

        // THEN primary auth required state is logged
        verify(uiEventLogger).log(KeyguardBiometricLockoutLogger.PrimaryAuthRequiredEvent
                .PRIMARY_AUTH_REQUIRED_FACE_LOCKED_OUT_RESET)
                .PRIMARY_AUTH_REQUIRED_FACE_LOCKED_OUT_RESET, sessionId)
    }

    @Test
@@ -176,7 +180,7 @@ class KeyguardBiometricLockoutLoggerTest : SysuiTestCase() {

        // THEN primary auth required state is logged
        verify(uiEventLogger).log(KeyguardBiometricLockoutLogger.PrimaryAuthRequiredEvent
                .PRIMARY_AUTH_REQUIRED_FINGERPRINT_LOCKED_OUT)
                .PRIMARY_AUTH_REQUIRED_FINGERPRINT_LOCKED_OUT, sessionId)

        // WHEN fingerprint lockout is reset
        whenever(keyguardUpdateMonitor.isFingerprintLockedOut).thenReturn(false)
@@ -184,7 +188,7 @@ class KeyguardBiometricLockoutLoggerTest : SysuiTestCase() {

        // THEN primary auth required state is logged
        verify(uiEventLogger).log(KeyguardBiometricLockoutLogger.PrimaryAuthRequiredEvent
                .PRIMARY_AUTH_REQUIRED_FINGERPRINT_LOCKED_OUT_RESET)
                .PRIMARY_AUTH_REQUIRED_FINGERPRINT_LOCKED_OUT_RESET, sessionId)
    }

    fun captureUpdateMonitorCallback() {
+5 −1
Original line number Diff line number Diff line
@@ -49,6 +49,7 @@ import com.android.systemui.R;
import com.android.systemui.SysuiTestCase;
import com.android.systemui.classifier.FalsingCollector;
import com.android.systemui.flags.FeatureFlags;
import com.android.systemui.log.SessionTracker;
import com.android.systemui.plugins.FalsingManager;
import com.android.systemui.statusbar.policy.ConfigurationController;
import com.android.systemui.statusbar.policy.KeyguardStateController;
@@ -120,6 +121,8 @@ public class KeyguardSecurityContainerControllerTest extends SysuiTestCase {
    private FeatureFlags mFeatureFlags;
    @Mock
    private UserSwitcherController mUserSwitcherController;
    @Mock
    private SessionTracker mSessionTracker;
    private Configuration mConfiguration;

    private KeyguardSecurityContainerController mKeyguardSecurityContainerController;
@@ -154,7 +157,8 @@ public class KeyguardSecurityContainerControllerTest extends SysuiTestCase {
                mKeyguardUpdateMonitor, mKeyguardSecurityModel, mMetricsLogger, mUiEventLogger,
                mKeyguardStateController, mKeyguardSecurityViewFlipperController,
                mConfigurationController, mFalsingCollector, mFalsingManager,
                mUserSwitcherController, mFeatureFlags, mGlobalSettings).create(mSecurityCallback);
                mUserSwitcherController, mFeatureFlags, mGlobalSettings,
                mSessionTracker).create(mSecurityCallback);
    }

    @Test
Loading