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