1 package com.android.systemui.statusbar
2 
3 import android.view.View
4 import com.android.systemui.plugins.statusbar.StatusBarStateController
5 
6 class FakeStatusBarStateController : SysuiStatusBarStateController {
7     @JvmField var state = StatusBarState.SHADE
8 
9     @JvmField var upcomingState = StatusBarState.SHADE
10 
11     @JvmField var lastState = StatusBarState.SHADE
12 
13     @JvmField var dozing = false
14 
15     @JvmField var expanded = false
16 
17     @JvmField var pulsing = false
18 
19     @JvmField var dreaming = false
20 
21     @JvmField var dozeAmount = 0.0f
22 
23     @JvmField var interpolatedDozeAmount = 0.0f
24 
25     @JvmField var dozeAmountTarget = 0.0f
26 
27     @JvmField var leaveOpen = false
28 
29     @JvmField var keyguardRequested = false
30 
31     var lastSetDozeAmountView: View? = null
32         private set
33 
34     var lastSetDozeAmountAnimated = false
35         private set
36 
37     var lastSystemBarAppearance = 0
38         private set
39 
40     var lastSystemBarBehavior = 0
41         private set
42 
43     var lastSystemBarRequestedVisibleTypes = 0
44         private set
45 
46     var lastSystemBarPackageName: String? = null
47         private set
48 
49     private val _callbacks = mutableSetOf<StatusBarStateController.StateListener>()
50 
51     @JvmField val callbacks: Set<StatusBarStateController.StateListener> = _callbacks
52 
53     private var fullscreen = false
54 
startnull55     override fun start() {}
56 
getStatenull57     override fun getState() = state
58 
59     override fun setState(newState: Int, force: Boolean): Boolean {
60         val oldState = this.state
61         newState != oldState || force || return false
62 
63         callbacks.forEach { it.onStatePreChange(oldState, newState) }
64         this.lastState = oldState
65         this.state = newState
66         setUpcomingState(newState)
67         callbacks.forEach { it.onStateChanged(newState) }
68         callbacks.forEach { it.onStatePostChange() }
69         return true
70     }
71 
getCurrentOrUpcomingStatenull72     override fun getCurrentOrUpcomingState() = upcomingState
73 
74     override fun setUpcomingState(upcomingState: Int) {
75         upcomingState != this.upcomingState || return
76         this.upcomingState = upcomingState
77         callbacks.forEach { it.onUpcomingStateChanged(upcomingState) }
78     }
79 
isDozingnull80     override fun isDozing() = dozing
81 
82     override fun setIsDozing(dozing: Boolean): Boolean {
83         dozing != this.dozing || return false
84         this.dozing = dozing
85         callbacks.forEach { it.onDozingChanged(dozing) }
86         return true
87     }
88 
isExpandednull89     override fun isExpanded() = expanded
90 
91     fun fakeShadeExpansionFullyChanged(expanded: Boolean) {
92         expanded != this.expanded || return
93         this.expanded = expanded
94         callbacks.forEach { it.onExpandedChanged(expanded) }
95     }
96 
isPulsingnull97     override fun isPulsing() = pulsing
98 
99     override fun setPulsing(pulsing: Boolean) {
100         pulsing != this.pulsing || return
101         this.pulsing = pulsing
102         callbacks.forEach { it.onPulsingChanged(pulsing) }
103     }
104 
isDreamingnull105     override fun isDreaming() = dreaming
106 
107     override fun setIsDreaming(dreaming: Boolean): Boolean {
108         dreaming != this.dreaming || return false
109         this.dreaming = dreaming
110         callbacks.forEach { it.onDreamingChanged(dreaming) }
111         return true
112     }
113 
getDozeAmountnull114     override fun getDozeAmount() = dozeAmount
115 
116     override fun setAndInstrumentDozeAmount(view: View?, dozeAmount: Float, animated: Boolean) {
117         dozeAmountTarget = dozeAmount
118         lastSetDozeAmountView = view
119         lastSetDozeAmountAnimated = animated
120         if (!animated) {
121             this.dozeAmount = dozeAmount
122         }
123     }
124 
leaveOpenOnKeyguardHidenull125     override fun leaveOpenOnKeyguardHide() = leaveOpen
126 
127     override fun setLeaveOpenOnKeyguardHide(leaveOpen: Boolean) {
128         this.leaveOpen = leaveOpen
129     }
130 
getInterpolatedDozeAmountnull131     override fun getInterpolatedDozeAmount() = interpolatedDozeAmount
132 
133     fun fakeInterpolatedDozeAmountChanged(interpolatedDozeAmount: Float) {
134         this.interpolatedDozeAmount = interpolatedDozeAmount
135         callbacks.forEach { it.onDozeAmountChanged(dozeAmount, interpolatedDozeAmount) }
136     }
137 
goingToFullShadenull138     override fun goingToFullShade() = state == StatusBarState.SHADE && leaveOpen
139 
140     override fun fromShadeLocked() = lastState == StatusBarState.SHADE_LOCKED
141 
142     override fun isKeyguardRequested(): Boolean = keyguardRequested
143 
144     override fun setKeyguardRequested(keyguardRequested: Boolean) {
145         this.keyguardRequested = keyguardRequested
146     }
147 
addCallbacknull148     override fun addCallback(listener: StatusBarStateController.StateListener?) {
149         _callbacks.add(listener!!)
150     }
151 
addCallbacknull152     override fun addCallback(listener: StatusBarStateController.StateListener?, rank: Int) {
153         throw RuntimeException("addCallback with rank unsupported")
154     }
155 
removeCallbacknull156     override fun removeCallback(listener: StatusBarStateController.StateListener?) {
157         _callbacks.remove(listener!!)
158     }
159 }
160