Merge "[Split shade] Fix QS showing briefly on AOD after turning off the screen" into tm-qpr-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
7c2915c4c4
@@ -7,6 +7,8 @@ import com.android.systemui.dagger.SysUISingleton
|
|||||||
import com.android.systemui.dump.DumpManager
|
import com.android.systemui.dump.DumpManager
|
||||||
import com.android.systemui.plugins.qs.QS
|
import com.android.systemui.plugins.qs.QS
|
||||||
import com.android.systemui.shade.NotificationPanelViewController
|
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.notification.stack.NotificationStackScrollLayoutController
|
||||||
import com.android.systemui.statusbar.phone.panelstate.PanelExpansionChangeEvent
|
import com.android.systemui.statusbar.phone.panelstate.PanelExpansionChangeEvent
|
||||||
import com.android.systemui.statusbar.phone.panelstate.PanelExpansionStateManager
|
import com.android.systemui.statusbar.phone.panelstate.PanelExpansionStateManager
|
||||||
@@ -27,7 +29,8 @@ constructor(
|
|||||||
private val context: Context,
|
private val context: Context,
|
||||||
private val splitShadeOverScrollerFactory: SplitShadeOverScroller.Factory,
|
private val splitShadeOverScrollerFactory: SplitShadeOverScroller.Factory,
|
||||||
private val noOpOverScroller: NoOpOverScroller,
|
private val noOpOverScroller: NoOpOverScroller,
|
||||||
private val scrimShadeTransitionController: ScrimShadeTransitionController
|
private val scrimShadeTransitionController: ScrimShadeTransitionController,
|
||||||
|
private val statusBarStateController: SysuiStatusBarStateController,
|
||||||
) {
|
) {
|
||||||
|
|
||||||
lateinit var notificationPanelViewController: NotificationPanelViewController
|
lateinit var notificationPanelViewController: NotificationPanelViewController
|
||||||
@@ -43,7 +46,7 @@ constructor(
|
|||||||
}
|
}
|
||||||
private val shadeOverScroller: ShadeOverScroller
|
private val shadeOverScroller: ShadeOverScroller
|
||||||
get() =
|
get() =
|
||||||
if (inSplitShade && propertiesInitialized()) {
|
if (inSplitShade && isScreenUnlocked() && propertiesInitialized()) {
|
||||||
splitShadeOverScroller
|
splitShadeOverScroller
|
||||||
} else {
|
} else {
|
||||||
noOpOverScroller
|
noOpOverScroller
|
||||||
@@ -90,6 +93,7 @@ constructor(
|
|||||||
"""
|
"""
|
||||||
ShadeTransitionController:
|
ShadeTransitionController:
|
||||||
inSplitShade: $inSplitShade
|
inSplitShade: $inSplitShade
|
||||||
|
isScreenUnlocked: ${isScreenUnlocked()}
|
||||||
currentPanelState: ${currentPanelState?.panelStateToString()}
|
currentPanelState: ${currentPanelState?.panelStateToString()}
|
||||||
lastPanelExpansionChangeEvent: $lastPanelExpansionChangeEvent
|
lastPanelExpansionChangeEvent: $lastPanelExpansionChangeEvent
|
||||||
qs.isInitialized: ${this::qs.isInitialized}
|
qs.isInitialized: ${this::qs.isInitialized}
|
||||||
@@ -97,4 +101,7 @@ constructor(
|
|||||||
nssl.isInitialized: ${this::notificationStackScrollLayoutController.isInitialized}
|
nssl.isInitialized: ${this::notificationStackScrollLayoutController.isInitialized}
|
||||||
""".trimIndent())
|
""".trimIndent())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun isScreenUnlocked() =
|
||||||
|
statusBarStateController.currentOrUpcomingState == StatusBarState.SHADE
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,6 +7,8 @@ import com.android.systemui.SysuiTestCase
|
|||||||
import com.android.systemui.dump.DumpManager
|
import com.android.systemui.dump.DumpManager
|
||||||
import com.android.systemui.plugins.qs.QS
|
import com.android.systemui.plugins.qs.QS
|
||||||
import com.android.systemui.shade.NotificationPanelViewController
|
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.notification.stack.NotificationStackScrollLayoutController
|
||||||
import com.android.systemui.statusbar.phone.panelstate.PanelExpansionChangeEvent
|
import com.android.systemui.statusbar.phone.panelstate.PanelExpansionChangeEvent
|
||||||
import com.android.systemui.statusbar.phone.panelstate.PanelExpansionStateManager
|
import com.android.systemui.statusbar.phone.panelstate.PanelExpansionStateManager
|
||||||
@@ -19,6 +21,7 @@ import org.mockito.Mock
|
|||||||
import org.mockito.Mockito.reset
|
import org.mockito.Mockito.reset
|
||||||
import org.mockito.Mockito.verify
|
import org.mockito.Mockito.verify
|
||||||
import org.mockito.Mockito.verifyZeroInteractions
|
import org.mockito.Mockito.verifyZeroInteractions
|
||||||
|
import org.mockito.Mockito.`when` as whenever
|
||||||
import org.mockito.MockitoAnnotations
|
import org.mockito.MockitoAnnotations
|
||||||
|
|
||||||
@RunWith(AndroidTestingRunner::class)
|
@RunWith(AndroidTestingRunner::class)
|
||||||
@@ -32,6 +35,7 @@ class ShadeTransitionControllerTest : SysuiTestCase() {
|
|||||||
@Mock private lateinit var splitShadeOverScroller: SplitShadeOverScroller
|
@Mock private lateinit var splitShadeOverScroller: SplitShadeOverScroller
|
||||||
@Mock private lateinit var scrimShadeTransitionController: ScrimShadeTransitionController
|
@Mock private lateinit var scrimShadeTransitionController: ScrimShadeTransitionController
|
||||||
@Mock private lateinit var dumpManager: DumpManager
|
@Mock private lateinit var dumpManager: DumpManager
|
||||||
|
@Mock private lateinit var statusBarStateController: SysuiStatusBarStateController
|
||||||
|
|
||||||
private lateinit var controller: ShadeTransitionController
|
private lateinit var controller: ShadeTransitionController
|
||||||
|
|
||||||
@@ -50,7 +54,9 @@ class ShadeTransitionControllerTest : SysuiTestCase() {
|
|||||||
context,
|
context,
|
||||||
splitShadeOverScrollerFactory = { _, _ -> splitShadeOverScroller },
|
splitShadeOverScrollerFactory = { _, _ -> splitShadeOverScroller },
|
||||||
noOpOverScroller,
|
noOpOverScroller,
|
||||||
scrimShadeTransitionController)
|
scrimShadeTransitionController,
|
||||||
|
statusBarStateController,
|
||||||
|
)
|
||||||
|
|
||||||
// Resetting as they are notified upon initialization.
|
// Resetting as they are notified upon initialization.
|
||||||
reset(noOpOverScroller, splitShadeOverScroller)
|
reset(noOpOverScroller, splitShadeOverScroller)
|
||||||
@@ -79,6 +85,45 @@ class ShadeTransitionControllerTest : SysuiTestCase() {
|
|||||||
verifyZeroInteractions(splitShadeOverScroller)
|
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
|
@Test
|
||||||
fun onPanelStateChanged_notInSplitShade_forwardsToNoOpOverScroller() {
|
fun onPanelStateChanged_notInSplitShade_forwardsToNoOpOverScroller() {
|
||||||
initLateProperties()
|
initLateProperties()
|
||||||
@@ -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 {
|
companion object {
|
||||||
private const val DEFAULT_DRAG_DOWN_AMOUNT = 123f
|
private const val DEFAULT_DRAG_DOWN_AMOUNT = 123f
|
||||||
private val DEFAULT_EXPANSION_EVENT =
|
private val DEFAULT_EXPANSION_EVENT =
|
||||||
|
|||||||
Reference in New Issue
Block a user