Loading packages/SystemUI/src/com/android/systemui/keyguard/ResourceTrimmer.kt +14 −3 Original line number Diff line number Diff line Loading @@ -33,12 +33,16 @@ import com.android.systemui.keyguard.shared.model.Edge import com.android.systemui.keyguard.shared.model.KeyguardState.GONE import com.android.systemui.keyguard.shared.model.TransitionState import com.android.systemui.power.domain.interactor.PowerInteractor import com.android.systemui.scene.domain.interactor.SceneInteractor import com.android.systemui.scene.shared.flag.SceneContainerFlag import com.android.systemui.scene.shared.model.Scenes import com.android.systemui.utils.GlobalWindowManager import javax.inject.Inject import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.flow.filter import kotlinx.coroutines.flow.map import kotlinx.coroutines.launch Loading @@ -60,6 +64,7 @@ constructor( @Application private val applicationScope: CoroutineScope, @Background private val bgDispatcher: CoroutineDispatcher, private val featureFlags: FeatureFlags, private val sceneInteractor: SceneInteractor, ) : CoreStartable, WakefulnessLifecycle.Observer { override fun start() { Loading @@ -85,13 +90,19 @@ constructor( applicationScope.launch(bgDispatcher) { // We drop 1 to avoid triggering on initial collect(). keyguardTransitionInteractor.transition(Edge.create(to = GONE)).collect { transition -> if (transition.transitionState == TransitionState.FINISHED) { if (SceneContainerFlag.isEnabled) { sceneInteractor.transitionState .filter { it.isIdle(Scenes.Gone) } .collect { onKeyguardGone() } } else { keyguardTransitionInteractor.transition(Edge.create(to = GONE)).collect { if (it.transitionState == TransitionState.FINISHED) { onKeyguardGone() } } } } } @WorkerThread private fun onKeyguardGone() { Loading packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardDismissActionInteractor.kt +10 −1 Original line number Diff line number Diff line Loading @@ -25,6 +25,9 @@ import com.android.systemui.keyguard.shared.model.KeyguardDone import com.android.systemui.keyguard.shared.model.KeyguardState.ALTERNATE_BOUNCER import com.android.systemui.keyguard.shared.model.KeyguardState.GONE import com.android.systemui.keyguard.shared.model.KeyguardState.PRIMARY_BOUNCER import com.android.systemui.scene.domain.interactor.SceneInteractor import com.android.systemui.scene.shared.flag.SceneContainerFlag import com.android.systemui.scene.shared.model.Scenes import com.android.systemui.util.kotlin.sample import javax.inject.Inject import kotlinx.coroutines.CoroutineScope Loading @@ -48,6 +51,7 @@ constructor( transitionInteractor: KeyguardTransitionInteractor, val dismissInteractor: KeyguardDismissInteractor, @Application private val applicationScope: CoroutineScope, sceneInteractor: SceneInteractor, ) { val dismissAction: Flow<DismissAction> = repository.dismissAction Loading @@ -72,7 +76,12 @@ constructor( ) private val finishedTransitionToGone: Flow<Unit> = transitionInteractor.finishedKeyguardState.filter { it == GONE }.map {} // map to Unit if (SceneContainerFlag.isEnabled) { sceneInteractor.transitionState.filter { it.isIdle(Scenes.Gone) }.map {} } else { transitionInteractor.finishedKeyguardState.filter { it == GONE }.map {} } val executeDismissAction: Flow<() -> KeyguardDone> = merge( finishedTransitionToGone, Loading packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaCarouselController.kt +11 −3 Original line number Diff line number Diff line Loading @@ -74,6 +74,9 @@ import com.android.systemui.plugins.ActivityStarter import com.android.systemui.plugins.FalsingManager import com.android.systemui.qs.PageIndicator import com.android.systemui.res.R import com.android.systemui.scene.domain.interactor.SceneInteractor import com.android.systemui.scene.shared.flag.SceneContainerFlag import com.android.systemui.scene.shared.model.Scenes import com.android.systemui.shared.system.SysUiStatsLog import com.android.systemui.shared.system.SysUiStatsLog.SMARTSPACE_CARD_REPORTED import com.android.systemui.shared.system.SysUiStatsLog.SMART_SPACE_CARD_REPORTED__CARD_TYPE__UNKNOWN_CARD Loading Loading @@ -143,6 +146,7 @@ constructor( private val secureSettings: SecureSettings, private val mediaCarouselViewModel: MediaCarouselViewModel, private val mediaViewControllerFactory: Provider<MediaViewController>, private val sceneInteractor: SceneInteractor, ) : Dumpable { /** The current width of the carousel */ var currentCarouselWidth: Int = 0 Loading Loading @@ -641,9 +645,13 @@ constructor( @VisibleForTesting internal fun listenForAnyStateToGoneKeyguardTransition(scope: CoroutineScope): Job { return scope.launch { keyguardTransitionInteractor .transition(Edge.create(to = GONE)) .filter { it.transitionState == TransitionState.FINISHED } if (SceneContainerFlag.isEnabled) { sceneInteractor.transitionState.filter { it.isIdle(Scenes.Gone) } } else { keyguardTransitionInteractor.transition(Edge.create(to = GONE)).filter { it.transitionState == TransitionState.FINISHED } } .collect { showMediaCarousel() updateHostVisibility() Loading packages/SystemUI/tests/src/com/android/systemui/keyguard/ResourceTrimmerTest.kt +41 −6 Original line number Diff line number Diff line Loading @@ -8,6 +8,8 @@ import android.platform.test.flag.junit.SetFlagsRule import android.testing.AndroidTestingRunner import androidx.test.filters.SmallTest import com.android.systemui.SysuiTestCase import com.android.systemui.flags.DisableSceneContainer import com.android.systemui.flags.EnableSceneContainer import com.android.systemui.flags.Flags import com.android.systemui.flags.fakeFeatureFlagsClassic import com.android.systemui.keyguard.data.repository.fakeKeyguardRepository Loading @@ -19,7 +21,10 @@ import com.android.systemui.kosmos.testDispatcher import com.android.systemui.kosmos.testScope import com.android.systemui.power.domain.interactor.PowerInteractor.Companion.setAsleepForTest import com.android.systemui.power.domain.interactor.powerInteractor import com.android.systemui.scene.data.repository.Idle import com.android.systemui.scene.data.repository.setSceneTransition import com.android.systemui.scene.domain.interactor.sceneInteractor import com.android.systemui.scene.shared.model.Scenes import com.android.systemui.testKosmos import com.android.systemui.util.mockito.any import com.android.systemui.utils.GlobalWindowManager Loading Loading @@ -70,12 +75,13 @@ class ResourceTrimmerTest : SysuiTestCase() { resourceTrimmer = ResourceTrimmer( keyguardInteractor, powerInteractor, kosmos.keyguardTransitionInteractor, globalWindowManager, testScope.backgroundScope, kosmos.testDispatcher, featureFlags, powerInteractor = powerInteractor, keyguardTransitionInteractor = kosmos.keyguardTransitionInteractor, globalWindowManager = globalWindowManager, applicationScope = testScope.backgroundScope, bgDispatcher = kosmos.testDispatcher, featureFlags = featureFlags, sceneInteractor = kosmos.sceneInteractor, ) resourceTrimmer.start() } Loading Loading @@ -204,6 +210,7 @@ class ResourceTrimmerTest : SysuiTestCase() { @Test @EnableFlags(com.android.systemui.Flags.FLAG_TRIM_RESOURCES_WITH_BACKGROUND_TRIM_AT_LOCK) @DisableSceneContainer fun keyguardTransitionsToGone_trimsFontCache() = testScope.runTest { keyguardTransitionRepository.sendTransitionSteps( Loading @@ -219,6 +226,20 @@ class ResourceTrimmerTest : SysuiTestCase() { @Test @EnableFlags(com.android.systemui.Flags.FLAG_TRIM_RESOURCES_WITH_BACKGROUND_TRIM_AT_LOCK) @EnableSceneContainer fun keyguardTransitionsToGone_trimsFontCache_scene_container() = testScope.runTest { kosmos.setSceneTransition(Idle(Scenes.Gone)) verify(globalWindowManager, times(1)) .trimMemory(ComponentCallbacks2.TRIM_MEMORY_UI_HIDDEN) verify(globalWindowManager, times(1)).trimCaches(HardwareRenderer.CACHE_TRIM_FONT) verifyNoMoreInteractions(globalWindowManager) } @Test @EnableFlags(com.android.systemui.Flags.FLAG_TRIM_RESOURCES_WITH_BACKGROUND_TRIM_AT_LOCK) @DisableSceneContainer fun keyguardTransitionsToGone_flagDisabled_doesNotTrimFontCache() = testScope.runTest { featureFlags.set(Flags.TRIM_FONT_CACHES_AT_UNLOCK, false) Loading @@ -232,4 +253,18 @@ class ResourceTrimmerTest : SysuiTestCase() { .trimMemory(ComponentCallbacks2.TRIM_MEMORY_UI_HIDDEN) verify(globalWindowManager, times(0)).trimCaches(any()) } @Test @EnableFlags(com.android.systemui.Flags.FLAG_TRIM_RESOURCES_WITH_BACKGROUND_TRIM_AT_LOCK) @EnableSceneContainer fun keyguardTransitionsToGone_flagDisabled_doesNotTrimFontCache_scene_container() = testScope.runTest { featureFlags.set(Flags.TRIM_FONT_CACHES_AT_UNLOCK, false) kosmos.setSceneTransition(Idle(Scenes.Gone)) // Memory hidden should still be called. verify(globalWindowManager, times(1)) .trimMemory(ComponentCallbacks2.TRIM_MEMORY_UI_HIDDEN) verify(globalWindowManager, times(0)).trimCaches(any()) } } packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/KeyguardDismissActionInteractorTest.kt +35 −4 Original line number Diff line number Diff line Loading @@ -21,12 +21,18 @@ import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest import com.android.systemui.SysuiTestCase import com.android.systemui.coroutines.collectLastValue import com.android.systemui.flags.DisableSceneContainer import com.android.systemui.flags.EnableSceneContainer import com.android.systemui.keyguard.data.repository.fakeKeyguardRepository import com.android.systemui.keyguard.data.repository.fakeKeyguardTransitionRepository import com.android.systemui.keyguard.shared.model.DismissAction import com.android.systemui.keyguard.shared.model.KeyguardDone import com.android.systemui.keyguard.shared.model.KeyguardState import com.android.systemui.kosmos.testScope import com.android.systemui.scene.data.repository.Idle import com.android.systemui.scene.data.repository.setSceneTransition import com.android.systemui.scene.domain.interactor.sceneInteractor import com.android.systemui.scene.shared.model.Scenes import com.android.systemui.testKosmos import com.google.common.truth.Truth.assertThat import kotlinx.coroutines.ExperimentalCoroutinesApi Loading Loading @@ -65,10 +71,11 @@ class KeyguardDismissActionInteractorTest : SysuiTestCase() { underTest = KeyguardDismissActionInteractor( keyguardRepository, kosmos.keyguardTransitionInteractor, dismissInteractorWithDependencies.interactor, testScope.backgroundScope, repository = keyguardRepository, transitionInteractor = kosmos.keyguardTransitionInteractor, dismissInteractor = dismissInteractorWithDependencies.interactor, applicationScope = testScope.backgroundScope, sceneInteractor = kosmos.sceneInteractor, ) } Loading Loading @@ -153,6 +160,7 @@ class KeyguardDismissActionInteractorTest : SysuiTestCase() { } @Test @DisableSceneContainer fun executeDismissAction_dismissKeyguardRequestWithoutImmediateDismissAction() = testScope.runTest { val executeDismissAction by collectLastValue(underTest.executeDismissAction) Loading @@ -178,6 +186,29 @@ class KeyguardDismissActionInteractorTest : SysuiTestCase() { assertThat(executeDismissAction).isNotNull() } @Test @EnableSceneContainer fun executeDismissAction_dismissKeyguardRequestWithoutImmediateDismissAction_scene_container() = testScope.runTest { val executeDismissAction by collectLastValue(underTest.executeDismissAction) // WHEN a keyguard action will run after the keyguard is gone val onDismissAction = {} keyguardRepository.setDismissAction( DismissAction.RunAfterKeyguardGone( dismissAction = onDismissAction, onCancelAction = {}, message = "message", willAnimateOnLockscreen = true, ) ) assertThat(executeDismissAction).isNull() kosmos.setSceneTransition(Idle(Scenes.Gone)) assertThat(executeDismissAction).isNotNull() } @Test fun resetDismissAction() = testScope.runTest { Loading Loading
packages/SystemUI/src/com/android/systemui/keyguard/ResourceTrimmer.kt +14 −3 Original line number Diff line number Diff line Loading @@ -33,12 +33,16 @@ import com.android.systemui.keyguard.shared.model.Edge import com.android.systemui.keyguard.shared.model.KeyguardState.GONE import com.android.systemui.keyguard.shared.model.TransitionState import com.android.systemui.power.domain.interactor.PowerInteractor import com.android.systemui.scene.domain.interactor.SceneInteractor import com.android.systemui.scene.shared.flag.SceneContainerFlag import com.android.systemui.scene.shared.model.Scenes import com.android.systemui.utils.GlobalWindowManager import javax.inject.Inject import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.flow.filter import kotlinx.coroutines.flow.map import kotlinx.coroutines.launch Loading @@ -60,6 +64,7 @@ constructor( @Application private val applicationScope: CoroutineScope, @Background private val bgDispatcher: CoroutineDispatcher, private val featureFlags: FeatureFlags, private val sceneInteractor: SceneInteractor, ) : CoreStartable, WakefulnessLifecycle.Observer { override fun start() { Loading @@ -85,13 +90,19 @@ constructor( applicationScope.launch(bgDispatcher) { // We drop 1 to avoid triggering on initial collect(). keyguardTransitionInteractor.transition(Edge.create(to = GONE)).collect { transition -> if (transition.transitionState == TransitionState.FINISHED) { if (SceneContainerFlag.isEnabled) { sceneInteractor.transitionState .filter { it.isIdle(Scenes.Gone) } .collect { onKeyguardGone() } } else { keyguardTransitionInteractor.transition(Edge.create(to = GONE)).collect { if (it.transitionState == TransitionState.FINISHED) { onKeyguardGone() } } } } } @WorkerThread private fun onKeyguardGone() { Loading
packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardDismissActionInteractor.kt +10 −1 Original line number Diff line number Diff line Loading @@ -25,6 +25,9 @@ import com.android.systemui.keyguard.shared.model.KeyguardDone import com.android.systemui.keyguard.shared.model.KeyguardState.ALTERNATE_BOUNCER import com.android.systemui.keyguard.shared.model.KeyguardState.GONE import com.android.systemui.keyguard.shared.model.KeyguardState.PRIMARY_BOUNCER import com.android.systemui.scene.domain.interactor.SceneInteractor import com.android.systemui.scene.shared.flag.SceneContainerFlag import com.android.systemui.scene.shared.model.Scenes import com.android.systemui.util.kotlin.sample import javax.inject.Inject import kotlinx.coroutines.CoroutineScope Loading @@ -48,6 +51,7 @@ constructor( transitionInteractor: KeyguardTransitionInteractor, val dismissInteractor: KeyguardDismissInteractor, @Application private val applicationScope: CoroutineScope, sceneInteractor: SceneInteractor, ) { val dismissAction: Flow<DismissAction> = repository.dismissAction Loading @@ -72,7 +76,12 @@ constructor( ) private val finishedTransitionToGone: Flow<Unit> = transitionInteractor.finishedKeyguardState.filter { it == GONE }.map {} // map to Unit if (SceneContainerFlag.isEnabled) { sceneInteractor.transitionState.filter { it.isIdle(Scenes.Gone) }.map {} } else { transitionInteractor.finishedKeyguardState.filter { it == GONE }.map {} } val executeDismissAction: Flow<() -> KeyguardDone> = merge( finishedTransitionToGone, Loading
packages/SystemUI/src/com/android/systemui/media/controls/ui/controller/MediaCarouselController.kt +11 −3 Original line number Diff line number Diff line Loading @@ -74,6 +74,9 @@ import com.android.systemui.plugins.ActivityStarter import com.android.systemui.plugins.FalsingManager import com.android.systemui.qs.PageIndicator import com.android.systemui.res.R import com.android.systemui.scene.domain.interactor.SceneInteractor import com.android.systemui.scene.shared.flag.SceneContainerFlag import com.android.systemui.scene.shared.model.Scenes import com.android.systemui.shared.system.SysUiStatsLog import com.android.systemui.shared.system.SysUiStatsLog.SMARTSPACE_CARD_REPORTED import com.android.systemui.shared.system.SysUiStatsLog.SMART_SPACE_CARD_REPORTED__CARD_TYPE__UNKNOWN_CARD Loading Loading @@ -143,6 +146,7 @@ constructor( private val secureSettings: SecureSettings, private val mediaCarouselViewModel: MediaCarouselViewModel, private val mediaViewControllerFactory: Provider<MediaViewController>, private val sceneInteractor: SceneInteractor, ) : Dumpable { /** The current width of the carousel */ var currentCarouselWidth: Int = 0 Loading Loading @@ -641,9 +645,13 @@ constructor( @VisibleForTesting internal fun listenForAnyStateToGoneKeyguardTransition(scope: CoroutineScope): Job { return scope.launch { keyguardTransitionInteractor .transition(Edge.create(to = GONE)) .filter { it.transitionState == TransitionState.FINISHED } if (SceneContainerFlag.isEnabled) { sceneInteractor.transitionState.filter { it.isIdle(Scenes.Gone) } } else { keyguardTransitionInteractor.transition(Edge.create(to = GONE)).filter { it.transitionState == TransitionState.FINISHED } } .collect { showMediaCarousel() updateHostVisibility() Loading
packages/SystemUI/tests/src/com/android/systemui/keyguard/ResourceTrimmerTest.kt +41 −6 Original line number Diff line number Diff line Loading @@ -8,6 +8,8 @@ import android.platform.test.flag.junit.SetFlagsRule import android.testing.AndroidTestingRunner import androidx.test.filters.SmallTest import com.android.systemui.SysuiTestCase import com.android.systemui.flags.DisableSceneContainer import com.android.systemui.flags.EnableSceneContainer import com.android.systemui.flags.Flags import com.android.systemui.flags.fakeFeatureFlagsClassic import com.android.systemui.keyguard.data.repository.fakeKeyguardRepository Loading @@ -19,7 +21,10 @@ import com.android.systemui.kosmos.testDispatcher import com.android.systemui.kosmos.testScope import com.android.systemui.power.domain.interactor.PowerInteractor.Companion.setAsleepForTest import com.android.systemui.power.domain.interactor.powerInteractor import com.android.systemui.scene.data.repository.Idle import com.android.systemui.scene.data.repository.setSceneTransition import com.android.systemui.scene.domain.interactor.sceneInteractor import com.android.systemui.scene.shared.model.Scenes import com.android.systemui.testKosmos import com.android.systemui.util.mockito.any import com.android.systemui.utils.GlobalWindowManager Loading Loading @@ -70,12 +75,13 @@ class ResourceTrimmerTest : SysuiTestCase() { resourceTrimmer = ResourceTrimmer( keyguardInteractor, powerInteractor, kosmos.keyguardTransitionInteractor, globalWindowManager, testScope.backgroundScope, kosmos.testDispatcher, featureFlags, powerInteractor = powerInteractor, keyguardTransitionInteractor = kosmos.keyguardTransitionInteractor, globalWindowManager = globalWindowManager, applicationScope = testScope.backgroundScope, bgDispatcher = kosmos.testDispatcher, featureFlags = featureFlags, sceneInteractor = kosmos.sceneInteractor, ) resourceTrimmer.start() } Loading Loading @@ -204,6 +210,7 @@ class ResourceTrimmerTest : SysuiTestCase() { @Test @EnableFlags(com.android.systemui.Flags.FLAG_TRIM_RESOURCES_WITH_BACKGROUND_TRIM_AT_LOCK) @DisableSceneContainer fun keyguardTransitionsToGone_trimsFontCache() = testScope.runTest { keyguardTransitionRepository.sendTransitionSteps( Loading @@ -219,6 +226,20 @@ class ResourceTrimmerTest : SysuiTestCase() { @Test @EnableFlags(com.android.systemui.Flags.FLAG_TRIM_RESOURCES_WITH_BACKGROUND_TRIM_AT_LOCK) @EnableSceneContainer fun keyguardTransitionsToGone_trimsFontCache_scene_container() = testScope.runTest { kosmos.setSceneTransition(Idle(Scenes.Gone)) verify(globalWindowManager, times(1)) .trimMemory(ComponentCallbacks2.TRIM_MEMORY_UI_HIDDEN) verify(globalWindowManager, times(1)).trimCaches(HardwareRenderer.CACHE_TRIM_FONT) verifyNoMoreInteractions(globalWindowManager) } @Test @EnableFlags(com.android.systemui.Flags.FLAG_TRIM_RESOURCES_WITH_BACKGROUND_TRIM_AT_LOCK) @DisableSceneContainer fun keyguardTransitionsToGone_flagDisabled_doesNotTrimFontCache() = testScope.runTest { featureFlags.set(Flags.TRIM_FONT_CACHES_AT_UNLOCK, false) Loading @@ -232,4 +253,18 @@ class ResourceTrimmerTest : SysuiTestCase() { .trimMemory(ComponentCallbacks2.TRIM_MEMORY_UI_HIDDEN) verify(globalWindowManager, times(0)).trimCaches(any()) } @Test @EnableFlags(com.android.systemui.Flags.FLAG_TRIM_RESOURCES_WITH_BACKGROUND_TRIM_AT_LOCK) @EnableSceneContainer fun keyguardTransitionsToGone_flagDisabled_doesNotTrimFontCache_scene_container() = testScope.runTest { featureFlags.set(Flags.TRIM_FONT_CACHES_AT_UNLOCK, false) kosmos.setSceneTransition(Idle(Scenes.Gone)) // Memory hidden should still be called. verify(globalWindowManager, times(1)) .trimMemory(ComponentCallbacks2.TRIM_MEMORY_UI_HIDDEN) verify(globalWindowManager, times(0)).trimCaches(any()) } }
packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/KeyguardDismissActionInteractorTest.kt +35 −4 Original line number Diff line number Diff line Loading @@ -21,12 +21,18 @@ import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest import com.android.systemui.SysuiTestCase import com.android.systemui.coroutines.collectLastValue import com.android.systemui.flags.DisableSceneContainer import com.android.systemui.flags.EnableSceneContainer import com.android.systemui.keyguard.data.repository.fakeKeyguardRepository import com.android.systemui.keyguard.data.repository.fakeKeyguardTransitionRepository import com.android.systemui.keyguard.shared.model.DismissAction import com.android.systemui.keyguard.shared.model.KeyguardDone import com.android.systemui.keyguard.shared.model.KeyguardState import com.android.systemui.kosmos.testScope import com.android.systemui.scene.data.repository.Idle import com.android.systemui.scene.data.repository.setSceneTransition import com.android.systemui.scene.domain.interactor.sceneInteractor import com.android.systemui.scene.shared.model.Scenes import com.android.systemui.testKosmos import com.google.common.truth.Truth.assertThat import kotlinx.coroutines.ExperimentalCoroutinesApi Loading Loading @@ -65,10 +71,11 @@ class KeyguardDismissActionInteractorTest : SysuiTestCase() { underTest = KeyguardDismissActionInteractor( keyguardRepository, kosmos.keyguardTransitionInteractor, dismissInteractorWithDependencies.interactor, testScope.backgroundScope, repository = keyguardRepository, transitionInteractor = kosmos.keyguardTransitionInteractor, dismissInteractor = dismissInteractorWithDependencies.interactor, applicationScope = testScope.backgroundScope, sceneInteractor = kosmos.sceneInteractor, ) } Loading Loading @@ -153,6 +160,7 @@ class KeyguardDismissActionInteractorTest : SysuiTestCase() { } @Test @DisableSceneContainer fun executeDismissAction_dismissKeyguardRequestWithoutImmediateDismissAction() = testScope.runTest { val executeDismissAction by collectLastValue(underTest.executeDismissAction) Loading @@ -178,6 +186,29 @@ class KeyguardDismissActionInteractorTest : SysuiTestCase() { assertThat(executeDismissAction).isNotNull() } @Test @EnableSceneContainer fun executeDismissAction_dismissKeyguardRequestWithoutImmediateDismissAction_scene_container() = testScope.runTest { val executeDismissAction by collectLastValue(underTest.executeDismissAction) // WHEN a keyguard action will run after the keyguard is gone val onDismissAction = {} keyguardRepository.setDismissAction( DismissAction.RunAfterKeyguardGone( dismissAction = onDismissAction, onCancelAction = {}, message = "message", willAnimateOnLockscreen = true, ) ) assertThat(executeDismissAction).isNull() kosmos.setSceneTransition(Idle(Scenes.Gone)) assertThat(executeDismissAction).isNotNull() } @Test fun resetDismissAction() = testScope.runTest { Loading