1 package com.android.systemui.biometrics.data.repository
2 
3 import android.hardware.biometrics.PromptInfo
4 import com.android.systemui.biometrics.shared.model.PromptKind
5 import kotlinx.coroutines.flow.MutableStateFlow
6 import kotlinx.coroutines.flow.asStateFlow
7 
8 /** Fake implementation of [PromptRepository] for tests. */
9 class FakePromptRepository : PromptRepository {
10 
11     private val _isShowing = MutableStateFlow(false)
12     override val isShowing = _isShowing.asStateFlow()
13 
14     private val _promptInfo = MutableStateFlow<PromptInfo?>(null)
15     override val promptInfo = _promptInfo.asStateFlow()
16 
17     private val _userId = MutableStateFlow<Int?>(null)
18     override val userId = _userId.asStateFlow()
19 
20     private val _requestId = MutableStateFlow<Long?>(null)
21     override val requestId = _requestId.asStateFlow()
22 
23     private var _challenge = MutableStateFlow<Long?>(null)
24     override val challenge = _challenge.asStateFlow()
25 
26     private val _promptKind = MutableStateFlow<PromptKind>(PromptKind.None)
27     override val promptKind = _promptKind.asStateFlow()
28 
29     private val _isConfirmationRequired = MutableStateFlow(false)
30     override val isConfirmationRequired = _isConfirmationRequired.asStateFlow()
31 
32     private val _opPackageName: MutableStateFlow<String?> = MutableStateFlow(null)
33     override val opPackageName = _opPackageName.asStateFlow()
34 
setPromptnull35     override fun setPrompt(
36         promptInfo: PromptInfo,
37         userId: Int,
38         requestId: Long,
39         gatekeeperChallenge: Long?,
40         kind: PromptKind,
41         opPackageName: String,
42     ) =
43         setPrompt(
44             promptInfo,
45             userId,
46             requestId,
47             gatekeeperChallenge,
48             kind,
49             forceConfirmation = false,
50             opPackageName = opPackageName
51         )
52 
53     fun setPrompt(
54         promptInfo: PromptInfo,
55         userId: Int,
56         requestId: Long,
57         gatekeeperChallenge: Long?,
58         kind: PromptKind,
59         forceConfirmation: Boolean = false,
60         opPackageName: String? = null,
61     ) {
62         _promptInfo.value = promptInfo
63         _userId.value = userId
64         _requestId.value = requestId
65         _challenge.value = gatekeeperChallenge
66         _promptKind.value = kind
67         _isConfirmationRequired.value = promptInfo.isConfirmationRequested || forceConfirmation
68         _opPackageName.value = opPackageName
69     }
70 
unsetPromptnull71     override fun unsetPrompt(requestId: Long) {
72         _promptInfo.value = null
73         _userId.value = null
74         _requestId.value = null
75         _challenge.value = null
76         _promptKind.value = PromptKind.None
77         _opPackageName.value = null
78         _isConfirmationRequired.value = false
79     }
80 
setIsShowingnull81     fun setIsShowing(showing: Boolean) {
82         _isShowing.value = showing
83     }
84 }
85