1 /*
2  * 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.inputmethod.data.repository
18 
19 import android.os.UserHandle
20 import com.android.systemui.dagger.SysUISingleton
21 import com.android.systemui.inputmethod.data.model.InputMethodModel
22 import kotlinx.coroutines.flow.Flow
23 import kotlinx.coroutines.flow.asFlow
24 import kotlinx.coroutines.flow.flowOf
25 
26 @SysUISingleton
27 class FakeInputMethodRepository : InputMethodRepository {
28 
29     private var usersToEnabledInputMethods: MutableMap<Int, Flow<InputMethodModel>> = mutableMapOf()
30 
31     var selectedInputMethodSubtypes = listOf<InputMethodModel.Subtype>()
32 
33     /**
34      * The display ID on which the input method picker dialog was shown, or `null` if the dialog was
35      * not shown.
36      */
37     var inputMethodPickerShownDisplayId: Int? = null
38 
setEnabledInputMethodsnull39     fun setEnabledInputMethods(userId: Int, vararg enabledInputMethods: InputMethodModel) {
40         usersToEnabledInputMethods[userId] = enabledInputMethods.asFlow()
41     }
42 
enabledInputMethodsnull43     override suspend fun enabledInputMethods(
44         user: UserHandle,
45         fetchSubtypes: Boolean
46     ): Flow<InputMethodModel> {
47         return usersToEnabledInputMethods[user.identifier] ?: flowOf()
48     }
49 
selectedInputMethodSubtypesnull50     override suspend fun selectedInputMethodSubtypes(
51         user: UserHandle,
52     ): List<InputMethodModel.Subtype> = selectedInputMethodSubtypes
53 
54     override suspend fun showInputMethodPicker(displayId: Int, showAuxiliarySubtypes: Boolean) {
55         inputMethodPickerShownDisplayId = displayId
56     }
57 }
58