1 package com.android.keyguard
2 
3 import android.annotation.CurrentTimeMillisLong
4 import android.hardware.biometrics.BiometricAuthenticator.Modality
5 import android.hardware.biometrics.BiometricAuthenticator.TYPE_FACE
6 import android.hardware.biometrics.BiometricAuthenticator.TYPE_FINGERPRINT
7 
8 /** Verbose logging for various keyguard listening states. */
9 sealed class KeyguardListenModel {
10     /** Timestamp of the state change. */
11     abstract val timeMillis: Long
12     /** Current user */
13     abstract val userId: Int
14     /** If keyguard is listening for the given [modality]. */
15     abstract val listening: Boolean
16     /** Sensor type */
17     @Modality abstract val modality: Int
18 }
19 
20 /**
21  * Verbose debug information associated with [KeyguardUpdateMonitor.shouldListenForFingerprint].
22  */
23 data class KeyguardFingerprintListenModel(
24     @CurrentTimeMillisLong override val timeMillis: Long,
25     override val userId: Int,
26     override val listening: Boolean,
27     // keep sorted
28     val biometricEnabledForUser: Boolean,
29     val bouncer: Boolean,
30     val canSkipBouncer: Boolean,
31     val credentialAttempted: Boolean,
32     val deviceInteractive: Boolean,
33     val dreaming: Boolean,
34     val encryptedOrLockdown: Boolean,
35     val fingerprintDisabled: Boolean,
36     val fingerprintLockedOut: Boolean,
37     val goingToSleep: Boolean,
38     val keyguardGoingAway: Boolean,
39     val keyguardIsVisible: Boolean,
40     val keyguardOccluded: Boolean,
41     val occludingAppRequestingFp: Boolean,
42     val primaryUser: Boolean,
43     val shouldListenForFingerprintAssistant: Boolean,
44     val switchingUser: Boolean,
45     val udfps: Boolean,
46     val userDoesNotHaveTrust: Boolean
47 ) : KeyguardListenModel() {
48     override val modality: Int = TYPE_FACE
49 }
50 
51 /**
52  * Verbose debug information associated with [KeyguardUpdateMonitor.shouldListenForFace].
53  */
54 data class KeyguardFaceListenModel(
55     @CurrentTimeMillisLong override val timeMillis: Long,
56     override val userId: Int,
57     override val listening: Boolean,
58     // keep sorted
59     val authInterruptActive: Boolean,
60     val becauseCannotSkipBouncer: Boolean,
61     val biometricSettingEnabledForUser: Boolean,
62     val bouncer: Boolean,
63     val faceAuthenticated: Boolean,
64     val faceDisabled: Boolean,
65     val keyguardAwake: Boolean,
66     val keyguardGoingAway: Boolean,
67     val listeningForFaceAssistant: Boolean,
68     val lockIconPressed: Boolean,
69     val occludingAppRequestingFaceAuth: Boolean,
70     val primaryUser: Boolean,
71     val scanningAllowedByStrongAuth: Boolean,
72     val secureCameraLaunched: Boolean,
73     val switchingUser: Boolean
74 ) : KeyguardListenModel() {
75     override val modality: Int = TYPE_FINGERPRINT
76 }
77