Merge "Update UMO position logic to only place in dream when the dream media complication is active." into tm-qpr-dev
This commit is contained in:
@@ -41,6 +41,7 @@ import com.android.systemui.dagger.SysUISingleton
|
|||||||
import com.android.systemui.dagger.qualifiers.Main
|
import com.android.systemui.dagger.qualifiers.Main
|
||||||
import com.android.systemui.dreams.DreamOverlayStateController
|
import com.android.systemui.dreams.DreamOverlayStateController
|
||||||
import com.android.systemui.keyguard.WakefulnessLifecycle
|
import com.android.systemui.keyguard.WakefulnessLifecycle
|
||||||
|
import com.android.systemui.media.dream.MediaDreamComplication
|
||||||
import com.android.systemui.plugins.statusbar.StatusBarStateController
|
import com.android.systemui.plugins.statusbar.StatusBarStateController
|
||||||
import com.android.systemui.shade.NotifPanelEvents
|
import com.android.systemui.shade.NotifPanelEvents
|
||||||
import com.android.systemui.statusbar.CrossFadeHelper
|
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 var dreamOverlayActive: Boolean = false
|
||||||
private set(value) {
|
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
|
* 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
|
* 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 {
|
dreamOverlayStateController.addCallback(object : DreamOverlayStateController.Callback {
|
||||||
|
override fun onComplicationsChanged() {
|
||||||
|
dreamMediaComplicationActive = dreamOverlayStateController.complications.any {
|
||||||
|
it is MediaDreamComplication
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
override fun onStateChanged() {
|
override fun onStateChanged() {
|
||||||
dreamOverlayStateController.isOverlayActive.also { dreamOverlayActive = it }
|
dreamOverlayStateController.isOverlayActive.also { dreamOverlayActive = it }
|
||||||
}
|
}
|
||||||
@@ -1068,7 +1086,7 @@ class MediaHierarchyManager @Inject constructor(
|
|||||||
val onLockscreen = (!bypassController.bypassEnabled &&
|
val onLockscreen = (!bypassController.bypassEnabled &&
|
||||||
(statusbarState == StatusBarState.KEYGUARD))
|
(statusbarState == StatusBarState.KEYGUARD))
|
||||||
val location = when {
|
val location = when {
|
||||||
dreamOverlayActive -> LOCATION_DREAM_OVERLAY
|
dreamOverlayActive && dreamMediaComplicationActive -> LOCATION_DREAM_OVERLAY
|
||||||
(qsExpansion > 0.0f || inSplitShade) && !onLockscreen -> LOCATION_QS
|
(qsExpansion > 0.0f || inSplitShade) && !onLockscreen -> LOCATION_QS
|
||||||
qsExpansion > 0.4f && onLockscreen -> LOCATION_QS
|
qsExpansion > 0.4f && onLockscreen -> LOCATION_QS
|
||||||
!hasActiveMedia -> LOCATION_QS
|
!hasActiveMedia -> LOCATION_QS
|
||||||
|
|||||||
@@ -29,6 +29,7 @@ import com.android.systemui.SysuiTestCase
|
|||||||
import com.android.systemui.controls.controller.ControlsControllerImplTest.Companion.eq
|
import com.android.systemui.controls.controller.ControlsControllerImplTest.Companion.eq
|
||||||
import com.android.systemui.dreams.DreamOverlayStateController
|
import com.android.systemui.dreams.DreamOverlayStateController
|
||||||
import com.android.systemui.keyguard.WakefulnessLifecycle
|
import com.android.systemui.keyguard.WakefulnessLifecycle
|
||||||
|
import com.android.systemui.media.dream.MediaDreamComplication
|
||||||
import com.android.systemui.plugins.statusbar.StatusBarStateController
|
import com.android.systemui.plugins.statusbar.StatusBarStateController
|
||||||
import com.android.systemui.shade.testing.FakeNotifPanelEvents
|
import com.android.systemui.shade.testing.FakeNotifPanelEvents
|
||||||
import com.android.systemui.statusbar.StatusBarState
|
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.statusbar.policy.KeyguardStateController
|
||||||
import com.android.systemui.util.animation.UniqueObjectHostView
|
import com.android.systemui.util.animation.UniqueObjectHostView
|
||||||
import com.android.systemui.util.mockito.any
|
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.util.settings.FakeSettings
|
||||||
import com.android.systemui.utils.os.FakeHandler
|
import com.android.systemui.utils.os.FakeHandler
|
||||||
import com.google.common.truth.Truth.assertThat
|
import com.google.common.truth.Truth.assertThat
|
||||||
@@ -79,6 +82,9 @@ class MediaHierarchyManagerTest : SysuiTestCase() {
|
|||||||
private lateinit var wakefullnessObserver: ArgumentCaptor<(WakefulnessLifecycle.Observer)>
|
private lateinit var wakefullnessObserver: ArgumentCaptor<(WakefulnessLifecycle.Observer)>
|
||||||
@Captor
|
@Captor
|
||||||
private lateinit var statusBarCallback: ArgumentCaptor<(StatusBarStateController.StateListener)>
|
private lateinit var statusBarCallback: ArgumentCaptor<(StatusBarStateController.StateListener)>
|
||||||
|
@Captor
|
||||||
|
private lateinit var dreamOverlayCallback:
|
||||||
|
ArgumentCaptor<(DreamOverlayStateController.Callback)>
|
||||||
@JvmField
|
@JvmField
|
||||||
@Rule
|
@Rule
|
||||||
val mockito = MockitoJUnit.rule()
|
val mockito = MockitoJUnit.rule()
|
||||||
@@ -113,6 +119,7 @@ class MediaHierarchyManagerTest : SysuiTestCase() {
|
|||||||
fakeHandler,)
|
fakeHandler,)
|
||||||
verify(wakefulnessLifecycle).addObserver(wakefullnessObserver.capture())
|
verify(wakefulnessLifecycle).addObserver(wakefullnessObserver.capture())
|
||||||
verify(statusBarStateController).addCallback(statusBarCallback.capture())
|
verify(statusBarStateController).addCallback(statusBarCallback.capture())
|
||||||
|
verify(dreamOverlayStateController).addCallback(dreamOverlayCallback.capture())
|
||||||
setupHost(lockHost, MediaHierarchyManager.LOCATION_LOCKSCREEN, LOCKSCREEN_TOP)
|
setupHost(lockHost, MediaHierarchyManager.LOCATION_LOCKSCREEN, LOCKSCREEN_TOP)
|
||||||
setupHost(qsHost, MediaHierarchyManager.LOCATION_QS, QS_TOP)
|
setupHost(qsHost, MediaHierarchyManager.LOCATION_QS, QS_TOP)
|
||||||
setupHost(qqsHost, MediaHierarchyManager.LOCATION_QQS, QQS_TOP)
|
setupHost(qqsHost, MediaHierarchyManager.LOCATION_QQS, QQS_TOP)
|
||||||
@@ -332,6 +339,27 @@ class MediaHierarchyManagerTest : SysuiTestCase() {
|
|||||||
assertThat(mediaHierarchyManager.isCurrentlyInGuidedTransformation()).isFalse()
|
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() {
|
private fun enableSplitShade() {
|
||||||
context.getOrCreateTestableResources().addOverride(
|
context.getOrCreateTestableResources().addOverride(
|
||||||
R.bool.config_use_split_notification_shade, true
|
R.bool.config_use_split_notification_shade, true
|
||||||
@@ -343,6 +371,8 @@ class MediaHierarchyManagerTest : SysuiTestCase() {
|
|||||||
whenever(statusBarStateController.state).thenReturn(StatusBarState.KEYGUARD)
|
whenever(statusBarStateController.state).thenReturn(StatusBarState.KEYGUARD)
|
||||||
settings.putInt(Settings.Secure.MEDIA_CONTROLS_LOCK_SCREEN, 1)
|
settings.putInt(Settings.Secure.MEDIA_CONTROLS_LOCK_SCREEN, 1)
|
||||||
statusBarCallback.value.onStatePreChange(StatusBarState.SHADE, StatusBarState.KEYGUARD)
|
statusBarCallback.value.onStatePreChange(StatusBarState.SHADE, StatusBarState.KEYGUARD)
|
||||||
|
whenever(dreamOverlayStateController.isOverlayActive).thenReturn(false)
|
||||||
|
dreamOverlayCallback.value.onStateChanged()
|
||||||
clearInvocations(mediaCarouselController)
|
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() {
|
private fun expandQS() {
|
||||||
mediaHierarchyManager.qsExpansion = 1.0f
|
mediaHierarchyManager.qsExpansion = 1.0f
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user