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

Commit 2efa0184 authored by Alejandro Nijamkin's avatar Alejandro Nijamkin
Browse files

[flexiglass] Cleans up some Communal swipe gestures

Removes Dream --> Communal
Changes Communal --> Home to Communal --> Lockscreen

Flag: com.android.systemui.scene_container
Test: unit tests pass
Test: manually started Communal from lockscreen shortcut and tested that
swiping right goes to the lockscreen
Bug: 394159837

Change-Id: Ie5bcd58e9092a20320eb23e13b7459abf0122651
parent 72acca4e
Loading
Loading
Loading
Loading
+6 −7
Original line number Diff line number Diff line
@@ -35,7 +35,6 @@ import com.android.systemui.power.domain.interactor.PowerInteractor.Companion.se
import com.android.systemui.power.domain.interactor.powerInteractor
import com.android.systemui.scene.domain.interactor.sceneInteractor
import com.android.systemui.scene.shared.model.Overlays
import com.android.systemui.scene.shared.model.SceneFamilies
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.scene.shared.model.TransitionKeys.ToSplitShade
import com.android.systemui.shade.domain.interactor.enableDualShade
@@ -74,7 +73,7 @@ class CommunalUserActionsViewModelTest : SysuiTestCase() {

            setUpState(isShadeTouchable = true, isDeviceUnlocked = false)
            assertThat(actions).isNotEmpty()
            assertThat(actions?.get(Swipe.End)).isEqualTo(UserActionResult(SceneFamilies.Home))
            assertThat(actions?.get(Swipe.End)).isEqualTo(UserActionResult(Scenes.Lockscreen))
            assertThat(actions?.get(Swipe.Up)).isEqualTo(UserActionResult(Scenes.Bouncer))
            assertThat(actions?.get(Swipe.Down)).isEqualTo(UserActionResult(Scenes.Shade))

@@ -83,7 +82,7 @@ class CommunalUserActionsViewModelTest : SysuiTestCase() {

            setUpState(isShadeTouchable = true, isDeviceUnlocked = true)
            assertThat(actions).isNotEmpty()
            assertThat(actions?.get(Swipe.End)).isEqualTo(UserActionResult(SceneFamilies.Home))
            assertThat(actions?.get(Swipe.End)).isEqualTo(UserActionResult(Scenes.Lockscreen))
            assertThat(actions?.get(Swipe.Up)).isEqualTo(UserActionResult(Scenes.Gone))
            assertThat(actions?.get(Swipe.Down)).isEqualTo(UserActionResult(Scenes.Shade))
        }
@@ -96,7 +95,7 @@ class CommunalUserActionsViewModelTest : SysuiTestCase() {

            setUpState(isShadeTouchable = true, isDeviceUnlocked = false)
            assertThat(actions).isNotEmpty()
            assertThat(actions?.get(Swipe.End)).isEqualTo(UserActionResult(SceneFamilies.Home))
            assertThat(actions?.get(Swipe.End)).isEqualTo(UserActionResult(Scenes.Lockscreen))
            assertThat(actions?.get(Swipe.Up)).isEqualTo(UserActionResult(Scenes.Bouncer))
            assertThat(actions?.get(Swipe.Down))
                .isEqualTo(UserActionResult(Scenes.Shade, ToSplitShade))
@@ -106,7 +105,7 @@ class CommunalUserActionsViewModelTest : SysuiTestCase() {

            setUpState(isShadeTouchable = true, isDeviceUnlocked = true)
            assertThat(actions).isNotEmpty()
            assertThat(actions?.get(Swipe.End)).isEqualTo(UserActionResult(SceneFamilies.Home))
            assertThat(actions?.get(Swipe.End)).isEqualTo(UserActionResult(Scenes.Lockscreen))
            assertThat(actions?.get(Swipe.Up)).isEqualTo(UserActionResult(Scenes.Gone))
            assertThat(actions?.get(Swipe.Down))
                .isEqualTo(UserActionResult(Scenes.Shade, ToSplitShade))
@@ -120,7 +119,7 @@ class CommunalUserActionsViewModelTest : SysuiTestCase() {

            setUpState(isShadeTouchable = true, isDeviceUnlocked = false)
            assertThat(actions).isNotEmpty()
            assertThat(actions?.get(Swipe.End)).isEqualTo(UserActionResult(SceneFamilies.Home))
            assertThat(actions?.get(Swipe.End)).isEqualTo(UserActionResult(Scenes.Lockscreen))
            assertThat(actions?.get(Swipe.Up)).isEqualTo(UserActionResult(Scenes.Bouncer))
            assertThat(actions?.get(Swipe.Down))
                .isEqualTo(UserActionResult.ShowOverlay(Overlays.NotificationsShade))
@@ -130,7 +129,7 @@ class CommunalUserActionsViewModelTest : SysuiTestCase() {

            setUpState(isShadeTouchable = true, isDeviceUnlocked = true)
            assertThat(actions).isNotEmpty()
            assertThat(actions?.get(Swipe.End)).isEqualTo(UserActionResult(SceneFamilies.Home))
            assertThat(actions?.get(Swipe.End)).isEqualTo(UserActionResult(Scenes.Lockscreen))
            assertThat(actions?.get(Swipe.Up)).isEqualTo(UserActionResult(Scenes.Gone))
            assertThat(actions?.get(Swipe.Down))
                .isEqualTo(UserActionResult.ShowOverlay(Overlays.NotificationsShade))
+4 −90
Original line number Diff line number Diff line
@@ -23,7 +23,6 @@ import com.android.compose.animation.scene.UserActionResult
import com.android.systemui.SysuiTestCase
import com.android.systemui.authentication.data.repository.fakeAuthenticationRepository
import com.android.systemui.authentication.shared.model.AuthenticationMethodModel
import com.android.systemui.communal.domain.interactor.setCommunalAvailable
import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.deviceentry.domain.interactor.deviceUnlockedInteractor
import com.android.systemui.flags.EnableSceneContainer
@@ -62,15 +61,14 @@ class DreamUserActionsViewModelTest : SysuiTestCase() {

    @Before
    fun setUp() {
        underTest = kosmos.dreamUserActionsViewModel
        underTest = kosmos.dreamUserActionsViewModelFactory.create()
        underTest.activateIn(testScope)
    }

    @Test
    fun actions_communalNotAvailable_singleShade() =
    fun actions_singleShade() =
        testScope.runTest {
            kosmos.enableSingleShade()
            kosmos.setCommunalAvailable(false)

            val actions by collectLastValue(underTest.actions)

@@ -93,10 +91,9 @@ class DreamUserActionsViewModelTest : SysuiTestCase() {
        }

    @Test
    fun actions_communalNotAvailable_splitShade() =
    fun actions_splitShade() =
        testScope.runTest {
            kosmos.enableSplitShade()
            kosmos.setCommunalAvailable(false)

            val actions by collectLastValue(underTest.actions)

@@ -121,10 +118,9 @@ class DreamUserActionsViewModelTest : SysuiTestCase() {
        }

    @Test
    fun actions_communalNotAvailable_dualShade() =
    fun actions_dualShade() =
        testScope.runTest {
            kosmos.enableDualShade()
            kosmos.setCommunalAvailable(false)

            val actions by collectLastValue(underTest.actions)

@@ -148,88 +144,6 @@ class DreamUserActionsViewModelTest : SysuiTestCase() {
            assertThat(actions?.get(Swipe.End)).isNull()
        }

    @Test
    fun actions_communalAvailable_singleShade() =
        testScope.runTest {
            kosmos.enableSingleShade()
            kosmos.setCommunalAvailable(true)

            val actions by collectLastValue(underTest.actions)

            setUpState(isShadeTouchable = true, isDeviceUnlocked = false)
            assertThat(actions).isNotEmpty()
            assertThat(actions?.get(Swipe.Up)).isEqualTo(UserActionResult(Scenes.Bouncer))
            assertThat(actions?.get(Swipe.Down)).isEqualTo(UserActionResult(Scenes.Shade))
            assertThat(actions?.get(Swipe.Start)).isEqualTo(UserActionResult(Scenes.Communal))
            assertThat(actions?.get(Swipe.End)).isNull()

            setUpState(isShadeTouchable = false, isDeviceUnlocked = false)
            assertThat(actions).isEmpty()

            setUpState(isShadeTouchable = true, isDeviceUnlocked = true)
            assertThat(actions).isNotEmpty()
            assertThat(actions?.get(Swipe.Up)).isEqualTo(UserActionResult(Scenes.Gone))
            assertThat(actions?.get(Swipe.Down)).isEqualTo(UserActionResult(Scenes.Shade))
            assertThat(actions?.get(Swipe.Start)).isEqualTo(UserActionResult(Scenes.Communal))
            assertThat(actions?.get(Swipe.End)).isNull()
        }

    @Test
    fun actions_communalAvailable_splitShade() =
        testScope.runTest {
            kosmos.enableSplitShade()
            kosmos.setCommunalAvailable(true)

            val actions by collectLastValue(underTest.actions)

            setUpState(isShadeTouchable = true, isDeviceUnlocked = false)
            assertThat(actions).isNotEmpty()
            assertThat(actions?.get(Swipe.Up)).isEqualTo(UserActionResult(Scenes.Bouncer))
            assertThat(actions?.get(Swipe.Down))
                .isEqualTo(UserActionResult(Scenes.Shade, ToSplitShade))
            assertThat(actions?.get(Swipe.Start)).isEqualTo(UserActionResult(Scenes.Communal))
            assertThat(actions?.get(Swipe.End)).isNull()

            setUpState(isShadeTouchable = false, isDeviceUnlocked = false)
            assertThat(actions).isEmpty()

            setUpState(isShadeTouchable = true, isDeviceUnlocked = true)
            assertThat(actions).isNotEmpty()
            assertThat(actions?.get(Swipe.Up)).isEqualTo(UserActionResult(Scenes.Gone))
            assertThat(actions?.get(Swipe.Down))
                .isEqualTo(UserActionResult(Scenes.Shade, ToSplitShade))
            assertThat(actions?.get(Swipe.Start)).isEqualTo(UserActionResult(Scenes.Communal))
            assertThat(actions?.get(Swipe.End)).isNull()
        }

    @Test
    fun actions_communalAvailable_dualShade() =
        testScope.runTest {
            kosmos.enableDualShade()
            kosmos.setCommunalAvailable(true)

            val actions by collectLastValue(underTest.actions)

            setUpState(isShadeTouchable = true, isDeviceUnlocked = false)
            assertThat(actions).isNotEmpty()
            assertThat(actions?.get(Swipe.Up)).isEqualTo(UserActionResult(Scenes.Bouncer))
            assertThat(actions?.get(Swipe.Down))
                .isEqualTo(UserActionResult.ShowOverlay(Overlays.NotificationsShade))
            assertThat(actions?.get(Swipe.Start)).isEqualTo(UserActionResult(Scenes.Communal))
            assertThat(actions?.get(Swipe.End)).isNull()

            setUpState(isShadeTouchable = false, isDeviceUnlocked = false)
            assertThat(actions).isEmpty()

            setUpState(isShadeTouchable = true, isDeviceUnlocked = true)
            assertThat(actions).isNotEmpty()
            assertThat(actions?.get(Swipe.Up)).isEqualTo(UserActionResult(Scenes.Gone))
            assertThat(actions?.get(Swipe.Down))
                .isEqualTo(UserActionResult.ShowOverlay(Overlays.NotificationsShade))
            assertThat(actions?.get(Swipe.Start)).isEqualTo(UserActionResult(Scenes.Communal))
            assertThat(actions?.get(Swipe.End)).isNull()
        }

    private fun TestScope.setUpState(isShadeTouchable: Boolean, isDeviceUnlocked: Boolean) {
        if (isShadeTouchable) {
            kosmos.powerInteractor.setAwakeForTest()
+1 −3
Original line number Diff line number Diff line
@@ -20,7 +20,6 @@ import com.android.compose.animation.scene.Swipe
import com.android.compose.animation.scene.UserAction
import com.android.compose.animation.scene.UserActionResult
import com.android.systemui.deviceentry.domain.interactor.DeviceUnlockedInteractor
import com.android.systemui.scene.shared.model.SceneFamilies
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.scene.ui.viewmodel.UserActionsViewModel
import com.android.systemui.shade.domain.interactor.ShadeInteractor
@@ -60,8 +59,7 @@ constructor(
                                    if (isDeviceUnlocked) Scenes.Gone else Scenes.Bouncer
                                add(Swipe.Up to bouncerOrGone)

                                // "Home" is either Lockscreen, or Gone - if the device is entered.
                                add(Swipe.End to SceneFamilies.Home)
                                add(Swipe.End to Scenes.Lockscreen)

                                addAll(
                                    when (shadeMode) {
+1 −8
Original line number Diff line number Diff line
@@ -19,7 +19,6 @@ package com.android.systemui.dreams.ui.viewmodel
import com.android.compose.animation.scene.Swipe
import com.android.compose.animation.scene.UserAction
import com.android.compose.animation.scene.UserActionResult
import com.android.systemui.communal.domain.interactor.CommunalInteractor
import com.android.systemui.deviceentry.domain.interactor.DeviceUnlockedInteractor
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.scene.ui.viewmodel.UserActionsViewModel
@@ -40,7 +39,6 @@ import kotlinx.coroutines.flow.map
class DreamUserActionsViewModel
@AssistedInject
constructor(
    private val communalInteractor: CommunalInteractor,
    private val deviceUnlockedInteractor: DeviceUnlockedInteractor,
    private val shadeInteractor: ShadeInteractor,
    private val shadeModeInteractor: ShadeModeInteractor,
@@ -54,14 +52,9 @@ constructor(
                } else {
                    combine(
                        deviceUnlockedInteractor.deviceUnlockStatus.map { it.isUnlocked },
                        communalInteractor.isCommunalAvailable,
                        shadeModeInteractor.shadeMode,
                    ) { isDeviceUnlocked, isCommunalAvailable, shadeMode ->
                    ) { isDeviceUnlocked, shadeMode ->
                        buildList {
                                if (isCommunalAvailable) {
                                    add(Swipe.Start to Scenes.Communal)
                                }

                                val bouncerOrGone =
                                    if (isDeviceUnlocked) Scenes.Gone else Scenes.Bouncer
                                add(Swipe.Up to bouncerOrGone)
+11 −9
Original line number Diff line number Diff line
@@ -16,18 +16,20 @@

package com.android.systemui.dreams.ui.viewmodel

import com.android.systemui.communal.domain.interactor.communalInteractor
import com.android.systemui.deviceentry.domain.interactor.deviceUnlockedInteractor
import com.android.systemui.kosmos.Kosmos
import com.android.systemui.kosmos.Kosmos.Fixture
import com.android.systemui.shade.domain.interactor.shadeInteractor
import com.android.systemui.shade.domain.interactor.shadeModeInteractor

val Kosmos.dreamUserActionsViewModel by
    Kosmos.Fixture {
        DreamUserActionsViewModel(
            communalInteractor = communalInteractor,
val Kosmos.dreamUserActionsViewModelFactory by Fixture {
    object : DreamUserActionsViewModel.Factory {
        override fun create(): DreamUserActionsViewModel {
            return DreamUserActionsViewModel(
                deviceUnlockedInteractor = deviceUnlockedInteractor,
                shadeInteractor = shadeInteractor,
                shadeModeInteractor = shadeModeInteractor,
            )
        }
    }
}