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

Commit d62aedf2 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Add session id to keyguard metrics"

parents e8f5006a bd9c80a4
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