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

Commit d7ff0883 authored by William Xiao's avatar William Xiao Committed by Android (Google) Code Review
Browse files

Merge "Fix UMO not showing on glanceable hub" into main

parents 15463f1b a07fa827
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -99,7 +99,9 @@ import org.mockito.Mockito.verify
import org.mockito.MockitoAnnotations
import org.mockito.kotlin.eq
import org.mockito.kotlin.mock
import org.mockito.kotlin.never
import org.mockito.kotlin.spy
import org.mockito.kotlin.times
import org.mockito.kotlin.whenever
import platform.test.runner.parameterized.ParameterizedAndroidJunit4
import platform.test.runner.parameterized.Parameters
@@ -740,6 +742,18 @@ class CommunalViewModelTest(flags: FlagsParameterization) : SysuiTestCase() {
                .isInstanceOf(CommunalContentModel.CtaTileInViewMode::class.java)
        }

    @Test
    fun communalContent_readTriggersUmoVisibilityUpdate() =
        testScope.runTest {
            verify(mediaHost, never()).updateViewVisibility()

            val communalContent by collectLastValue(underTest.communalContent)

            // updateViewVisibility is called when the flow is collected.
            assertThat(communalContent).isNotNull()
            verify(mediaHost).updateViewVisibility()
        }

    @Test
    fun scrollPosition_persistedOnEditEntry() {
        val index = 2
+13 −4
Original line number Diff line number Diff line
@@ -97,8 +97,10 @@ constructor(
    private val metricsLogger: CommunalMetricsLogger,
) : BaseCommunalViewModel(communalSceneInteractor, communalInteractor, mediaHost) {

    private val logger = Logger(logBuffer, "CommunalViewModel")

    private val _isMediaHostVisible =
        conflatedCallbackFlow<Boolean> {
        conflatedCallbackFlow {
                val callback = { visible: Boolean ->
                    trySend(visible)
                    Unit
@@ -106,11 +108,18 @@ constructor(
                mediaHost.addVisibilityChangeListener(callback)
                awaitClose { mediaHost.removeVisibilityChangeListener(callback) }
            }
            .onStart { emit(mediaHost.visible) }
            .onStart {
                // Ensure the visibility state is correct when the hub is opened and this flow is
                // started so that the UMO is shown when needed. The visibility state in MediaHost
                // is not updated once its view has been detached, aka the hub is closed, which can
                // result in this getting stuck as False and never being updated as the UMO is not
                // shown.
                mediaHost.updateViewVisibility()
                emit(mediaHost.visible)
            }
            .onEach { logger.d({ "_isMediaHostVisible: $bool1" }) { bool1 = it } }
            .flowOn(mainDispatcher)

    private val logger = Logger(logBuffer, "CommunalViewModel")

    /** Communal content saved from the previous emission when the flow is active (not "frozen"). */
    private var frozenCommunalContent: List<CommunalContentModel>? = null