• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2022 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  *
16  */
17 
18 package com.android.systemui.keyguard.data.repository
19 
20 import android.graphics.Point
21 import com.android.systemui.dagger.SysUISingleton
22 import com.android.systemui.keyguard.shared.model.BiometricUnlockMode
23 import com.android.systemui.keyguard.shared.model.BiometricUnlockModel
24 import com.android.systemui.keyguard.shared.model.BiometricUnlockSource
25 import com.android.systemui.keyguard.shared.model.CameraLaunchSourceModel
26 import com.android.systemui.keyguard.shared.model.DismissAction
27 import com.android.systemui.keyguard.shared.model.DozeTransitionModel
28 import com.android.systemui.keyguard.shared.model.KeyguardDone
29 import com.android.systemui.keyguard.shared.model.StatusBarState
30 import dagger.Binds
31 import dagger.Module
32 import javax.inject.Inject
33 import kotlinx.coroutines.flow.Flow
34 import kotlinx.coroutines.flow.MutableSharedFlow
35 import kotlinx.coroutines.flow.MutableStateFlow
36 import kotlinx.coroutines.flow.StateFlow
37 import kotlinx.coroutines.flow.asStateFlow
38 
39 /** Fake implementation of [KeyguardRepository] */
40 @SysUISingleton
41 class FakeKeyguardRepository @Inject constructor() : KeyguardRepository {
42     private val _deferKeyguardDone: MutableSharedFlow<KeyguardDone> = MutableSharedFlow()
43     override val keyguardDone: Flow<KeyguardDone> = _deferKeyguardDone
44 
45     private val _keyguardDoneAnimationsFinished: MutableSharedFlow<Unit> =
46         MutableSharedFlow(extraBufferCapacity = 1)
47     override val keyguardDoneAnimationsFinished: Flow<Unit> = _keyguardDoneAnimationsFinished
48 
49     private val _dismissAction = MutableStateFlow<DismissAction>(DismissAction.None)
50     override val dismissAction: StateFlow<DismissAction> = _dismissAction
51 
52     private val _animateBottomAreaDozingTransitions = MutableStateFlow(false)
53     override val animateBottomAreaDozingTransitions: StateFlow<Boolean> =
54         _animateBottomAreaDozingTransitions
55 
56     private val _isKeyguardShowing = MutableStateFlow(false)
57     override val isKeyguardShowing: StateFlow<Boolean> = _isKeyguardShowing
58 
59     private val _isKeyguardUnlocked = MutableStateFlow(false)
60     override val isKeyguardDismissible: StateFlow<Boolean> = _isKeyguardUnlocked.asStateFlow()
61 
62     private val _isKeyguardOccluded = MutableStateFlow(false)
63     override val isKeyguardOccluded: StateFlow<Boolean> = _isKeyguardOccluded
64 
65     private val _isDozing = MutableStateFlow(false)
66     override val isDozing: StateFlow<Boolean> = _isDozing
67 
68     private val _dozeTimeTick = MutableStateFlow<Long>(0L)
69     override val dozeTimeTick = _dozeTimeTick
70 
71     override val showDismissibleKeyguard = MutableStateFlow<Long>(0L)
72 
73     private val _lastDozeTapToWakePosition = MutableStateFlow<Point?>(null)
74     override val lastDozeTapToWakePosition = _lastDozeTapToWakePosition.asStateFlow()
75 
76     private val _isAodAvailable = MutableStateFlow(false)
77     override val isAodAvailable: StateFlow<Boolean> = _isAodAvailable
78 
79     private val _isDreaming = MutableStateFlow(false)
80     override val isDreaming: MutableStateFlow<Boolean> = _isDreaming
81 
82     private val _isDreamingWithOverlay = MutableStateFlow(false)
83     override val isDreamingWithOverlay: Flow<Boolean> = _isDreamingWithOverlay
84 
85     private val _dozeAmount = MutableStateFlow(0f)
86     override val linearDozeAmount: Flow<Float> = _dozeAmount
87 
88     private val _statusBarState = MutableStateFlow(StatusBarState.SHADE)
89     override val statusBarState: StateFlow<StatusBarState> = _statusBarState
90 
91     private val _dozeTransitionModel = MutableStateFlow(DozeTransitionModel())
92     override val dozeTransitionModel: Flow<DozeTransitionModel> = _dozeTransitionModel
93 
94     private val _isUdfpsSupported = MutableStateFlow(false)
95 
96     override val isKeyguardGoingAway = MutableStateFlow(false)
97 
98     private val _biometricUnlockState =
99         MutableStateFlow(BiometricUnlockModel(BiometricUnlockMode.NONE, null))
100     override val biometricUnlockState: StateFlow<BiometricUnlockModel> =
101         _biometricUnlockState.asStateFlow()
102 
103     private val _fingerprintSensorLocation = MutableStateFlow<Point?>(null)
104     override val fingerprintSensorLocation: Flow<Point?> = _fingerprintSensorLocation
105 
106     private val _faceSensorLocation = MutableStateFlow<Point?>(null)
107     override val faceSensorLocation: Flow<Point?> = _faceSensorLocation
108 
109     private val _isQuickSettingsVisible = MutableStateFlow(false)
110     override val isQuickSettingsVisible: Flow<Boolean> = _isQuickSettingsVisible.asStateFlow()
111 
112     private val _keyguardAlpha = MutableStateFlow(1f)
113     override val keyguardAlpha: StateFlow<Float> = _keyguardAlpha
114 
115     override val panelAlpha: MutableStateFlow<Float> = MutableStateFlow(1f)
116     override val zoomOut: MutableStateFlow<Float> = MutableStateFlow(0f)
117 
118     override val lastRootViewTapPosition: MutableStateFlow<Point?> = MutableStateFlow(null)
119 
120     override val ambientIndicationVisible: MutableStateFlow<Boolean> = MutableStateFlow(false)
121 
122     private val _isEncryptedOrLockdown = MutableStateFlow(true)
123     override val isEncryptedOrLockdown: Flow<Boolean> = _isEncryptedOrLockdown
124 
125     private val _isKeyguardEnabled = MutableStateFlow(true)
126     override val isKeyguardEnabled: StateFlow<Boolean> = _isKeyguardEnabled.asStateFlow()
127 
128     override val topClippingBounds = MutableStateFlow<Int?>(null)
129 
130     private var isShowKeyguardWhenReenabled: Boolean = false
131 
132     private val _canIgnoreAuthAndReturnToGone = MutableStateFlow(false)
133     override val canIgnoreAuthAndReturnToGone = _canIgnoreAuthAndReturnToGone.asStateFlow()
134 
135     override val onCameraLaunchDetected = MutableStateFlow(CameraLaunchSourceModel())
136 
setQuickSettingsVisiblenull137     override fun setQuickSettingsVisible(isVisible: Boolean) {
138         _isQuickSettingsVisible.value = isVisible
139     }
140 
isKeyguardShowingnull141     override fun isKeyguardShowing(): Boolean {
142         return _isKeyguardShowing.value
143     }
144 
setAnimateDozingTransitionsnull145     override fun setAnimateDozingTransitions(animate: Boolean) {
146         _animateBottomAreaDozingTransitions.tryEmit(animate)
147     }
148 
setKeyguardShowingnull149     fun setKeyguardShowing(isShowing: Boolean) {
150         _isKeyguardShowing.value = isShowing
151     }
152 
setKeyguardGoingAwaynull153     fun setKeyguardGoingAway(isGoingAway: Boolean) {
154         isKeyguardGoingAway.value = isGoingAway
155     }
156 
setKeyguardOccludednull157     fun setKeyguardOccluded(isOccluded: Boolean) {
158         _isKeyguardOccluded.value = isOccluded
159     }
160 
setKeyguardDismissiblenull161     fun setKeyguardDismissible(isUnlocked: Boolean) {
162         _isKeyguardUnlocked.value = isUnlocked
163     }
164 
setIsDozingnull165     override fun setIsDozing(isDozing: Boolean) {
166         _isDozing.value = isDozing
167     }
168 
dozeTimeTicknull169     override fun dozeTimeTick() {
170         _dozeTimeTick.value = _dozeTimeTick.value + 1
171     }
172 
setDismissActionnull173     override fun setDismissAction(dismissAction: DismissAction) {
174         _dismissAction.value = dismissAction
175     }
176 
setKeyguardDonenull177     override suspend fun setKeyguardDone(timing: KeyguardDone) {
178         _deferKeyguardDone.emit(timing)
179     }
180 
keyguardDoneAnimationsFinishednull181     override fun keyguardDoneAnimationsFinished() {
182         _keyguardDoneAnimationsFinished.tryEmit(Unit)
183     }
184 
setKeyguardEnablednull185     override fun setKeyguardEnabled(enabled: Boolean) {
186         _isKeyguardEnabled.value = enabled
187     }
188 
dozeTimeTicknull189     fun dozeTimeTick(millis: Long) {
190         _dozeTimeTick.value = millis
191     }
192 
showDismissibleKeyguardnull193     override fun showDismissibleKeyguard() {
194         showDismissibleKeyguard.value = showDismissibleKeyguard.value + 1
195     }
196 
setLastDozeTapToWakePositionnull197     override fun setLastDozeTapToWakePosition(position: Point) {
198         _lastDozeTapToWakePosition.value = position
199     }
200 
setAodAvailablenull201     override fun setAodAvailable(value: Boolean) {
202         _isAodAvailable.value = value
203     }
204 
setDreamingnull205     override fun setDreaming(isDreaming: Boolean) {
206         _isDreaming.value = isDreaming
207         // Intentionally set both for testing, to avoid races with merge() in the interactor that
208         // would make testing difficult
209         _isDreamingWithOverlay.value = isDreaming
210     }
211 
setDreamingWithOverlaynull212     fun setDreamingWithOverlay(isDreaming: Boolean) {
213         _isDreamingWithOverlay.value = isDreaming
214     }
215 
setDozeAmountnull216     fun setDozeAmount(dozeAmount: Float) {
217         _dozeAmount.value = dozeAmount
218     }
219 
setBiometricUnlockStatenull220     override fun setBiometricUnlockState(
221         mode: BiometricUnlockMode,
222         source: BiometricUnlockSource?,
223     ) {
224         _biometricUnlockState.tryEmit(BiometricUnlockModel(mode, source))
225     }
226 
setBiometricUnlockStatenull227     fun setBiometricUnlockState(mode: BiometricUnlockMode) {
228         setBiometricUnlockState(mode, BiometricUnlockSource.FINGERPRINT_SENSOR)
229     }
230 
setBiometricUnlockSourcenull231     fun setBiometricUnlockSource(source: BiometricUnlockSource?) {
232         setBiometricUnlockState(BiometricUnlockMode.NONE, source)
233     }
234 
setFaceSensorLocationnull235     fun setFaceSensorLocation(location: Point?) {
236         _faceSensorLocation.tryEmit(location)
237     }
238 
setFingerprintSensorLocationnull239     fun setFingerprintSensorLocation(location: Point?) {
240         _fingerprintSensorLocation.tryEmit(location)
241     }
242 
setDozeTransitionModelnull243     fun setDozeTransitionModel(model: DozeTransitionModel) {
244         _dozeTransitionModel.value = model
245     }
246 
setStatusBarStatenull247     fun setStatusBarState(state: StatusBarState) {
248         _statusBarState.value = state
249     }
250 
isUdfpsSupportednull251     override fun isUdfpsSupported(): Boolean {
252         return _isUdfpsSupported.value
253     }
254 
setKeyguardAlphanull255     override fun setKeyguardAlpha(alpha: Float) {
256         _keyguardAlpha.value = alpha
257     }
258 
setPanelAlphanull259     override fun setPanelAlpha(alpha: Float) {
260         panelAlpha.value = alpha
261     }
262 
setZoomOutnull263     override fun setZoomOut(zoomOutFromShadeRadius: Float) {
264         zoomOut.value = zoomOutFromShadeRadius
265     }
266 
setIsEncryptedOrLockdownnull267     fun setIsEncryptedOrLockdown(value: Boolean) {
268         _isEncryptedOrLockdown.value = value
269     }
270 
setShowKeyguardWhenReenablednull271     override fun setShowKeyguardWhenReenabled(isShowKeyguardWhenReenabled: Boolean) {
272         this.isShowKeyguardWhenReenabled = isShowKeyguardWhenReenabled
273     }
274 
isShowKeyguardWhenReenablednull275     override fun isShowKeyguardWhenReenabled(): Boolean {
276         return isShowKeyguardWhenReenabled
277     }
278 
setCanIgnoreAuthAndReturnToGonenull279     override fun setCanIgnoreAuthAndReturnToGone(canWake: Boolean) {
280         _canIgnoreAuthAndReturnToGone.value = canWake
281     }
282 }
283 
284 @Module
285 interface FakeKeyguardRepositoryModule {
bindFakenull286     @Binds fun bindFake(fake: FakeKeyguardRepository): KeyguardRepository
287 }
288