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.keyguard.ui.binder
18 
19 import android.content.applicationContext
20 import android.view.mockedLayoutInflater
21 import android.view.windowManager
22 import com.android.systemui.biometrics.domain.interactor.fingerprintPropertyInteractor
23 import com.android.systemui.biometrics.domain.interactor.udfpsOverlayInteractor
24 import com.android.systemui.common.ui.domain.interactor.configurationInteractor
25 import com.android.systemui.deviceentry.domain.interactor.deviceEntryUdfpsInteractor
26 import com.android.systemui.deviceentry.ui.viewmodel.AlternateBouncerUdfpsAccessibilityOverlayViewModel
27 import com.android.systemui.keyguard.ui.SwipeUpAnywhereGestureHandler
28 import com.android.systemui.keyguard.ui.viewmodel.AlternateBouncerDependencies
29 import com.android.systemui.keyguard.ui.viewmodel.AlternateBouncerMessageAreaViewModel
30 import com.android.systemui.keyguard.ui.viewmodel.AlternateBouncerUdfpsIconViewModel
31 import com.android.systemui.keyguard.ui.viewmodel.AlternateBouncerViewModel
32 import com.android.systemui.keyguard.ui.viewmodel.DeviceEntryBackgroundViewModel
33 import com.android.systemui.keyguard.ui.viewmodel.alternateBouncerViewModel
34 import com.android.systemui.keyguard.ui.viewmodel.alternateBouncerWindowViewModel
35 import com.android.systemui.kosmos.Kosmos
36 import com.android.systemui.kosmos.applicationCoroutineScope
37 import com.android.systemui.log.logcatLogBuffer
38 import com.android.systemui.power.domain.interactor.powerInteractor
39 import com.android.systemui.statusbar.gesture.TapGestureDetector
40 import com.android.systemui.util.mockito.mock
41 import kotlinx.coroutines.ExperimentalCoroutinesApi
42 
43 @OptIn(ExperimentalCoroutinesApi::class)
44 val Kosmos.alternateBouncerViewBinder by
<lambda>null45     Kosmos.Fixture {
46         AlternateBouncerViewBinder(
47             applicationScope = applicationCoroutineScope,
48             alternateBouncerWindowViewModel = { alternateBouncerWindowViewModel },
49             alternateBouncerDependencies = { alternateBouncerDependencies },
50             windowManager = { windowManager },
51             layoutInflater = { mockedLayoutInflater },
52         )
53     }
54 
55 @ExperimentalCoroutinesApi
56 private val Kosmos.alternateBouncerDependencies by
<lambda>null57     Kosmos.Fixture {
58         AlternateBouncerDependencies(
59             viewModel = mock<AlternateBouncerViewModel>(),
60             swipeUpAnywhereGestureHandler = mock<SwipeUpAnywhereGestureHandler>(),
61             tapGestureDetector = mock<TapGestureDetector>(),
62             udfpsIconViewModel = alternateBouncerUdfpsIconViewModel,
63             udfpsAccessibilityOverlayViewModel = {
64                 mock<AlternateBouncerUdfpsAccessibilityOverlayViewModel>()
65             },
66             messageAreaViewModel = mock<AlternateBouncerMessageAreaViewModel>(),
67             powerInteractor = powerInteractor,
68             touchLogBuffer = logcatLogBuffer(),
69         )
70     }
71 
72 @ExperimentalCoroutinesApi
73 private val Kosmos.alternateBouncerUdfpsIconViewModel by
<lambda>null74     Kosmos.Fixture {
75         AlternateBouncerUdfpsIconViewModel(
76             context = applicationContext,
77             configurationInteractor = configurationInteractor,
78             deviceEntryUdfpsInteractor = deviceEntryUdfpsInteractor,
79             deviceEntryBackgroundViewModel = mock<DeviceEntryBackgroundViewModel>(),
80             fingerprintPropertyInteractor = fingerprintPropertyInteractor,
81             udfpsOverlayInteractor = udfpsOverlayInteractor,
82             alternateBouncerViewModel = alternateBouncerViewModel,
83         )
84     }
85