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

Commit f274578d authored by Chris Göllner's avatar Chris Göllner Committed by Automerger Merge Worker
Browse files

Merge "Fix media being stretched during the wake-up/unlock animation" into...

Merge "Fix media being stretched during the wake-up/unlock animation" into udc-dev am: e8fa3364 am: aba0178a

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



Change-Id: Ic4e60ba84887e4f4a3ef53d08faa352eddcc700c
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents a318f5e7 aba0178a
Loading
Loading
Loading
Loading
+16 −1
Original line number Diff line number Diff line
@@ -128,6 +128,15 @@ constructor(

    var visibilityChangedListener: ((Boolean) -> Unit)? = null

    /**
     * Whether the doze wake up animation is delayed and we are currently waiting for it to start.
     */
    var isDozeWakeUpAnimationWaiting: Boolean = false
        set(value) {
            field = value
            refreshMediaPosition()
        }

    /** single pane media container placed at the top of the notifications list */
    var singlePaneContainer: MediaContainerView? = null
        private set
@@ -221,7 +230,13 @@ constructor(
        // by the clock. This is not the case for single-line clock though.
        // For single shade, we don't need to do it, because media is a child of NSSL, which already
        // gets hidden on AOD.
        return !statusBarStateController.isDozing
        // Media also has to be hidden when waking up from dozing, and the doze wake up animation is
        // delayed and waiting to be started.
        // This is to stay in sync with the delaying of the horizontal alignment of the rest of the
        // keyguard container, that is also delayed until the "wait" is over.
        // If we show media during this waiting period, the shade will still be centered, and using
        // the entire width of the screen, and making media show fully stretched.
        return !statusBarStateController.isDozing && !isDozeWakeUpAnimationWaiting
    }

    private fun showMediaPlayer() {
+1 −0
Original line number Diff line number Diff line
@@ -1621,6 +1621,7 @@ public final class NotificationPanelViewController implements ShadeSurface, Dump

        mWillPlayDelayedDozeAmountAnimation = willPlay;
        mWakeUpCoordinator.logDelayingClockWakeUpAnimation(willPlay);
        mKeyguardMediaController.setDozeWakeUpAnimationWaiting(willPlay);

        // Once changing this value, see if we should move the clock.
        positionClockAndNotifications();
+22 −0
Original line number Diff line number Diff line
@@ -192,6 +192,17 @@ class KeyguardMediaControllerTest : SysuiTestCase() {
        assertThat(splitShadeContainer.visibility).isEqualTo(GONE)
    }

    @Test
    fun dozeWakeUpAnimationWaiting_inSplitShade_mediaIsHidden() {
        val splitShadeContainer = FrameLayout(context)
        keyguardMediaController.attachSplitShadeContainer(splitShadeContainer)
        keyguardMediaController.useSplitShade = true

        keyguardMediaController.isDozeWakeUpAnimationWaiting = true

        assertThat(splitShadeContainer.visibility).isEqualTo(GONE)
    }

    @Test
    fun dozing_inSingleShade_mediaIsVisible() {
        val splitShadeContainer = FrameLayout(context)
@@ -203,6 +214,17 @@ class KeyguardMediaControllerTest : SysuiTestCase() {
        assertThat(mediaContainerView.visibility).isEqualTo(VISIBLE)
    }

    @Test
    fun dozeWakeUpAnimationWaiting_inSingleShade_mediaIsVisible() {
        val splitShadeContainer = FrameLayout(context)
        keyguardMediaController.attachSplitShadeContainer(splitShadeContainer)
        keyguardMediaController.useSplitShade = false

        keyguardMediaController.isDozeWakeUpAnimationWaiting = true

        assertThat(mediaContainerView.visibility).isEqualTo(VISIBLE)
    }

    private fun setDozing() {
        whenever(statusBarStateController.isDozing).thenReturn(true)
        statusBarStateListener.onDozingChanged(true)
+11 −0
Original line number Diff line number Diff line
@@ -509,6 +509,17 @@ public class NotificationPanelViewControllerTest extends NotificationPanelViewCo
        assertKeyguardStatusViewNotCentered();
    }

    @Test
    public void keyguardStatusView_willPlayDelayedDoze_notifiesKeyguardMediaController() {
        when(mNotificationStackScrollLayoutController.getVisibleNotificationCount()).thenReturn(2);
        mStatusBarStateController.setState(KEYGUARD);
        enableSplitShade(/* enabled= */ true);

        mNotificationPanelViewController.setWillPlayDelayedDozeAmountAnimation(true);

        verify(mKeyguardMediaController).setDozeWakeUpAnimationWaiting(true);
    }

    @Test
    public void keyguardStatusView_willPlayDelayedDoze_isCentered_thenStillCenteredIfNoNotifs() {
        when(mNotificationStackScrollLayoutController.getVisibleNotificationCount()).thenReturn(0);