Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit edf2f739 authored by Christian Göllner's avatar Christian Göllner Committed by Automerger Merge Worker
Browse files

Merge "[Split shade] Fix QS showing briefly on AOD after turning off the...

Merge "[Split shade] Fix QS showing briefly on AOD after turning off the screen" into tm-qpr-dev am: 7c2915c4

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/19293057



Change-Id: Ib831b23720e4a972b936fe9ce8cb500c5059ba9d
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents a5f3354c 7c2915c4
Loading
Loading
Loading
Loading
+9 −2
Original line number Diff line number Diff line
@@ -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
@@ -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
@@ -43,7 +46,7 @@ constructor(
    }
    private val shadeOverScroller: ShadeOverScroller
        get() =
            if (inSplitShade && propertiesInitialized()) {
            if (inSplitShade && isScreenUnlocked() && propertiesInitialized()) {
                splitShadeOverScroller
            } else {
                noOpOverScroller
@@ -90,6 +93,7 @@ constructor(
            """
            ShadeTransitionController:
                inSplitShade: $inSplitShade
                isScreenUnlocked: ${isScreenUnlocked()}
                currentPanelState: ${currentPanelState?.panelStateToString()}
                lastPanelExpansionChangeEvent: $lastPanelExpansionChangeEvent
                qs.isInitialized: ${this::qs.isInitialized}
@@ -97,4 +101,7 @@ constructor(
                nssl.isInitialized: ${this::notificationStackScrollLayoutController.isInitialized}
            """.trimIndent())
    }

    private fun isScreenUnlocked() =
        statusBarStateController.currentOrUpcomingState == StatusBarState.SHADE
}
+63 −1
Original line number Diff line number Diff line
@@ -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
@@ -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)
@@ -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

@@ -50,7 +54,9 @@ class ShadeTransitionControllerTest : SysuiTestCase() {
                context,
                splitShadeOverScrollerFactory = { _, _ -> splitShadeOverScroller },
                noOpOverScroller,
                scrimShadeTransitionController)
                scrimShadeTransitionController,
                statusBarStateController,
            )

        // Resetting as they are notified upon initialization.
        reset(noOpOverScroller, splitShadeOverScroller)
@@ -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()
@@ -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 =