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

Commit 4bab21c8 authored by Jordan Demeulenaere's avatar Jordan Demeulenaere
Browse files

Remove the Communal fork of STL ObservableTransitionState

Bug: 293899074
Test: m sysuig
Test: m SystemUITests
Flag: N/A
Change-Id: I2678c1d26ab9826c30a9ddd7a5367a91353a10ed
parent 11c52cb5
Loading
Loading
Loading
Loading
+1 −25
Original line number Diff line number Diff line
@@ -14,7 +14,6 @@ import com.android.compose.animation.scene.Edge
import com.android.compose.animation.scene.ElementKey
import com.android.compose.animation.scene.FixedSizeEdgeDetector
import com.android.compose.animation.scene.LowestZIndexScenePicker
import com.android.compose.animation.scene.ObservableTransitionState
import com.android.compose.animation.scene.SceneKey
import com.android.compose.animation.scene.SceneScope
import com.android.compose.animation.scene.SceneTransitionLayout
@@ -25,12 +24,10 @@ import com.android.compose.animation.scene.transitions
import com.android.compose.animation.scene.updateSceneTransitionLayoutState
import com.android.compose.theme.LocalAndroidColorScheme
import com.android.systemui.communal.shared.model.CommunalScenes
import com.android.systemui.communal.shared.model.ObservableCommunalTransitionState
import com.android.systemui.communal.ui.compose.extensions.allowGestures
import com.android.systemui.communal.ui.viewmodel.BaseCommunalViewModel
import com.android.systemui.communal.ui.viewmodel.CommunalViewModel
import com.android.systemui.res.R
import kotlinx.coroutines.flow.map

