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

Commit 43e82244 authored by William Xiao's avatar William Xiao
Browse files

Allow hub to show resume UMO state

Media is only active for 10 minutes once paused, but can be inactive
but resumable for 2 days

Bug: 358226354
Fix: 358226354
Test: atest CommunalMediaRepositoryImplTest
      manually verified that media was resumable from the hub
Flag: com.android.systemui.communal_hub
Change-Id: I30205ae0a1a17e6ce2a6464d46ca76f52e0f5476
parent bcdad5b9
Loading
Loading
Loading
Loading
+8 −8
Original line number Diff line number Diff line
@@ -67,7 +67,7 @@ class CommunalMediaRepositoryImplTest : SysuiTestCase() {
        testScope.runTest {
            val mediaModel = collectLastValue(underTest.mediaModel)
            runCurrent()
            assertThat(mediaModel()?.hasActiveMediaOrRecommendation).isFalse()
            assertThat(mediaModel()?.hasAnyMediaOrRecommendation).isFalse()
        }

    @Test
@@ -81,16 +81,16 @@ class CommunalMediaRepositoryImplTest : SysuiTestCase() {
            // Initial value is false.
            val mediaModel = collectLastValue(underTest.mediaModel)
            runCurrent()
            assertThat(mediaModel()?.hasActiveMediaOrRecommendation).isFalse()
            assertThat(mediaModel()?.hasAnyMediaOrRecommendation).isFalse()

            // Change to media available and notify the listener.
            whenever(mediaDataManager.hasActiveMediaOrRecommendation()).thenReturn(true)
            whenever(mediaDataManager.hasAnyMediaOrRecommendation()).thenReturn(true)
            whenever(mediaData.createdTimestampMillis).thenReturn(1234L)
            mediaDataListenerCaptor.firstValue.onMediaDataLoaded("key", null, mediaData)
            runCurrent()

            // Media active now returns true.
            assertThat(mediaModel()?.hasActiveMediaOrRecommendation).isTrue()
            assertThat(mediaModel()?.hasAnyMediaOrRecommendation).isTrue()
            assertThat(mediaModel()?.createdTimestampMillis).isEqualTo(1234L)
        }

@@ -103,20 +103,20 @@ class CommunalMediaRepositoryImplTest : SysuiTestCase() {
            verify(mediaDataManager).addListener(mediaDataListenerCaptor.capture())

            // Change to media available and notify the listener.
            whenever(mediaDataManager.hasActiveMediaOrRecommendation()).thenReturn(true)
            whenever(mediaDataManager.hasAnyMediaOrRecommendation()).thenReturn(true)
            mediaDataListenerCaptor.firstValue.onMediaDataLoaded("key", null, mediaData)
            runCurrent()

            // Media active now returns true.
            val mediaModel = collectLastValue(underTest.mediaModel)
            assertThat(mediaModel()?.hasActiveMediaOrRecommendation).isTrue()
            assertThat(mediaModel()?.hasAnyMediaOrRecommendation).isTrue()

            // Change to media unavailable and notify the listener.
            whenever(mediaDataManager.hasActiveMediaOrRecommendation()).thenReturn(false)
            whenever(mediaDataManager.hasAnyMediaOrRecommendation()).thenReturn(false)
            mediaDataListenerCaptor.firstValue.onMediaDataRemoved("key", false)
            runCurrent()

            // Media active now returns false.
            assertThat(mediaModel()?.hasActiveMediaOrRecommendation).isFalse()
            assertThat(mediaModel()?.hasAnyMediaOrRecommendation).isFalse()
        }
}
+4 −4
Original line number Diff line number Diff line
@@ -21,21 +21,21 @@ import com.android.systemui.log.table.TableRowLogger

/** Data model of media on the communal hub. */
data class CommunalMediaModel(
    val hasActiveMediaOrRecommendation: Boolean,
    val hasAnyMediaOrRecommendation: Boolean,
    val createdTimestampMillis: Long = 0L,
) : Diffable<CommunalMediaModel> {
    companion object {
        val INACTIVE =
            CommunalMediaModel(
                hasActiveMediaOrRecommendation = false,
                hasAnyMediaOrRecommendation = false,
            )
    }

    override fun logDiffs(prevVal: CommunalMediaModel, row: TableRowLogger) {
        if (hasActiveMediaOrRecommendation != prevVal.hasActiveMediaOrRecommendation) {
        if (hasAnyMediaOrRecommendation != prevVal.hasAnyMediaOrRecommendation) {
            row.logChange(
                columnName = "isMediaActive",
                value = hasActiveMediaOrRecommendation,
                value = hasAnyMediaOrRecommendation,
            )
        }

+2 −2
Original line number Diff line number Diff line
@@ -80,10 +80,10 @@ constructor(
    }

    private fun updateMediaModel(data: MediaData? = null) {
        if (mediaDataManager.hasActiveMediaOrRecommendation()) {
        if (mediaDataManager.hasAnyMediaOrRecommendation()) {
            _mediaModel.value =
                CommunalMediaModel(
                    hasActiveMediaOrRecommendation = true,
                    hasAnyMediaOrRecommendation = true,
                    createdTimestampMillis = data?.createdTimestampMillis ?: 0L,
                )
        } else {
+1 −1
Original line number Diff line number Diff line
@@ -509,7 +509,7 @@ constructor(
                )

                // Add UMO
                if (mediaHostVisible && media.hasActiveMediaOrRecommendation) {
                if (mediaHostVisible && media.hasAnyMediaOrRecommendation) {
                    ongoingContent.add(
                        CommunalContentModel.Umo(
                            createdTimestampMillis = media.createdTimestampMillis,
+1 −1
Original line number Diff line number Diff line
@@ -252,7 +252,7 @@ constructor(
        with(mediaHost) {
            expansion = MediaHostState.EXPANDED
            expandedMatchesParentHeight = true
            showsOnlyActiveMedia = true
            showsOnlyActiveMedia = false
            falsingProtectionNeeded = false
            init(MediaHierarchyManager.LOCATION_COMMUNAL_HUB)
        }
Loading