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.shade.data.repository
19 
20 import com.android.systemui.dagger.SysUISingleton
21 import dagger.Binds
22 import dagger.Module
23 import javax.inject.Inject
24 import kotlinx.coroutines.flow.MutableStateFlow
25 import kotlinx.coroutines.flow.StateFlow
26 import kotlinx.coroutines.flow.asStateFlow
27 
28 /** Fake implementation of [ShadeRepository] */
29 @SysUISingleton
30 class FakeShadeRepository @Inject constructor() : ShadeRepository {
31     private val _qsExpansion = MutableStateFlow(0f)
32 
33     @Deprecated("Use ShadeInteractor.qsExpansion instead")
34     override val qsExpansion = _qsExpansion.asStateFlow()
35 
36     private val _udfpsTransitionToFullShadeProgress = MutableStateFlow(0f)
37     override val udfpsTransitionToFullShadeProgress =
38         _udfpsTransitionToFullShadeProgress.asStateFlow()
39 
40     private val _currentFling: MutableStateFlow<FlingInfo?> = MutableStateFlow(null)
41     override val currentFling: StateFlow<FlingInfo?> = _currentFling.asStateFlow()
42 
43     private val _lockscreenShadeExpansion = MutableStateFlow(0f)
44     override val lockscreenShadeExpansion = _lockscreenShadeExpansion.asStateFlow()
45 
46     private val _legacyShadeExpansion = MutableStateFlow(0f)
47 
48     @Deprecated("Use ShadeInteractor instead")
49     override val legacyShadeExpansion = _legacyShadeExpansion.asStateFlow()
50 
51     private val _legacyShadeTracking = MutableStateFlow(false)
52 
53     @Deprecated("Use ShadeInteractor instead")
54     override val legacyShadeTracking = _legacyShadeTracking.asStateFlow()
55 
56     private val _legacyQsTracking = MutableStateFlow(false)
57 
58     @Deprecated("Use ShadeInteractor instead")
59     override val legacyQsTracking = _legacyQsTracking.asStateFlow()
60 
61     private val _legacyExpandedOrAwaitingInputTransfer = MutableStateFlow(false)
62 
63     @Deprecated("Use ShadeInteractor instead")
64     override val legacyExpandedOrAwaitingInputTransfer =
65         _legacyExpandedOrAwaitingInputTransfer.asStateFlow()
66 
67     private val _legacyIsQsExpanded = MutableStateFlow(false)
68 
69     @Deprecated("Use ShadeInteractor instead")
70     override val legacyIsQsExpanded = _legacyIsQsExpanded.asStateFlow()
71 
72     @Deprecated("Use ShadeInteractor.isUserInteractingWithShade instead")
73     override val legacyLockscreenShadeTracking = MutableStateFlow(false)
74 
75     private var _isShadeLayoutWide = MutableStateFlow(false)
76     override val isShadeLayoutWide: StateFlow<Boolean> = _isShadeLayoutWide.asStateFlow()
77 
78     @Deprecated("Use ShadeInteractor instead")
setLegacyIsQsExpandednull79     override fun setLegacyIsQsExpanded(legacyIsQsExpanded: Boolean) {
80         _legacyIsQsExpanded.value = legacyIsQsExpanded
81     }
82 
83     private val _legacyExpandImmediate = MutableStateFlow(false)
84 
85     @Deprecated("Use ShadeInteractor instead")
86     override val legacyExpandImmediate = _legacyExpandImmediate.asStateFlow()
87 
88     @Deprecated("Use ShadeInteractor instead")
setLegacyExpandImmediatenull89     override fun setLegacyExpandImmediate(legacyExpandImmediate: Boolean) {
90         _legacyExpandImmediate.value = legacyExpandImmediate
91     }
92 
93     @Deprecated("Use ShadeInteractor instead")
setLegacyExpandedOrAwaitingInputTransfernull94     override fun setLegacyExpandedOrAwaitingInputTransfer(
95         legacyExpandedOrAwaitingInputTransfer: Boolean
96     ) {
97         _legacyExpandedOrAwaitingInputTransfer.value = legacyExpandedOrAwaitingInputTransfer
98     }
99 
100     @Deprecated("Should only be called by NPVC and tests")
setLegacyQsTrackingnull101     override fun setLegacyQsTracking(legacyQsTracking: Boolean) {
102         _legacyQsTracking.value = legacyQsTracking
103     }
104 
105     @Deprecated("Should only be called by NPVC and tests")
setLegacyShadeTrackingnull106     override fun setLegacyShadeTracking(tracking: Boolean) {
107         _legacyShadeTracking.value = tracking
108     }
109 
110     @Deprecated("Should only be called by NPVC and tests")
setLegacyLockscreenShadeTrackingnull111     override fun setLegacyLockscreenShadeTracking(tracking: Boolean) {
112         legacyLockscreenShadeTracking.value = tracking
113     }
114 
115     private val _legacyQsFullscreen = MutableStateFlow(false)
116 
117     @Deprecated("Use ShadeInteractor instead") override val legacyQsFullscreen = _legacyQsFullscreen
118 
119     @Deprecated("Use ShadeInteractor instead")
setLegacyQsFullscreennull120     override fun setLegacyQsFullscreen(legacyQsFullscreen: Boolean) {
121         _legacyQsFullscreen.value = legacyQsFullscreen
122     }
123 
124     private val _legacyIsClosing = MutableStateFlow(false)
125 
126     @Deprecated("Use ShadeInteractor instead") override val legacyIsClosing = _legacyIsClosing
127 
128     @Deprecated("Use ShadeInteractor instead")
setLegacyIsClosingnull129     override fun setLegacyIsClosing(isClosing: Boolean) {
130         _legacyIsClosing.value = isClosing
131     }
132 
setQsExpansionnull133     override fun setQsExpansion(qsExpansion: Float) {
134         _qsExpansion.value = qsExpansion
135     }
136 
setUdfpsTransitionToFullShadeProgressnull137     override fun setUdfpsTransitionToFullShadeProgress(progress: Float) {
138         _udfpsTransitionToFullShadeProgress.value = progress
139     }
140 
setCurrentFlingnull141     override fun setCurrentFling(info: FlingInfo?) {
142         _currentFling.value = info
143     }
144 
setLockscreenShadeExpansionnull145     override fun setLockscreenShadeExpansion(lockscreenShadeExpansion: Float) {
146         _lockscreenShadeExpansion.value = lockscreenShadeExpansion
147     }
148 
149     @Deprecated("Should only be called by NPVC and tests")
setLegacyShadeExpansionnull150     override fun setLegacyShadeExpansion(expandedFraction: Float) {
151         _legacyShadeExpansion.value = expandedFraction
152     }
153 
setShadeLayoutWidenull154     override fun setShadeLayoutWide(isShadeLayoutWide: Boolean) {
155         _isShadeLayoutWide.value = isShadeLayoutWide
156     }
157 }
158 
159 @Module
160 interface FakeShadeRepositoryModule {
bindFakenull161     @Binds fun bindFake(fake: FakeShadeRepository): ShadeRepository
162 }
163