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
18 
19 import android.hardware.devicestate.DeviceState
20 import android.hardware.devicestate.DeviceState.PROPERTY_FEATURE_REAR_DISPLAY
21 import android.hardware.devicestate.DeviceState.PROPERTY_FEATURE_REAR_DISPLAY_OUTER_DEFAULT
22 import android.hardware.devicestate.DeviceState.PROPERTY_FOLDABLE_DISPLAY_CONFIGURATION_INNER_PRIMARY
23 import android.hardware.devicestate.DeviceState.PROPERTY_FOLDABLE_DISPLAY_CONFIGURATION_OUTER_PRIMARY
24 import android.hardware.devicestate.DeviceState.PROPERTY_FOLDABLE_HARDWARE_CONFIGURATION_FOLD_IN_CLOSED
25 import android.hardware.devicestate.DeviceState.PROPERTY_FOLDABLE_HARDWARE_CONFIGURATION_FOLD_IN_HALF_OPEN
26 import android.hardware.devicestate.DeviceState.PROPERTY_FOLDABLE_HARDWARE_CONFIGURATION_FOLD_IN_OPEN
27 import android.hardware.devicestate.DeviceState.PROPERTY_POWER_CONFIGURATION_TRIGGER_SLEEP
28 import android.hardware.devicestate.DeviceState.PROPERTY_POWER_CONFIGURATION_TRIGGER_WAKE
29 import android.hardware.devicestate.DeviceStateManager
30 import com.android.systemui.kosmos.Kosmos
31 import org.mockito.kotlin.mock
32 
<lambda>null33 val Kosmos.deviceStateManager by Kosmos.Fixture { mock<DeviceStateManager>() }
34 
35 val Kosmos.defaultDeviceState by
<lambda>null36     Kosmos.Fixture {
37         DeviceState(DeviceState.Configuration.Builder(0 /* identifier */, "DEFAULT").build())
38     }
39 
40 val Kosmos.foldedDeviceStateList by
<lambda>null41     Kosmos.Fixture {
42         listOf(
43             DeviceState(
44                 DeviceState.Configuration.Builder(0, "FOLDED_0")
45                     .setSystemProperties(
46                         setOf(
47                             PROPERTY_FOLDABLE_DISPLAY_CONFIGURATION_OUTER_PRIMARY,
48                             PROPERTY_POWER_CONFIGURATION_TRIGGER_SLEEP,
49                         )
50                     )
51                     .setPhysicalProperties(
52                         setOf(PROPERTY_FOLDABLE_HARDWARE_CONFIGURATION_FOLD_IN_CLOSED)
53                     )
54                     .build()
55             ),
56             DeviceState(
57                 DeviceState.Configuration.Builder(1, "FOLDED_1")
58                     .setSystemProperties(
59                         setOf(
60                             PROPERTY_FOLDABLE_DISPLAY_CONFIGURATION_OUTER_PRIMARY,
61                             PROPERTY_POWER_CONFIGURATION_TRIGGER_SLEEP,
62                         )
63                     )
64                     .setPhysicalProperties(
65                         setOf(PROPERTY_FOLDABLE_HARDWARE_CONFIGURATION_FOLD_IN_CLOSED)
66                     )
67                     .build()
68             ),
69             DeviceState(
70                 DeviceState.Configuration.Builder(2, "FOLDED_2")
71                     .setSystemProperties(
72                         setOf(
73                             PROPERTY_FOLDABLE_DISPLAY_CONFIGURATION_OUTER_PRIMARY,
74                             PROPERTY_POWER_CONFIGURATION_TRIGGER_SLEEP,
75                         )
76                     )
77                     .setPhysicalProperties(
78                         setOf(PROPERTY_FOLDABLE_HARDWARE_CONFIGURATION_FOLD_IN_CLOSED)
79                     )
80                     .build()
81             ),
82         )
83     }
84 
85 val Kosmos.halfFoldedDeviceState by
<lambda>null86     Kosmos.Fixture {
87         DeviceState(
88             DeviceState.Configuration.Builder(3 /* identifier */, "HALF_FOLDED")
89                 .setSystemProperties(
90                     setOf(
91                         PROPERTY_FOLDABLE_DISPLAY_CONFIGURATION_INNER_PRIMARY,
92                         PROPERTY_POWER_CONFIGURATION_TRIGGER_WAKE,
93                     )
94                 )
95                 .setPhysicalProperties(
96                     setOf(PROPERTY_FOLDABLE_HARDWARE_CONFIGURATION_FOLD_IN_HALF_OPEN)
97                 )
98                 .build()
99         )
100     }
101 
102 val Kosmos.unfoldedDeviceState by
<lambda>null103     Kosmos.Fixture {
104         DeviceState(
105             DeviceState.Configuration.Builder(4 /* identifier */, "UNFOLDED")
106                 .setSystemProperties(
107                     setOf(
108                         PROPERTY_FOLDABLE_DISPLAY_CONFIGURATION_INNER_PRIMARY,
109                         PROPERTY_POWER_CONFIGURATION_TRIGGER_WAKE,
110                     )
111                 )
112                 .setPhysicalProperties(setOf(PROPERTY_FOLDABLE_HARDWARE_CONFIGURATION_FOLD_IN_OPEN))
113                 .build()
114         )
115     }
116 
117 val Kosmos.rearDisplayDeviceState by
<lambda>null118     Kosmos.Fixture {
119         DeviceState(
120             DeviceState.Configuration.Builder(5 /* identifier */, "REAR_DISPLAY")
121                 .setSystemProperties(
122                     setOf(
123                         PROPERTY_FOLDABLE_DISPLAY_CONFIGURATION_OUTER_PRIMARY,
124                         PROPERTY_FEATURE_REAR_DISPLAY,
125                     )
126                 )
127                 .build()
128         )
129     }
130 
131 val Kosmos.rearDisplayOuterDefaultDeviceState by
<lambda>null132     Kosmos.Fixture {
133         DeviceState(
134             DeviceState.Configuration.Builder(5 /* identifier */, "REAR_DISPLAY")
135                 .setSystemProperties(
136                     setOf(
137                         PROPERTY_FOLDABLE_DISPLAY_CONFIGURATION_OUTER_PRIMARY,
138                         PROPERTY_FEATURE_REAR_DISPLAY,
139                         PROPERTY_FEATURE_REAR_DISPLAY_OUTER_DEFAULT,
140                     )
141                 )
142                 .build()
143         )
144     }
145 
146 val Kosmos.unknownDeviceState by
<lambda>null147     Kosmos.Fixture {
148         DeviceState(DeviceState.Configuration.Builder(8 /* identifier */, "UNKNOWN").build())
149     }
150