object Communal {
    object Elements {
@@ -79,9 +76,7 @@ fun CommunalContainer(
    // This effect exposes the SceneTransitionLayout's observable transition state to the rest of
    // the system, and unsets it when the view is disposed to avoid a memory leak.
    DisposableEffect(viewModel, sceneTransitionLayoutState) {
        viewModel.setTransitionState(
            sceneTransitionLayoutState.observableTransitionState().map { it.toModel() }
        )
        viewModel.setTransitionState(sceneTransitionLayoutState.observableTransitionState())
        onDispose { viewModel.setTransitionState(null) }
    }

@@ -128,22 +123,3 @@ private fun SceneScope.CommunalScene(
    )
    Box(modifier.element(Communal.Elements.Content)) { CommunalHub(viewModel = viewModel) }
}

/**
 * Converts between the [SceneTransitionLayout] state class and our forked data class that can be
 * used throughout SysUI.
 */
// TODO(b/315490861): Remove these conversions once Compose can be used throughout SysUI.
fun ObservableTransitionState.toModel(): ObservableCommunalTransitionState {
    return when (this) {
        is ObservableTransitionState.Idle -> ObservableCommunalTransitionState.Idle(scene)
        is ObservableTransitionState.Transition ->
            ObservableCommunalTransitionState.Transition(
                fromScene = fromScene,
                toScene = toScene,
                progress = progress,
                isInitiatedByUserInput = isInitiatedByUserInput,
                isUserInputOngoing = isUserInputOngoing,
            )
    }
}
+6 −9
Original line number Diff line number Diff line
@@ -18,9 +18,9 @@ package com.android.systemui.communal.data.repository

import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.android.compose.animation.scene.ObservableTransitionState
import com.android.systemui.SysuiTestCase
import com.android.systemui.communal.shared.model.CommunalScenes
import com.android.systemui.communal.shared.model.ObservableCommunalTransitionState
import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.kosmos.testScope
import com.android.systemui.scene.data.repository.sceneContainerRepository
@@ -60,20 +60,17 @@ class CommunalRepositoryImplTest : SysuiTestCase() {
        testScope.runTest {
            val transitionState by collectLastValue(underTest.transitionState)
            assertThat(transitionState)
                .isEqualTo(ObservableCommunalTransitionState.Idle(CommunalScenes.Default))
                .isEqualTo(ObservableTransitionState.Idle(CommunalScenes.Default))
        }

    @Test
    fun transitionState_setTransitionState_returnsNewValue() =
        testScope.runTest {
            val expectedSceneKey = CommunalScenes.Communal
            underTest.setTransitionState(
                flowOf(ObservableCommunalTransitionState.Idle(expectedSceneKey))
            )
            underTest.setTransitionState(flowOf(ObservableTransitionState.Idle(expectedSceneKey)))

            val transitionState by collectLastValue(underTest.transitionState)
            assertThat(transitionState)
                .isEqualTo(ObservableCommunalTransitionState.Idle(expectedSceneKey))
            assertThat(transitionState).isEqualTo(ObservableTransitionState.Idle(expectedSceneKey))
        }

    @Test
@@ -81,7 +78,7 @@ class CommunalRepositoryImplTest : SysuiTestCase() {
        testScope.runTest {
            // Set a value for the transition state flow.
            underTest.setTransitionState(
                flowOf(ObservableCommunalTransitionState.Idle(CommunalScenes.Communal))
                flowOf(ObservableTransitionState.Idle(CommunalScenes.Communal))
            )

            // Set the transition state flow back to null.
@@ -90,6 +87,6 @@ class CommunalRepositoryImplTest : SysuiTestCase() {
            // Flow returns default scene key.
            val transitionState by collectLastValue(underTest.transitionState)
            assertThat(transitionState)
                .isEqualTo(ObservableCommunalTransitionState.Idle(CommunalScenes.Default))
                .isEqualTo(ObservableTransitionState.Idle(CommunalScenes.Default))
        }
}
+22 −22
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@ import android.provider.Settings.Secure.HUB_MODE_TUTORIAL_COMPLETED
import android.widget.RemoteViews
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.android.compose.animation.scene.ObservableTransitionState
import com.android.systemui.Flags.FLAG_COMMUNAL_HUB
import com.android.systemui.SysuiTestCase
import com.android.systemui.communal.data.repository.CommunalSettingsRepositoryImpl
@@ -42,7 +43,6 @@ import com.android.systemui.communal.domain.model.CommunalContentModel
import com.android.systemui.communal.shared.model.CommunalContentSize
import com.android.systemui.communal.shared.model.CommunalScenes
import com.android.systemui.communal.shared.model.CommunalWidgetContentModel
import com.android.systemui.communal.shared.model.ObservableCommunalTransitionState
import com.android.systemui.communal.widgets.EditWidgetsActivityStarter
import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.flags.Flags
@@ -515,8 +515,8 @@ class CommunalInteractorTest : SysuiTestCase() {
            val transitionProgress by collectLastValue(transitionProgressFlow)

            val transitionState =
                MutableStateFlow<ObservableCommunalTransitionState>(
                    ObservableCommunalTransitionState.Idle(targetScene)
                MutableStateFlow<ObservableTransitionState>(
                    ObservableTransitionState.Idle(targetScene)
                )
            underTest.setTransitionState(transitionState)

@@ -533,8 +533,8 @@ class CommunalInteractorTest : SysuiTestCase() {
            val transitionProgress by collectLastValue(transitionProgressFlow)

            val transitionState =
                MutableStateFlow<ObservableCommunalTransitionState>(
                    ObservableCommunalTransitionState.Idle(currentScene)
                MutableStateFlow<ObservableTransitionState>(
                    ObservableTransitionState.Idle(currentScene)
                )
            underTest.setTransitionState(transitionState)

@@ -551,8 +551,8 @@ class CommunalInteractorTest : SysuiTestCase() {
            val transitionProgress by collectLastValue(transitionProgressFlow)

            var transitionState =
                MutableStateFlow<ObservableCommunalTransitionState>(
                    ObservableCommunalTransitionState.Idle(currentScene)
                MutableStateFlow<ObservableTransitionState>(
                    ObservableTransitionState.Idle(currentScene)
                )
            underTest.setTransitionState(transitionState)

@@ -562,7 +562,7 @@ class CommunalInteractorTest : SysuiTestCase() {
            val progress = MutableStateFlow(0f)
            transitionState =
                MutableStateFlow(
                    ObservableCommunalTransitionState.Transition(
                    ObservableTransitionState.Transition(
                        fromScene = currentScene,
                        toScene = targetScene,
                        progress = progress,
@@ -581,7 +581,7 @@ class CommunalInteractorTest : SysuiTestCase() {
            assertThat(transitionProgress).isEqualTo(CommunalTransitionProgress.Transition(1f))

            // Transition finishes.
            transitionState = MutableStateFlow(ObservableCommunalTransitionState.Idle(targetScene))
            transitionState = MutableStateFlow(ObservableTransitionState.Idle(targetScene))
            underTest.setTransitionState(transitionState)
            assertThat(transitionProgress).isEqualTo(CommunalTransitionProgress.Idle(targetScene))
        }
@@ -595,8 +595,8 @@ class CommunalInteractorTest : SysuiTestCase() {
            val transitionProgress by collectLastValue(transitionProgressFlow)

            var transitionState =
                MutableStateFlow<ObservableCommunalTransitionState>(
                    ObservableCommunalTransitionState.Idle(currentScene)
                MutableStateFlow<ObservableTransitionState>(
                    ObservableTransitionState.Idle(currentScene)
                )
            underTest.setTransitionState(transitionState)

@@ -606,7 +606,7 @@ class CommunalInteractorTest : SysuiTestCase() {
            val progress = MutableStateFlow(0f)
            transitionState =
                MutableStateFlow(
                    ObservableCommunalTransitionState.Transition(
                    ObservableTransitionState.Transition(
                        fromScene = currentScene,
                        toScene = targetScene,
                        progress = progress,
@@ -627,7 +627,7 @@ class CommunalInteractorTest : SysuiTestCase() {
            assertThat(transitionProgress).isEqualTo(CommunalTransitionProgress.OtherTransition)

            // Transition finishes.
            transitionState = MutableStateFlow(ObservableCommunalTransitionState.Idle(targetScene))
            transitionState = MutableStateFlow(ObservableTransitionState.Idle(targetScene))
            underTest.setTransitionState(transitionState)
            assertThat(transitionProgress).isEqualTo(CommunalTransitionProgress.Idle(targetScene))
        }
@@ -706,8 +706,8 @@ class CommunalInteractorTest : SysuiTestCase() {
    fun isIdleOnCommunal() =
        testScope.runTest {
            val transitionState =
                MutableStateFlow<ObservableCommunalTransitionState>(
                    ObservableCommunalTransitionState.Idle(CommunalScenes.Blank)
                MutableStateFlow<ObservableTransitionState>(
                    ObservableTransitionState.Idle(CommunalScenes.Blank)
                )
            communalRepository.setTransitionState(transitionState)

@@ -717,7 +717,7 @@ class CommunalInteractorTest : SysuiTestCase() {
            assertThat(isIdleOnCommunal).isEqualTo(false)

            // Transition to communal.
            transitionState.value = ObservableCommunalTransitionState.Idle(CommunalScenes.Communal)
            transitionState.value = ObservableTransitionState.Idle(CommunalScenes.Communal)
            runCurrent()

            // isIdleOnCommunal is now true since we're on communal.
@@ -725,7 +725,7 @@ class CommunalInteractorTest : SysuiTestCase() {

            // Start transition away from communal.
            transitionState.value =
                ObservableCommunalTransitionState.Transition(
                ObservableTransitionState.Transition(
                    fromScene = CommunalScenes.Communal,
                    toScene = CommunalScenes.Blank,
                    progress = flowOf(0f),
@@ -742,8 +742,8 @@ class CommunalInteractorTest : SysuiTestCase() {
    fun isCommunalVisible() =
        testScope.runTest {
            val transitionState =
                MutableStateFlow<ObservableCommunalTransitionState>(
                    ObservableCommunalTransitionState.Idle(CommunalScenes.Blank)
                MutableStateFlow<ObservableTransitionState>(
                    ObservableTransitionState.Idle(CommunalScenes.Blank)
                )
            communalRepository.setTransitionState(transitionState)

@@ -753,7 +753,7 @@ class CommunalInteractorTest : SysuiTestCase() {

            // Start transition to communal.
            transitionState.value =
                ObservableCommunalTransitionState.Transition(
                ObservableTransitionState.Transition(
                    fromScene = CommunalScenes.Blank,
                    toScene = CommunalScenes.Communal,
                    progress = flowOf(0f),
@@ -765,14 +765,14 @@ class CommunalInteractorTest : SysuiTestCase() {
            assertThat(isCommunalVisible).isEqualTo(true)

            // Finish transition to communal
            transitionState.value = ObservableCommunalTransitionState.Idle(CommunalScenes.Communal)
            transitionState.value = ObservableTransitionState.Idle(CommunalScenes.Communal)

            // isCommunalVisible is true since we're on communal.
            assertThat(isCommunalVisible).isEqualTo(true)

            // Start transition away from communal.
            transitionState.value =
                ObservableCommunalTransitionState.Transition(
                ObservableTransitionState.Transition(
                    fromScene = CommunalScenes.Communal,
                    toScene = CommunalScenes.Blank,
                    progress = flowOf(1.0f),
+9 −9
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package com.android.systemui.communal.log

import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.android.compose.animation.scene.ObservableTransitionState
import com.android.compose.animation.scene.SceneKey
import com.android.internal.logging.UiEventLogger
import com.android.systemui.SysuiTestCase
@@ -25,7 +26,6 @@ import com.android.systemui.communal.domain.interactor.CommunalInteractor
import com.android.systemui.communal.domain.interactor.communalInteractor
import com.android.systemui.communal.shared.log.CommunalUiEvent
import com.android.systemui.communal.shared.model.CommunalScenes
import com.android.systemui.communal.shared.model.ObservableCommunalTransitionState
import com.android.systemui.kosmos.testScope
import com.android.systemui.testKosmos
import kotlinx.coroutines.ExperimentalCoroutinesApi
@@ -74,7 +74,7 @@ class CommunalLoggerStartableTest : SysuiTestCase() {
        testScope.runTest {
            // Transition state is default (non-communal)
            val transitionState =
                MutableStateFlow<ObservableCommunalTransitionState>(idle(CommunalScenes.Default))
                MutableStateFlow<ObservableTransitionState>(idle(CommunalScenes.Default))
            communalInteractor.setTransitionState(transitionState)
            runCurrent()

@@ -102,7 +102,7 @@ class CommunalLoggerStartableTest : SysuiTestCase() {
        testScope.runTest {
            // Transition state is default (non-communal)
            val transitionState =
                MutableStateFlow<ObservableCommunalTransitionState>(idle(CommunalScenes.Default))
                MutableStateFlow<ObservableTransitionState>(idle(CommunalScenes.Default))
            communalInteractor.setTransitionState(transitionState)
            runCurrent()

@@ -133,7 +133,7 @@ class CommunalLoggerStartableTest : SysuiTestCase() {
        testScope.runTest {
            // Transition state is communal
            val transitionState =
                MutableStateFlow<ObservableCommunalTransitionState>(idle(CommunalScenes.Communal))
                MutableStateFlow<ObservableTransitionState>(idle(CommunalScenes.Communal))
            communalInteractor.setTransitionState(transitionState)
            runCurrent()

@@ -161,7 +161,7 @@ class CommunalLoggerStartableTest : SysuiTestCase() {
        testScope.runTest {
            // Transition state is communal
            val transitionState =
                MutableStateFlow<ObservableCommunalTransitionState>(idle(CommunalScenes.Communal))
                MutableStateFlow<ObservableTransitionState>(idle(CommunalScenes.Communal))
            communalInteractor.setTransitionState(transitionState)
            runCurrent()

@@ -190,8 +190,8 @@ class CommunalLoggerStartableTest : SysuiTestCase() {
    private fun transition(
        from: SceneKey = CommunalScenes.Default,
        to: SceneKey = CommunalScenes.Default,
    ): ObservableCommunalTransitionState.Transition {
        return ObservableCommunalTransitionState.Transition(
    ): ObservableTransitionState.Transition {
        return ObservableTransitionState.Transition(
            fromScene = from,
            toScene = to,
            progress = emptyFlow(),
@@ -200,7 +200,7 @@ class CommunalLoggerStartableTest : SysuiTestCase() {
        )
    }

    private fun idle(sceneKey: SceneKey): ObservableCommunalTransitionState.Idle {
        return ObservableCommunalTransitionState.Idle(sceneKey)
    private fun idle(sceneKey: SceneKey): ObservableTransitionState.Idle {
        return ObservableTransitionState.Idle(sceneKey)
    }
}
+2 −2
Original line number Diff line number Diff line
@@ -22,12 +22,12 @@ package com.android.systemui.keyguard.ui.viewmodel
import android.view.View
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.android.compose.animation.scene.ObservableTransitionState
import com.android.systemui.Flags as AConfigFlags
import com.android.systemui.Flags.FLAG_NEW_AOD_TRANSITION
import com.android.systemui.SysuiTestCase
import com.android.systemui.communal.data.repository.communalRepository
import com.android.systemui.communal.shared.model.CommunalScenes
import com.android.systemui.communal.shared.model.ObservableCommunalTransitionState
import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.deviceentry.data.repository.fakeDeviceEntryRepository
import com.android.systemui.flags.Flags
@@ -262,7 +262,7 @@ class KeyguardRootViewModelTest : SysuiTestCase() {

            // Hub transition state is idle with hub open.
            communalRepository.setTransitionState(
                flowOf(ObservableCommunalTransitionState.Idle(CommunalScenes.Communal))
                flowOf(ObservableTransitionState.Idle(CommunalScenes.Communal))
            )
            runCurrent()

Loading