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.keyguard.domain.interactor.keyguardInteractor
8 import com.android.systemui.keyguard.ui.viewmodel.aodBurnInViewModel
9 import com.android.systemui.keyguard.ui.viewmodel.keyguardClockViewModel
10 import com.android.systemui.keyguard.ui.viewmodel.lightRevealScrimViewModel
11 import com.android.systemui.kosmos.Kosmos
12 import com.android.systemui.kosmos.Kosmos.Fixture
13 import com.android.systemui.power.domain.interactor.powerInteractor
14 import com.android.systemui.scene.domain.interactor.sceneInteractor
15 import com.android.systemui.scene.shared.logger.sceneLogger
16 import com.android.systemui.scene.shared.model.Overlays
17 import com.android.systemui.scene.shared.model.SceneContainerConfig
18 import com.android.systemui.scene.shared.model.Scenes
19 import com.android.systemui.scene.ui.FakeOverlay
20 import com.android.systemui.scene.ui.composable.ConstantSceneContainerTransitionsBuilder
21 import com.android.systemui.scene.ui.viewmodel.SceneContainerHapticsViewModel
22 import com.android.systemui.scene.ui.viewmodel.SceneContainerViewModel
23 import com.android.systemui.shade.domain.interactor.shadeInteractor
24 import com.android.systemui.shade.domain.interactor.shadeModeInteractor
25 import com.android.systemui.statusbar.domain.interactor.remoteInputInteractor
26 import com.android.systemui.wallpapers.ui.viewmodel.wallpaperViewModel
27 import kotlinx.coroutines.flow.MutableStateFlow
28 import org.mockito.kotlin.mock
29
<lambda>null30 var Kosmos.sceneKeys by Fixture {
31 listOf(
32 Scenes.QuickSettings,
33 Scenes.Shade,
34 Scenes.Lockscreen,
35 Scenes.Gone,
36 Scenes.Communal,
37 Scenes.Dream,
38 )
39 }
40
<lambda>null41 val Kosmos.initialSceneKey by Fixture { Scenes.Lockscreen }
42
<lambda>null43 var Kosmos.overlayKeys by Fixture {
44 listOf(Overlays.NotificationsShade, Overlays.QuickSettingsShade, Overlays.Bouncer)
45 }
46
<lambda>null47 val Kosmos.fakeOverlaysByKeys by Fixture { overlayKeys.associateWith { FakeOverlay(it) } }
48
<lambda>null49 val Kosmos.fakeOverlays by Fixture { fakeOverlaysByKeys.values.toSet() }
50
<lambda>null51 val Kosmos.overlays by Fixture { fakeOverlays }
52
<lambda>null53 val Kosmos.sceneTransitionsBuilder by Fixture { ConstantSceneContainerTransitionsBuilder() }
54
<lambda>null55 var Kosmos.sceneContainerConfig by Fixture {
56 val navigationDistances =
57 mapOf(
58 Scenes.Gone to 0,
59 Scenes.Lockscreen to 0,
60 Scenes.Communal to 1,
61 Scenes.Dream to 2,
62 Scenes.Shade to 3,
63 Scenes.QuickSettings to 4,
64 )
65
66 SceneContainerConfig(
67 sceneKeys = sceneKeys,
68 initialSceneKey = initialSceneKey,
69 overlayKeys = overlayKeys,
70 navigationDistances = navigationDistances,
71 transitionsBuilder = sceneTransitionsBuilder,
72 )
73 }
74
<lambda>null75 val Kosmos.transitionState by Fixture {
76 MutableStateFlow<ObservableTransitionState>(
77 ObservableTransitionState.Idle(sceneContainerConfig.initialSceneKey)
78 )
79 }
80
<lambda>null81 val Kosmos.sceneContainerViewModel by Fixture {
82 sceneContainerViewModelFactory
83 .create(mock<View>()) {}
84 .apply { setTransitionState(transitionState) }
85 }
86
<lambda>null87 val Kosmos.sceneContainerViewModelFactory by Fixture {
88 object : SceneContainerViewModel.Factory {
89 override fun create(
90 view: View,
91 motionEventHandlerReceiver: (SceneContainerViewModel.MotionEventHandler?) -> Unit,
92 ): SceneContainerViewModel =
93 SceneContainerViewModel(
94 sceneInteractor = sceneInteractor,
95 falsingInteractor = falsingInteractor,
96 powerInteractor = powerInteractor,
97 shadeModeInteractor = shadeModeInteractor,
98 remoteInputInteractor = remoteInputInteractor,
99 logger = sceneLogger,
100 hapticsViewModelFactory = sceneContainerHapticsViewModelFactory,
101 view = view,
102 motionEventHandlerReceiver = motionEventHandlerReceiver,
103 lightRevealScrim = lightRevealScrimViewModel,
104 wallpaperViewModel = wallpaperViewModel,
105 keyguardInteractor = keyguardInteractor,
106 burnIn = aodBurnInViewModel,
107 clock = keyguardClockViewModel,
108 )
109 }
110 }
111
<lambda>null112 val Kosmos.sceneContainerHapticsViewModelFactory by Fixture {
113 object : SceneContainerHapticsViewModel.Factory {
114 override fun create(view: View): SceneContainerHapticsViewModel {
115 return SceneContainerHapticsViewModel(
116 view = view,
117 sceneInteractor = sceneInteractor,
118 shadeInteractor = shadeInteractor,
119 msdlPlayer = msdlPlayer,
120 )
121 }
122 }
123 }
124