1 package com.android.systemui.bouncer.data.repository
2 
3 import com.android.keyguard.KeyguardSecurityModel
4 import com.android.systemui.bouncer.shared.constants.KeyguardBouncerConstants
5 import com.android.systemui.bouncer.shared.model.BouncerDismissActionModel
6 import com.android.systemui.bouncer.shared.model.BouncerShowMessageModel
7 import com.android.systemui.dagger.SysUISingleton
8 import dagger.Binds
9 import dagger.Module
10 import javax.inject.Inject
11 import kotlinx.coroutines.flow.Flow
12 import kotlinx.coroutines.flow.MutableSharedFlow
13 import kotlinx.coroutines.flow.MutableStateFlow
14 import kotlinx.coroutines.flow.asSharedFlow
15 import kotlinx.coroutines.flow.asStateFlow
16 
17 /** Fake implementation of [KeyguardBouncerRepository] */
18 @SysUISingleton
19 class FakeKeyguardBouncerRepository @Inject constructor() : KeyguardBouncerRepository {
20     private val _primaryBouncerShow = MutableStateFlow(false)
21     override val primaryBouncerShow = _primaryBouncerShow.asStateFlow()
22     private val _primaryBouncerShowingSoon = MutableStateFlow(false)
23     override val primaryBouncerShowingSoon = _primaryBouncerShowingSoon.asStateFlow()
24     private val _primaryBouncerStartingToHide = MutableStateFlow(false)
25     override val primaryBouncerStartingToHide = _primaryBouncerStartingToHide.asStateFlow()
26     private val _primaryBouncerDisappearAnimation = MutableStateFlow<Runnable?>(null)
27     override val primaryBouncerStartingDisappearAnimation =
28         _primaryBouncerDisappearAnimation.asStateFlow()
29     private val _primaryBouncerScrimmed = MutableStateFlow(false)
30     override val primaryBouncerScrimmed = _primaryBouncerScrimmed.asStateFlow()
31     private val _panelExpansionAmount = MutableStateFlow(KeyguardBouncerConstants.EXPANSION_HIDDEN)
32     override val panelExpansionAmount = _panelExpansionAmount.asStateFlow()
33     private val _keyguardPosition = MutableStateFlow<Float?>(null)
34     override val keyguardPosition = _keyguardPosition.asStateFlow()
35     private val _isBackButtonEnabled = MutableStateFlow<Boolean?>(null)
36     override val isBackButtonEnabled = _isBackButtonEnabled.asStateFlow()
37     private val _keyguardAuthenticated = MutableStateFlow<Boolean?>(null)
38     override val keyguardAuthenticatedBiometrics = _keyguardAuthenticated.asStateFlow()
39     private val _keyguardAuthenticatedPrimaryAuth = MutableSharedFlow<Int>()
40     override val keyguardAuthenticatedPrimaryAuth: Flow<Int> =
41         _keyguardAuthenticatedPrimaryAuth.asSharedFlow()
42     private val _userRequestedBouncerWhenAlreadyAuthenticated = MutableSharedFlow<Int>()
43     override val userRequestedBouncerWhenAlreadyAuthenticated: Flow<Int> =
44         _userRequestedBouncerWhenAlreadyAuthenticated.asSharedFlow()
45     private val _showMessage = MutableStateFlow<BouncerShowMessageModel?>(null)
46     override val showMessage = _showMessage.asStateFlow()
47     private val _resourceUpdateRequests = MutableStateFlow(false)
48     override val resourceUpdateRequests = _resourceUpdateRequests.asStateFlow()
49     private val _isAlternateBouncerVisible = MutableStateFlow(false)
50     override val alternateBouncerVisible = _isAlternateBouncerVisible.asStateFlow()
51     override var lastAlternateBouncerVisibleTime: Long = 0L
52     override val lastShownSecurityMode: MutableStateFlow<KeyguardSecurityModel.SecurityMode> =
53         MutableStateFlow(KeyguardSecurityModel.SecurityMode.Invalid)
54     override var bouncerDismissActionModel: BouncerDismissActionModel? = null
55 
setPrimaryScrimmednull56     override fun setPrimaryScrimmed(isScrimmed: Boolean) {
57         _primaryBouncerScrimmed.value = isScrimmed
58     }
59 
setAlternateVisiblenull60     override fun setAlternateVisible(isVisible: Boolean) {
61         _isAlternateBouncerVisible.value = isVisible
62     }
63 
setPrimaryShownull64     override fun setPrimaryShow(isShowing: Boolean) {
65         _primaryBouncerShow.value = isShowing
66     }
67 
setPrimaryShowingSoonnull68     override fun setPrimaryShowingSoon(showingSoon: Boolean) {
69         _primaryBouncerShowingSoon.value = showingSoon
70     }
71 
setPrimaryStartingToHidenull72     override fun setPrimaryStartingToHide(startingToHide: Boolean) {
73         _primaryBouncerStartingToHide.value = startingToHide
74     }
75 
setPrimaryStartDisappearAnimationnull76     override fun setPrimaryStartDisappearAnimation(runnable: Runnable?) {
77         _primaryBouncerDisappearAnimation.value = runnable
78     }
79 
setPanelExpansionnull80     override fun setPanelExpansion(panelExpansion: Float) {
81         _panelExpansionAmount.value = panelExpansion
82     }
83 
setKeyguardPositionnull84     override fun setKeyguardPosition(keyguardPosition: Float) {
85         _keyguardPosition.value = keyguardPosition
86     }
87 
setResourceUpdateRequestsnull88     override fun setResourceUpdateRequests(willUpdateResources: Boolean) {
89         _resourceUpdateRequests.value = willUpdateResources
90     }
91 
setShowMessagenull92     override fun setShowMessage(bouncerShowMessageModel: BouncerShowMessageModel?) {
93         _showMessage.value = bouncerShowMessageModel
94     }
95 
setKeyguardAuthenticatedBiometricsnull96     override fun setKeyguardAuthenticatedBiometrics(keyguardAuthenticated: Boolean?) {
97         _keyguardAuthenticated.value = keyguardAuthenticated
98     }
99 
setKeyguardAuthenticatedPrimaryAuthnull100     override suspend fun setKeyguardAuthenticatedPrimaryAuth(userId: Int) {
101         _keyguardAuthenticatedPrimaryAuth.emit(userId)
102     }
103 
setUserRequestedBouncerWhenAlreadyAuthenticatednull104     override suspend fun setUserRequestedBouncerWhenAlreadyAuthenticated(userId: Int) {
105         _userRequestedBouncerWhenAlreadyAuthenticated.emit(userId)
106     }
107 
setIsBackButtonEnablednull108     override fun setIsBackButtonEnabled(isBackButtonEnabled: Boolean) {
109         _isBackButtonEnabled.value = isBackButtonEnabled
110     }
111 
setLastShownSecurityModenull112     override fun setLastShownSecurityMode(securityMode: KeyguardSecurityModel.SecurityMode) {
113         lastShownSecurityMode.value = securityMode
114     }
115 }
116 
117 @Module
118 interface FakeKeyguardBouncerRepositoryModule {
bindFakenull119     @Binds fun bindFake(fake: FakeKeyguardBouncerRepository): KeyguardBouncerRepository
120 }
121