1 package com.android.systemui.scene
2
3 import android.view.View
4 import com.android.compose.animation.scene.ObservableTransitionState
5 import com.android.systemui.classifier.domain.interactor.falsingInteractor
6 import com.android.systemui.haptics.msdl.msdlPlayer
7 import com.android.systemui.kosmos.Kosmos
8 import com.android.systemui.kosmos.Kosmos.Fixture
9 import com.android.systemui.power.domain.interactor.powerInteractor
10 import com.android.systemui.scene.domain.interactor.sceneInteractor
11 import com.android.systemui.scene.shared.logger.sceneLogger
12 import com.android.systemui.scene.shared.model.Overlays
13 import com.android.systemui.scene.shared.model.SceneContainerConfig
14 import com.android.systemui.scene.shared.model.Scenes
15 import com.android.systemui.scene.ui.FakeOverlay
16 import com.android.systemui.scene.ui.composable.SceneContainerTransitions
17 import com.android.systemui.scene.ui.viewmodel.SceneContainerHapticsViewModel
18 import com.android.systemui.scene.ui.viewmodel.SceneContainerViewModel
19 import com.android.systemui.scene.ui.viewmodel.splitEdgeDetector
20 import com.android.systemui.shade.domain.interactor.shadeInteractor
21 import com.android.systemui.statusbar.domain.interactor.remoteInputInteractor
22 import kotlinx.coroutines.flow.MutableStateFlow
23 import org.mockito.kotlin.mock
24
<lambda>null25 var Kosmos.sceneKeys by Fixture {
26 listOf(
27 Scenes.QuickSettings,
28 Scenes.Shade,
29 Scenes.Lockscreen,
30 Scenes.Bouncer,
31 Scenes.Gone,
32 Scenes.Communal,
33 Scenes.Dream,
34 )
35 }
36
<lambda>null37 val Kosmos.initialSceneKey by Fixture { Scenes.Lockscreen }
38
<lambda>null39 var Kosmos.overlayKeys by Fixture {
40 listOf(Overlays.NotificationsShade, Overlays.QuickSettingsShade)
41 }
42
<lambda>null43 val Kosmos.fakeOverlaysByKeys by Fixture { overlayKeys.associateWith { FakeOverlay(it) } }
44
<lambda>null45 val Kosmos.fakeOverlays by Fixture { fakeOverlaysByKeys.values.toSet() }
46
<lambda>null47 val Kosmos.overlays by Fixture { fakeOverlays }
48
<lambda>null49 var Kosmos.sceneContainerConfig by Fixture {
50 val navigationDistances =
51 mapOf(
52 Scenes.Gone to 0,
53 Scenes.Lockscreen to 0,
54 Scenes.Communal to 1,
55 Scenes.Dream to 2,
56 Scenes.Shade to 3,
57 Scenes.QuickSettings to 4,
58 Scenes.Bouncer to 5,
59 )
60
61 SceneContainerConfig(
62 sceneKeys = sceneKeys,
63 initialSceneKey = initialSceneKey,
64 transitions = SceneContainerTransitions,
65 overlayKeys = overlayKeys,
66 navigationDistances = navigationDistances,
67 )
68 }
69
<lambda>null70 val Kosmos.transitionState by Fixture {
71 MutableStateFlow<ObservableTransitionState>(
72 ObservableTransitionState.Idle(sceneContainerConfig.initialSceneKey)
73 )
74 }
75
<lambda>null76 val Kosmos.sceneContainerViewModel by Fixture {
77 sceneContainerViewModelFactory
78 .create(mock<View>()) {}
79 .apply { setTransitionState(transitionState) }
80 }
81
<lambda>null82 val Kosmos.sceneContainerViewModelFactory by Fixture {
83 object : SceneContainerViewModel.Factory {
84 override fun create(
85 view: View,
86 motionEventHandlerReceiver: (SceneContainerViewModel.MotionEventHandler?) -> Unit,
87 ): SceneContainerViewModel =
88 SceneContainerViewModel(
89 sceneInteractor = sceneInteractor,
90 falsingInteractor = falsingInteractor,
91 powerInteractor = powerInteractor,
92 shadeInteractor = shadeInteractor,
93 remoteInputInteractor = remoteInputInteractor,
94 splitEdgeDetector = splitEdgeDetector,
95 logger = sceneLogger,
96 hapticsViewModelFactory = sceneContainerHapticsViewModelFactory,
97 view = view,
98 motionEventHandlerReceiver = motionEventHandlerReceiver,
99 )
100 }
101 }
102
<lambda>null103 val Kosmos.sceneContainerHapticsViewModelFactory by Fixture {
104 object : SceneContainerHapticsViewModel.Factory {
105 override fun create(view: View): SceneContainerHapticsViewModel {
106 return SceneContainerHapticsViewModel(
107 view = view,
108 sceneInteractor = sceneInteractor,
109 shadeInteractor = shadeInteractor,
110 msdlPlayer = msdlPlayer,
111 )
112 }
113 }
114 }
115