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