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.channels.BufferOverflow 25 import kotlinx.coroutines.flow.MutableSharedFlow 26 import kotlinx.coroutines.flow.MutableStateFlow 27 import kotlinx.coroutines.flow.StateFlow 28 import kotlinx.coroutines.flow.asStateFlow 29 30 /** Fake implementation of [ShadeRepository] */ 31 @SysUISingleton 32 class FakeShadeRepository @Inject constructor() : ShadeRepository { 33 private val _qsExpansion = MutableStateFlow(0f) 34 35 @Deprecated("Use ShadeInteractor.qsExpansion instead") 36 override val qsExpansion = _qsExpansion.asStateFlow() 37 38 private val _udfpsTransitionToFullShadeProgress = MutableStateFlow(0f) 39 override val udfpsTransitionToFullShadeProgress = 40 _udfpsTransitionToFullShadeProgress.asStateFlow() 41 42 override val currentFling: MutableSharedFlow<FlingInfo?> = 43 MutableSharedFlow(replay = 2, onBufferOverflow = BufferOverflow.DROP_OLDEST) 44 45 private val _lockscreenShadeExpansion = MutableStateFlow(0f) 46 override val lockscreenShadeExpansion = _lockscreenShadeExpansion.asStateFlow() 47 48 private val _legacyShadeExpansion = MutableStateFlow(0f) 49 50 @Deprecated("Use ShadeInteractor instead") 51 override val legacyShadeExpansion = _legacyShadeExpansion.asStateFlow() 52 53 private val _legacyShadeTracking = MutableStateFlow(false) 54 55 @Deprecated("Use ShadeInteractor instead") 56 override val legacyShadeTracking = _legacyShadeTracking.asStateFlow() 57 58 private val _legacyQsTracking = MutableStateFlow(false) 59 60 @Deprecated("Use ShadeInteractor instead") 61 override val legacyQsTracking = _legacyQsTracking.asStateFlow() 62 63 private val _legacyExpandedOrAwaitingInputTransfer = MutableStateFlow(false) 64 65 @Deprecated("Use ShadeInteractor instead") 66 override val legacyExpandedOrAwaitingInputTransfer = 67 _legacyExpandedOrAwaitingInputTransfer.asStateFlow() 68 69 private val _legacyIsQsExpanded = MutableStateFlow(false) 70 71 @Deprecated("Use ShadeInteractor instead") 72 override val legacyIsQsExpanded = _legacyIsQsExpanded.asStateFlow() 73 74 @Deprecated("Use ShadeInteractor.isUserInteractingWithShade instead") 75 override val legacyLockscreenShadeTracking = MutableStateFlow(false) 76 77 private var _isShadeLayoutWide = MutableStateFlow(false) 78 override val isShadeLayoutWide: StateFlow<Boolean> = _isShadeLayoutWide.asStateFlow() 79 80 @Deprecated("Use ShadeInteractor instead") setLegacyIsQsExpandednull81 override fun setLegacyIsQsExpanded(legacyIsQsExpanded: Boolean) { 82 _legacyIsQsExpanded.value = legacyIsQsExpanded 83 } 84 85 private val _legacyExpandImmediate = MutableStateFlow(false) 86 87 @Deprecated("Use ShadeInteractor instead") 88 override val legacyExpandImmediate = _legacyExpandImmediate.asStateFlow() 89 90 @Deprecated("Use ShadeInteractor instead") setLegacyExpandImmediatenull91 override fun setLegacyExpandImmediate(legacyExpandImmediate: Boolean) { 92 _legacyExpandImmediate.value = legacyExpandImmediate 93 } 94 95 @Deprecated("Use ShadeInteractor instead") setLegacyExpandedOrAwaitingInputTransfernull96 override fun setLegacyExpandedOrAwaitingInputTransfer( 97 legacyExpandedOrAwaitingInputTransfer: Boolean 98 ) { 99 _legacyExpandedOrAwaitingInputTransfer.value = legacyExpandedOrAwaitingInputTransfer 100 } 101 102 @Deprecated("Should only be called by NPVC and tests") setLegacyQsTrackingnull103 override fun setLegacyQsTracking(legacyQsTracking: Boolean) { 104 _legacyQsTracking.value = legacyQsTracking 105 } 106 107 @Deprecated("Should only be called by NPVC and tests") setLegacyShadeTrackingnull108 override fun setLegacyShadeTracking(tracking: Boolean) { 109 _legacyShadeTracking.value = tracking 110 } 111 112 @Deprecated("Should only be called by NPVC and tests") setLegacyLockscreenShadeTrackingnull113 override fun setLegacyLockscreenShadeTracking(tracking: Boolean) { 114 legacyLockscreenShadeTracking.value = tracking 115 } 116 117 private val _legacyQsFullscreen = MutableStateFlow(false) 118 119 @Deprecated("Use ShadeInteractor instead") override val legacyQsFullscreen = _legacyQsFullscreen 120 121 @Deprecated("Use ShadeInteractor instead") setLegacyQsFullscreennull122 override fun setLegacyQsFullscreen(legacyQsFullscreen: Boolean) { 123 _legacyQsFullscreen.value = legacyQsFullscreen 124 } 125 126 private val _legacyIsClosing = MutableStateFlow(false) 127 128 @Deprecated("Use ShadeInteractor instead") override val legacyIsClosing = _legacyIsClosing 129 130 @Deprecated("Use ShadeInteractor instead") setLegacyIsClosingnull131 override fun setLegacyIsClosing(isClosing: Boolean) { 132 _legacyIsClosing.value = isClosing 133 } 134 setQsExpansionnull135 override fun setQsExpansion(qsExpansion: Float) { 136 _qsExpansion.value = qsExpansion 137 } 138 setUdfpsTransitionToFullShadeProgressnull139 override fun setUdfpsTransitionToFullShadeProgress(progress: Float) { 140 _udfpsTransitionToFullShadeProgress.value = progress 141 } 142 setCurrentFlingnull143 override fun setCurrentFling(info: FlingInfo?) { 144 currentFling.tryEmit(info) 145 } 146 setLockscreenShadeExpansionnull147 override fun setLockscreenShadeExpansion(lockscreenShadeExpansion: Float) { 148 _lockscreenShadeExpansion.value = lockscreenShadeExpansion 149 } 150 151 @Deprecated("Should only be called by NPVC and tests") setLegacyShadeExpansionnull152 override fun setLegacyShadeExpansion(expandedFraction: Float) { 153 _legacyShadeExpansion.value = expandedFraction 154 } 155 setShadeLayoutWidenull156 override fun setShadeLayoutWide(isShadeLayoutWide: Boolean) { 157 _isShadeLayoutWide.value = isShadeLayoutWide 158 } 159 } 160 161 @Module 162 interface FakeShadeRepositoryModule { bindFakenull163 @Binds fun bindFake(fake: FakeShadeRepository): ShadeRepository 164 } 165