1 /*
<lambda>null2  * Copyright (C) 2024 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 package com.android.systemui.activity.data.repository
18 
19 import android.app.activityManager
20 import com.android.systemui.kosmos.Kosmos
21 import com.android.systemui.kosmos.testDispatcher
22 import com.android.systemui.log.core.Logger
23 import kotlinx.coroutines.flow.MutableStateFlow
24 
25 val Kosmos.activityManagerRepository by Kosmos.Fixture { FakeActivityManagerRepository() }
26 
27 val Kosmos.realActivityManagerRepository by
<lambda>null28     Kosmos.Fixture { ActivityManagerRepositoryImpl(testDispatcher, activityManager) }
29 
30 class FakeActivityManagerRepository : ActivityManagerRepository {
31     private val uidFlows = mutableMapOf<Int, MutableList<MutableStateFlow<Boolean>>>()
32 
33     var startingIsAppVisibleValue = false
34 
createIsAppVisibleFlownull35     override fun createIsAppVisibleFlow(
36         creationUid: Int,
37         logger: Logger,
38         identifyingLogTag: String,
39     ): MutableStateFlow<Boolean> {
40         val newFlow = MutableStateFlow(startingIsAppVisibleValue)
41         uidFlows.computeIfAbsent(creationUid) { mutableListOf() }.add(newFlow)
42         return newFlow
43     }
44 
setIsAppVisiblenull45     fun setIsAppVisible(uid: Int, isAppVisible: Boolean) {
46         uidFlows[uid]?.forEach { stateFlow -> stateFlow.value = isAppVisible }
47     }
48 }
49 
50 val ActivityManagerRepository.fake
51     get() = this as FakeActivityManagerRepository
52