Loading packages/SystemUI/src/com/android/systemui/shade/transition/ShadeTransitionController.kt +9 −2 Original line number Diff line number Diff line Loading @@ -7,6 +7,8 @@ import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dump.DumpManager import com.android.systemui.plugins.qs.QS import com.android.systemui.shade.NotificationPanelViewController import com.android.systemui.statusbar.StatusBarState import com.android.systemui.statusbar.SysuiStatusBarStateController import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayoutController import com.android.systemui.statusbar.phone.panelstate.PanelExpansionChangeEvent import com.android.systemui.statusbar.phone.panelstate.PanelExpansionStateManager Loading @@ -27,7 +29,8 @@ constructor( private val context: Context, private val splitShadeOverScrollerFactory: SplitShadeOverScroller.Factory, private val noOpOverScroller: NoOpOverScroller, private val scrimShadeTransitionController: ScrimShadeTransitionController private val scrimShadeTransitionController: ScrimShadeTransitionController, private val statusBarStateController: SysuiStatusBarStateController, ) { lateinit var notificationPanelViewController: NotificationPanelViewController Loading @@ -43,7 +46,7 @@ constructor( } private val shadeOverScroller: ShadeOverScroller get() = if (inSplitShade && propertiesInitialized()) { if (inSplitShade && isScreenUnlocked() && propertiesInitialized()) { splitShadeOverScroller } else { noOpOverScroller Loading Loading @@ -90,6 +93,7 @@ constructor( """ ShadeTransitionController: inSplitShade: $inSplitShade isScreenUnlocked: ${isScreenUnlocked()} currentPanelState: ${currentPanelState?.panelStateToString()} lastPanelExpansionChangeEvent: $lastPanelExpansionChangeEvent qs.isInitialized: ${this::qs.isInitialized} Loading @@ -97,4 +101,7 @@ constructor( nssl.isInitialized: ${this::notificationStackScrollLayoutController.isInitialized} """.trimIndent()) } private fun isScreenUnlocked() = statusBarStateController.currentOrUpcomingState == StatusBarState.SHADE } packages/SystemUI/tests/src/com/android/systemui/shade/transition/ShadeTransitionControllerTest.kt +63 −1 Original line number Diff line number Diff line Loading @@ -7,6 +7,8 @@ import com.android.systemui.SysuiTestCase import com.android.systemui.dump.DumpManager import com.android.systemui.plugins.qs.QS import com.android.systemui.shade.NotificationPanelViewController import com.android.systemui.statusbar.StatusBarState import com.android.systemui.statusbar.SysuiStatusBarStateController import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayoutController import com.android.systemui.statusbar.phone.panelstate.PanelExpansionChangeEvent import com.android.systemui.statusbar.phone.panelstate.PanelExpansionStateManager Loading @@ -19,6 +21,7 @@ import org.mockito.Mock import org.mockito.Mockito.reset import org.mockito.Mockito.verify import org.mockito.Mockito.verifyZeroInteractions import org.mockito.Mockito.`when` as whenever import org.mockito.MockitoAnnotations @RunWith(AndroidTestingRunner::class) Loading @@ -32,6 +35,7 @@ class ShadeTransitionControllerTest : SysuiTestCase() { @Mock private lateinit var splitShadeOverScroller: SplitShadeOverScroller @Mock private lateinit var scrimShadeTransitionController: ScrimShadeTransitionController @Mock private lateinit var dumpManager: DumpManager @Mock private lateinit var statusBarStateController: SysuiStatusBarStateController private lateinit var controller: ShadeTransitionController Loading @@ -50,7 +54,9 @@ class ShadeTransitionControllerTest : SysuiTestCase() { context, splitShadeOverScrollerFactory = { _, _ -> splitShadeOverScroller }, noOpOverScroller, scrimShadeTransitionController) scrimShadeTransitionController, statusBarStateController, ) // Resetting as they are notified upon initialization. reset(noOpOverScroller, splitShadeOverScroller) Loading Loading @@ -79,6 +85,45 @@ class ShadeTransitionControllerTest : SysuiTestCase() { verifyZeroInteractions(splitShadeOverScroller) } @Test fun onPanelStateChanged_inSplitShade_onKeyguard_forwardsToNoOpOverScroller() { initLateProperties() enableSplitShade() setOnKeyguard() startPanelExpansion() verify(noOpOverScroller).onPanelStateChanged(STATE_OPENING) verify(noOpOverScroller).onDragDownAmountChanged(DEFAULT_DRAG_DOWN_AMOUNT) verifyZeroInteractions(splitShadeOverScroller) } @Test fun onPanelStateChanged_inSplitShade_onLockedShade_forwardsToNoOpOverScroller() { initLateProperties() enableSplitShade() setOnLockedShade() startPanelExpansion() verify(noOpOverScroller).onPanelStateChanged(STATE_OPENING) verify(noOpOverScroller).onDragDownAmountChanged(DEFAULT_DRAG_DOWN_AMOUNT) verifyZeroInteractions(splitShadeOverScroller) } @Test fun onPanelExpansionChanged_inSplitShade_onUnlockedShade_forwardsToSplitShadeOverScroller() { initLateProperties() enableSplitShade() setOnUnlockedShade() startPanelExpansion() verify(splitShadeOverScroller).onPanelStateChanged(STATE_OPENING) verify(splitShadeOverScroller).onDragDownAmountChanged(DEFAULT_DRAG_DOWN_AMOUNT) verifyZeroInteractions(noOpOverScroller) } @Test fun onPanelStateChanged_notInSplitShade_forwardsToNoOpOverScroller() { initLateProperties() Loading Loading @@ -129,6 +174,23 @@ class ShadeTransitionControllerTest : SysuiTestCase() { ) } private fun setOnKeyguard() { setShadeState(StatusBarState.KEYGUARD) } private fun setOnLockedShade() { setShadeState(StatusBarState.SHADE_LOCKED) } private fun setOnUnlockedShade() { setShadeState(StatusBarState.SHADE) } private fun setShadeState(state: Int) { whenever(statusBarStateController.state).thenReturn(state) whenever(statusBarStateController.currentOrUpcomingState).thenReturn(state) } companion object { private const val DEFAULT_DRAG_DOWN_AMOUNT = 123f private val DEFAULT_EXPANSION_EVENT = Loading Loading
packages/SystemUI/src/com/android/systemui/shade/transition/ShadeTransitionController.kt +9 −2 Original line number Diff line number Diff line Loading @@ -7,6 +7,8 @@ import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dump.DumpManager import com.android.systemui.plugins.qs.QS import com.android.systemui.shade.NotificationPanelViewController import com.android.systemui.statusbar.StatusBarState import com.android.systemui.statusbar.SysuiStatusBarStateController import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayoutController import com.android.systemui.statusbar.phone.panelstate.PanelExpansionChangeEvent import com.android.systemui.statusbar.phone.panelstate.PanelExpansionStateManager Loading @@ -27,7 +29,8 @@ constructor( private val context: Context, private val splitShadeOverScrollerFactory: SplitShadeOverScroller.Factory, private val noOpOverScroller: NoOpOverScroller, private val scrimShadeTransitionController: ScrimShadeTransitionController private val scrimShadeTransitionController: ScrimShadeTransitionController, private val statusBarStateController: SysuiStatusBarStateController, ) { lateinit var notificationPanelViewController: NotificationPanelViewController Loading @@ -43,7 +46,7 @@ constructor( } private val shadeOverScroller: ShadeOverScroller get() = if (inSplitShade && propertiesInitialized()) { if (inSplitShade && isScreenUnlocked() && propertiesInitialized()) { splitShadeOverScroller } else { noOpOverScroller Loading Loading @@ -90,6 +93,7 @@ constructor( """ ShadeTransitionController: inSplitShade: $inSplitShade isScreenUnlocked: ${isScreenUnlocked()} currentPanelState: ${currentPanelState?.panelStateToString()} lastPanelExpansionChangeEvent: $lastPanelExpansionChangeEvent qs.isInitialized: ${this::qs.isInitialized} Loading @@ -97,4 +101,7 @@ constructor( nssl.isInitialized: ${this::notificationStackScrollLayoutController.isInitialized} """.trimIndent()) } private fun isScreenUnlocked() = statusBarStateController.currentOrUpcomingState == StatusBarState.SHADE }
packages/SystemUI/tests/src/com/android/systemui/shade/transition/ShadeTransitionControllerTest.kt +63 −1 Original line number Diff line number Diff line Loading @@ -7,6 +7,8 @@ import com.android.systemui.SysuiTestCase import com.android.systemui.dump.DumpManager import com.android.systemui.plugins.qs.QS import com.android.systemui.shade.NotificationPanelViewController import com.android.systemui.statusbar.StatusBarState import com.android.systemui.statusbar.SysuiStatusBarStateController import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayoutController import com.android.systemui.statusbar.phone.panelstate.PanelExpansionChangeEvent import com.android.systemui.statusbar.phone.panelstate.PanelExpansionStateManager Loading @@ -19,6 +21,7 @@ import org.mockito.Mock import org.mockito.Mockito.reset import org.mockito.Mockito.verify import org.mockito.Mockito.verifyZeroInteractions import org.mockito.Mockito.`when` as whenever import org.mockito.MockitoAnnotations @RunWith(AndroidTestingRunner::class) Loading @@ -32,6 +35,7 @@ class ShadeTransitionControllerTest : SysuiTestCase() { @Mock private lateinit var splitShadeOverScroller: SplitShadeOverScroller @Mock private lateinit var scrimShadeTransitionController: ScrimShadeTransitionController @Mock private lateinit var dumpManager: DumpManager @Mock private lateinit var statusBarStateController: SysuiStatusBarStateController private lateinit var controller: ShadeTransitionController Loading @@ -50,7 +54,9 @@ class ShadeTransitionControllerTest : SysuiTestCase() { context, splitShadeOverScrollerFactory = { _, _ -> splitShadeOverScroller }, noOpOverScroller, scrimShadeTransitionController) scrimShadeTransitionController, statusBarStateController, ) // Resetting as they are notified upon initialization. reset(noOpOverScroller, splitShadeOverScroller) Loading Loading @@ -79,6 +85,45 @@ class ShadeTransitionControllerTest : SysuiTestCase() { verifyZeroInteractions(splitShadeOverScroller) } @Test fun onPanelStateChanged_inSplitShade_onKeyguard_forwardsToNoOpOverScroller() { initLateProperties() enableSplitShade() setOnKeyguard() startPanelExpansion() verify(noOpOverScroller).onPanelStateChanged(STATE_OPENING) verify(noOpOverScroller).onDragDownAmountChanged(DEFAULT_DRAG_DOWN_AMOUNT) verifyZeroInteractions(splitShadeOverScroller) } @Test fun onPanelStateChanged_inSplitShade_onLockedShade_forwardsToNoOpOverScroller() { initLateProperties() enableSplitShade() setOnLockedShade() startPanelExpansion() verify(noOpOverScroller).onPanelStateChanged(STATE_OPENING) verify(noOpOverScroller).onDragDownAmountChanged(DEFAULT_DRAG_DOWN_AMOUNT) verifyZeroInteractions(splitShadeOverScroller) } @Test fun onPanelExpansionChanged_inSplitShade_onUnlockedShade_forwardsToSplitShadeOverScroller() { initLateProperties() enableSplitShade() setOnUnlockedShade() startPanelExpansion() verify(splitShadeOverScroller).onPanelStateChanged(STATE_OPENING) verify(splitShadeOverScroller).onDragDownAmountChanged(DEFAULT_DRAG_DOWN_AMOUNT) verifyZeroInteractions(noOpOverScroller) } @Test fun onPanelStateChanged_notInSplitShade_forwardsToNoOpOverScroller() { initLateProperties() Loading Loading @@ -129,6 +174,23 @@ class ShadeTransitionControllerTest : SysuiTestCase() { ) } private fun setOnKeyguard() { setShadeState(StatusBarState.KEYGUARD) } private fun setOnLockedShade() { setShadeState(StatusBarState.SHADE_LOCKED) } private fun setOnUnlockedShade() { setShadeState(StatusBarState.SHADE) } private fun setShadeState(state: Int) { whenever(statusBarStateController.state).thenReturn(state) whenever(statusBarStateController.currentOrUpcomingState).thenReturn(state) } companion object { private const val DEFAULT_DRAG_DOWN_AMOUNT = 123f private val DEFAULT_EXPANSION_EVENT = Loading