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

Commit 3d319e22 authored by Lucas Silva's avatar Lucas Silva Committed by Automerger Merge Worker
Browse files

Merge "Update UMO position logic to only place in dream when the dream media...

Merge "Update UMO position logic to only place in dream when the dream media complication is active." into tm-qpr-dev am: 2db6ad34 am: f2ba60ef

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



Change-Id: Iab595638be08ab963a097c43c49b77a02129d4b1
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 2a9eab03 f2ba60ef
Loading
Loading
Loading
Loading
+20 −2
Original line number Diff line number Diff line
@@ -41,6 +41,7 @@ import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Main
import com.android.systemui.dreams.DreamOverlayStateController
import com.android.systemui.keyguard.WakefulnessLifecycle
import com.android.systemui.media.dream.MediaDreamComplication
import com.android.systemui.plugins.statusbar.StatusBarStateController
import com.android.systemui.shade.NotifPanelEvents
import com.android.systemui.statusbar.CrossFadeHelper
@@ -401,7 +402,7 @@ class MediaHierarchyManager @Inject constructor(
        }

    /**
     * Is the doze animation currently Running
     * Is the dream overlay currently active
     */
    private var dreamOverlayActive: Boolean = false
        private set(value) {
@@ -411,6 +412,17 @@ class MediaHierarchyManager @Inject constructor(
            }
        }

    /**
     * Is the dream media complication currently active
     */
    private var dreamMediaComplicationActive: Boolean = false
        private set(value) {
            if (field != value) {
                field = value
                updateDesiredLocation(forceNoAnimation = true)
            }
        }

    /**
     * The current cross fade progress. 0.5f means it's just switching
     * between the start and the end location and the content is fully faded, while 0.75f means
@@ -500,6 +512,12 @@ class MediaHierarchyManager @Inject constructor(
        })

        dreamOverlayStateController.addCallback(object : DreamOverlayStateController.Callback {
            override fun onComplicationsChanged() {
                dreamMediaComplicationActive = dreamOverlayStateController.complications.any {
                    it is MediaDreamComplication
                }
            }

            override fun onStateChanged() {
                dreamOverlayStateController.isOverlayActive.also { dreamOverlayActive = it }
            }
@@ -1068,7 +1086,7 @@ class MediaHierarchyManager @Inject constructor(
        val onLockscreen = (!bypassController.bypassEnabled &&
            (statusbarState == StatusBarState.KEYGUARD))
        val location = when {
            dreamOverlayActive -> LOCATION_DREAM_OVERLAY
            dreamOverlayActive && dreamMediaComplicationActive -> LOCATION_DREAM_OVERLAY
            (qsExpansion > 0.0f || inSplitShade) && !onLockscreen -> LOCATION_QS
            qsExpansion > 0.4f && onLockscreen -> LOCATION_QS
            !hasActiveMedia -> LOCATION_QS
+41 −0
Original line number Diff line number Diff line
@@ -29,6 +29,7 @@ import com.android.systemui.SysuiTestCase
import com.android.systemui.controls.controller.ControlsControllerImplTest.Companion.eq
import com.android.systemui.dreams.DreamOverlayStateController
import com.android.systemui.keyguard.WakefulnessLifecycle
import com.android.systemui.media.dream.MediaDreamComplication
import com.android.systemui.plugins.statusbar.StatusBarStateController
import com.android.systemui.shade.testing.FakeNotifPanelEvents
import com.android.systemui.statusbar.StatusBarState
@@ -38,6 +39,8 @@ import com.android.systemui.statusbar.policy.FakeConfigurationController
import com.android.systemui.statusbar.policy.KeyguardStateController
import com.android.systemui.util.animation.UniqueObjectHostView
import com.android.systemui.util.mockito.any
import com.android.systemui.util.mockito.mock
import com.android.systemui.util.mockito.nullable
import com.android.systemui.util.settings.FakeSettings
import com.android.systemui.utils.os.FakeHandler
import com.google.common.truth.Truth.assertThat
@@ -79,6 +82,9 @@ class MediaHierarchyManagerTest : SysuiTestCase() {
    private lateinit var wakefullnessObserver: ArgumentCaptor<(WakefulnessLifecycle.Observer)>
    @Captor
    private lateinit var statusBarCallback: ArgumentCaptor<(StatusBarStateController.StateListener)>
    @Captor
    private lateinit var dreamOverlayCallback:
            ArgumentCaptor<(DreamOverlayStateController.Callback)>
    @JvmField
    @Rule
    val mockito = MockitoJUnit.rule()
@@ -113,6 +119,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() {
                fakeHandler,)
        verify(wakefulnessLifecycle).addObserver(wakefullnessObserver.capture())
        verify(statusBarStateController).addCallback(statusBarCallback.capture())
        verify(dreamOverlayStateController).addCallback(dreamOverlayCallback.capture())
        setupHost(lockHost, MediaHierarchyManager.LOCATION_LOCKSCREEN, LOCKSCREEN_TOP)
        setupHost(qsHost, MediaHierarchyManager.LOCATION_QS, QS_TOP)
        setupHost(qqsHost, MediaHierarchyManager.LOCATION_QQS, QQS_TOP)
@@ -332,6 +339,27 @@ class MediaHierarchyManagerTest : SysuiTestCase() {
        assertThat(mediaHierarchyManager.isCurrentlyInGuidedTransformation()).isFalse()
    }

    @Test
    fun testDream() {
        goToDream()
        setMediaDreamComplicationEnabled(true)
        verify(mediaCarouselController).onDesiredLocationChanged(
                eq(MediaHierarchyManager.LOCATION_DREAM_OVERLAY),
                nullable(),
                eq(false),
                anyLong(),
                anyLong())
        clearInvocations(mediaCarouselController)

        setMediaDreamComplicationEnabled(false)
        verify(mediaCarouselController).onDesiredLocationChanged(
                eq(MediaHierarchyManager.LOCATION_QQS),
                any(MediaHostState::class.java),
                eq(false),
                anyLong(),
                anyLong())
    }

    private fun enableSplitShade() {
        context.getOrCreateTestableResources().addOverride(
            R.bool.config_use_split_notification_shade, true
@@ -343,6 +371,8 @@ class MediaHierarchyManagerTest : SysuiTestCase() {
        whenever(statusBarStateController.state).thenReturn(StatusBarState.KEYGUARD)
        settings.putInt(Settings.Secure.MEDIA_CONTROLS_LOCK_SCREEN, 1)
        statusBarCallback.value.onStatePreChange(StatusBarState.SHADE, StatusBarState.KEYGUARD)
        whenever(dreamOverlayStateController.isOverlayActive).thenReturn(false)
        dreamOverlayCallback.value.onStateChanged()
        clearInvocations(mediaCarouselController)
    }

@@ -354,6 +384,17 @@ class MediaHierarchyManagerTest : SysuiTestCase() {
        )
    }

    private fun goToDream() {
        whenever(dreamOverlayStateController.isOverlayActive).thenReturn(true)
        dreamOverlayCallback.value.onStateChanged()
    }

    private fun setMediaDreamComplicationEnabled(enabled: Boolean) {
        val complications = if (enabled) listOf(mock<MediaDreamComplication>()) else emptyList()
        whenever(dreamOverlayStateController.complications).thenReturn(complications)
        dreamOverlayCallback.value.onComplicationsChanged()
    }

    private fun expandQS() {
        mediaHierarchyManager.qsExpansion = 1.0f
    }