Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/panelstate/PanelExpansionStateManager.kt +8 −6 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ import android.annotation.IntDef import android.util.Log import androidx.annotation.FloatRange import com.android.systemui.dagger.SysUISingleton import com.android.systemui.util.Compile import javax.inject.Inject /** Loading Loading @@ -109,8 +110,8 @@ class PanelExpansionStateManager @Inject constructor() { debugLog( "panelExpansionChanged:" + "start state=${oldState.stateToString()} " + "end state=${state.stateToString()} " + "start state=${oldState.panelStateToString()} " + "end state=${state.panelStateToString()} " + "f=$fraction " + "expanded=$expanded " + "tracking=$tracking" + Loading @@ -126,14 +127,15 @@ class PanelExpansionStateManager @Inject constructor() { /** Updates the panel state if necessary. */ fun updateState(@PanelState state: Int) { debugLog("update state: ${this.state.stateToString()} -> ${state.stateToString()}") debugLog( "update state: ${this.state.panelStateToString()} -> ${state.panelStateToString()}") if (this.state != state) { updateStateInternal(state) } } private fun updateStateInternal(@PanelState state: Int) { debugLog("go state: ${this.state.stateToString()} -> ${state.stateToString()}") debugLog("go state: ${this.state.panelStateToString()} -> ${state.panelStateToString()}") this.state = state stateListeners.forEach { it.onPanelStateChanged(state) } } Loading @@ -154,7 +156,7 @@ const val STATE_OPENING = 1 const val STATE_OPEN = 2 @PanelState private fun Int.stateToString(): String { fun Int.panelStateToString(): String { return when (this) { STATE_CLOSED -> "CLOSED" STATE_OPENING -> "OPENING" Loading @@ -163,5 +165,5 @@ private fun Int.stateToString(): String { } } private const val DEBUG = false private val TAG = PanelExpansionStateManager::class.simpleName private val DEBUG = Compile.IS_DEBUG && Log.isLoggable(TAG, Log.DEBUG) packages/SystemUI/src/com/android/systemui/statusbar/phone/shade/transition/ScrimShadeTransitionController.kt +29 −9 Original line number Diff line number Diff line Loading @@ -11,6 +11,8 @@ import com.android.systemui.statusbar.StatusBarState import com.android.systemui.statusbar.SysuiStatusBarStateController import com.android.systemui.statusbar.phone.ScrimController import com.android.systemui.statusbar.phone.panelstate.PanelExpansionChangeEvent import com.android.systemui.statusbar.phone.panelstate.PanelState import com.android.systemui.statusbar.phone.panelstate.STATE_OPENING import com.android.systemui.statusbar.policy.ConfigurationController import com.android.systemui.util.LargeScreenUtils import java.io.PrintWriter Loading @@ -30,8 +32,9 @@ constructor( private var inSplitShade = false private var splitShadeScrimTransitionDistance = 0 private var lastExpansionFraction: Float = 0f private var lastExpansionFraction: Float? = null private var lastExpansionEvent: PanelExpansionChangeEvent? = null private var currentPanelState: Int? = null init { updateResources() Loading @@ -41,8 +44,8 @@ constructor( updateResources() } }) dumpManager .registerDumpable(ScrimShadeTransitionController::class.java.simpleName, this::dump) dumpManager.registerDumpable( ScrimShadeTransitionController::class.java.simpleName, this::dump) } private fun updateResources() { Loading @@ -51,21 +54,38 @@ constructor( resources.getDimensionPixelSize(R.dimen.split_shade_scrim_transition_distance) } fun onPanelStateChanged(@PanelState state: Int) { currentPanelState = state onStateChanged() } fun onPanelExpansionChanged(panelExpansionChangeEvent: PanelExpansionChangeEvent) { val expansionFraction = calculateScrimExpansionFraction(panelExpansionChangeEvent) lastExpansionEvent = panelExpansionChangeEvent onStateChanged() } private fun onStateChanged() { val expansionEvent = lastExpansionEvent ?: return val panelState = currentPanelState val expansionFraction = calculateScrimExpansionFraction(expansionEvent, panelState) scrimController.setRawPanelExpansionFraction(expansionFraction) lastExpansionFraction = expansionFraction lastExpansionEvent = panelExpansionChangeEvent } private fun calculateScrimExpansionFraction(expansionEvent: PanelExpansionChangeEvent): Float { return if (inSplitShade && isScreenUnlocked()) { private fun calculateScrimExpansionFraction( expansionEvent: PanelExpansionChangeEvent, @PanelState panelState: Int? ): Float { return if (canUseCustomFraction(panelState)) { constrain(expansionEvent.dragDownPxAmount / splitShadeScrimTransitionDistance, 0f, 1f) } else { expansionEvent.fraction } } private fun canUseCustomFraction(panelState: Int?) = inSplitShade && isScreenUnlocked() && panelState == STATE_OPENING private fun isScreenUnlocked() = statusBarStateController.currentOrUpcomingState == StatusBarState.SHADE Loading @@ -78,9 +98,9 @@ constructor( isScreenUnlocked: ${isScreenUnlocked()} splitShadeScrimTransitionDistance: $splitShadeScrimTransitionDistance State: currentPanelState: $currentPanelState lastExpansionFraction: $lastExpansionFraction lastExpansionEvent: $lastExpansionEvent """.trimIndent() ) """.trimIndent()) } } packages/SystemUI/src/com/android/systemui/statusbar/phone/shade/transition/ShadeTransitionController.kt +8 −0 Original line number Diff line number Diff line Loading @@ -11,6 +11,7 @@ import com.android.systemui.statusbar.phone.NotificationPanelViewController import com.android.systemui.statusbar.phone.panelstate.PanelExpansionChangeEvent import com.android.systemui.statusbar.phone.panelstate.PanelExpansionStateManager import com.android.systemui.statusbar.phone.panelstate.PanelState import com.android.systemui.statusbar.phone.panelstate.panelStateToString import com.android.systemui.statusbar.policy.ConfigurationController import java.io.PrintWriter import javax.inject.Inject Loading @@ -34,6 +35,8 @@ constructor( lateinit var qs: QS private var inSplitShade = false private var currentPanelState: Int? = null private var lastPanelExpansionChangeEvent: PanelExpansionChangeEvent? = null private val splitShadeOverScroller by lazy { splitShadeOverScrollerFactory.create({ qs }, { notificationStackScrollLayoutController }) Loading Loading @@ -66,10 +69,13 @@ constructor( } private fun onPanelStateChanged(@PanelState state: Int) { currentPanelState = state shadeOverScroller.onPanelStateChanged(state) scrimShadeTransitionController.onPanelStateChanged(state) } private fun onPanelExpansionChanged(event: PanelExpansionChangeEvent) { lastPanelExpansionChangeEvent = event shadeOverScroller.onDragDownAmountChanged(event.dragDownPxAmount) scrimShadeTransitionController.onPanelExpansionChanged(event) } Loading @@ -84,6 +90,8 @@ constructor( """ ShadeTransitionController: inSplitShade: $inSplitShade currentPanelState: ${currentPanelState?.panelStateToString()} lastPanelExpansionChangeEvent: $lastPanelExpansionChangeEvent qs.isInitialized: ${this::qs.isInitialized} npvc.isInitialized: ${this::notificationPanelViewController.isInitialized} nssl.isInitialized: ${this::notificationStackScrollLayoutController.isInitialized} Loading packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/shade/transition/ScrimShadeTransitionControllerTest.kt +35 −12 Original line number Diff line number Diff line Loading @@ -9,6 +9,9 @@ import com.android.systemui.statusbar.StatusBarState import com.android.systemui.statusbar.SysuiStatusBarStateController import com.android.systemui.statusbar.phone.ScrimController import com.android.systemui.statusbar.phone.panelstate.PanelExpansionChangeEvent import com.android.systemui.statusbar.phone.panelstate.STATE_CLOSED import com.android.systemui.statusbar.phone.panelstate.STATE_OPEN import com.android.systemui.statusbar.phone.panelstate.STATE_OPENING import com.android.systemui.statusbar.policy.FakeConfigurationController import org.junit.Before import org.junit.Test Loading Loading @@ -39,8 +42,9 @@ class ScrimShadeTransitionControllerTest : SysuiTestCase() { dumpManager, scrimController, context.resources, statusBarStateController ) statusBarStateController) controller.onPanelStateChanged(STATE_OPENING) } @Test Loading @@ -54,8 +58,7 @@ class ScrimShadeTransitionControllerTest : SysuiTestCase() { @Test fun onPanelExpansionChanged_inSplitShade_unlockedShade_setsFractionBasedOnDragDownAmount() { whenever(statusBarStateController.currentOrUpcomingState) .thenReturn(StatusBarState.SHADE) whenever(statusBarStateController.currentOrUpcomingState).thenReturn(StatusBarState.SHADE) val scrimShadeTransitionDistance = context.resources.getDimensionPixelSize(R.dimen.split_shade_scrim_transition_distance) setSplitShadeEnabled(true) Loading @@ -68,23 +71,20 @@ class ScrimShadeTransitionControllerTest : SysuiTestCase() { @Test fun onPanelExpansionChanged_inSplitShade_largeDragDownAmount_fractionIsNotGreaterThan1() { whenever(statusBarStateController.currentOrUpcomingState) .thenReturn(StatusBarState.SHADE) whenever(statusBarStateController.currentOrUpcomingState).thenReturn(StatusBarState.SHADE) val scrimShadeTransitionDistance = context.resources.getDimensionPixelSize(R.dimen.split_shade_scrim_transition_distance) setSplitShadeEnabled(true) controller.onPanelExpansionChanged( EXPANSION_EVENT.copy(dragDownPxAmount = 100f * scrimShadeTransitionDistance) ) EXPANSION_EVENT.copy(dragDownPxAmount = 100f * scrimShadeTransitionDistance)) verify(scrimController).setRawPanelExpansionFraction(1f) } @Test fun onPanelExpansionChanged_inSplitShade_negativeDragDownAmount_fractionIsNotLessThan0() { whenever(statusBarStateController.currentOrUpcomingState) .thenReturn(StatusBarState.SHADE) whenever(statusBarStateController.currentOrUpcomingState).thenReturn(StatusBarState.SHADE) setSplitShadeEnabled(true) controller.onPanelExpansionChanged(EXPANSION_EVENT.copy(dragDownPxAmount = -100f)) Loading Loading @@ -114,6 +114,30 @@ class ScrimShadeTransitionControllerTest : SysuiTestCase() { verify(scrimController).setRawPanelExpansionFraction(EXPANSION_EVENT.fraction) } @Test fun onPanelExpansionChanged_inSplitShade_panelOpen_setsFractionEqualToEventFraction() { controller.onPanelStateChanged(STATE_OPEN) whenever(statusBarStateController.currentOrUpcomingState) .thenReturn(StatusBarState.KEYGUARD) setSplitShadeEnabled(true) controller.onPanelExpansionChanged(EXPANSION_EVENT) verify(scrimController).setRawPanelExpansionFraction(EXPANSION_EVENT.fraction) } @Test fun onPanelExpansionChanged_inSplitShade_panelClosed_setsFractionEqualToEventFraction() { controller.onPanelStateChanged(STATE_CLOSED) whenever(statusBarStateController.currentOrUpcomingState) .thenReturn(StatusBarState.KEYGUARD) setSplitShadeEnabled(true) controller.onPanelExpansionChanged(EXPANSION_EVENT) verify(scrimController).setRawPanelExpansionFraction(EXPANSION_EVENT.fraction) } private fun setSplitShadeEnabled(enabled: Boolean) { overrideResource(R.bool.config_use_split_notification_shade, enabled) configurationController.notifyConfigurationChanged() Loading @@ -122,7 +146,6 @@ class ScrimShadeTransitionControllerTest : SysuiTestCase() { companion object { val EXPANSION_EVENT = PanelExpansionChangeEvent( fraction = 0.5f, expanded = true, tracking = true, dragDownPxAmount = 10f ) fraction = 0.5f, expanded = true, tracking = true, dragDownPxAmount = 10f) } } packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/shade/transition/ShadeTransitionControllerTest.kt +22 −6 Original line number Diff line number Diff line Loading @@ -8,6 +8,7 @@ import com.android.systemui.dump.DumpManager import com.android.systemui.plugins.qs.QS import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayoutController import com.android.systemui.statusbar.phone.NotificationPanelViewController import com.android.systemui.statusbar.phone.panelstate.PanelExpansionChangeEvent import com.android.systemui.statusbar.phone.panelstate.PanelExpansionStateManager import com.android.systemui.statusbar.phone.panelstate.STATE_OPENING import com.android.systemui.statusbar.policy.FakeConfigurationController Loading Loading @@ -49,8 +50,7 @@ class ShadeTransitionControllerTest : SysuiTestCase() { context, splitShadeOverScrollerFactory = { _, _ -> splitShadeOverScroller }, noOpOverScroller, scrimShadeTransitionController ) scrimShadeTransitionController) // Resetting as they are notified upon initialization. reset(noOpOverScroller, splitShadeOverScroller) Loading Loading @@ -91,6 +91,16 @@ class ShadeTransitionControllerTest : SysuiTestCase() { verifyZeroInteractions(splitShadeOverScroller) } @Test fun onPanelStateChanged_forwardsToScrimTransitionController() { initLateProperties() startPanelExpansion() verify(scrimShadeTransitionController).onPanelStateChanged(STATE_OPENING) verify(scrimShadeTransitionController).onPanelExpansionChanged(DEFAULT_EXPANSION_EVENT) } private fun initLateProperties() { controller.qs = qs controller.notificationStackScrollLayoutController = nsslController Loading @@ -112,14 +122,20 @@ class ShadeTransitionControllerTest : SysuiTestCase() { private fun startPanelExpansion() { panelExpansionStateManager.onPanelExpansionChanged( fraction = 0.5f, expanded = true, tracking = true, dragDownPxAmount = DEFAULT_DRAG_DOWN_AMOUNT DEFAULT_EXPANSION_EVENT.fraction, DEFAULT_EXPANSION_EVENT.expanded, DEFAULT_EXPANSION_EVENT.tracking, DEFAULT_EXPANSION_EVENT.dragDownPxAmount, ) } companion object { private const val DEFAULT_DRAG_DOWN_AMOUNT = 123f private val DEFAULT_EXPANSION_EVENT = PanelExpansionChangeEvent( fraction = 0.5f, expanded = true, tracking = true, dragDownPxAmount = DEFAULT_DRAG_DOWN_AMOUNT) } } Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/panelstate/PanelExpansionStateManager.kt +8 −6 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ import android.annotation.IntDef import android.util.Log import androidx.annotation.FloatRange import com.android.systemui.dagger.SysUISingleton import com.android.systemui.util.Compile import javax.inject.Inject /** Loading Loading @@ -109,8 +110,8 @@ class PanelExpansionStateManager @Inject constructor() { debugLog( "panelExpansionChanged:" + "start state=${oldState.stateToString()} " + "end state=${state.stateToString()} " + "start state=${oldState.panelStateToString()} " + "end state=${state.panelStateToString()} " + "f=$fraction " + "expanded=$expanded " + "tracking=$tracking" + Loading @@ -126,14 +127,15 @@ class PanelExpansionStateManager @Inject constructor() { /** Updates the panel state if necessary. */ fun updateState(@PanelState state: Int) { debugLog("update state: ${this.state.stateToString()} -> ${state.stateToString()}") debugLog( "update state: ${this.state.panelStateToString()} -> ${state.panelStateToString()}") if (this.state != state) { updateStateInternal(state) } } private fun updateStateInternal(@PanelState state: Int) { debugLog("go state: ${this.state.stateToString()} -> ${state.stateToString()}") debugLog("go state: ${this.state.panelStateToString()} -> ${state.panelStateToString()}") this.state = state stateListeners.forEach { it.onPanelStateChanged(state) } } Loading @@ -154,7 +156,7 @@ const val STATE_OPENING = 1 const val STATE_OPEN = 2 @PanelState private fun Int.stateToString(): String { fun Int.panelStateToString(): String { return when (this) { STATE_CLOSED -> "CLOSED" STATE_OPENING -> "OPENING" Loading @@ -163,5 +165,5 @@ private fun Int.stateToString(): String { } } private const val DEBUG = false private val TAG = PanelExpansionStateManager::class.simpleName private val DEBUG = Compile.IS_DEBUG && Log.isLoggable(TAG, Log.DEBUG)
packages/SystemUI/src/com/android/systemui/statusbar/phone/shade/transition/ScrimShadeTransitionController.kt +29 −9 Original line number Diff line number Diff line Loading @@ -11,6 +11,8 @@ import com.android.systemui.statusbar.StatusBarState import com.android.systemui.statusbar.SysuiStatusBarStateController import com.android.systemui.statusbar.phone.ScrimController import com.android.systemui.statusbar.phone.panelstate.PanelExpansionChangeEvent import com.android.systemui.statusbar.phone.panelstate.PanelState import com.android.systemui.statusbar.phone.panelstate.STATE_OPENING import com.android.systemui.statusbar.policy.ConfigurationController import com.android.systemui.util.LargeScreenUtils import java.io.PrintWriter Loading @@ -30,8 +32,9 @@ constructor( private var inSplitShade = false private var splitShadeScrimTransitionDistance = 0 private var lastExpansionFraction: Float = 0f private var lastExpansionFraction: Float? = null private var lastExpansionEvent: PanelExpansionChangeEvent? = null private var currentPanelState: Int? = null init { updateResources() Loading @@ -41,8 +44,8 @@ constructor( updateResources() } }) dumpManager .registerDumpable(ScrimShadeTransitionController::class.java.simpleName, this::dump) dumpManager.registerDumpable( ScrimShadeTransitionController::class.java.simpleName, this::dump) } private fun updateResources() { Loading @@ -51,21 +54,38 @@ constructor( resources.getDimensionPixelSize(R.dimen.split_shade_scrim_transition_distance) } fun onPanelStateChanged(@PanelState state: Int) { currentPanelState = state onStateChanged() } fun onPanelExpansionChanged(panelExpansionChangeEvent: PanelExpansionChangeEvent) { val expansionFraction = calculateScrimExpansionFraction(panelExpansionChangeEvent) lastExpansionEvent = panelExpansionChangeEvent onStateChanged() } private fun onStateChanged() { val expansionEvent = lastExpansionEvent ?: return val panelState = currentPanelState val expansionFraction = calculateScrimExpansionFraction(expansionEvent, panelState) scrimController.setRawPanelExpansionFraction(expansionFraction) lastExpansionFraction = expansionFraction lastExpansionEvent = panelExpansionChangeEvent } private fun calculateScrimExpansionFraction(expansionEvent: PanelExpansionChangeEvent): Float { return if (inSplitShade && isScreenUnlocked()) { private fun calculateScrimExpansionFraction( expansionEvent: PanelExpansionChangeEvent, @PanelState panelState: Int? ): Float { return if (canUseCustomFraction(panelState)) { constrain(expansionEvent.dragDownPxAmount / splitShadeScrimTransitionDistance, 0f, 1f) } else { expansionEvent.fraction } } private fun canUseCustomFraction(panelState: Int?) = inSplitShade && isScreenUnlocked() && panelState == STATE_OPENING private fun isScreenUnlocked() = statusBarStateController.currentOrUpcomingState == StatusBarState.SHADE Loading @@ -78,9 +98,9 @@ constructor( isScreenUnlocked: ${isScreenUnlocked()} splitShadeScrimTransitionDistance: $splitShadeScrimTransitionDistance State: currentPanelState: $currentPanelState lastExpansionFraction: $lastExpansionFraction lastExpansionEvent: $lastExpansionEvent """.trimIndent() ) """.trimIndent()) } }
packages/SystemUI/src/com/android/systemui/statusbar/phone/shade/transition/ShadeTransitionController.kt +8 −0 Original line number Diff line number Diff line Loading @@ -11,6 +11,7 @@ import com.android.systemui.statusbar.phone.NotificationPanelViewController import com.android.systemui.statusbar.phone.panelstate.PanelExpansionChangeEvent import com.android.systemui.statusbar.phone.panelstate.PanelExpansionStateManager import com.android.systemui.statusbar.phone.panelstate.PanelState import com.android.systemui.statusbar.phone.panelstate.panelStateToString import com.android.systemui.statusbar.policy.ConfigurationController import java.io.PrintWriter import javax.inject.Inject Loading @@ -34,6 +35,8 @@ constructor( lateinit var qs: QS private var inSplitShade = false private var currentPanelState: Int? = null private var lastPanelExpansionChangeEvent: PanelExpansionChangeEvent? = null private val splitShadeOverScroller by lazy { splitShadeOverScrollerFactory.create({ qs }, { notificationStackScrollLayoutController }) Loading Loading @@ -66,10 +69,13 @@ constructor( } private fun onPanelStateChanged(@PanelState state: Int) { currentPanelState = state shadeOverScroller.onPanelStateChanged(state) scrimShadeTransitionController.onPanelStateChanged(state) } private fun onPanelExpansionChanged(event: PanelExpansionChangeEvent) { lastPanelExpansionChangeEvent = event shadeOverScroller.onDragDownAmountChanged(event.dragDownPxAmount) scrimShadeTransitionController.onPanelExpansionChanged(event) } Loading @@ -84,6 +90,8 @@ constructor( """ ShadeTransitionController: inSplitShade: $inSplitShade currentPanelState: ${currentPanelState?.panelStateToString()} lastPanelExpansionChangeEvent: $lastPanelExpansionChangeEvent qs.isInitialized: ${this::qs.isInitialized} npvc.isInitialized: ${this::notificationPanelViewController.isInitialized} nssl.isInitialized: ${this::notificationStackScrollLayoutController.isInitialized} Loading
packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/shade/transition/ScrimShadeTransitionControllerTest.kt +35 −12 Original line number Diff line number Diff line Loading @@ -9,6 +9,9 @@ import com.android.systemui.statusbar.StatusBarState import com.android.systemui.statusbar.SysuiStatusBarStateController import com.android.systemui.statusbar.phone.ScrimController import com.android.systemui.statusbar.phone.panelstate.PanelExpansionChangeEvent import com.android.systemui.statusbar.phone.panelstate.STATE_CLOSED import com.android.systemui.statusbar.phone.panelstate.STATE_OPEN import com.android.systemui.statusbar.phone.panelstate.STATE_OPENING import com.android.systemui.statusbar.policy.FakeConfigurationController import org.junit.Before import org.junit.Test Loading Loading @@ -39,8 +42,9 @@ class ScrimShadeTransitionControllerTest : SysuiTestCase() { dumpManager, scrimController, context.resources, statusBarStateController ) statusBarStateController) controller.onPanelStateChanged(STATE_OPENING) } @Test Loading @@ -54,8 +58,7 @@ class ScrimShadeTransitionControllerTest : SysuiTestCase() { @Test fun onPanelExpansionChanged_inSplitShade_unlockedShade_setsFractionBasedOnDragDownAmount() { whenever(statusBarStateController.currentOrUpcomingState) .thenReturn(StatusBarState.SHADE) whenever(statusBarStateController.currentOrUpcomingState).thenReturn(StatusBarState.SHADE) val scrimShadeTransitionDistance = context.resources.getDimensionPixelSize(R.dimen.split_shade_scrim_transition_distance) setSplitShadeEnabled(true) Loading @@ -68,23 +71,20 @@ class ScrimShadeTransitionControllerTest : SysuiTestCase() { @Test fun onPanelExpansionChanged_inSplitShade_largeDragDownAmount_fractionIsNotGreaterThan1() { whenever(statusBarStateController.currentOrUpcomingState) .thenReturn(StatusBarState.SHADE) whenever(statusBarStateController.currentOrUpcomingState).thenReturn(StatusBarState.SHADE) val scrimShadeTransitionDistance = context.resources.getDimensionPixelSize(R.dimen.split_shade_scrim_transition_distance) setSplitShadeEnabled(true) controller.onPanelExpansionChanged( EXPANSION_EVENT.copy(dragDownPxAmount = 100f * scrimShadeTransitionDistance) ) EXPANSION_EVENT.copy(dragDownPxAmount = 100f * scrimShadeTransitionDistance)) verify(scrimController).setRawPanelExpansionFraction(1f) } @Test fun onPanelExpansionChanged_inSplitShade_negativeDragDownAmount_fractionIsNotLessThan0() { whenever(statusBarStateController.currentOrUpcomingState) .thenReturn(StatusBarState.SHADE) whenever(statusBarStateController.currentOrUpcomingState).thenReturn(StatusBarState.SHADE) setSplitShadeEnabled(true) controller.onPanelExpansionChanged(EXPANSION_EVENT.copy(dragDownPxAmount = -100f)) Loading Loading @@ -114,6 +114,30 @@ class ScrimShadeTransitionControllerTest : SysuiTestCase() { verify(scrimController).setRawPanelExpansionFraction(EXPANSION_EVENT.fraction) } @Test fun onPanelExpansionChanged_inSplitShade_panelOpen_setsFractionEqualToEventFraction() { controller.onPanelStateChanged(STATE_OPEN) whenever(statusBarStateController.currentOrUpcomingState) .thenReturn(StatusBarState.KEYGUARD) setSplitShadeEnabled(true) controller.onPanelExpansionChanged(EXPANSION_EVENT) verify(scrimController).setRawPanelExpansionFraction(EXPANSION_EVENT.fraction) } @Test fun onPanelExpansionChanged_inSplitShade_panelClosed_setsFractionEqualToEventFraction() { controller.onPanelStateChanged(STATE_CLOSED) whenever(statusBarStateController.currentOrUpcomingState) .thenReturn(StatusBarState.KEYGUARD) setSplitShadeEnabled(true) controller.onPanelExpansionChanged(EXPANSION_EVENT) verify(scrimController).setRawPanelExpansionFraction(EXPANSION_EVENT.fraction) } private fun setSplitShadeEnabled(enabled: Boolean) { overrideResource(R.bool.config_use_split_notification_shade, enabled) configurationController.notifyConfigurationChanged() Loading @@ -122,7 +146,6 @@ class ScrimShadeTransitionControllerTest : SysuiTestCase() { companion object { val EXPANSION_EVENT = PanelExpansionChangeEvent( fraction = 0.5f, expanded = true, tracking = true, dragDownPxAmount = 10f ) fraction = 0.5f, expanded = true, tracking = true, dragDownPxAmount = 10f) } }
packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/shade/transition/ShadeTransitionControllerTest.kt +22 −6 Original line number Diff line number Diff line Loading @@ -8,6 +8,7 @@ import com.android.systemui.dump.DumpManager import com.android.systemui.plugins.qs.QS import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayoutController import com.android.systemui.statusbar.phone.NotificationPanelViewController import com.android.systemui.statusbar.phone.panelstate.PanelExpansionChangeEvent import com.android.systemui.statusbar.phone.panelstate.PanelExpansionStateManager import com.android.systemui.statusbar.phone.panelstate.STATE_OPENING import com.android.systemui.statusbar.policy.FakeConfigurationController Loading Loading @@ -49,8 +50,7 @@ class ShadeTransitionControllerTest : SysuiTestCase() { context, splitShadeOverScrollerFactory = { _, _ -> splitShadeOverScroller }, noOpOverScroller, scrimShadeTransitionController ) scrimShadeTransitionController) // Resetting as they are notified upon initialization. reset(noOpOverScroller, splitShadeOverScroller) Loading Loading @@ -91,6 +91,16 @@ class ShadeTransitionControllerTest : SysuiTestCase() { verifyZeroInteractions(splitShadeOverScroller) } @Test fun onPanelStateChanged_forwardsToScrimTransitionController() { initLateProperties() startPanelExpansion() verify(scrimShadeTransitionController).onPanelStateChanged(STATE_OPENING) verify(scrimShadeTransitionController).onPanelExpansionChanged(DEFAULT_EXPANSION_EVENT) } private fun initLateProperties() { controller.qs = qs controller.notificationStackScrollLayoutController = nsslController Loading @@ -112,14 +122,20 @@ class ShadeTransitionControllerTest : SysuiTestCase() { private fun startPanelExpansion() { panelExpansionStateManager.onPanelExpansionChanged( fraction = 0.5f, expanded = true, tracking = true, dragDownPxAmount = DEFAULT_DRAG_DOWN_AMOUNT DEFAULT_EXPANSION_EVENT.fraction, DEFAULT_EXPANSION_EVENT.expanded, DEFAULT_EXPANSION_EVENT.tracking, DEFAULT_EXPANSION_EVENT.dragDownPxAmount, ) } companion object { private const val DEFAULT_DRAG_DOWN_AMOUNT = 123f private val DEFAULT_EXPANSION_EVENT = PanelExpansionChangeEvent( fraction = 0.5f, expanded = true, tracking = true, dragDownPxAmount = DEFAULT_DRAG_DOWN_AMOUNT) } }