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

Commit 76ce2a40 authored by Lucas Silva's avatar Lucas Silva
Browse files

Partial revert of "Fix dozing/dreaming->hub transitions for hub v2"

Maintains some of the test refactoring from that commit, but reverts the
actual behavior changes.

This reverts commit d1c5bd78.

Reason for revert: NotificationShade stuck on screen b/394463947
Flag: EXEMPT revert
Bug: b/394463947
Test: revert

Change-Id: I93ac1d637c5582aa204c8bf290b4ea4e905a3c61
parent d1c5bd78
Loading
Loading
Loading
Loading
+4 −38
Original line number Original line Diff line number Diff line
@@ -20,26 +20,19 @@ import android.os.PowerManager
import android.platform.test.annotations.DisableFlags
import android.platform.test.annotations.DisableFlags
import android.platform.test.annotations.EnableFlags
import android.platform.test.annotations.EnableFlags
import android.platform.test.flag.junit.FlagsParameterization
import android.platform.test.flag.junit.FlagsParameterization
import android.provider.Settings
import android.service.dream.dreamManager
import android.service.dream.dreamManager
import androidx.test.filters.SmallTest
import androidx.test.filters.SmallTest
import com.android.compose.animation.scene.ObservableTransitionState
import com.android.compose.animation.scene.ObservableTransitionState
import com.android.systemui.Flags.FLAG_COMMUNAL_HUB
import com.android.systemui.Flags.FLAG_COMMUNAL_HUB
import com.android.systemui.Flags.FLAG_COMMUNAL_SCENE_KTF_REFACTOR
import com.android.systemui.Flags.FLAG_COMMUNAL_SCENE_KTF_REFACTOR
import com.android.systemui.Flags.FLAG_GLANCEABLE_HUB_V2
import com.android.systemui.Flags.FLAG_KEYGUARD_WM_STATE_REFACTOR
import com.android.systemui.Flags.FLAG_KEYGUARD_WM_STATE_REFACTOR
import com.android.systemui.Flags.FLAG_SCENE_CONTAINER
import com.android.systemui.Flags.FLAG_SCENE_CONTAINER
import com.android.systemui.Flags.glanceableHubV2
import com.android.systemui.SysuiTestCase
import com.android.systemui.SysuiTestCase
import com.android.systemui.common.data.repository.batteryRepository
import com.android.systemui.common.data.repository.fake
import com.android.systemui.communal.data.repository.FakeCommunalSceneRepository
import com.android.systemui.communal.data.repository.FakeCommunalSceneRepository
import com.android.systemui.communal.data.repository.communalSceneRepository
import com.android.systemui.communal.data.repository.communalSceneRepository
import com.android.systemui.communal.data.repository.fakeCommunalSceneRepository
import com.android.systemui.communal.data.repository.fakeCommunalSceneRepository
import com.android.systemui.communal.domain.interactor.setCommunalAvailable
import com.android.systemui.communal.domain.interactor.setCommunalAvailable
import com.android.systemui.communal.domain.interactor.setCommunalV2ConfigEnabled
import com.android.systemui.communal.shared.model.CommunalScenes
import com.android.systemui.communal.shared.model.CommunalScenes
import com.android.systemui.coroutines.collectLastValue
import com.android.systemui.keyguard.data.repository.fakeKeyguardRepository
import com.android.systemui.keyguard.data.repository.fakeKeyguardRepository
import com.android.systemui.keyguard.data.repository.fakeKeyguardTransitionRepositorySpy
import com.android.systemui.keyguard.data.repository.fakeKeyguardTransitionRepositorySpy
import com.android.systemui.keyguard.data.repository.keyguardOcclusionRepository
import com.android.systemui.keyguard.data.repository.keyguardOcclusionRepository
@@ -61,14 +54,11 @@ import com.android.systemui.power.domain.interactor.PowerInteractor.Companion.se
import com.android.systemui.power.domain.interactor.powerInteractor
import com.android.systemui.power.domain.interactor.powerInteractor
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.testKosmos
import com.android.systemui.testKosmos
import com.android.systemui.user.data.repository.fakeUserRepository
import com.android.systemui.util.settings.fakeSettings
import com.google.common.truth.Truth
import com.google.common.truth.Truth
import junit.framework.Assert.assertEquals
import junit.framework.Assert.assertEquals
import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.runBlocking
import kotlinx.coroutines.runBlocking
import kotlinx.coroutines.test.advanceTimeBy
import kotlinx.coroutines.test.advanceTimeBy
import kotlinx.coroutines.test.runTest
import org.junit.Before
import org.junit.Before
import org.junit.Test
import org.junit.Test
import org.junit.runner.RunWith
import org.junit.runner.RunWith
@@ -101,10 +91,7 @@ class FromDozingTransitionInteractorTest(flags: FlagsParameterization?) : SysuiT
        @JvmStatic
        @JvmStatic
        @Parameters(name = "{0}")
        @Parameters(name = "{0}")
        fun getParams(): List<FlagsParameterization> {
        fun getParams(): List<FlagsParameterization> {
            return FlagsParameterization.allCombinationsOf(
            return FlagsParameterization.allCombinationsOf(FLAG_COMMUNAL_SCENE_KTF_REFACTOR)
                FLAG_COMMUNAL_SCENE_KTF_REFACTOR,
                FLAG_GLANCEABLE_HUB_V2,
            )
        }
        }
    }
    }


