summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Andreas Miko <amiko@google.com> 2024-07-03 15:40:58 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2024-07-03 15:40:58 +0000
commitfa0bf38af7eafb71e4425101e4ff0085d8036cf6 (patch)
tree17855e33a601aabeab96c5f10935914bc5112456
parentef2629a54361ebaad857293cd09609b975ed0333 (diff)
parent27a87000cfd86e5f20619ee4b32b50b01b3f1b36 (diff)
Merge changes from topic "fix-kti" into main
* changes: [Scene container] Fix StatusBarKeyguardViewManagerInteractor Refactor internal functions to InternalKeyguardTransitionInteractor Fix KeyguardTransitionInteractorTest Consolidate isInTransitionWhere()
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardTransitionInteractorTest.kt178
-rw-r--r--packages/SystemUI/multivalentTests/src/com/android/systemui/scene/domain/interactor/SceneInteractorTest.kt8
-rw-r--r--packages/SystemUI/src/com/android/systemui/deviceentry/data/repository/DeviceEntryFaceAuthRepository.kt2
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromAlternateBouncerTransitionInteractor.kt1
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromAodTransitionInteractor.kt1
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromDozingTransitionInteractor.kt1
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromDreamingLockscreenHostedTransitionInteractor.kt1
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromDreamingTransitionInteractor.kt1
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromGlanceableHubTransitionInteractor.kt1
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromGoneTransitionInteractor.kt1
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromLockscreenTransitionInteractor.kt5
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromOccludedTransitionInteractor.kt1
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromPrimaryBouncerTransitionInteractor.kt1
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/InternalKeyguardTransitionInteractor.kt71
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardEnabledInteractor.kt5
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardOcclusionInteractor.kt3
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardTransitionBootInteractor.kt3
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardTransitionInteractor.kt105
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/TransitionInteractor.kt17
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/WindowManagerLockscreenVisibilityInteractor.kt10
-rw-r--r--packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/scenetransition/LockscreenSceneTransitionInteractor.kt21
-rw-r--r--packages/SystemUI/src/com/android/systemui/scene/domain/interactor/SceneInteractor.kt9
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/domain/interactor/StatusBarKeyguardViewManagerInteractor.kt18
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModel.kt2
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/shade/NotificationPanelViewControllerBaseTest.java2
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/FromAlternateBouncerTransitionInteractorKosmos.kt1
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/FromAodTransitionInteractorKosmos.kt1
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/FromDozingTransitionInteractorKosmos.kt1
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/FromDreamingLockscreenHostedTransitionInteractorKosmos.kt1
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/FromDreamingTransitionInteractorKosmos.kt1
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/FromGlanceableHubTransitionInteractorKosmos.kt1
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/FromGoneTransitionInteractorKosmos.kt1
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/FromLockscreenTransitionInteractorKosmos.kt1
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/FromOccludedTransitionInteractorKosmos.kt1
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/FromPrimaryBouncerTransitionInteractorKosmos.kt1
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/InternalKeyguardTransitionInteractorKosmos.kt27
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardEnabledInteractorKosmos.kt1
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardTransitionBootInteractorKosmos.kt1
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardTransitionInteractorKosmos.kt2
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/scenetransition/LockscreenSceneTransitionInteractor.kt2
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/scene/domain/interactor/SceneInteractorKosmos.kt4
-rw-r--r--packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/domain/interactor/KeyguardOcclusionInteractorKosmos.kt2
42 files changed, 258 insertions, 259 deletions
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardTransitionInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardTransitionInteractorTest.kt
index 40918a48f6c3..a8eccc5add1a 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardTransitionInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardTransitionInteractorTest.kt
@@ -19,7 +19,6 @@ package com.android.systemui.keyguard.domain.interactor
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.coroutines.collectValues
import com.android.systemui.flags.DisableSceneContainer
@@ -42,19 +41,15 @@ import com.android.systemui.keyguard.shared.model.TransitionStep
import com.android.systemui.kosmos.testScope
import com.android.systemui.scene.data.repository.Idle
import com.android.systemui.scene.data.repository.Transition
-import com.android.systemui.scene.data.repository.sceneContainerRepository
import com.android.systemui.scene.data.repository.setSceneTransition
import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
import junit.framework.Assert.assertEquals
import kotlinx.coroutines.flow.MutableSharedFlow
-import kotlinx.coroutines.flow.MutableStateFlow
-import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.test.runCurrent
import kotlinx.coroutines.test.runTest
import org.junit.Assert.assertThrows
-import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
@@ -67,36 +62,6 @@ class KeyguardTransitionInteractorTest : SysuiTestCase() {
val repository = kosmos.fakeKeyguardTransitionRepository
val testScope = kosmos.testScope
- private val sceneTransitions =
- MutableStateFlow<ObservableTransitionState>(
- ObservableTransitionState.Idle(Scenes.Lockscreen)
- )
-
- private val lsToGone =
- ObservableTransitionState.Transition(
- Scenes.Lockscreen,
- Scenes.Gone,
- flowOf(Scenes.Lockscreen),
- flowOf(0f),
- false,
- flowOf(false)
- )
-
- private val goneToLs =
- ObservableTransitionState.Transition(
- Scenes.Gone,
- Scenes.Lockscreen,
- flowOf(Scenes.Lockscreen),
- flowOf(0f),
- false,
- flowOf(false)
- )
-
- @Before
- fun setUp() {
- kosmos.sceneContainerRepository.setTransitionState(sceneTransitions)
- }
-
@Test
fun transitionCollectorsReceivesOnlyAppropriateEvents() =
testScope.runTest {
@@ -318,7 +283,7 @@ class KeyguardTransitionInteractorTest : SysuiTestCase() {
@Test
fun isInTransitionToAnyState() =
testScope.runTest {
- val inTransition by collectValues(underTest.isInTransitionToAnyState)
+ val inTransition by collectValues(underTest.isInTransition)
assertEquals(
listOf(
@@ -374,9 +339,50 @@ class KeyguardTransitionInteractorTest : SysuiTestCase() {
}
@Test
+ @EnableSceneContainer
+ fun isInTransition_withScene() =
+ testScope.runTest {
+ val inTransition by collectValues(underTest.isInTransition)
+
+ assertEquals(
+ listOf(
+ false,
+ true, // The repo is seeded with a transition from OFF to LOCKSCREEN.
+ false,
+ ),
+ inTransition
+ )
+
+ kosmos.setSceneTransition(Transition(Scenes.Gone, Scenes.Bouncer))
+
+ assertEquals(
+ listOf(
+ false,
+ true,
+ false,
+ true,
+ ),
+ inTransition
+ )
+
+ kosmos.setSceneTransition(Idle(Scenes.Bouncer))
+
+ assertEquals(
+ listOf(
+ false,
+ true,
+ false,
+ true,
+ false,
+ ),
+ inTransition
+ )
+ }
+
+ @Test
fun isInTransitionToAnyState_finishedStateIsStartedStateAfterCancels() =
testScope.runTest {
- val inTransition by collectValues(underTest.isInTransitionToAnyState)
+ val inTransition by collectValues(underTest.isInTransition)
assertEquals(
listOf(
@@ -731,92 +737,6 @@ class KeyguardTransitionInteractorTest : SysuiTestCase() {
}
@Test
- fun isInTransitionFromStateWhere() =
- testScope.runTest {
- val results by collectValues(underTest.isInTransitionFromStateWhere { it == DOZING })
-
- sendSteps(
- TransitionStep(AOD, DOZING, 0f, STARTED),
- TransitionStep(AOD, DOZING, 0.5f, RUNNING),
- TransitionStep(AOD, DOZING, 1f, FINISHED),
- )
-
- assertThat(results)
- .isEqualTo(
- listOf(
- false,
- )
- )
-
- sendSteps(
- TransitionStep(DOZING, GONE, 0f, STARTED),
- )
-
- assertThat(results)
- .isEqualTo(
- listOf(
- false,
- true,
- )
- )
-
- sendSteps(
- TransitionStep(DOZING, GONE, 0f, RUNNING),
- )
-
- assertThat(results)
- .isEqualTo(
- listOf(
- false,
- true,
- )
- )
-
- sendSteps(
- TransitionStep(DOZING, GONE, 0f, FINISHED),
- )
-
- assertThat(results)
- .isEqualTo(
- listOf(
- false,
- true,
- false,
- )
- )
-
- sendSteps(
- TransitionStep(GONE, DOZING, 0f, STARTED),
- TransitionStep(GONE, DOZING, 0f, RUNNING),
- TransitionStep(GONE, DOZING, 1f, FINISHED),
- )
-
- assertThat(results)
- .isEqualTo(
- listOf(
- false,
- true,
- false,
- )
- )
-
- sendSteps(
- TransitionStep(DOZING, GONE, 0f, STARTED),
- TransitionStep(DOZING, GONE, 0f, RUNNING),
- )
-
- assertThat(results)
- .isEqualTo(
- listOf(
- false,
- true,
- false,
- true,
- )
- )
- }
-
- @Test
fun isInTransitionWhere() =
testScope.runTest {
val results by
@@ -1599,7 +1519,7 @@ class KeyguardTransitionInteractorTest : SysuiTestCase() {
val currentStatesConverted by
collectValues(underTest.transition(Edge.create(LOCKSCREEN, UNDEFINED)))
- sceneTransitions.value = lsToGone
+ kosmos.setSceneTransition(Transition(Scenes.Lockscreen, Scenes.Gone))
val sendStep1 = TransitionStep(LOCKSCREEN, UNDEFINED, 0f, STARTED)
val sendStep2 = TransitionStep(LOCKSCREEN, UNDEFINED, 1f, FINISHED)
val sendStep3 = TransitionStep(LOCKSCREEN, AOD, 0f, STARTED)
@@ -1615,7 +1535,7 @@ class KeyguardTransitionInteractorTest : SysuiTestCase() {
testScope.runTest {
val currentStates by collectValues(underTest.transition(Edge.create(LOCKSCREEN, GONE)))
- sceneTransitions.value = goneToLs
+ kosmos.setSceneTransition(Transition(Scenes.Gone, Scenes.Lockscreen))
val sendStep1 = TransitionStep(LOCKSCREEN, UNDEFINED, 0f, STARTED)
val sendStep2 = TransitionStep(LOCKSCREEN, UNDEFINED, 1f, FINISHED)
val sendStep3 = TransitionStep(LOCKSCREEN, AOD, 0f, STARTED)
@@ -1631,7 +1551,7 @@ class KeyguardTransitionInteractorTest : SysuiTestCase() {
val currentStates by
collectValues(underTest.transition(Edge.create(LOCKSCREEN, DOZING)))
- sceneTransitions.value = goneToLs
+ kosmos.setSceneTransition(Transition(Scenes.Gone, Scenes.Lockscreen))
val sendStep1 = TransitionStep(LOCKSCREEN, DOZING, 0f, STARTED)
val sendStep2 = TransitionStep(LOCKSCREEN, DOZING, 1f, FINISHED)
val sendStep3 = TransitionStep(LOCKSCREEN, AOD, 0f, STARTED)
@@ -1648,7 +1568,7 @@ class KeyguardTransitionInteractorTest : SysuiTestCase() {
val currentStatesReversed by
collectValues(underTest.transition(Edge.create(null, LOCKSCREEN)))
- sceneTransitions.value = goneToLs
+ kosmos.setSceneTransition(Transition(Scenes.Gone, Scenes.Lockscreen))
val sendStep1 = TransitionStep(LOCKSCREEN, DOZING, 0f, STARTED)
val sendStep2 = TransitionStep(LOCKSCREEN, DOZING, 1f, FINISHED)
val sendStep3 = TransitionStep(LOCKSCREEN, AOD, 0f, STARTED)
@@ -1666,7 +1586,7 @@ class KeyguardTransitionInteractorTest : SysuiTestCase() {
val currentStates by collectValues(underTest.transition(Edge.create(null, UNDEFINED)))
val currentStatesMapped by collectValues(underTest.transition(Edge.create(null, GONE)))
- sceneTransitions.value = lsToGone
+ kosmos.setSceneTransition(Transition(Scenes.Lockscreen, Scenes.Gone))
val sendStep1 = TransitionStep(LOCKSCREEN, UNDEFINED, 0f, STARTED)
val sendStep2 = TransitionStep(LOCKSCREEN, UNDEFINED, 1f, FINISHED)
val sendStep3 = TransitionStep(UNDEFINED, AOD, 0f, STARTED)
@@ -1683,7 +1603,7 @@ class KeyguardTransitionInteractorTest : SysuiTestCase() {
testScope.runTest {
val currentStatesMapped by collectValues(underTest.transition(Edge.create(null, GONE)))
- sceneTransitions.value = goneToLs
+ kosmos.setSceneTransition(Transition(Scenes.Gone, Scenes.Lockscreen))
val sendStep1 = TransitionStep(LOCKSCREEN, UNDEFINED, 0f, STARTED)
val sendStep2 = TransitionStep(LOCKSCREEN, UNDEFINED, 1f, FINISHED)
val sendStep3 = TransitionStep(UNDEFINED, AOD, 0f, STARTED)
diff --git a/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/domain/interactor/SceneInteractorTest.kt b/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/domain/interactor/SceneInteractorTest.kt
index 5242fe33a281..3acb328e81af 100644
--- a/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/domain/interactor/SceneInteractorTest.kt
+++ b/packages/SystemUI/multivalentTests/src/com/android/systemui/scene/domain/interactor/SceneInteractorTest.kt
@@ -24,6 +24,7 @@ import com.android.compose.animation.scene.ObservableTransitionState
import com.android.compose.animation.scene.SceneKey
import com.android.systemui.SysuiTestCase
import com.android.systemui.coroutines.collectLastValue
+import com.android.systemui.deviceentry.domain.interactor.deviceUnlockedInteractor
import com.android.systemui.flags.EnableSceneContainer
import com.android.systemui.keyguard.data.repository.fakeDeviceEntryFingerprintAuthRepository
import com.android.systemui.keyguard.domain.interactor.keyguardEnabledInteractor
@@ -62,6 +63,13 @@ class SceneInteractorTest : SysuiTestCase() {
private val underTest = kosmos.sceneInteractor
+ init {
+ // Init lazy Fixtures. Accessing them once makes sure that the singletons are initialized
+ // and therefore starts to collect StateFlows eagerly (when there are any).
+ kosmos.deviceUnlockedInteractor
+ kosmos.keyguardEnabledInteractor
+ }
+
@Test
fun allSceneKeys() {
assertThat(underTest.allSceneKeys()).isEqualTo(kosmos.sceneKeys)
diff --git a/packages/SystemUI/src/com/android/systemui/deviceentry/data/repository/DeviceEntryFaceAuthRepository.kt b/packages/SystemUI/src/com/android/systemui/deviceentry/data/repository/DeviceEntryFaceAuthRepository.kt
index 17202639136b..ed30d59a94fa 100644
--- a/packages/SystemUI/src/com/android/systemui/deviceentry/data/repository/DeviceEntryFaceAuthRepository.kt
+++ b/packages/SystemUI/src/com/android/systemui/deviceentry/data/repository/DeviceEntryFaceAuthRepository.kt
@@ -397,7 +397,7 @@ constructor(
Pair(keyguardRepository.isKeyguardGoingAway.isFalse(), "keyguardNotGoingAway"),
Pair(
keyguardTransitionInteractor
- .isInTransitionToStateWhere(KeyguardState::deviceIsAsleepInState)
+ .isInTransitionWhere(toStatePredicate = KeyguardState::deviceIsAsleepInState)
.isFalse(),
"deviceNotTransitioningToAsleepState"
),
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromAlternateBouncerTransitionInteractor.kt b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromAlternateBouncerTransitionInteractor.kt
index 5573f0d5f644..b44a8cf70328 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromAlternateBouncerTransitionInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromAlternateBouncerTransitionInteractor.kt
@@ -56,6 +56,7 @@ class FromAlternateBouncerTransitionInteractor
@Inject
constructor(
override val transitionRepository: KeyguardTransitionRepository,
+ override val internalTransitionInteractor: InternalKeyguardTransitionInteractor,
transitionInteractor: KeyguardTransitionInteractor,
@Background private val scope: CoroutineScope,
@Background bgDispatcher: CoroutineDispatcher,
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromAodTransitionInteractor.kt b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromAodTransitionInteractor.kt
index 2a9ee9fb8779..868c4629dbb3 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromAodTransitionInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromAodTransitionInteractor.kt
@@ -44,6 +44,7 @@ class FromAodTransitionInteractor
@Inject
constructor(
override val transitionRepository: KeyguardTransitionRepository,
+ override val internalTransitionInteractor: InternalKeyguardTransitionInteractor,
transitionInteractor: KeyguardTransitionInteractor,
@Background private val scope: CoroutineScope,
@Background bgDispatcher: CoroutineDispatcher,
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromDozingTransitionInteractor.kt b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromDozingTransitionInteractor.kt
index b423ed980060..3877e7ae1e55 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromDozingTransitionInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromDozingTransitionInteractor.kt
@@ -44,6 +44,7 @@ class FromDozingTransitionInteractor
@Inject
constructor(
override val transitionRepository: KeyguardTransitionRepository,
+ override val internalTransitionInteractor: InternalKeyguardTransitionInteractor,
transitionInteractor: KeyguardTransitionInteractor,
@Background private val scope: CoroutineScope,
@Background bgDispatcher: CoroutineDispatcher,
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromDreamingLockscreenHostedTransitionInteractor.kt b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromDreamingLockscreenHostedTransitionInteractor.kt
index 47aa02a0be52..117dbcfe52c8 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromDreamingLockscreenHostedTransitionInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromDreamingLockscreenHostedTransitionInteractor.kt
@@ -41,6 +41,7 @@ class FromDreamingLockscreenHostedTransitionInteractor
@Inject
constructor(
override val transitionRepository: KeyguardTransitionRepository,
+ override val internalTransitionInteractor: InternalKeyguardTransitionInteractor,
transitionInteractor: KeyguardTransitionInteractor,
@Background private val scope: CoroutineScope,
@Background bgDispatcher: CoroutineDispatcher,
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromDreamingTransitionInteractor.kt b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromDreamingTransitionInteractor.kt
index 7fa197c11e57..97006486b6f1 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromDreamingTransitionInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromDreamingTransitionInteractor.kt
@@ -47,6 +47,7 @@ class FromDreamingTransitionInteractor
@Inject
constructor(
override val transitionRepository: KeyguardTransitionRepository,
+ override val internalTransitionInteractor: InternalKeyguardTransitionInteractor,
transitionInteractor: KeyguardTransitionInteractor,
@Background private val scope: CoroutineScope,
@Background bgDispatcher: CoroutineDispatcher,
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromGlanceableHubTransitionInteractor.kt b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromGlanceableHubTransitionInteractor.kt
index e516fa3c44bb..8041dd933143 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromGlanceableHubTransitionInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromGlanceableHubTransitionInteractor.kt
@@ -50,6 +50,7 @@ constructor(
private val glanceableHubTransitions: GlanceableHubTransitions,
keyguardInteractor: KeyguardInteractor,
override val transitionRepository: KeyguardTransitionRepository,
+ override val internalTransitionInteractor: InternalKeyguardTransitionInteractor,
transitionInteractor: KeyguardTransitionInteractor,
powerInteractor: PowerInteractor,
keyguardOcclusionInteractor: KeyguardOcclusionInteractor,
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromGoneTransitionInteractor.kt b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromGoneTransitionInteractor.kt
index 07a2b0424aba..b084824cd348 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromGoneTransitionInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromGoneTransitionInteractor.kt
@@ -45,6 +45,7 @@ class FromGoneTransitionInteractor
@Inject
constructor(
override val transitionRepository: KeyguardTransitionRepository,
+ override val internalTransitionInteractor: InternalKeyguardTransitionInteractor,
transitionInteractor: KeyguardTransitionInteractor,
@Background private val scope: CoroutineScope,
@Background bgDispatcher: CoroutineDispatcher,
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromLockscreenTransitionInteractor.kt b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromLockscreenTransitionInteractor.kt
index 35a2d58816b4..ff15a1bc34d0 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromLockscreenTransitionInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromLockscreenTransitionInteractor.kt
@@ -57,6 +57,7 @@ class FromLockscreenTransitionInteractor
@Inject
constructor(
override val transitionRepository: KeyguardTransitionRepository,
+ override val internalTransitionInteractor: InternalKeyguardTransitionInteractor,
transitionInteractor: KeyguardTransitionInteractor,
@Background private val scope: CoroutineScope,
@Background bgDispatcher: CoroutineDispatcher,
@@ -128,7 +129,7 @@ constructor(
keyguardInteractor.isAbleToDream
.filterRelevantKeyguardState()
.sampleCombine(
- transitionInteractor.currentTransitionInfoInternal,
+ internalTransitionInteractor.currentTransitionInfoInternal,
finishedKeyguardState,
keyguardInteractor.isActiveDreamLockscreenHosted,
)
@@ -185,7 +186,7 @@ constructor(
shadeRepository.legacyShadeExpansion
.sampleCombine(
startedKeyguardTransitionStep,
- transitionInteractor.currentTransitionInfoInternal,
+ internalTransitionInteractor.currentTransitionInfoInternal,
keyguardInteractor.statusBarState,
keyguardInteractor.isKeyguardDismissible,
)
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromOccludedTransitionInteractor.kt b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromOccludedTransitionInteractor.kt
index 86d4cfb916ed..84ca6672d509 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromOccludedTransitionInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromOccludedTransitionInteractor.kt
@@ -41,6 +41,7 @@ class FromOccludedTransitionInteractor
@Inject
constructor(
override val transitionRepository: KeyguardTransitionRepository,
+ override val internalTransitionInteractor: InternalKeyguardTransitionInteractor,
transitionInteractor: KeyguardTransitionInteractor,
@Background private val scope: CoroutineScope,
@Background bgDispatcher: CoroutineDispatcher,
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromPrimaryBouncerTransitionInteractor.kt b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromPrimaryBouncerTransitionInteractor.kt
index f23b12f35977..f98ed15a21c6 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromPrimaryBouncerTransitionInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/FromPrimaryBouncerTransitionInteractor.kt
@@ -50,6 +50,7 @@ class FromPrimaryBouncerTransitionInteractor
@Inject
constructor(
override val transitionRepository: KeyguardTransitionRepository,
+ override val internalTransitionInteractor: InternalKeyguardTransitionInteractor,
transitionInteractor: KeyguardTransitionInteractor,
@Background private val scope: CoroutineScope,
@Background bgDispatcher: CoroutineDispatcher,
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/InternalKeyguardTransitionInteractor.kt b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/InternalKeyguardTransitionInteractor.kt
new file mode 100644
index 000000000000..a51421c10309
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/InternalKeyguardTransitionInteractor.kt
@@ -0,0 +1,71 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.keyguard.domain.interactor
+
+import android.annotation.FloatRange
+import com.android.systemui.dagger.SysUISingleton
+import com.android.systemui.keyguard.data.repository.KeyguardTransitionRepository
+import com.android.systemui.keyguard.shared.model.TransitionInfo
+import com.android.systemui.keyguard.shared.model.TransitionState
+import java.util.UUID
+import javax.inject.Inject
+import kotlinx.coroutines.flow.StateFlow
+
+/**
+ * This interactor provides direct access to [KeyguardTransitionRepository] internals and exposes
+ * functions to directly modify the transition state.
+ */
+@SysUISingleton
+class InternalKeyguardTransitionInteractor
+@Inject
+constructor(
+ private val repository: KeyguardTransitionRepository,
+) {
+
+ /**
+ * The [TransitionInfo] of the most recent call to
+ * [KeyguardTransitionRepository.startTransition].
+ *
+ * This should only be used by keyguard transition internals (From*TransitionInteractor and
+ * related classes). Other consumers of keyguard state in System UI should use
+ * [startedKeyguardState], [currentKeyguardState], and related flows.
+ *
+ * Keyguard internals use this to determine the most up-to-date KeyguardState that we've
+ * requested a transition to, even if the animator running the transition on the main thread has
+ * not yet emitted the STARTED TransitionStep.
+ *
+ * For example: if we're finished in GONE and press the power button twice very quickly, we may
+ * request a transition to AOD, but then receive the second power button press prior to the
+ * STARTED -> AOD transition step emitting. We still need the FromAodTransitionInteractor to
+ * request a transition from AOD -> LOCKSCREEN in response to the power press, even though the
+ * main thread animator hasn't emitted STARTED > AOD yet (which means [startedKeyguardState] is
+ * still GONE, which is not relevant to FromAodTransitionInteractor). In this case, the
+ * interactor can use this current transition info to determine that a STARTED -> AOD step
+ * *will* be emitted, and therefore that it can safely request an AOD -> LOCKSCREEN transition
+ * which will subsequently cancel GONE -> AOD.
+ */
+ internal val currentTransitionInfoInternal: StateFlow<TransitionInfo> =
+ repository.currentTransitionInfoInternal
+
+ suspend fun startTransition(info: TransitionInfo) = repository.startTransition(info)
+
+ fun updateTransition(
+ transitionId: UUID,
+ @FloatRange(from = 0.0, to = 1.0) value: Float,
+ state: TransitionState
+ ) = repository.updateTransition(transitionId, value, state)
+}
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardEnabledInteractor.kt b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardEnabledInteractor.kt
index 8d683f0d4375..66efde1c8358 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardEnabledInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardEnabledInteractor.kt
@@ -49,6 +49,7 @@ constructor(
val repository: KeyguardRepository,
val biometricSettingsRepository: BiometricSettingsRepository,
transitionInteractor: KeyguardTransitionInteractor,
+ internalTransitionInteractor: InternalKeyguardTransitionInteractor,
) {
/**
@@ -74,7 +75,7 @@ constructor(
// Whenever the keyguard is disabled...
.filter { enabled -> !enabled }
.sampleCombine(
- transitionInteractor.currentTransitionInfoInternal,
+ internalTransitionInteractor.currentTransitionInfoInternal,
biometricSettingsRepository.isCurrentUserInLockdown
)
.map { (_, transitionInfo, inLockdown) ->
@@ -93,7 +94,7 @@ constructor(
.filter { enabled -> !enabled }
.sampleCombine(
biometricSettingsRepository.isCurrentUserInLockdown,
- transitionInteractor.currentTransitionInfoInternal,
+ internalTransitionInteractor.currentTransitionInfoInternal,
)
.collect { (_, inLockdown, currentTransitionInfo) ->
if (currentTransitionInfo.to != KeyguardState.GONE && !inLockdown) {
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardOcclusionInteractor.kt b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardOcclusionInteractor.kt
index f3856710b1ed..41ccea735f5f 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardOcclusionInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardOcclusionInteractor.kt
@@ -53,6 +53,7 @@ constructor(
private val repository: KeyguardOcclusionRepository,
private val powerInteractor: PowerInteractor,
private val transitionInteractor: KeyguardTransitionInteractor,
+ private val internalTransitionInteractor: InternalKeyguardTransitionInteractor,
keyguardInteractor: KeyguardInteractor,
deviceUnlockedInteractor: Lazy<DeviceUnlockedInteractor>,
) {
@@ -78,7 +79,7 @@ constructor(
// *_BOUNCER -> LOCKSCREEN.
return powerInteractor.detailedWakefulness.value.powerButtonLaunchGestureTriggered &&
KeyguardState.deviceIsAsleepInState(
- transitionInteractor.currentTransitionInfoInternal.value.to
+ internalTransitionInteractor.currentTransitionInfoInternal.value.to
)
}
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardTransitionBootInteractor.kt b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardTransitionBootInteractor.kt
index 5ad7762bb512..b3c9591f5668 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardTransitionBootInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardTransitionBootInteractor.kt
@@ -40,6 +40,7 @@ constructor(
val deviceEntryInteractor: DeviceEntryInteractor,
val deviceProvisioningInteractor: DeviceProvisioningInteractor,
val keyguardTransitionInteractor: KeyguardTransitionInteractor,
+ val internalTransitionInteractor: InternalKeyguardTransitionInteractor,
val repository: KeyguardTransitionRepository,
) : CoreStartable {
@@ -64,7 +65,7 @@ constructor(
}
if (
- keyguardTransitionInteractor.currentTransitionInfoInternal.value.from !=
+ internalTransitionInteractor.currentTransitionInfoInternal.value.from !=
KeyguardState.OFF
) {
Log.e(
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardTransitionInteractor.kt b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardTransitionInteractor.kt
index 2d389aa93d76..f9bfaff80090 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardTransitionInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardTransitionInteractor.kt
@@ -17,7 +17,6 @@
package com.android.systemui.keyguard.domain.interactor
-import android.annotation.FloatRange
import android.annotation.SuppressLint
import android.util.Log
import com.android.compose.animation.scene.SceneKey
@@ -33,14 +32,12 @@ import com.android.systemui.keyguard.shared.model.KeyguardState.DOZING
import com.android.systemui.keyguard.shared.model.KeyguardState.LOCKSCREEN
import com.android.systemui.keyguard.shared.model.KeyguardState.PRIMARY_BOUNCER
import com.android.systemui.keyguard.shared.model.KeyguardState.UNDEFINED
-import com.android.systemui.keyguard.shared.model.TransitionInfo
import com.android.systemui.keyguard.shared.model.TransitionState
import com.android.systemui.keyguard.shared.model.TransitionStep
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.pairwise
-import java.util.UUID
import javax.inject.Inject
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.ExperimentalCoroutinesApi
@@ -50,6 +47,7 @@ import kotlinx.coroutines.flow.MutableSharedFlow
import kotlinx.coroutines.flow.SharedFlow
import kotlinx.coroutines.flow.SharingStarted
import kotlinx.coroutines.flow.StateFlow
+import kotlinx.coroutines.flow.combine
import kotlinx.coroutines.flow.distinctUntilChanged
import kotlinx.coroutines.flow.filter
import kotlinx.coroutines.flow.map
@@ -75,7 +73,7 @@ constructor(
private val fromAlternateBouncerTransitionInteractor:
dagger.Lazy<FromAlternateBouncerTransitionInteractor>,
private val fromDozingTransitionInteractor: dagger.Lazy<FromDozingTransitionInteractor>,
- private val sceneInteractor: dagger.Lazy<SceneInteractor>,
+ private val sceneInteractor: SceneInteractor,
) {
private val transitionMap = mutableMapOf<Edge.StateToState, MutableSharedFlow<TransitionStep>>()
@@ -194,7 +192,7 @@ constructor(
fun SceneKey?.isLockscreenOrNull() = this == Scenes.Lockscreen || this == null
return@filter (fromScene.isLockscreenOrNull() && toScene.isLockscreenOrNull()) ||
- sceneInteractor.get().transitionState.value.isTransitioning(fromScene, toScene)
+ sceneInteractor.transitionState.value.isTransitioning(fromScene, toScene)
}
} else {
flow
@@ -228,7 +226,7 @@ constructor(
stateWithoutSceneContainer: KeyguardState,
): Flow<Float> {
return if (SceneContainerFlag.isEnabled) {
- sceneInteractor.get().transitionProgress(scene)
+ sceneInteractor.transitionProgress(scene)
} else {
transitionValue(stateWithoutSceneContainer)
}
@@ -383,33 +381,14 @@ constructor(
.distinctUntilChanged()
.stateIn(scope, SharingStarted.Eagerly, KeyguardState.OFF)
- /**
- * The [TransitionInfo] of the most recent call to
- * [KeyguardTransitionRepository.startTransition].
- *
- * This should only be used by keyguard transition internals (From*TransitionInteractor and
- * related classes). Other consumers of keyguard state in System UI should use
- * [startedKeyguardState], [currentKeyguardState], and related flows.
- *
- * Keyguard internals use this to determine the most up-to-date KeyguardState that we've
- * requested a transition to, even if the animator running the transition on the main thread has
- * not yet emitted the STARTED TransitionStep.
- *
- * For example: if we're finished in GONE and press the power button twice very quickly, we may
- * request a transition to AOD, but then receive the second power button press prior to the
- * STARTED -> AOD transition step emitting. We still need the FromAodTransitionInteractor to
- * request a transition from AOD -> LOCKSCREEN in response to the power press, even though the
- * main thread animator hasn't emitted STARTED > AOD yet (which means [startedKeyguardState] is
- * still GONE, which is not relevant to FromAodTransitionInteractor). In this case, the
- * interactor can use this current transition info to determine that a STARTED -> AOD step
- * *will* be emitted, and therefore that it can safely request an AOD -> LOCKSCREEN transition
- * which will subsequently cancel GONE -> AOD.
- */
- internal val currentTransitionInfoInternal: StateFlow<TransitionInfo> =
- repository.currentTransitionInfoInternal
-
- /** Whether we've currently STARTED a transition and haven't yet FINISHED it. */
- val isInTransitionToAnyState = isInTransitionWhere({ true }, { true })
+ val isInTransition =
+ combine(
+ isInTransitionWhere({ true }, { true }),
+ sceneInteractor.transitionState,
+ ) { isKeyguardTransitioning, sceneTransitionState ->
+ isKeyguardTransitioning ||
+ (SceneContainerFlag.isEnabled && sceneTransitionState.isTransitioning())
+ }
/**
* Called to start a transition that will ultimately dismiss the keyguard from the current
@@ -422,7 +401,7 @@ constructor(
// TODO(b/336576536): Check if adaptation for scene framework is needed
if (SceneContainerFlag.isEnabled) return
Log.d(TAG, "#startDismissKeyguardTransition(reason=$reason)")
- when (val startedState = currentTransitionInfoInternal.value.to) {
+ when (val startedState = repository.currentTransitionInfoInternal.value.to) {
LOCKSCREEN -> fromLockscreenTransitionInteractor.get().dismissKeyguard()
PRIMARY_BOUNCER -> fromPrimaryBouncerTransitionInteractor.get().dismissPrimaryBouncer()
ALTERNATE_BOUNCER ->
@@ -448,7 +427,7 @@ constructor(
fun isInTransition(edge: Edge, edgeWithoutSceneContainer: Edge? = null): Flow<Boolean> {
return if (SceneContainerFlag.isEnabled) {
if (edge.isSceneWildcardEdge()) {
- sceneInteractor.get().transitionState.map {
+ sceneInteractor.transitionState.map {
when (edge) {
is Edge.StateToState ->
throw IllegalStateException("Should not be reachable.")
@@ -469,30 +448,6 @@ constructor(
}
/**
- * Whether we're in a transition to a [KeyguardState] that matches the given predicate, but
- * haven't yet completed it.
- *
- * If you only care about a single state, instead use the optimized [isInTransition].
- */
- fun isInTransitionToStateWhere(
- stateMatcher: (KeyguardState) -> Boolean,
- ): Flow<Boolean> {
- return isInTransitionWhere(fromStatePredicate = { true }, toStatePredicate = stateMatcher)
- }
-
- /**
- * Whether we're in a transition out of a [KeyguardState] that matches the given predicate, but
- * haven't yet completed it.
- *
- * If you only care about a single state, instead use the optimized [isInTransition].
- */
- fun isInTransitionFromStateWhere(
- stateMatcher: (KeyguardState) -> Boolean,
- ): Flow<Boolean> {
- return isInTransitionWhere(fromStatePredicate = stateMatcher, toStatePredicate = { true })
- }
-
- /**
* Whether we're in a transition between two [KeyguardState]s that match the given predicates,
* but haven't yet completed it.
*
@@ -500,27 +455,15 @@ constructor(
* [isInTransition].
*/
fun isInTransitionWhere(
- fromStatePredicate: (KeyguardState) -> Boolean,
- toStatePredicate: (KeyguardState) -> Boolean,
- ): Flow<Boolean> {
- return isInTransitionWhere { from, to -> fromStatePredicate(from) && toStatePredicate(to) }
- }
-
- /**
- * Whether we're in a transition between two [KeyguardState]s that match the given predicates,
- * but haven't yet completed it.
- *
- * If you only care about a single state for both from and to, instead use the optimized
- * [isInTransition].
- */
- private fun isInTransitionWhere(
- fromToStatePredicate: (KeyguardState, KeyguardState) -> Boolean
+ fromStatePredicate: (KeyguardState) -> Boolean = { true },
+ toStatePredicate: (KeyguardState) -> Boolean = { true },
): Flow<Boolean> {
return repository.transitions
.filter { it.transitionState != TransitionState.CANCELED }
.mapLatest {
it.transitionState != TransitionState.FINISHED &&
- fromToStatePredicate(it.from, it.to)
+ fromStatePredicate(it.from) &&
+ toStatePredicate(it.to)
}
.distinctUntilChanged()
}
@@ -532,9 +475,7 @@ constructor(
fun isFinishedIn(scene: SceneKey, stateWithoutSceneContainer: KeyguardState): Flow<Boolean> {
return if (SceneContainerFlag.isEnabled) {
- sceneInteractor
- .get()
- .transitionState
+ sceneInteractor.transitionState
.map { it.isIdle(scene) || it.isTransitioning(from = scene) }
.distinctUntilChanged()
} else {
@@ -560,14 +501,6 @@ constructor(
return finishedKeyguardState.replayCache.last()
}
- suspend fun startTransition(info: TransitionInfo) = repository.startTransition(info)
-
- fun updateTransition(
- transitionId: UUID,
- @FloatRange(from = 0.0, to = 1.0) value: Float,
- state: TransitionState
- ) = repository.updateTransition(transitionId, value, state)
-
companion object {
private val TAG = KeyguardTransitionInteractor::class.simpleName
}
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/TransitionInteractor.kt b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/TransitionInteractor.kt
index e14820714c9b..973e8989b82a 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/TransitionInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/TransitionInteractor.kt
@@ -57,6 +57,8 @@ sealed class TransitionInteractor(
) {
val name = this::class.simpleName ?: "UnknownTransitionInteractor"
abstract val transitionRepository: KeyguardTransitionRepository
+ abstract val internalTransitionInteractor: InternalKeyguardTransitionInteractor
+
abstract fun start()
/* Use background dispatcher for all [KeyguardTransitionInteractor] flows. Necessary because
@@ -79,14 +81,14 @@ sealed class TransitionInteractor(
// a bugreport.
ownerReason: String = "",
): UUID? {
- if (fromState != transitionInteractor.currentTransitionInfoInternal.value.to) {
+ if (fromState != internalTransitionInteractor.currentTransitionInfoInternal.value.to) {
Log.e(
name,
"Ignoring startTransition: This interactor asked to transition from " +
"$fromState -> $toState, but we last transitioned to " +
- "${transitionInteractor.currentTransitionInfoInternal.value.to}, not " +
- "$fromState. This should never happen - check currentTransitionInfoInternal " +
- "or use filterRelevantKeyguardState before starting transitions."
+ "${internalTransitionInteractor.currentTransitionInfoInternal.value.to}, not" +
+ " $fromState. This should never happen - check currentTransitionInfoInternal" +
+ " or use filterRelevantKeyguardState before starting transitions."
)
if (fromState == transitionInteractor.finishedKeyguardState.replayCache.last()) {
@@ -238,12 +240,11 @@ sealed class TransitionInteractor(
* Whether we're in the KeyguardState relevant to this From*TransitionInteractor (which we know
* from [fromState]).
*
- * This uses [KeyguardTransitionInteractor.currentTransitionInfoInternal], which is more up to
- * date than [startedKeyguardState] as it does not wait for the emission of the first STARTED
- * step.
+ * This uses [currentTransitionInfoInternal], which is more up to date than
+ * [startedKeyguardState] as it does not wait for the emission of the first STARTED step.
*/
fun inOrTransitioningToRelevantKeyguardState(): Boolean {
- return transitionInteractor.currentTransitionInfoInternal.value.to == fromState
+ return internalTransitionInteractor.currentTransitionInfoInternal.value.to == fromState
}
/**
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/WindowManagerLockscreenVisibilityInteractor.kt b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/WindowManagerLockscreenVisibilityInteractor.kt
index 069f65b4efa6..3355ffd83138 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/WindowManagerLockscreenVisibilityInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/WindowManagerLockscreenVisibilityInteractor.kt
@@ -129,7 +129,7 @@ constructor(
}
}
} else {
- transitionInteractor.isInTransitionToAnyState.flatMapLatest { isInTransition ->
+ transitionInteractor.isInTransition.flatMapLatest { isInTransition ->
if (!isInTransition) {
defaultSurfaceBehindVisibility
} else {
@@ -206,11 +206,11 @@ constructor(
transitionInteractor.currentKeyguardState
.sample(transitionInteractor.startedStepWithPrecedingStep, ::Pair)
.map { (currentState, startedWithPrev) ->
- val startedFromStep = startedWithPrev?.previousValue
- val startedStep = startedWithPrev?.newValue
+ val startedFromStep = startedWithPrev.previousValue
+ val startedStep = startedWithPrev.newValue
val returningToGoneAfterCancellation =
- startedStep?.to == KeyguardState.GONE &&
- startedFromStep?.transitionState == TransitionState.CANCELED &&
+ startedStep.to == KeyguardState.GONE &&
+ startedFromStep.transitionState == TransitionState.CANCELED &&
startedFromStep.from == KeyguardState.GONE
if (!returningToGoneAfterCancellation) {
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/scenetransition/LockscreenSceneTransitionInteractor.kt b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/scenetransition/LockscreenSceneTransitionInteractor.kt
index 9b3ba7d8feb0..324811443e9d 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/scenetransition/LockscreenSceneTransitionInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/scenetransition/LockscreenSceneTransitionInteractor.kt
@@ -23,6 +23,7 @@ import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Application
import com.android.systemui.keyguard.data.repository.LockscreenSceneTransitionRepository
import com.android.systemui.keyguard.data.repository.LockscreenSceneTransitionRepository.Companion.DEFAULT_STATE
+import com.android.systemui.keyguard.domain.interactor.InternalKeyguardTransitionInteractor
import com.android.systemui.keyguard.domain.interactor.KeyguardTransitionInteractor
import com.android.systemui.keyguard.shared.model.KeyguardState
import com.android.systemui.keyguard.shared.model.KeyguardState.UNDEFINED
@@ -67,7 +68,8 @@ import kotlinx.coroutines.launch
class LockscreenSceneTransitionInteractor
@Inject
constructor(
- val transitionInteractor: KeyguardTransitionInteractor,
+ private val transitionInteractor: KeyguardTransitionInteractor,
+ private val internalTransitionInteractor: InternalKeyguardTransitionInteractor,
@Application private val applicationScope: CoroutineScope,
private val sceneInteractor: SceneInteractor,
private val repository: LockscreenSceneTransitionRepository,
@@ -123,7 +125,7 @@ constructor(
}
private fun finishCurrentTransition() {
- transitionInteractor.updateTransition(currentTransitionId!!, 1f, FINISHED)
+ internalTransitionInteractor.updateTransition(currentTransitionId!!, 1f, FINISHED)
resetTransitionData()
}
@@ -131,13 +133,13 @@ constructor(
val newTransition =
TransitionInfo(
ownerName = this::class.java.simpleName,
- from = transitionInteractor.currentTransitionInfoInternal.value.to,
+ from = internalTransitionInteractor.currentTransitionInfoInternal.value.to,
to = state,
animator = null,
modeOnCanceled = TransitionModeOnCanceled.REVERSE
)
- currentTransitionId = transitionInteractor.startTransition(newTransition)
- transitionInteractor.updateTransition(currentTransitionId!!, 1f, FINISHED)
+ currentTransitionId = internalTransitionInteractor.startTransition(newTransition)
+ internalTransitionInteractor.updateTransition(currentTransitionId!!, 1f, FINISHED)
resetTransitionData()
}
@@ -150,7 +152,8 @@ constructor(
private suspend fun handleTransition(transition: ObservableTransitionState.Transition) {
if (transition.fromScene == Scenes.Lockscreen) {
if (currentTransitionId != null) {
- val currentToState = transitionInteractor.currentTransitionInfoInternal.value.to
+ val currentToState =
+ internalTransitionInteractor.currentTransitionInfoInternal.value.to
if (currentToState == UNDEFINED) {
transitionKtfTo(transitionInteractor.getStartedFromState())
}
@@ -201,7 +204,7 @@ constructor(
}
private suspend fun startTransitionFromLockscreen() {
- val currentState = transitionInteractor.currentTransitionInfoInternal.value.to
+ val currentState = internalTransitionInteractor.currentTransitionInfoInternal.value.to
val newTransition =
TransitionInfo(
ownerName = this::class.java.simpleName,
@@ -217,12 +220,12 @@ constructor(
if (currentTransitionId != null) {
resetTransitionData()
}
- currentTransitionId = transitionInteractor.startTransition(transitionInfo)
+ currentTransitionId = internalTransitionInteractor.startTransition(transitionInfo)
}
private fun updateProgress(progress: Float) {
if (currentTransitionId == null) return
- transitionInteractor.updateTransition(
+ internalTransitionInteractor.updateTransition(
currentTransitionId!!,
progress.coerceIn(0f, 1f),
RUNNING
diff --git a/packages/SystemUI/src/com/android/systemui/scene/domain/interactor/SceneInteractor.kt b/packages/SystemUI/src/com/android/systemui/scene/domain/interactor/SceneInteractor.kt
index ef011945b5c8..5885193aa017 100644
--- a/packages/SystemUI/src/com/android/systemui/scene/domain/interactor/SceneInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/scene/domain/interactor/SceneInteractor.kt
@@ -28,6 +28,7 @@ import com.android.systemui.scene.domain.resolver.SceneResolver
import com.android.systemui.scene.shared.logger.SceneLogger
import com.android.systemui.scene.shared.model.SceneFamilies
import com.android.systemui.scene.shared.model.Scenes
+import com.android.systemui.util.kotlin.getValue
import com.android.systemui.util.kotlin.pairwiseBy
import dagger.Lazy
import javax.inject.Inject
@@ -60,8 +61,8 @@ constructor(
private val repository: SceneContainerRepository,
private val logger: SceneLogger,
private val sceneFamilyResolvers: Lazy<Map<SceneKey, @JvmSuppressWildcards SceneResolver>>,
- private val deviceUnlockedInteractor: DeviceUnlockedInteractor,
- private val keyguardEnabledInteractor: KeyguardEnabledInteractor,
+ private val deviceUnlockedInteractor: Lazy<DeviceUnlockedInteractor>,
+ private val keyguardEnabledInteractor: Lazy<KeyguardEnabledInteractor>,
) {
interface OnSceneAboutToChangeListener {
@@ -387,8 +388,8 @@ constructor(
val isChangeAllowed =
to != Scenes.Gone ||
inMidTransitionFromGone ||
- deviceUnlockedInteractor.deviceUnlockStatus.value.isUnlocked ||
- !keyguardEnabledInteractor.isKeyguardEnabled.value
+ deviceUnlockedInteractor.get().deviceUnlockStatus.value.isUnlocked ||
+ !keyguardEnabledInteractor.get().isKeyguardEnabled.value
check(isChangeAllowed) {
"Cannot change to the Gone scene while the device is locked and not currently" +
" transitioning from Gone. Current transition state is ${transitionState.value}." +
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/domain/interactor/StatusBarKeyguardViewManagerInteractor.kt b/packages/SystemUI/src/com/android/systemui/statusbar/domain/interactor/StatusBarKeyguardViewManagerInteractor.kt
index ca7308161e14..ef96f43ec17e 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/domain/interactor/StatusBarKeyguardViewManagerInteractor.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/domain/interactor/StatusBarKeyguardViewManagerInteractor.kt
@@ -23,6 +23,7 @@ import com.android.systemui.keyguard.domain.interactor.KeyguardTransitionInterac
import com.android.systemui.keyguard.domain.interactor.WindowManagerLockscreenVisibilityInteractor
import com.android.systemui.keyguard.shared.model.KeyguardState
import com.android.systemui.power.domain.interactor.PowerInteractor
+import com.android.systemui.scene.shared.model.Scenes
import com.android.systemui.util.kotlin.sample
import javax.inject.Inject
import kotlinx.coroutines.flow.Flow
@@ -90,17 +91,22 @@ constructor(
/** Occlusion state to apply whenever a keyguard transition is FINISHED. */
private val occlusionStateFromFinishedStep =
- keyguardTransitionInteractor.finishedKeyguardTransitionStep
- .sample(keyguardOcclusionInteractor.isShowWhenLockedActivityOnTop, ::Pair)
- .map { (finishedStep, showWhenLockedOnTop) ->
+ combine(
+ keyguardTransitionInteractor.isFinishedIn(
+ Scenes.Gone,
+ stateWithoutSceneContainer = KeyguardState.GONE
+ ),
+ keyguardTransitionInteractor.isFinishedIn(KeyguardState.OCCLUDED),
+ keyguardOcclusionInteractor.isShowWhenLockedActivityOnTop,
+ ::Triple
+ )
+ .map { (isOnGone, isOnOccluded, showWhenLockedOnTop) ->
// If we're FINISHED in OCCLUDED, we want to render as occluded. We also need to
// remain occluded if a SHOW_WHEN_LOCKED activity is on the top of the task stack,
// and we're in any state other than GONE. This is necessary, for example, when we
// transition from OCCLUDED to a bouncer state. Otherwise, we should not be
// occluded.
- val occluded =
- finishedStep.to == KeyguardState.OCCLUDED ||
- (showWhenLockedOnTop && finishedStep.to != KeyguardState.GONE)
+ val occluded = isOnOccluded || (showWhenLockedOnTop && !isOnGone)
OccludedState(occluded = occluded, animate = false)
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModel.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModel.kt
index 1c57346b18e0..900201f54bd7 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModel.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ui/viewmodel/SharedNotificationContainerViewModel.kt
@@ -372,7 +372,7 @@ constructor(
paddingTopDimen,
interactor.topPosition
.sampleCombine(
- keyguardTransitionInteractor.isInTransitionToAnyState,
+ keyguardTransitionInteractor.isInTransition,
shadeInteractor.qsExpansion,
)
.onStart { emit(Triple(0f, false, 0f)) }
diff --git a/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationPanelViewControllerBaseTest.java b/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationPanelViewControllerBaseTest.java
index e7ca091aaf4c..b80d1a472a72 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationPanelViewControllerBaseTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationPanelViewControllerBaseTest.java
@@ -419,7 +419,7 @@ public class NotificationPanelViewControllerBaseTest extends SysuiTestCase {
mShadeAnimationInteractor = new ShadeAnimationInteractorLegacyImpl(
new ShadeAnimationRepository(), mShadeRepository);
mPowerInteractor = keyguardInteractorDeps.getPowerInteractor();
- when(mKeyguardTransitionInteractor.isInTransitionToStateWhere(any())).thenReturn(
+ when(mKeyguardTransitionInteractor.isInTransitionWhere(any(), any())).thenReturn(
MutableStateFlow(false));
when(mKeyguardTransitionInteractor.isInTransition(any(), any()))
.thenReturn(emptyFlow());
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/FromAlternateBouncerTransitionInteractorKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/FromAlternateBouncerTransitionInteractorKosmos.kt
index 78a419f92495..ce317d43e988 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/FromAlternateBouncerTransitionInteractorKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/FromAlternateBouncerTransitionInteractorKosmos.kt
@@ -32,6 +32,7 @@ val Kosmos.fromAlternateBouncerTransitionInteractor by
FromAlternateBouncerTransitionInteractor(
transitionRepository = keyguardTransitionRepository,
transitionInteractor = keyguardTransitionInteractor,
+ internalTransitionInteractor = internalKeyguardTransitionInteractor,
scope = applicationCoroutineScope,
bgDispatcher = testDispatcher,
mainDispatcher = testDispatcher,
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/FromAodTransitionInteractorKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/FromAodTransitionInteractorKosmos.kt
index 42af25ed51a7..ae138c8f930b 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/FromAodTransitionInteractorKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/FromAodTransitionInteractorKosmos.kt
@@ -29,6 +29,7 @@ val Kosmos.fromAodTransitionInteractor by
FromAodTransitionInteractor(
transitionRepository = fakeKeyguardTransitionRepository,
transitionInteractor = keyguardTransitionInteractor,
+ internalTransitionInteractor = internalKeyguardTransitionInteractor,
scope = applicationCoroutineScope,
bgDispatcher = testDispatcher,
mainDispatcher = testDispatcher,
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/FromDozingTransitionInteractorKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/FromDozingTransitionInteractorKosmos.kt
index edf77a007efd..e7e007fd79fa 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/FromDozingTransitionInteractorKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/FromDozingTransitionInteractorKosmos.kt
@@ -30,6 +30,7 @@ var Kosmos.fromDozingTransitionInteractor by
FromDozingTransitionInteractor(
transitionRepository = keyguardTransitionRepository,
transitionInteractor = keyguardTransitionInteractor,
+ internalTransitionInteractor = internalKeyguardTransitionInteractor,
scope = applicationCoroutineScope,
bgDispatcher = testDispatcher,
mainDispatcher = testDispatcher,
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/FromDreamingLockscreenHostedTransitionInteractorKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/FromDreamingLockscreenHostedTransitionInteractorKosmos.kt
index f7a9d59eac26..7ebef10b12c6 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/FromDreamingLockscreenHostedTransitionInteractorKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/FromDreamingLockscreenHostedTransitionInteractorKosmos.kt
@@ -28,6 +28,7 @@ var Kosmos.fromDreamingLockscreenHostedTransitionInteractor by
FromDreamingLockscreenHostedTransitionInteractor(
transitionRepository = keyguardTransitionRepository,
transitionInteractor = keyguardTransitionInteractor,
+ internalTransitionInteractor = internalKeyguardTransitionInteractor,
scope = applicationCoroutineScope,
bgDispatcher = testDispatcher,
mainDispatcher = testDispatcher,
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/FromDreamingTransitionInteractorKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/FromDreamingTransitionInteractorKosmos.kt
index 135644cfac3e..a9be06d6387f 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/FromDreamingTransitionInteractorKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/FromDreamingTransitionInteractorKosmos.kt
@@ -28,6 +28,7 @@ var Kosmos.fromDreamingTransitionInteractor by
FromDreamingTransitionInteractor(
transitionRepository = keyguardTransitionRepository,
transitionInteractor = keyguardTransitionInteractor,
+ internalTransitionInteractor = internalKeyguardTransitionInteractor,
scope = applicationCoroutineScope,
bgDispatcher = testDispatcher,
mainDispatcher = testDispatcher,
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/FromGlanceableHubTransitionInteractorKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/FromGlanceableHubTransitionInteractorKosmos.kt
index 1695327d75bc..67846589cb89 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/FromGlanceableHubTransitionInteractorKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/FromGlanceableHubTransitionInteractorKosmos.kt
@@ -28,6 +28,7 @@ var Kosmos.fromGlanceableHubTransitionInteractor by
FromGlanceableHubTransitionInteractor(
transitionRepository = keyguardTransitionRepository,
transitionInteractor = keyguardTransitionInteractor,
+ internalTransitionInteractor = internalKeyguardTransitionInteractor,
scope = applicationCoroutineScope,
bgDispatcher = testDispatcher,
mainDispatcher = testDispatcher,
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/FromGoneTransitionInteractorKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/FromGoneTransitionInteractorKosmos.kt
index 4039ee6ea904..317294f3c884 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/FromGoneTransitionInteractorKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/FromGoneTransitionInteractorKosmos.kt
@@ -31,6 +31,7 @@ val Kosmos.fromGoneTransitionInteractor by
FromGoneTransitionInteractor(
transitionRepository = fakeKeyguardTransitionRepository,
transitionInteractor = keyguardTransitionInteractor,
+ internalTransitionInteractor = internalKeyguardTransitionInteractor,
scope = applicationCoroutineScope,
bgDispatcher = testDispatcher,
mainDispatcher = testDispatcher,
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/FromLockscreenTransitionInteractorKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/FromLockscreenTransitionInteractorKosmos.kt
index 28bd43982eba..4131145857e0 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/FromLockscreenTransitionInteractorKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/FromLockscreenTransitionInteractorKosmos.kt
@@ -29,6 +29,7 @@ var Kosmos.fromLockscreenTransitionInteractor by
FromLockscreenTransitionInteractor(
transitionRepository = keyguardTransitionRepository,
transitionInteractor = keyguardTransitionInteractor,
+ internalTransitionInteractor = internalKeyguardTransitionInteractor,
scope = applicationCoroutineScope,
bgDispatcher = testDispatcher,
mainDispatcher = testDispatcher,
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/FromOccludedTransitionInteractorKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/FromOccludedTransitionInteractorKosmos.kt
index fc740a180dc4..c2169456eac5 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/FromOccludedTransitionInteractorKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/FromOccludedTransitionInteractorKosmos.kt
@@ -29,6 +29,7 @@ val Kosmos.fromOccludedTransitionInteractor by
FromOccludedTransitionInteractor(
transitionRepository = keyguardTransitionRepository,
transitionInteractor = keyguardTransitionInteractor,
+ internalTransitionInteractor = internalKeyguardTransitionInteractor,
scope = applicationCoroutineScope,
bgDispatcher = testDispatcher,
mainDispatcher = testDispatcher,
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/FromPrimaryBouncerTransitionInteractorKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/FromPrimaryBouncerTransitionInteractorKosmos.kt
index d72b9c10d3d8..42ee15216590 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/FromPrimaryBouncerTransitionInteractorKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/FromPrimaryBouncerTransitionInteractorKosmos.kt
@@ -31,6 +31,7 @@ var Kosmos.fromPrimaryBouncerTransitionInteractor by
FromPrimaryBouncerTransitionInteractor(
transitionRepository = keyguardTransitionRepository,
transitionInteractor = keyguardTransitionInteractor,
+ internalTransitionInteractor = internalKeyguardTransitionInteractor,
scope = applicationCoroutineScope,
bgDispatcher = testDispatcher,
mainDispatcher = testDispatcher,
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/InternalKeyguardTransitionInteractorKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/InternalKeyguardTransitionInteractorKosmos.kt
new file mode 100644
index 000000000000..017a9ecd7f9c
--- /dev/null
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/InternalKeyguardTransitionInteractorKosmos.kt
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2024 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.keyguard.domain.interactor
+
+import com.android.systemui.keyguard.data.repository.keyguardTransitionRepository
+import com.android.systemui.kosmos.Kosmos
+
+val Kosmos.internalKeyguardTransitionInteractor by
+ Kosmos.Fixture {
+ InternalKeyguardTransitionInteractor(
+ repository = keyguardTransitionRepository,
+ )
+ }
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardEnabledInteractorKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardEnabledInteractorKosmos.kt
index 0667a6b9536a..c6b5ed0b608f 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardEnabledInteractorKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardEnabledInteractorKosmos.kt
@@ -28,5 +28,6 @@ val Kosmos.keyguardEnabledInteractor by
keyguardRepository,
biometricSettingsRepository,
keyguardTransitionInteractor,
+ internalTransitionInteractor = internalKeyguardTransitionInteractor,
)
}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardTransitionBootInteractorKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardTransitionBootInteractorKosmos.kt
index 7d8d33f7dd11..5836902ad54d 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardTransitionBootInteractorKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardTransitionBootInteractorKosmos.kt
@@ -30,5 +30,6 @@ val Kosmos.keyguardTransitionBootInteractor: KeyguardTransitionBootInteractor by
deviceProvisioningInteractor = deviceProvisioningInteractor,
keyguardTransitionInteractor = keyguardTransitionInteractor,
repository = keyguardTransitionRepository,
+ internalTransitionInteractor = internalKeyguardTransitionInteractor,
)
}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardTransitionInteractorKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardTransitionInteractorKosmos.kt
index c90642d93939..c5da10e59369 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardTransitionInteractorKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/KeyguardTransitionInteractorKosmos.kt
@@ -33,6 +33,6 @@ val Kosmos.keyguardTransitionInteractor: KeyguardTransitionInteractor by
fromAodTransitionInteractor = { fromAodTransitionInteractor },
fromAlternateBouncerTransitionInteractor = { fromAlternateBouncerTransitionInteractor },
fromDozingTransitionInteractor = { fromDozingTransitionInteractor },
- sceneInteractor = { sceneInteractor }
+ sceneInteractor = sceneInteractor
)
}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/scenetransition/LockscreenSceneTransitionInteractor.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/scenetransition/LockscreenSceneTransitionInteractor.kt
index 3c1f7b1b2394..e50e04499168 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/scenetransition/LockscreenSceneTransitionInteractor.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/keyguard/domain/interactor/scenetransition/LockscreenSceneTransitionInteractor.kt
@@ -17,6 +17,7 @@
package com.android.systemui.keyguard.domain.interactor.scenetransition
import com.android.systemui.keyguard.data.repository.lockscreenSceneTransitionRepository
+import com.android.systemui.keyguard.domain.interactor.internalKeyguardTransitionInteractor
import com.android.systemui.keyguard.domain.interactor.keyguardTransitionInteractor
import com.android.systemui.kosmos.Kosmos
import com.android.systemui.kosmos.applicationCoroutineScope
@@ -29,5 +30,6 @@ var Kosmos.lockscreenSceneTransitionInteractor by
applicationScope = applicationCoroutineScope,
sceneInteractor = sceneInteractor,
repository = lockscreenSceneTransitionRepository,
+ internalTransitionInteractor = internalKeyguardTransitionInteractor,
)
}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/scene/domain/interactor/SceneInteractorKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/scene/domain/interactor/SceneInteractorKosmos.kt
index 0921eb9e83d3..ae8b411a4b95 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/scene/domain/interactor/SceneInteractorKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/scene/domain/interactor/SceneInteractorKosmos.kt
@@ -31,7 +31,7 @@ val Kosmos.sceneInteractor by
repository = sceneContainerRepository,
logger = sceneLogger,
sceneFamilyResolvers = { sceneFamilyResolvers },
- deviceUnlockedInteractor = deviceUnlockedInteractor,
- keyguardEnabledInteractor = keyguardEnabledInteractor,
+ deviceUnlockedInteractor = { deviceUnlockedInteractor },
+ keyguardEnabledInteractor = { keyguardEnabledInteractor },
)
}
diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/domain/interactor/KeyguardOcclusionInteractorKosmos.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/domain/interactor/KeyguardOcclusionInteractorKosmos.kt
index a90a9ffc8a33..65016c3eefb8 100644
--- a/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/domain/interactor/KeyguardOcclusionInteractorKosmos.kt
+++ b/packages/SystemUI/tests/utils/src/com/android/systemui/statusbar/domain/interactor/KeyguardOcclusionInteractorKosmos.kt
@@ -19,6 +19,7 @@ package com.android.systemui.statusbar.domain.interactor
import com.android.systemui.deviceentry.domain.interactor.deviceUnlockedInteractor
import com.android.systemui.keyguard.data.repository.keyguardOcclusionRepository
import com.android.systemui.keyguard.domain.interactor.KeyguardOcclusionInteractor
+import com.android.systemui.keyguard.domain.interactor.internalKeyguardTransitionInteractor
import com.android.systemui.keyguard.domain.interactor.keyguardInteractor
import com.android.systemui.keyguard.domain.interactor.keyguardTransitionInteractor
import com.android.systemui.kosmos.Kosmos
@@ -34,5 +35,6 @@ val Kosmos.keyguardOcclusionInteractor by
transitionInteractor = keyguardTransitionInteractor,
keyguardInteractor = keyguardInteractor,
deviceUnlockedInteractor = { deviceUnlockedInteractor },
+ internalTransitionInteractor = internalKeyguardTransitionInteractor,
)
}