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 @file:OptIn(ExperimentalCoroutinesApi::class)
18 
19 package com.android.systemui.bouncer.ui.viewmodel
20 
21 import android.app.admin.devicePolicyManager
22 import android.content.applicationContext
23 import com.android.systemui.authentication.domain.interactor.authenticationInteractor
24 import com.android.systemui.authentication.shared.model.AuthenticationMethodModel
25 import com.android.systemui.bouncer.domain.interactor.bouncerActionButtonInteractor
26 import com.android.systemui.bouncer.domain.interactor.bouncerInteractor
27 import com.android.systemui.bouncer.domain.interactor.simBouncerInteractor
28 import com.android.systemui.bouncer.ui.helper.BouncerHapticPlayer
29 import com.android.systemui.haptics.msdl.bouncerHapticPlayer
30 import com.android.systemui.inputmethod.domain.interactor.inputMethodInteractor
31 import com.android.systemui.keyguard.domain.interactor.keyguardDismissActionInteractor
32 import com.android.systemui.keyguard.domain.interactor.keyguardMediaKeyInteractor
33 import com.android.systemui.kosmos.Kosmos
34 import com.android.systemui.kosmos.Kosmos.Fixture
35 import com.android.systemui.user.domain.interactor.selectedUserInteractor
36 import com.android.systemui.user.ui.viewmodel.userSwitcherViewModel
37 import kotlinx.coroutines.ExperimentalCoroutinesApi
38 import kotlinx.coroutines.flow.StateFlow
39 
<lambda>null40 val Kosmos.bouncerUserActionsViewModel by Fixture {
41     BouncerUserActionsViewModel(bouncerInteractor = bouncerInteractor)
42 }
43 
<lambda>null44 val Kosmos.bouncerUserActionsViewModelFactory by Fixture {
45     object : BouncerUserActionsViewModel.Factory {
46         override fun create(): BouncerUserActionsViewModel {
47             return bouncerUserActionsViewModel
48         }
49     }
50 }
51 
<lambda>null52 val Kosmos.bouncerSceneContentViewModel by Fixture {
53     BouncerSceneContentViewModel(
54         applicationContext = applicationContext,
55         bouncerInteractor = bouncerInteractor,
56         authenticationInteractor = authenticationInteractor,
57         devicePolicyManager = devicePolicyManager,
58         bouncerMessageViewModelFactory = bouncerMessageViewModelFactory,
59         userSwitcher = userSwitcherViewModel,
60         actionButtonInteractor = bouncerActionButtonInteractor,
61         pinViewModelFactory = pinBouncerViewModelFactory,
62         patternViewModelFactory = patternBouncerViewModelFactory,
63         passwordViewModelFactory = passwordBouncerViewModelFactory,
64         bouncerHapticPlayer = bouncerHapticPlayer,
65         keyguardMediaKeyInteractor = keyguardMediaKeyInteractor,
66         bouncerActionButtonInteractor = bouncerActionButtonInteractor,
67         keyguardDismissActionInteractor = keyguardDismissActionInteractor,
68     )
69 }
70 
<lambda>null71 val Kosmos.bouncerSceneContentViewModelFactory by Fixture {
72     object : BouncerSceneContentViewModel.Factory {
73         override fun create(): BouncerSceneContentViewModel {
74             return bouncerSceneContentViewModel
75         }
76     }
77 }
78 
<lambda>null79 val Kosmos.pinBouncerViewModelFactory by Fixture {
80     object : PinBouncerViewModel.Factory {
81         override fun create(
82             isInputEnabled: StateFlow<Boolean>,
83             onIntentionalUserInput: () -> Unit,
84             authenticationMethod: AuthenticationMethodModel,
85             bouncerHapticPlayer: BouncerHapticPlayer,
86         ): PinBouncerViewModel {
87             return PinBouncerViewModel(
88                 applicationContext = applicationContext,
89                 interactor = bouncerInteractor,
90                 simBouncerInteractor = simBouncerInteractor,
91                 isInputEnabled = isInputEnabled,
92                 onIntentionalUserInput = onIntentionalUserInput,
93                 authenticationMethod = authenticationMethod,
94                 bouncerHapticPlayer = bouncerHapticPlayer,
95             )
96         }
97     }
98 }
99 
<lambda>null100 val Kosmos.patternBouncerViewModelFactory by Fixture {
101     object : PatternBouncerViewModel.Factory {
102         override fun create(
103             bouncerHapticPlayer: BouncerHapticPlayer,
104             isInputEnabled: StateFlow<Boolean>,
105             onIntentionalUserInput: () -> Unit,
106         ): PatternBouncerViewModel {
107             return PatternBouncerViewModel(
108                 applicationContext = applicationContext,
109                 interactor = bouncerInteractor,
110                 isInputEnabled = isInputEnabled,
111                 onIntentionalUserInput = onIntentionalUserInput,
112                 bouncerHapticPlayer = bouncerHapticPlayer,
113             )
114         }
115     }
116 }
117 
<lambda>null118 val Kosmos.passwordBouncerViewModelFactory by Fixture {
119     object : PasswordBouncerViewModel.Factory {
120         override fun create(
121             isInputEnabled: StateFlow<Boolean>,
122             onIntentionalUserInput: () -> Unit,
123         ): PasswordBouncerViewModel {
124             return PasswordBouncerViewModel(
125                 interactor = bouncerInteractor,
126                 inputMethodInteractor = inputMethodInteractor,
127                 selectedUserInteractor = selectedUserInteractor,
128                 isInputEnabled = isInputEnabled,
129                 onIntentionalUserInput = onIntentionalUserInput,
130             )
131         }
132     }
133 }
134