@@ -118,7 +105,6 @@ class FromDozingTransitionInteractorTest(flags: FlagsParameterization?) : SysuiT


        // Transition to DOZING and set the power interactor asleep.
        // Transition to DOZING and set the power interactor asleep.
        kosmos.powerInteractor.setAsleepForTest()
        kosmos.powerInteractor.setAsleepForTest()
        kosmos.setCommunalV2ConfigEnabled(true)
        runBlocking {
        runBlocking {
            kosmos.transitionRepository.sendTransitionSteps(
            kosmos.transitionRepository.sendTransitionSteps(
                from = KeyguardState.LOCKSCREEN,
                from = KeyguardState.LOCKSCREEN,
@@ -156,7 +142,7 @@ class FromDozingTransitionInteractorTest(flags: FlagsParameterization?) : SysuiT


    @Test
    @Test
    @EnableFlags(FLAG_KEYGUARD_WM_STATE_REFACTOR)
    @EnableFlags(FLAG_KEYGUARD_WM_STATE_REFACTOR)
    @DisableFlags(FLAG_COMMUNAL_SCENE_KTF_REFACTOR, FLAG_GLANCEABLE_HUB_V2)
    @DisableFlags(FLAG_COMMUNAL_SCENE_KTF_REFACTOR)
    fun testTransitionToLockscreen_onWake_canDream_glanceableHubAvailable() =
    fun testTransitionToLockscreen_onWake_canDream_glanceableHubAvailable() =
        kosmos.runTest {
        kosmos.runTest {
            whenever(dreamManager.canStartDreaming(anyBoolean())).thenReturn(true)
            whenever(dreamManager.canStartDreaming(anyBoolean())).thenReturn(true)
@@ -175,17 +161,7 @@ class FromDozingTransitionInteractorTest(flags: FlagsParameterization?) : SysuiT
    fun testTransitionToLockscreen_onWake_canDream_ktfRefactor() =
    fun testTransitionToLockscreen_onWake_canDream_ktfRefactor() =
        kosmos.runTest {
        kosmos.runTest {
            setCommunalAvailable(true)
            setCommunalAvailable(true)
            if (glanceableHubV2()) {
                val user = fakeUserRepository.asMainUser()
                fakeSettings.putIntForUser(
                    Settings.Secure.SCREENSAVER_ACTIVATE_ON_SLEEP,
                    1,
                    user.id,
                )
                batteryRepository.fake.setDevicePluggedIn(true)
            } else {
            whenever(dreamManager.canStartDreaming(anyBoolean())).thenReturn(true)
            whenever(dreamManager.canStartDreaming(anyBoolean())).thenReturn(true)
            }


            clearInvocations(fakeCommunalSceneRepository)
            clearInvocations(fakeCommunalSceneRepository)
            powerInteractor.setAwakeForTest()
            powerInteractor.setAwakeForTest()
@@ -246,17 +222,7 @@ class FromDozingTransitionInteractorTest(flags: FlagsParameterization?) : SysuiT
    fun testTransitionToGlanceableHub_onWakeup_ifAvailable() =
    fun testTransitionToGlanceableHub_onWakeup_ifAvailable() =
        kosmos.runTest {
        kosmos.runTest {
            setCommunalAvailable(true)
            setCommunalAvailable(true)
            if (glanceableHubV2()) {
                val user = fakeUserRepository.asMainUser()
                fakeSettings.putIntForUser(
                    Settings.Secure.SCREENSAVER_ACTIVATE_ON_SLEEP,
                    1,
                    user.id,
                )
                batteryRepository.fake.setDevicePluggedIn(true)
            } else {
            whenever(dreamManager.canStartDreaming(anyBoolean())).thenReturn(true)
            whenever(dreamManager.canStartDreaming(anyBoolean())).thenReturn(true)
            }


            // Device turns on.
            // Device turns on.
            powerInteractor.setAwakeForTest()
            powerInteractor.setAwakeForTest()
+2 −24
Original line number Original line Diff line number Diff line
@@ -19,20 +19,14 @@ package com.android.systemui.keyguard.domain.interactor
import android.platform.test.annotations.DisableFlags
import android.platform.test.annotations.DisableFlags
import android.platform.test.annotations.EnableFlags
import android.platform.test.annotations.EnableFlags
import android.platform.test.flag.junit.FlagsParameterization
import android.platform.test.flag.junit.FlagsParameterization
import android.provider.Settings
import android.service.dream.dreamManager
import android.service.dream.dreamManager
import androidx.test.filters.SmallTest
import androidx.test.filters.SmallTest
import com.android.systemui.Flags
import com.android.systemui.Flags
import com.android.systemui.Flags.FLAG_COMMUNAL_SCENE_KTF_REFACTOR
import com.android.systemui.Flags.FLAG_COMMUNAL_SCENE_KTF_REFACTOR
import com.android.systemui.Flags.FLAG_GLANCEABLE_HUB_V2
import com.android.systemui.Flags.glanceableHubV2
import com.android.systemui.SysuiTestCase
import com.android.systemui.SysuiTestCase
import com.android.systemui.bouncer.data.repository.fakeKeyguardBouncerRepository
import com.android.systemui.bouncer.data.repository.fakeKeyguardBouncerRepository
import com.android.systemui.common.data.repository.batteryRepository
import com.android.systemui.common.data.repository.fake
import com.android.systemui.communal.data.repository.communalSceneRepository
import com.android.systemui.communal.data.repository.communalSceneRepository
import com.android.systemui.communal.domain.interactor.setCommunalAvailable
import com.android.systemui.communal.domain.interactor.setCommunalAvailable
import com.android.systemui.communal.domain.interactor.setCommunalV2ConfigEnabled
import com.android.systemui.communal.shared.model.CommunalScenes
import com.android.systemui.communal.shared.model.CommunalScenes
import com.android.systemui.flags.andSceneContainer
import com.android.systemui.flags.andSceneContainer
import com.android.systemui.keyguard.data.repository.FakeKeyguardTransitionRepository
import com.android.systemui.keyguard.data.repository.FakeKeyguardTransitionRepository
@@ -52,8 +46,6 @@ import com.android.systemui.power.domain.interactor.PowerInteractor.Companion.se
import com.android.systemui.power.domain.interactor.powerInteractor
import com.android.systemui.power.domain.interactor.powerInteractor
import com.android.systemui.statusbar.domain.interactor.keyguardOcclusionInteractor
import com.android.systemui.statusbar.domain.interactor.keyguardOcclusionInteractor
import com.android.systemui.testKosmos
import com.android.systemui.testKosmos
import com.android.systemui.user.data.repository.fakeUserRepository
import com.android.systemui.util.settings.fakeSettings
import com.google.common.truth.Truth.assertThat
import com.google.common.truth.Truth.assertThat
import kotlinx.coroutines.runBlocking
import kotlinx.coroutines.runBlocking
import kotlinx.coroutines.test.advanceTimeBy
import kotlinx.coroutines.test.advanceTimeBy
@@ -74,10 +66,7 @@ class FromDreamingTransitionInteractorTest(flags: FlagsParameterization?) : Sysu
        @JvmStatic
        @JvmStatic
        @Parameters(name = "{0}")
        @Parameters(name = "{0}")
        fun getParams(): List<FlagsParameterization> {
        fun getParams(): List<FlagsParameterization> {
            return FlagsParameterization.allCombinationsOf(
            return FlagsParameterization.allCombinationsOf(FLAG_COMMUNAL_SCENE_KTF_REFACTOR)
                    FLAG_COMMUNAL_SCENE_KTF_REFACTOR,
                    FLAG_GLANCEABLE_HUB_V2,
                )
                .andSceneContainer()
                .andSceneContainer()
        }
        }
    }
    }
@@ -112,7 +101,6 @@ class FromDreamingTransitionInteractorTest(flags: FlagsParameterization?) : Sysu
            )
            )
            reset(kosmos.transitionRepository)
            reset(kosmos.transitionRepository)
            kosmos.setCommunalAvailable(true)
            kosmos.setCommunalAvailable(true)
            kosmos.setCommunalV2ConfigEnabled(true)
        }
        }
        kosmos.underTest.start()
        kosmos.underTest.start()
    }
    }
@@ -214,17 +202,7 @@ class FromDreamingTransitionInteractorTest(flags: FlagsParameterization?) : Sysu
            reset(transitionRepository)
            reset(transitionRepository)


            setCommunalAvailable(true)
            setCommunalAvailable(true)
            if (glanceableHubV2()) {
                val user = fakeUserRepository.asMainUser()
                fakeSettings.putIntForUser(
                    Settings.Secure.SCREENSAVER_ACTIVATE_ON_SLEEP,
                    1,
                    user.id,
                )
                batteryRepository.fake.setDevicePluggedIn(true)
            } else {
            whenever(dreamManager.canStartDreaming(anyBoolean())).thenReturn(true)
            whenever(dreamManager.canStartDreaming(anyBoolean())).thenReturn(true)
            }


            // Device wakes up.
            // Device wakes up.
            powerInteractor.setAwakeForTest()
            powerInteractor.setAwakeForTest()
+7 −23
Original line number Original line Diff line number Diff line
@@ -24,7 +24,6 @@ import com.android.app.tracing.coroutines.launchTraced as launch
import com.android.systemui.Flags.communalSceneKtfRefactor
import com.android.systemui.Flags.communalSceneKtfRefactor
import com.android.systemui.communal.domain.interactor.CommunalInteractor
import com.android.systemui.communal.domain.interactor.CommunalInteractor
import com.android.systemui.communal.domain.interactor.CommunalSceneInteractor
import com.android.systemui.communal.domain.interactor.CommunalSceneInteractor
import com.android.systemui.communal.domain.interactor.CommunalSettingsInteractor
import com.android.systemui.communal.shared.model.CommunalScenes
import com.android.systemui.communal.shared.model.CommunalScenes
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Background
import com.android.systemui.dagger.qualifiers.Background
@@ -58,7 +57,6 @@ constructor(
    keyguardInteractor: KeyguardInteractor,
    keyguardInteractor: KeyguardInteractor,
    powerInteractor: PowerInteractor,
    powerInteractor: PowerInteractor,
    private val communalInteractor: CommunalInteractor,
    private val communalInteractor: CommunalInteractor,
    private val communalSettingsInteractor: CommunalSettingsInteractor,
    private val communalSceneInteractor: CommunalSceneInteractor,
    private val communalSceneInteractor: CommunalSceneInteractor,
    keyguardOcclusionInteractor: KeyguardOcclusionInteractor,
    keyguardOcclusionInteractor: KeyguardOcclusionInteractor,
    val deviceEntryInteractor: DeviceEntryInteractor,
    val deviceEntryInteractor: DeviceEntryInteractor,
@@ -117,17 +115,6 @@ constructor(
        }
        }
    }
    }


    @SuppressLint("MissingPermission")
    private fun shouldTransitionToCommunal(
        shouldShowCommunal: Boolean,
        isCommunalAvailable: Boolean,
    ) =
        if (communalSettingsInteractor.isV2FlagEnabled()) {
            shouldShowCommunal
        } else {
            isCommunalAvailable && dreamManager.canStartDreaming(false)
        }

    @OptIn(FlowPreview::class)
    @OptIn(FlowPreview::class)
    @SuppressLint("MissingPermission")
    @SuppressLint("MissingPermission")
    private fun listenForDozingToAny() {
    private fun listenForDozingToAny() {
@@ -141,10 +128,9 @@ constructor(
                .filterRelevantKeyguardStateAnd { isAwake -> isAwake }
                .filterRelevantKeyguardStateAnd { isAwake -> isAwake }
                .sample(
                .sample(
                    communalInteractor.isCommunalAvailable,
                    communalInteractor.isCommunalAvailable,
                    communalInteractor.shouldShowCommunal,
                    communalSceneInteractor.isIdleOnCommunal,
                    communalSceneInteractor.isIdleOnCommunal,
                )
                )
                .collect { (_, isCommunalAvailable, shouldShowCommunal, isIdleOnCommunal) ->
                .collect { (_, isCommunalAvailable, isIdleOnCommunal) ->
                    val isKeyguardOccludedLegacy = keyguardInteractor.isKeyguardOccluded.value
                    val isKeyguardOccludedLegacy = keyguardInteractor.isKeyguardOccluded.value
                    val primaryBouncerShowing = keyguardInteractor.primaryBouncerShowing.value
                    val primaryBouncerShowing = keyguardInteractor.primaryBouncerShowing.value
                    val isKeyguardGoingAway = keyguardInteractor.isKeyguardGoingAway.value
                    val isKeyguardGoingAway = keyguardInteractor.isKeyguardGoingAway.value
@@ -178,9 +164,11 @@ constructor(
                        if (!SceneContainerFlag.isEnabled) {
                        if (!SceneContainerFlag.isEnabled) {
                            startTransitionTo(KeyguardState.GLANCEABLE_HUB)
                            startTransitionTo(KeyguardState.GLANCEABLE_HUB)
                        }
                        }
                    } else if (
                    } else if (isCommunalAvailable && dreamManager.canStartDreaming(false)) {
                        shouldTransitionToCommunal(shouldShowCommunal, isCommunalAvailable)
                        // Using false for isScreenOn as canStartDreaming returns false if any
                    ) {
                        // dream, including doze, is active.
                        // This case handles tapping the power button to transition through
                        // dream -> off -> hub.
                        if (!SceneContainerFlag.isEnabled) {
                        if (!SceneContainerFlag.isEnabled) {
                            transitionToGlanceableHub()
                            transitionToGlanceableHub()
                        }
                        }
@@ -202,7 +190,6 @@ constructor(
            powerInteractor.detailedWakefulness
            powerInteractor.detailedWakefulness
                .filterRelevantKeyguardStateAnd { it.isAwake() }
                .filterRelevantKeyguardStateAnd { it.isAwake() }
                .sample(
                .sample(
                    communalInteractor.shouldShowCommunal,
                    communalInteractor.isCommunalAvailable,
                    communalInteractor.isCommunalAvailable,
                    communalSceneInteractor.isIdleOnCommunal,
                    communalSceneInteractor.isIdleOnCommunal,
                    keyguardInteractor.biometricUnlockState,
                    keyguardInteractor.biometricUnlockState,
@@ -212,7 +199,6 @@ constructor(
                .collect {
                .collect {
                    (
                    (
                        _,
                        _,
                        shouldShowCommunal,
                        isCommunalAvailable,
                        isCommunalAvailable,
                        isIdleOnCommunal,
                        isIdleOnCommunal,
                        biometricUnlockState,
                        biometricUnlockState,
@@ -246,9 +232,7 @@ constructor(
                                    ownerReason = "waking from dozing",
                                    ownerReason = "waking from dozing",
                                )
                                )
                            }
                            }
                        } else if (
                        } else if (isCommunalAvailable && dreamManager.canStartDreaming(true)) {
                            shouldTransitionToCommunal(shouldShowCommunal, isCommunalAvailable)
                        ) {
                            if (!SceneContainerFlag.isEnabled) {
                            if (!SceneContainerFlag.isEnabled) {
                                transitionToGlanceableHub()
                                transitionToGlanceableHub()
                            }
                            }
+13 −30
Original line number Original line Diff line number Diff line
@@ -129,22 +129,6 @@ constructor(
        if (!communalSettingsInteractor.isCommunalFlagEnabled()) return
        if (!communalSettingsInteractor.isCommunalFlagEnabled()) return
        if (SceneContainerFlag.isEnabled) return
        if (SceneContainerFlag.isEnabled) return
        scope.launch {
        scope.launch {
            if (communalSettingsInteractor.isV2FlagEnabled()) {
                powerInteractor.isAwake
                    .debounce(50L)
                    .filterRelevantKeyguardStateAnd { isAwake -> isAwake }
                    .sample(communalInteractor.shouldShowCommunal)
                    .collect { shouldShowCommunal ->
                        if (shouldShowCommunal) {
                            // This case handles tapping the power button to transition through
                            // dream -> off -> hub.
                            communalSceneInteractor.snapToScene(
                                newScene = CommunalScenes.Communal,
                                loggingReason = "from dreaming to hub",
                            )
                        }
                    }
            } else {
            powerInteractor.isAwake
            powerInteractor.isAwake
                .debounce(50L)
                .debounce(50L)
                .filterRelevantKeyguardStateAnd { isAwake -> isAwake }
                .filterRelevantKeyguardStateAnd { isAwake -> isAwake }
@@ -161,7 +145,6 @@ constructor(
                }
                }
        }
        }
    }
    }
    }


    private fun listenForDreamingToPrimaryBouncer() {
    private fun listenForDreamingToPrimaryBouncer() {
        // TODO(b/336576536): Check if adaptation for scene framework is needed
        // TODO(b/336576536): Check if adaptation for scene framework is needed
+0 −2
Original line number Original line Diff line number Diff line
@@ -19,7 +19,6 @@ package com.android.systemui.keyguard.domain.interactor
import android.service.dream.dreamManager
import android.service.dream.dreamManager
import com.android.systemui.communal.domain.interactor.communalInteractor
import com.android.systemui.communal.domain.interactor.communalInteractor
import com.android.systemui.communal.domain.interactor.communalSceneInteractor
import com.android.systemui.communal.domain.interactor.communalSceneInteractor
import com.android.systemui.communal.domain.interactor.communalSettingsInteractor
import com.android.systemui.deviceentry.domain.interactor.deviceEntryInteractor
import com.android.systemui.deviceentry.domain.interactor.deviceEntryInteractor
import com.android.systemui.keyguard.data.repository.keyguardTransitionRepository
import com.android.systemui.keyguard.data.repository.keyguardTransitionRepository
import com.android.systemui.kosmos.Kosmos
import com.android.systemui.kosmos.Kosmos
@@ -45,6 +44,5 @@ var Kosmos.fromDozingTransitionInteractor by
            deviceEntryInteractor = deviceEntryInteractor,
            deviceEntryInteractor = deviceEntryInteractor,
            wakeToGoneInteractor = keyguardWakeDirectlyToGoneInteractor,
            wakeToGoneInteractor = keyguardWakeDirectlyToGoneInteractor,
            dreamManager = dreamManager,
            dreamManager = dreamManager,
            communalSettingsInteractor = communalSettingsInteractor,
        )
        )
    }
    }