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