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.qs.tiles.di 18 19 import android.os.UserHandle 20 import com.android.systemui.kosmos.Kosmos 21 import com.android.systemui.qs.instanceIdSequenceFake 22 import com.android.systemui.qs.pipeline.shared.TileSpec 23 import com.android.systemui.qs.shared.model.TileCategory 24 import com.android.systemui.qs.tiles.base.viewmodel.QSTileViewModelFactory 25 import com.android.systemui.qs.tiles.viewmodel.QSTileConfig 26 import com.android.systemui.qs.tiles.viewmodel.QSTileState 27 import com.android.systemui.qs.tiles.viewmodel.QSTileUIConfig 28 import com.android.systemui.qs.tiles.viewmodel.QSTileUserAction 29 import com.android.systemui.qs.tiles.viewmodel.QSTileViewModel 30 import com.android.systemui.qs.tiles.viewmodel.qSTileConfigProvider 31 import com.android.systemui.qs.tiles.viewmodel.qsTileViewModelAdaperFactory 32 import com.android.systemui.util.mockito.any 33 import com.android.systemui.util.mockito.mock 34 import com.android.systemui.util.mockito.whenever 35 import javax.inject.Provider 36 import kotlinx.coroutines.flow.MutableStateFlow 37 import kotlinx.coroutines.flow.StateFlow 38 39 var Kosmos.newFactoryTileMap by Kosmos.Fixture { emptyMap<String, Provider<QSTileViewModel>>() } 40 41 val Kosmos.customTileViewModelFactory: QSTileViewModelFactory.Component by <lambda>null42 Kosmos.Fixture { 43 mock { 44 whenever(create(any())).thenAnswer { invocation -> 45 val tileSpec = invocation.getArgument<TileSpec>(0) 46 val config = 47 QSTileConfig( 48 tileSpec, 49 QSTileUIConfig.Empty, 50 instanceIdSequenceFake.newInstanceId(), 51 category = TileCategory.PROVIDED_BY_APP, 52 ) 53 object : QSTileViewModel { 54 override val state: StateFlow<QSTileState?> = 55 MutableStateFlow(QSTileState.build(null, tileSpec.spec) {}) 56 override val config: QSTileConfig = config 57 override val isAvailable: StateFlow<Boolean> = MutableStateFlow(true) 58 59 override fun onUserChanged(user: UserHandle) {} 60 61 override fun forceUpdate() {} 62 63 override fun onActionPerformed(userAction: QSTileUserAction) {} 64 65 override fun destroy() {} 66 } 67 } 68 } 69 } 70 71 val Kosmos.newQSTileFactory by <lambda>null72 Kosmos.Fixture { 73 NewQSTileFactory( 74 qSTileConfigProvider, 75 qsTileViewModelAdaperFactory, 76 newFactoryTileMap, 77 customTileViewModelFactory, 78 ) 79 } 80