• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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