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