Merge "Move common From*TransitionInteractor logic into the superclass." into udc-qpr-dev
This commit is contained in:
@@ -22,7 +22,6 @@ import com.android.systemui.dagger.SysUISingleton
|
||||
import com.android.systemui.dagger.qualifiers.Application
|
||||
import com.android.systemui.keyguard.data.repository.KeyguardTransitionRepository
|
||||
import com.android.systemui.keyguard.shared.model.KeyguardState
|
||||
import com.android.systemui.keyguard.shared.model.TransitionInfo
|
||||
import com.android.systemui.keyguard.shared.model.WakefulnessState
|
||||
import com.android.systemui.util.kotlin.Utils.Companion.toQuad
|
||||
import com.android.systemui.util.kotlin.Utils.Companion.toQuint
|
||||
@@ -38,11 +37,14 @@ import kotlinx.coroutines.launch
|
||||
class FromAlternateBouncerTransitionInteractor
|
||||
@Inject
|
||||
constructor(
|
||||
override val transitionRepository: KeyguardTransitionRepository,
|
||||
override val transitionInteractor: KeyguardTransitionInteractor,
|
||||
@Application private val scope: CoroutineScope,
|
||||
private val keyguardInteractor: KeyguardInteractor,
|
||||
private val keyguardTransitionRepository: KeyguardTransitionRepository,
|
||||
private val keyguardTransitionInteractor: KeyguardTransitionInteractor,
|
||||
) : TransitionInteractor(FromAlternateBouncerTransitionInteractor::class.simpleName!!) {
|
||||
) :
|
||||
TransitionInteractor(
|
||||
fromState = KeyguardState.ALTERNATE_BOUNCER,
|
||||
) {
|
||||
|
||||
override fun start() {
|
||||
listenForAlternateBouncerToGone()
|
||||
@@ -60,7 +62,7 @@ constructor(
|
||||
.sample(
|
||||
combine(
|
||||
keyguardInteractor.primaryBouncerShowing,
|
||||
keyguardTransitionInteractor.startedKeyguardTransitionStep,
|
||||
transitionInteractor.startedKeyguardTransitionStep,
|
||||
keyguardInteractor.wakefulnessModel,
|
||||
keyguardInteractor.isAodAvailable,
|
||||
::toQuad
|
||||
@@ -92,14 +94,7 @@ constructor(
|
||||
} else {
|
||||
KeyguardState.LOCKSCREEN
|
||||
}
|
||||
keyguardTransitionRepository.startTransition(
|
||||
TransitionInfo(
|
||||
ownerName = name,
|
||||
from = KeyguardState.ALTERNATE_BOUNCER,
|
||||
to = to,
|
||||
animator = getAnimator(),
|
||||
)
|
||||
)
|
||||
startTransitionTo(to)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -108,17 +103,10 @@ constructor(
|
||||
private fun listenForAlternateBouncerToGone() {
|
||||
scope.launch {
|
||||
keyguardInteractor.isKeyguardGoingAway
|
||||
.sample(keyguardTransitionInteractor.finishedKeyguardState, ::Pair)
|
||||
.sample(transitionInteractor.finishedKeyguardState, ::Pair)
|
||||
.collect { (isKeyguardGoingAway, keyguardState) ->
|
||||
if (isKeyguardGoingAway && keyguardState == KeyguardState.ALTERNATE_BOUNCER) {
|
||||
keyguardTransitionRepository.startTransition(
|
||||
TransitionInfo(
|
||||
ownerName = name,
|
||||
from = KeyguardState.ALTERNATE_BOUNCER,
|
||||
to = KeyguardState.GONE,
|
||||
animator = getAnimator(),
|
||||
)
|
||||
)
|
||||
startTransitionTo(KeyguardState.GONE)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -127,26 +115,19 @@ constructor(
|
||||
private fun listenForAlternateBouncerToPrimaryBouncer() {
|
||||
scope.launch {
|
||||
keyguardInteractor.primaryBouncerShowing
|
||||
.sample(keyguardTransitionInteractor.startedKeyguardTransitionStep, ::Pair)
|
||||
.sample(transitionInteractor.startedKeyguardTransitionStep, ::Pair)
|
||||
.collect { (isPrimaryBouncerShowing, startedKeyguardState) ->
|
||||
if (
|
||||
isPrimaryBouncerShowing &&
|
||||
startedKeyguardState.to == KeyguardState.ALTERNATE_BOUNCER
|
||||
) {
|
||||
keyguardTransitionRepository.startTransition(
|
||||
TransitionInfo(
|
||||
ownerName = name,
|
||||
from = KeyguardState.ALTERNATE_BOUNCER,
|
||||
to = KeyguardState.PRIMARY_BOUNCER,
|
||||
animator = getAnimator(),
|
||||
)
|
||||
)
|
||||
startTransitionTo(KeyguardState.PRIMARY_BOUNCER)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun getAnimator(): ValueAnimator {
|
||||
override fun getDefaultAnimatorForTransitionsToState(toState: KeyguardState): ValueAnimator {
|
||||
return ValueAnimator().apply {
|
||||
interpolator = Interpolators.LINEAR
|
||||
duration = TRANSITION_DURATION_MS
|
||||
|
||||
@@ -24,7 +24,6 @@ import com.android.systemui.keyguard.data.repository.KeyguardTransitionRepositor
|
||||
import com.android.systemui.keyguard.shared.model.BiometricUnlockModel.Companion.isWakeAndUnlock
|
||||
import com.android.systemui.keyguard.shared.model.DozeStateModel
|
||||
import com.android.systemui.keyguard.shared.model.KeyguardState
|
||||
import com.android.systemui.keyguard.shared.model.TransitionInfo
|
||||
import com.android.systemui.util.kotlin.sample
|
||||
import javax.inject.Inject
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
@@ -34,11 +33,14 @@ import kotlinx.coroutines.launch
|
||||
class FromAodTransitionInteractor
|
||||
@Inject
|
||||
constructor(
|
||||
override val transitionRepository: KeyguardTransitionRepository,
|
||||
override val transitionInteractor: KeyguardTransitionInteractor,
|
||||
@Application private val scope: CoroutineScope,
|
||||
private val keyguardInteractor: KeyguardInteractor,
|
||||
private val keyguardTransitionRepository: KeyguardTransitionRepository,
|
||||
private val keyguardTransitionInteractor: KeyguardTransitionInteractor,
|
||||
) : TransitionInteractor(FromAodTransitionInteractor::class.simpleName!!) {
|
||||
) :
|
||||
TransitionInteractor(
|
||||
fromState = KeyguardState.AOD,
|
||||
) {
|
||||
|
||||
override fun start() {
|
||||
listenForAodToLockscreen()
|
||||
@@ -49,18 +51,11 @@ constructor(
|
||||
scope.launch {
|
||||
keyguardInteractor
|
||||
.dozeTransitionTo(DozeStateModel.FINISH)
|
||||
.sample(keyguardTransitionInteractor.startedKeyguardTransitionStep, ::Pair)
|
||||
.sample(transitionInteractor.startedKeyguardTransitionStep, ::Pair)
|
||||
.collect { pair ->
|
||||
val (dozeToAod, lastStartedStep) = pair
|
||||
if (lastStartedStep.to == KeyguardState.AOD) {
|
||||
keyguardTransitionRepository.startTransition(
|
||||
TransitionInfo(
|
||||
name,
|
||||
KeyguardState.AOD,
|
||||
KeyguardState.LOCKSCREEN,
|
||||
getAnimator(),
|
||||
)
|
||||
)
|
||||
startTransitionTo(KeyguardState.LOCKSCREEN)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -69,29 +64,22 @@ constructor(
|
||||
private fun listenForAodToGone() {
|
||||
scope.launch {
|
||||
keyguardInteractor.biometricUnlockState
|
||||
.sample(keyguardTransitionInteractor.finishedKeyguardState, ::Pair)
|
||||
.sample(transitionInteractor.finishedKeyguardState, ::Pair)
|
||||
.collect { pair ->
|
||||
val (biometricUnlockState, keyguardState) = pair
|
||||
if (
|
||||
keyguardState == KeyguardState.AOD && isWakeAndUnlock(biometricUnlockState)
|
||||
) {
|
||||
keyguardTransitionRepository.startTransition(
|
||||
TransitionInfo(
|
||||
name,
|
||||
KeyguardState.AOD,
|
||||
KeyguardState.GONE,
|
||||
getAnimator(),
|
||||
)
|
||||
)
|
||||
startTransitionTo(KeyguardState.GONE)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun getAnimator(): ValueAnimator {
|
||||
override fun getDefaultAnimatorForTransitionsToState(toState: KeyguardState): ValueAnimator {
|
||||
return ValueAnimator().apply {
|
||||
setInterpolator(Interpolators.LINEAR)
|
||||
setDuration(TRANSITION_DURATION_MS)
|
||||
interpolator = Interpolators.LINEAR
|
||||
duration = TRANSITION_DURATION_MS
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -23,10 +23,8 @@ import com.android.systemui.dagger.qualifiers.Application
|
||||
import com.android.systemui.keyguard.data.repository.KeyguardTransitionRepository
|
||||
import com.android.systemui.keyguard.shared.model.BiometricUnlockModel.Companion.isWakeAndUnlock
|
||||
import com.android.systemui.keyguard.shared.model.KeyguardState
|
||||
import com.android.systemui.keyguard.shared.model.TransitionInfo
|
||||
import com.android.systemui.util.kotlin.sample
|
||||
import javax.inject.Inject
|
||||
import kotlin.time.Duration
|
||||
import kotlin.time.Duration.Companion.milliseconds
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.launch
|
||||
@@ -35,11 +33,14 @@ import kotlinx.coroutines.launch
|
||||
class FromDozingTransitionInteractor
|
||||
@Inject
|
||||
constructor(
|
||||
override val transitionRepository: KeyguardTransitionRepository,
|
||||
override val transitionInteractor: KeyguardTransitionInteractor,
|
||||
@Application private val scope: CoroutineScope,
|
||||
private val keyguardInteractor: KeyguardInteractor,
|
||||
private val keyguardTransitionRepository: KeyguardTransitionRepository,
|
||||
private val keyguardTransitionInteractor: KeyguardTransitionInteractor,
|
||||
) : TransitionInteractor(FromDozingTransitionInteractor::class.simpleName!!) {
|
||||
) :
|
||||
TransitionInteractor(
|
||||
fromState = KeyguardState.DOZING,
|
||||
) {
|
||||
|
||||
override fun start() {
|
||||
listenForDozingToLockscreen()
|
||||
@@ -49,20 +50,13 @@ constructor(
|
||||
private fun listenForDozingToLockscreen() {
|
||||
scope.launch {
|
||||
keyguardInteractor.wakefulnessModel
|
||||
.sample(keyguardTransitionInteractor.startedKeyguardTransitionStep, ::Pair)
|
||||
.sample(transitionInteractor.startedKeyguardTransitionStep, ::Pair)
|
||||
.collect { (wakefulnessModel, lastStartedTransition) ->
|
||||
if (
|
||||
wakefulnessModel.isStartingToWakeOrAwake() &&
|
||||
lastStartedTransition.to == KeyguardState.DOZING
|
||||
) {
|
||||
keyguardTransitionRepository.startTransition(
|
||||
TransitionInfo(
|
||||
name,
|
||||
KeyguardState.DOZING,
|
||||
KeyguardState.LOCKSCREEN,
|
||||
getAnimator(),
|
||||
)
|
||||
)
|
||||
startTransitionTo(KeyguardState.LOCKSCREEN)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -71,29 +65,22 @@ constructor(
|
||||
private fun listenForDozingToGone() {
|
||||
scope.launch {
|
||||
keyguardInteractor.biometricUnlockState
|
||||
.sample(keyguardTransitionInteractor.startedKeyguardTransitionStep, ::Pair)
|
||||
.sample(transitionInteractor.startedKeyguardTransitionStep, ::Pair)
|
||||
.collect { (biometricUnlockState, lastStartedTransition) ->
|
||||
if (
|
||||
lastStartedTransition.to == KeyguardState.DOZING &&
|
||||
isWakeAndUnlock(biometricUnlockState)
|
||||
) {
|
||||
keyguardTransitionRepository.startTransition(
|
||||
TransitionInfo(
|
||||
name,
|
||||
KeyguardState.DOZING,
|
||||
KeyguardState.GONE,
|
||||
getAnimator(),
|
||||
)
|
||||
)
|
||||
startTransitionTo(KeyguardState.GONE)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun getAnimator(duration: Duration = DEFAULT_DURATION): ValueAnimator {
|
||||
override fun getDefaultAnimatorForTransitionsToState(toState: KeyguardState): ValueAnimator {
|
||||
return ValueAnimator().apply {
|
||||
setInterpolator(Interpolators.LINEAR)
|
||||
setDuration(duration.inWholeMilliseconds)
|
||||
interpolator = Interpolators.LINEAR
|
||||
duration = DEFAULT_DURATION.inWholeMilliseconds
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -24,11 +24,9 @@ import com.android.systemui.keyguard.data.repository.KeyguardTransitionRepositor
|
||||
import com.android.systemui.keyguard.shared.model.BiometricUnlockModel
|
||||
import com.android.systemui.keyguard.shared.model.DozeStateModel
|
||||
import com.android.systemui.keyguard.shared.model.KeyguardState
|
||||
import com.android.systemui.keyguard.shared.model.TransitionInfo
|
||||
import com.android.systemui.util.kotlin.Utils.Companion.toTriple
|
||||
import com.android.systemui.util.kotlin.sample
|
||||
import javax.inject.Inject
|
||||
import kotlin.time.Duration
|
||||
import kotlin.time.Duration.Companion.milliseconds
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.delay
|
||||
@@ -40,11 +38,14 @@ import kotlinx.coroutines.launch
|
||||
class FromDreamingTransitionInteractor
|
||||
@Inject
|
||||
constructor(
|
||||
override val transitionRepository: KeyguardTransitionRepository,
|
||||
override val transitionInteractor: KeyguardTransitionInteractor,
|
||||
@Application private val scope: CoroutineScope,
|
||||
private val keyguardInteractor: KeyguardInteractor,
|
||||
private val keyguardTransitionRepository: KeyguardTransitionRepository,
|
||||
private val keyguardTransitionInteractor: KeyguardTransitionInteractor,
|
||||
) : TransitionInteractor(FromDreamingTransitionInteractor::class.simpleName!!) {
|
||||
) :
|
||||
TransitionInteractor(
|
||||
fromState = KeyguardState.DREAMING,
|
||||
) {
|
||||
|
||||
override fun start() {
|
||||
listenForDreamingToOccluded()
|
||||
@@ -54,15 +55,8 @@ constructor(
|
||||
|
||||
fun startToLockscreenTransition() {
|
||||
scope.launch {
|
||||
if (keyguardTransitionInteractor.startedKeyguardState.value == KeyguardState.DREAMING) {
|
||||
keyguardTransitionRepository.startTransition(
|
||||
TransitionInfo(
|
||||
name,
|
||||
KeyguardState.DREAMING,
|
||||
KeyguardState.LOCKSCREEN,
|
||||
getAnimator(TO_LOCKSCREEN_DURATION),
|
||||
)
|
||||
)
|
||||
if (transitionInteractor.startedKeyguardState.value == KeyguardState.DREAMING) {
|
||||
startTransitionTo(KeyguardState.LOCKSCREEN)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -76,7 +70,7 @@ constructor(
|
||||
.sample(
|
||||
combine(
|
||||
keyguardInteractor.isKeyguardOccluded,
|
||||
keyguardTransitionInteractor.startedKeyguardTransitionStep,
|
||||
transitionInteractor.startedKeyguardTransitionStep,
|
||||
::Pair,
|
||||
),
|
||||
::toTriple
|
||||
@@ -92,14 +86,7 @@ constructor(
|
||||
// action. There's no great signal to determine when the dream is ending
|
||||
// and a transition to OCCLUDED is beginning directly. For now, the solution
|
||||
// is DREAMING->LOCKSCREEN->OCCLUDED
|
||||
keyguardTransitionRepository.startTransition(
|
||||
TransitionInfo(
|
||||
name,
|
||||
lastStartedTransition.to,
|
||||
KeyguardState.OCCLUDED,
|
||||
getAnimator(),
|
||||
)
|
||||
)
|
||||
startTransitionTo(KeyguardState.OCCLUDED)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -109,14 +96,7 @@ constructor(
|
||||
scope.launch {
|
||||
keyguardInteractor.biometricUnlockState.collect { biometricUnlockState ->
|
||||
if (biometricUnlockState == BiometricUnlockModel.WAKE_AND_UNLOCK_FROM_DREAM) {
|
||||
keyguardTransitionRepository.startTransition(
|
||||
TransitionInfo(
|
||||
name,
|
||||
KeyguardState.DREAMING,
|
||||
KeyguardState.GONE,
|
||||
getAnimator(),
|
||||
)
|
||||
)
|
||||
startTransitionTo(KeyguardState.GONE)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -126,7 +106,7 @@ constructor(
|
||||
scope.launch {
|
||||
combine(
|
||||
keyguardInteractor.dozeTransitionModel,
|
||||
keyguardTransitionInteractor.finishedKeyguardState,
|
||||
transitionInteractor.finishedKeyguardState,
|
||||
::Pair
|
||||
)
|
||||
.collect { (dozeTransitionModel, keyguardState) ->
|
||||
@@ -134,23 +114,18 @@ constructor(
|
||||
dozeTransitionModel.to == DozeStateModel.DOZE &&
|
||||
keyguardState == KeyguardState.DREAMING
|
||||
) {
|
||||
keyguardTransitionRepository.startTransition(
|
||||
TransitionInfo(
|
||||
name,
|
||||
KeyguardState.DREAMING,
|
||||
KeyguardState.DOZING,
|
||||
getAnimator(),
|
||||
)
|
||||
)
|
||||
startTransitionTo(KeyguardState.DOZING)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun getAnimator(duration: Duration = DEFAULT_DURATION): ValueAnimator {
|
||||
override fun getDefaultAnimatorForTransitionsToState(toState: KeyguardState): ValueAnimator {
|
||||
return ValueAnimator().apply {
|
||||
setInterpolator(Interpolators.LINEAR)
|
||||
setDuration(duration.inWholeMilliseconds)
|
||||
interpolator = Interpolators.LINEAR
|
||||
duration =
|
||||
if (toState == KeyguardState.LOCKSCREEN) TO_LOCKSCREEN_DURATION.inWholeMilliseconds
|
||||
else DEFAULT_DURATION.inWholeMilliseconds
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -22,12 +22,10 @@ import com.android.systemui.dagger.SysUISingleton
|
||||
import com.android.systemui.dagger.qualifiers.Application
|
||||
import com.android.systemui.keyguard.data.repository.KeyguardTransitionRepository
|
||||
import com.android.systemui.keyguard.shared.model.KeyguardState
|
||||
import com.android.systemui.keyguard.shared.model.TransitionInfo
|
||||
import com.android.systemui.keyguard.shared.model.WakefulnessState
|
||||
import com.android.systemui.util.kotlin.Utils.Companion.toTriple
|
||||
import com.android.systemui.util.kotlin.sample
|
||||
import javax.inject.Inject
|
||||
import kotlin.time.Duration
|
||||
import kotlin.time.Duration.Companion.milliseconds
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.flow.combine
|
||||
@@ -37,11 +35,14 @@ import kotlinx.coroutines.launch
|
||||
class FromGoneTransitionInteractor
|
||||
@Inject
|
||||
constructor(
|
||||
override val transitionRepository: KeyguardTransitionRepository,
|
||||
override val transitionInteractor: KeyguardTransitionInteractor,
|
||||
@Application private val scope: CoroutineScope,
|
||||
private val keyguardInteractor: KeyguardInteractor,
|
||||
private val keyguardTransitionRepository: KeyguardTransitionRepository,
|
||||
private val keyguardTransitionInteractor: KeyguardTransitionInteractor,
|
||||
) : TransitionInteractor(FromGoneTransitionInteractor::class.simpleName!!) {
|
||||
) :
|
||||
TransitionInteractor(
|
||||
fromState = KeyguardState.GONE,
|
||||
) {
|
||||
|
||||
override fun start() {
|
||||
listenForGoneToAodOrDozing()
|
||||
@@ -53,17 +54,10 @@ constructor(
|
||||
private fun listenForGoneToLockscreen() {
|
||||
scope.launch {
|
||||
keyguardInteractor.isKeyguardShowing
|
||||
.sample(keyguardTransitionInteractor.startedKeyguardTransitionStep, ::Pair)
|
||||
.sample(transitionInteractor.startedKeyguardTransitionStep, ::Pair)
|
||||
.collect { (isKeyguardShowing, lastStartedStep) ->
|
||||
if (isKeyguardShowing && lastStartedStep.to == KeyguardState.GONE) {
|
||||
keyguardTransitionRepository.startTransition(
|
||||
TransitionInfo(
|
||||
name,
|
||||
KeyguardState.GONE,
|
||||
KeyguardState.LOCKSCREEN,
|
||||
getAnimator(),
|
||||
)
|
||||
)
|
||||
startTransitionTo(KeyguardState.LOCKSCREEN)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -72,17 +66,10 @@ constructor(
|
||||
private fun listenForGoneToDreaming() {
|
||||
scope.launch {
|
||||
keyguardInteractor.isAbleToDream
|
||||
.sample(keyguardTransitionInteractor.startedKeyguardTransitionStep, ::Pair)
|
||||
.sample(transitionInteractor.startedKeyguardTransitionStep, ::Pair)
|
||||
.collect { (isAbleToDream, lastStartedStep) ->
|
||||
if (isAbleToDream && lastStartedStep.to == KeyguardState.GONE) {
|
||||
keyguardTransitionRepository.startTransition(
|
||||
TransitionInfo(
|
||||
name,
|
||||
KeyguardState.GONE,
|
||||
KeyguardState.DREAMING,
|
||||
getAnimator(TO_DREAMING_DURATION),
|
||||
)
|
||||
)
|
||||
startTransitionTo(KeyguardState.DREAMING)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -93,7 +80,7 @@ constructor(
|
||||
keyguardInteractor.wakefulnessModel
|
||||
.sample(
|
||||
combine(
|
||||
keyguardTransitionInteractor.startedKeyguardTransitionStep,
|
||||
transitionInteractor.startedKeyguardTransitionStep,
|
||||
keyguardInteractor.isAodAvailable,
|
||||
::Pair
|
||||
),
|
||||
@@ -104,30 +91,24 @@ constructor(
|
||||
lastStartedStep.to == KeyguardState.GONE &&
|
||||
wakefulnessState.state == WakefulnessState.STARTING_TO_SLEEP
|
||||
) {
|
||||
keyguardTransitionRepository.startTransition(
|
||||
TransitionInfo(
|
||||
name,
|
||||
KeyguardState.GONE,
|
||||
if (isAodAvailable) {
|
||||
KeyguardState.AOD
|
||||
} else {
|
||||
KeyguardState.DOZING
|
||||
},
|
||||
getAnimator(),
|
||||
)
|
||||
startTransitionTo(
|
||||
if (isAodAvailable) KeyguardState.AOD else KeyguardState.DOZING
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun getAnimator(duration: Duration = DEFAULT_DURATION): ValueAnimator {
|
||||
override fun getDefaultAnimatorForTransitionsToState(toState: KeyguardState): ValueAnimator {
|
||||
return ValueAnimator().apply {
|
||||
setInterpolator(Interpolators.LINEAR)
|
||||
setDuration(duration.inWholeMilliseconds)
|
||||
interpolator = Interpolators.LINEAR
|
||||
duration =
|
||||
when (toState) {
|
||||
KeyguardState.DREAMING -> TO_DREAMING_DURATION
|
||||
else -> DEFAULT_DURATION
|
||||
}.inWholeMilliseconds
|
||||
}
|
||||
}
|
||||
|
||||
companion object {
|
||||
private val DEFAULT_DURATION = 500.milliseconds
|
||||
val TO_DREAMING_DURATION = 933.milliseconds
|
||||
|
||||
@@ -32,7 +32,6 @@ import com.android.systemui.util.kotlin.Utils.Companion.toTriple
|
||||
import com.android.systemui.util.kotlin.sample
|
||||
import java.util.UUID
|
||||
import javax.inject.Inject
|
||||
import kotlin.time.Duration
|
||||
import kotlin.time.Duration.Companion.milliseconds
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.flow.combine
|
||||
@@ -42,12 +41,15 @@ import kotlinx.coroutines.launch
|
||||
class FromLockscreenTransitionInteractor
|
||||
@Inject
|
||||
constructor(
|
||||
override val transitionRepository: KeyguardTransitionRepository,
|
||||
override val transitionInteractor: KeyguardTransitionInteractor,
|
||||
@Application private val scope: CoroutineScope,
|
||||
private val keyguardInteractor: KeyguardInteractor,
|
||||
private val shadeRepository: ShadeRepository,
|
||||
private val keyguardTransitionInteractor: KeyguardTransitionInteractor,
|
||||
private val keyguardTransitionRepository: KeyguardTransitionRepository,
|
||||
) : TransitionInteractor(FromLockscreenTransitionInteractor::class.simpleName!!) {
|
||||
) :
|
||||
TransitionInteractor(
|
||||
fromState = KeyguardState.LOCKSCREEN,
|
||||
) {
|
||||
|
||||
override fun start() {
|
||||
listenForLockscreenToGone()
|
||||
@@ -66,8 +68,8 @@ constructor(
|
||||
keyguardInteractor.isAbleToDream
|
||||
.sample(
|
||||
combine(
|
||||
keyguardTransitionInteractor.startedKeyguardTransitionStep,
|
||||
keyguardTransitionInteractor.finishedKeyguardState,
|
||||
transitionInteractor.startedKeyguardTransitionStep,
|
||||
transitionInteractor.finishedKeyguardState,
|
||||
::Pair
|
||||
),
|
||||
::toTriple
|
||||
@@ -78,14 +80,7 @@ constructor(
|
||||
lastStartedTransition.to == KeyguardState.LOCKSCREEN &&
|
||||
!invalidFromStates.contains(lastStartedTransition.from)
|
||||
if (isAbleToDream && (isOnLockscreen || isTransitionInterruptible)) {
|
||||
keyguardTransitionRepository.startTransition(
|
||||
TransitionInfo(
|
||||
name,
|
||||
KeyguardState.LOCKSCREEN,
|
||||
KeyguardState.DREAMING,
|
||||
getAnimator(TO_DREAMING_DURATION),
|
||||
)
|
||||
)
|
||||
startTransitionTo(KeyguardState.DREAMING)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -94,20 +89,13 @@ constructor(
|
||||
private fun listenForLockscreenToPrimaryBouncer() {
|
||||
scope.launch {
|
||||
keyguardInteractor.primaryBouncerShowing
|
||||
.sample(keyguardTransitionInteractor.startedKeyguardTransitionStep, ::Pair)
|
||||
.sample(transitionInteractor.startedKeyguardTransitionStep, ::Pair)
|
||||
.collect { pair ->
|
||||
val (isBouncerShowing, lastStartedTransitionStep) = pair
|
||||
if (
|
||||
isBouncerShowing && lastStartedTransitionStep.to == KeyguardState.LOCKSCREEN
|
||||
) {
|
||||
keyguardTransitionRepository.startTransition(
|
||||
TransitionInfo(
|
||||
ownerName = name,
|
||||
from = KeyguardState.LOCKSCREEN,
|
||||
to = KeyguardState.PRIMARY_BOUNCER,
|
||||
animator = getAnimator(),
|
||||
)
|
||||
)
|
||||
startTransitionTo(KeyguardState.PRIMARY_BOUNCER)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -116,21 +104,14 @@ constructor(
|
||||
private fun listenForLockscreenToAlternateBouncer() {
|
||||
scope.launch {
|
||||
keyguardInteractor.alternateBouncerShowing
|
||||
.sample(keyguardTransitionInteractor.startedKeyguardTransitionStep, ::Pair)
|
||||
.sample(transitionInteractor.startedKeyguardTransitionStep, ::Pair)
|
||||
.collect { pair ->
|
||||
val (isAlternateBouncerShowing, lastStartedTransitionStep) = pair
|
||||
if (
|
||||
isAlternateBouncerShowing &&
|
||||
lastStartedTransitionStep.to == KeyguardState.LOCKSCREEN
|
||||
) {
|
||||
keyguardTransitionRepository.startTransition(
|
||||
TransitionInfo(
|
||||
ownerName = name,
|
||||
from = KeyguardState.LOCKSCREEN,
|
||||
to = KeyguardState.ALTERNATE_BOUNCER,
|
||||
animator = getAnimator(),
|
||||
)
|
||||
)
|
||||
startTransitionTo(KeyguardState.ALTERNATE_BOUNCER)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -143,7 +124,7 @@ constructor(
|
||||
shadeRepository.shadeModel
|
||||
.sample(
|
||||
combine(
|
||||
keyguardTransitionInteractor.startedKeyguardTransitionStep,
|
||||
transitionInteractor.startedKeyguardTransitionStep,
|
||||
keyguardInteractor.statusBarState,
|
||||
keyguardInteractor.isKeyguardUnlocked,
|
||||
::Triple
|
||||
@@ -164,7 +145,7 @@ constructor(
|
||||
} else {
|
||||
TransitionState.RUNNING
|
||||
}
|
||||
keyguardTransitionRepository.updateTransition(
|
||||
transitionRepository.updateTransition(
|
||||
id,
|
||||
1f - shadeModel.expansionAmount,
|
||||
nextState,
|
||||
@@ -178,13 +159,17 @@ constructor(
|
||||
}
|
||||
|
||||
// If canceled, just put the state back
|
||||
// TODO: This logic should happen in FromPrimaryBouncerInteractor.
|
||||
if (nextState == TransitionState.CANCELED) {
|
||||
keyguardTransitionRepository.startTransition(
|
||||
transitionRepository.startTransition(
|
||||
TransitionInfo(
|
||||
ownerName = name,
|
||||
from = KeyguardState.PRIMARY_BOUNCER,
|
||||
to = KeyguardState.LOCKSCREEN,
|
||||
animator = getAnimator(0.milliseconds)
|
||||
animator =
|
||||
getDefaultAnimatorForTransitionsToState(KeyguardState.LOCKSCREEN).apply {
|
||||
duration = 0
|
||||
}
|
||||
)
|
||||
)
|
||||
}
|
||||
@@ -198,15 +183,7 @@ constructor(
|
||||
!isKeyguardUnlocked &&
|
||||
statusBarState == KEYGUARD
|
||||
) {
|
||||
transitionId =
|
||||
keyguardTransitionRepository.startTransition(
|
||||
TransitionInfo(
|
||||
ownerName = name,
|
||||
from = KeyguardState.LOCKSCREEN,
|
||||
to = KeyguardState.PRIMARY_BOUNCER,
|
||||
animator = null,
|
||||
)
|
||||
)
|
||||
transitionId = startTransitionTo(KeyguardState.PRIMARY_BOUNCER)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -216,18 +193,11 @@ constructor(
|
||||
private fun listenForLockscreenToGone() {
|
||||
scope.launch {
|
||||
keyguardInteractor.isKeyguardGoingAway
|
||||
.sample(keyguardTransitionInteractor.startedKeyguardTransitionStep, ::Pair)
|
||||
.sample(transitionInteractor.startedKeyguardTransitionStep, ::Pair)
|
||||
.collect { pair ->
|
||||
val (isKeyguardGoingAway, lastStartedStep) = pair
|
||||
if (isKeyguardGoingAway && lastStartedStep.to == KeyguardState.LOCKSCREEN) {
|
||||
keyguardTransitionRepository.startTransition(
|
||||
TransitionInfo(
|
||||
name,
|
||||
KeyguardState.LOCKSCREEN,
|
||||
KeyguardState.GONE,
|
||||
getAnimator(),
|
||||
)
|
||||
)
|
||||
startTransitionTo(KeyguardState.GONE)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -238,7 +208,7 @@ constructor(
|
||||
keyguardInteractor.isKeyguardOccluded
|
||||
.sample(
|
||||
combine(
|
||||
keyguardTransitionInteractor.finishedKeyguardState,
|
||||
transitionInteractor.finishedKeyguardState,
|
||||
keyguardInteractor.isDreaming,
|
||||
::Pair
|
||||
),
|
||||
@@ -246,14 +216,7 @@ constructor(
|
||||
)
|
||||
.collect { (isOccluded, keyguardState, isDreaming) ->
|
||||
if (isOccluded && !isDreaming && keyguardState == KeyguardState.LOCKSCREEN) {
|
||||
keyguardTransitionRepository.startTransition(
|
||||
TransitionInfo(
|
||||
name,
|
||||
keyguardState,
|
||||
KeyguardState.OCCLUDED,
|
||||
getAnimator(TO_OCCLUDED_DURATION),
|
||||
)
|
||||
)
|
||||
startTransitionTo(KeyguardState.OCCLUDED)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -263,7 +226,7 @@ constructor(
|
||||
private fun listenForLockscreenToCamera() {
|
||||
scope.launch {
|
||||
keyguardInteractor.onCameraLaunchDetected
|
||||
.sample(keyguardTransitionInteractor.startedKeyguardTransitionStep, ::Pair)
|
||||
.sample(transitionInteractor.startedKeyguardTransitionStep, ::Pair)
|
||||
.collect { (_, lastStartedStep) ->
|
||||
// DREAMING/AOD/OFF may trigger on the first power button push, so include this
|
||||
// state in order to cancel and correct the transition
|
||||
@@ -274,14 +237,7 @@ constructor(
|
||||
lastStartedStep.to == KeyguardState.AOD ||
|
||||
lastStartedStep.to == KeyguardState.OFF
|
||||
) {
|
||||
keyguardTransitionRepository.startTransition(
|
||||
TransitionInfo(
|
||||
name,
|
||||
KeyguardState.LOCKSCREEN,
|
||||
KeyguardState.OCCLUDED,
|
||||
getAnimator(TO_OCCLUDED_DURATION),
|
||||
)
|
||||
)
|
||||
startTransitionTo(KeyguardState.OCCLUDED)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -292,7 +248,7 @@ constructor(
|
||||
keyguardInteractor.wakefulnessModel
|
||||
.sample(
|
||||
combine(
|
||||
keyguardTransitionInteractor.startedKeyguardTransitionStep,
|
||||
transitionInteractor.startedKeyguardTransitionStep,
|
||||
keyguardInteractor.isAodAvailable,
|
||||
::Pair
|
||||
),
|
||||
@@ -303,27 +259,23 @@ constructor(
|
||||
lastStartedStep.to == KeyguardState.LOCKSCREEN &&
|
||||
wakefulnessState.state == WakefulnessState.STARTING_TO_SLEEP
|
||||
) {
|
||||
keyguardTransitionRepository.startTransition(
|
||||
TransitionInfo(
|
||||
name,
|
||||
KeyguardState.LOCKSCREEN,
|
||||
if (isAodAvailable) {
|
||||
KeyguardState.AOD
|
||||
} else {
|
||||
KeyguardState.DOZING
|
||||
},
|
||||
getAnimator(),
|
||||
)
|
||||
startTransitionTo(
|
||||
if (isAodAvailable) KeyguardState.AOD else KeyguardState.DOZING
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun getAnimator(duration: Duration = DEFAULT_DURATION): ValueAnimator {
|
||||
override fun getDefaultAnimatorForTransitionsToState(toState: KeyguardState): ValueAnimator {
|
||||
return ValueAnimator().apply {
|
||||
setInterpolator(Interpolators.LINEAR)
|
||||
setDuration(duration.inWholeMilliseconds)
|
||||
interpolator = Interpolators.LINEAR
|
||||
duration =
|
||||
when (toState) {
|
||||
KeyguardState.DREAMING -> TO_DREAMING_DURATION
|
||||
KeyguardState.OCCLUDED -> TO_OCCLUDED_DURATION
|
||||
else -> DEFAULT_DURATION
|
||||
}.inWholeMilliseconds
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -22,12 +22,10 @@ import com.android.systemui.dagger.SysUISingleton
|
||||
import com.android.systemui.dagger.qualifiers.Application
|
||||
import com.android.systemui.keyguard.data.repository.KeyguardTransitionRepository
|
||||
import com.android.systemui.keyguard.shared.model.KeyguardState
|
||||
import com.android.systemui.keyguard.shared.model.TransitionInfo
|
||||
import com.android.systemui.keyguard.shared.model.WakefulnessState
|
||||
import com.android.systemui.util.kotlin.Utils.Companion.toTriple
|
||||
import com.android.systemui.util.kotlin.sample
|
||||
import javax.inject.Inject
|
||||
import kotlin.time.Duration
|
||||
import kotlin.time.Duration.Companion.milliseconds
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.flow.combine
|
||||
@@ -37,11 +35,14 @@ import kotlinx.coroutines.launch
|
||||
class FromOccludedTransitionInteractor
|
||||
@Inject
|
||||
constructor(
|
||||
override val transitionRepository: KeyguardTransitionRepository,
|
||||
override val transitionInteractor: KeyguardTransitionInteractor,
|
||||
@Application private val scope: CoroutineScope,
|
||||
private val keyguardInteractor: KeyguardInteractor,
|
||||
private val keyguardTransitionRepository: KeyguardTransitionRepository,
|
||||
private val keyguardTransitionInteractor: KeyguardTransitionInteractor,
|
||||
) : TransitionInteractor(FromOccludedTransitionInteractor::class.simpleName!!) {
|
||||
) :
|
||||
TransitionInteractor(
|
||||
fromState = KeyguardState.OCCLUDED,
|
||||
) {
|
||||
|
||||
override fun start() {
|
||||
listenForOccludedToLockscreen()
|
||||
@@ -54,18 +55,11 @@ constructor(
|
||||
private fun listenForOccludedToDreaming() {
|
||||
scope.launch {
|
||||
keyguardInteractor.isAbleToDream
|
||||
.sample(keyguardTransitionInteractor.finishedKeyguardState, ::Pair)
|
||||
.sample(transitionInteractor.finishedKeyguardState, ::Pair)
|
||||
.collect { pair ->
|
||||
val (isAbleToDream, keyguardState) = pair
|
||||
if (isAbleToDream && keyguardState == KeyguardState.OCCLUDED) {
|
||||
keyguardTransitionRepository.startTransition(
|
||||
TransitionInfo(
|
||||
name,
|
||||
KeyguardState.OCCLUDED,
|
||||
KeyguardState.DREAMING,
|
||||
getAnimator(),
|
||||
)
|
||||
)
|
||||
startTransitionTo(KeyguardState.DREAMING)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -77,7 +71,7 @@ constructor(
|
||||
.sample(
|
||||
combine(
|
||||
keyguardInteractor.isKeyguardShowing,
|
||||
keyguardTransitionInteractor.startedKeyguardTransitionStep,
|
||||
transitionInteractor.startedKeyguardTransitionStep,
|
||||
::Pair
|
||||
),
|
||||
::toTriple
|
||||
@@ -90,14 +84,7 @@ constructor(
|
||||
isShowing &&
|
||||
lastStartedKeyguardState.to == KeyguardState.OCCLUDED
|
||||
) {
|
||||
keyguardTransitionRepository.startTransition(
|
||||
TransitionInfo(
|
||||
name,
|
||||
KeyguardState.OCCLUDED,
|
||||
KeyguardState.LOCKSCREEN,
|
||||
getAnimator(TO_LOCKSCREEN_DURATION),
|
||||
)
|
||||
)
|
||||
startTransitionTo(KeyguardState.LOCKSCREEN)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -109,7 +96,7 @@ constructor(
|
||||
.sample(
|
||||
combine(
|
||||
keyguardInteractor.isKeyguardShowing,
|
||||
keyguardTransitionInteractor.startedKeyguardTransitionStep,
|
||||
transitionInteractor.startedKeyguardTransitionStep,
|
||||
::Pair
|
||||
),
|
||||
::toTriple
|
||||
@@ -122,14 +109,7 @@ constructor(
|
||||
!isShowing &&
|
||||
lastStartedKeyguardState.to == KeyguardState.OCCLUDED
|
||||
) {
|
||||
keyguardTransitionRepository.startTransition(
|
||||
TransitionInfo(
|
||||
name,
|
||||
KeyguardState.OCCLUDED,
|
||||
KeyguardState.GONE,
|
||||
getAnimator(),
|
||||
)
|
||||
)
|
||||
startTransitionTo(KeyguardState.GONE)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -140,7 +120,7 @@ constructor(
|
||||
keyguardInteractor.wakefulnessModel
|
||||
.sample(
|
||||
combine(
|
||||
keyguardTransitionInteractor.startedKeyguardTransitionStep,
|
||||
transitionInteractor.startedKeyguardTransitionStep,
|
||||
keyguardInteractor.isAodAvailable,
|
||||
::Pair
|
||||
),
|
||||
@@ -151,17 +131,8 @@ constructor(
|
||||
lastStartedStep.to == KeyguardState.OCCLUDED &&
|
||||
wakefulnessState.state == WakefulnessState.STARTING_TO_SLEEP
|
||||
) {
|
||||
keyguardTransitionRepository.startTransition(
|
||||
TransitionInfo(
|
||||
name,
|
||||
KeyguardState.OCCLUDED,
|
||||
if (isAodAvailable) {
|
||||
KeyguardState.AOD
|
||||
} else {
|
||||
KeyguardState.DOZING
|
||||
},
|
||||
getAnimator(),
|
||||
)
|
||||
startTransitionTo(
|
||||
if (isAodAvailable) KeyguardState.AOD else KeyguardState.DOZING
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -171,29 +142,26 @@ constructor(
|
||||
private fun listenForOccludedToAlternateBouncer() {
|
||||
scope.launch {
|
||||
keyguardInteractor.alternateBouncerShowing
|
||||
.sample(keyguardTransitionInteractor.startedKeyguardTransitionStep, ::Pair)
|
||||
.sample(transitionInteractor.startedKeyguardTransitionStep, ::Pair)
|
||||
.collect { (isAlternateBouncerShowing, lastStartedTransitionStep) ->
|
||||
if (
|
||||
isAlternateBouncerShowing &&
|
||||
lastStartedTransitionStep.to == KeyguardState.OCCLUDED
|
||||
) {
|
||||
keyguardTransitionRepository.startTransition(
|
||||
TransitionInfo(
|
||||
ownerName = name,
|
||||
from = KeyguardState.OCCLUDED,
|
||||
to = KeyguardState.ALTERNATE_BOUNCER,
|
||||
animator = getAnimator(),
|
||||
)
|
||||
)
|
||||
startTransitionTo(KeyguardState.ALTERNATE_BOUNCER)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun getAnimator(duration: Duration = DEFAULT_DURATION): ValueAnimator {
|
||||
override fun getDefaultAnimatorForTransitionsToState(toState: KeyguardState): ValueAnimator {
|
||||
return ValueAnimator().apply {
|
||||
setInterpolator(Interpolators.LINEAR)
|
||||
setDuration(duration.inWholeMilliseconds)
|
||||
interpolator = Interpolators.LINEAR
|
||||
duration =
|
||||
when (toState) {
|
||||
KeyguardState.LOCKSCREEN -> TO_LOCKSCREEN_DURATION
|
||||
else -> DEFAULT_DURATION
|
||||
}.inWholeMilliseconds
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -25,12 +25,10 @@ import com.android.systemui.dagger.SysUISingleton
|
||||
import com.android.systemui.dagger.qualifiers.Application
|
||||
import com.android.systemui.keyguard.data.repository.KeyguardTransitionRepository
|
||||
import com.android.systemui.keyguard.shared.model.KeyguardState
|
||||
import com.android.systemui.keyguard.shared.model.TransitionInfo
|
||||
import com.android.systemui.keyguard.shared.model.WakefulnessState
|
||||
import com.android.systemui.util.kotlin.Utils.Companion.toQuad
|
||||
import com.android.systemui.util.kotlin.sample
|
||||
import javax.inject.Inject
|
||||
import kotlin.time.Duration
|
||||
import kotlin.time.Duration.Companion.milliseconds
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.flow.combine
|
||||
@@ -40,12 +38,15 @@ import kotlinx.coroutines.launch
|
||||
class FromPrimaryBouncerTransitionInteractor
|
||||
@Inject
|
||||
constructor(
|
||||
override val transitionRepository: KeyguardTransitionRepository,
|
||||
override val transitionInteractor: KeyguardTransitionInteractor,
|
||||
@Application private val scope: CoroutineScope,
|
||||
private val keyguardInteractor: KeyguardInteractor,
|
||||
private val keyguardTransitionRepository: KeyguardTransitionRepository,
|
||||
private val keyguardTransitionInteractor: KeyguardTransitionInteractor,
|
||||
private val keyguardSecurityModel: KeyguardSecurityModel,
|
||||
) : TransitionInteractor(FromPrimaryBouncerTransitionInteractor::class.simpleName!!) {
|
||||
) :
|
||||
TransitionInteractor(
|
||||
fromState = KeyguardState.PRIMARY_BOUNCER,
|
||||
) {
|
||||
|
||||
override fun start() {
|
||||
listenForPrimaryBouncerToGone()
|
||||
@@ -59,7 +60,7 @@ constructor(
|
||||
.sample(
|
||||
combine(
|
||||
keyguardInteractor.wakefulnessModel,
|
||||
keyguardTransitionInteractor.startedKeyguardTransitionStep,
|
||||
transitionInteractor.startedKeyguardTransitionStep,
|
||||
keyguardInteractor.isKeyguardOccluded,
|
||||
::Triple
|
||||
),
|
||||
@@ -73,20 +74,8 @@ constructor(
|
||||
(wakefulnessState.state == WakefulnessState.AWAKE ||
|
||||
wakefulnessState.state == WakefulnessState.STARTING_TO_WAKE)
|
||||
) {
|
||||
val to =
|
||||
if (occluded) {
|
||||
KeyguardState.OCCLUDED
|
||||
} else {
|
||||
KeyguardState.LOCKSCREEN
|
||||
}
|
||||
|
||||
keyguardTransitionRepository.startTransition(
|
||||
TransitionInfo(
|
||||
ownerName = name,
|
||||
from = KeyguardState.PRIMARY_BOUNCER,
|
||||
to = to,
|
||||
animator = getAnimator(),
|
||||
)
|
||||
startTransitionTo(
|
||||
if (occluded) KeyguardState.OCCLUDED else KeyguardState.LOCKSCREEN
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -99,7 +88,7 @@ constructor(
|
||||
.sample(
|
||||
combine(
|
||||
keyguardInteractor.wakefulnessModel,
|
||||
keyguardTransitionInteractor.startedKeyguardTransitionStep,
|
||||
transitionInteractor.startedKeyguardTransitionStep,
|
||||
keyguardInteractor.isAodAvailable,
|
||||
::Triple
|
||||
),
|
||||
@@ -114,20 +103,8 @@ constructor(
|
||||
(wakefulnessState.state == WakefulnessState.STARTING_TO_SLEEP ||
|
||||
wakefulnessState.state == WakefulnessState.ASLEEP)
|
||||
) {
|
||||
val to =
|
||||
if (isAodAvailable) {
|
||||
KeyguardState.AOD
|
||||
} else {
|
||||
KeyguardState.DOZING
|
||||
}
|
||||
|
||||
keyguardTransitionRepository.startTransition(
|
||||
TransitionInfo(
|
||||
ownerName = name,
|
||||
from = KeyguardState.PRIMARY_BOUNCER,
|
||||
to = to,
|
||||
animator = getAnimator(),
|
||||
)
|
||||
startTransitionTo(
|
||||
if (isAodAvailable) KeyguardState.AOD else KeyguardState.DOZING
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -137,7 +114,7 @@ constructor(
|
||||
private fun listenForPrimaryBouncerToGone() {
|
||||
scope.launch {
|
||||
keyguardInteractor.isKeyguardGoingAway
|
||||
.sample(keyguardTransitionInteractor.startedKeyguardTransitionStep, ::Pair)
|
||||
.sample(transitionInteractor.startedKeyguardTransitionStep, ::Pair)
|
||||
.collect { (isKeyguardGoingAway, lastStartedTransitionStep) ->
|
||||
if (
|
||||
isKeyguardGoingAway &&
|
||||
@@ -154,24 +131,24 @@ constructor(
|
||||
} else {
|
||||
TO_GONE_DURATION
|
||||
}
|
||||
keyguardTransitionRepository.startTransition(
|
||||
TransitionInfo(
|
||||
ownerName = name,
|
||||
from = KeyguardState.PRIMARY_BOUNCER,
|
||||
to = KeyguardState.GONE,
|
||||
animator = getAnimator(duration),
|
||||
),
|
||||
resetIfCanceled = true,
|
||||
|
||||
startTransitionTo(
|
||||
toState = KeyguardState.GONE,
|
||||
animator =
|
||||
getDefaultAnimatorForTransitionsToState(KeyguardState.GONE).apply {
|
||||
this.duration = duration.inWholeMilliseconds
|
||||
},
|
||||
resetIfCancelled = true
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun getAnimator(duration: Duration = DEFAULT_DURATION): ValueAnimator {
|
||||
override fun getDefaultAnimatorForTransitionsToState(toState: KeyguardState): ValueAnimator {
|
||||
return ValueAnimator().apply {
|
||||
setInterpolator(Interpolators.LINEAR)
|
||||
setDuration(duration.inWholeMilliseconds)
|
||||
interpolator = Interpolators.LINEAR
|
||||
duration = DEFAULT_DURATION.inWholeMilliseconds
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -47,6 +47,8 @@ constructor(
|
||||
private val repository: KeyguardTransitionRepository,
|
||||
@Application val scope: CoroutineScope,
|
||||
) {
|
||||
private val TAG = this::class.simpleName
|
||||
|
||||
/** (any)->GONE transition information */
|
||||
val anyStateToGoneTransition: Flow<TransitionStep> =
|
||||
repository.transitions.filter { step -> step.to == KeyguardState.GONE }
|
||||
|
||||
@@ -15,6 +15,14 @@
|
||||
*/
|
||||
|
||||
package com.android.systemui.keyguard.domain.interactor
|
||||
|
||||
import android.animation.ValueAnimator
|
||||
import android.util.Log
|
||||
import com.android.systemui.keyguard.data.repository.KeyguardTransitionRepository
|
||||
import com.android.systemui.keyguard.shared.model.KeyguardState
|
||||
import com.android.systemui.keyguard.shared.model.TransitionInfo
|
||||
import java.util.UUID
|
||||
|
||||
/**
|
||||
* Each TransitionInteractor is responsible for determining under which conditions to notify
|
||||
* [KeyguardTransitionRepository] to signal a transition. When (and if) the transition occurs is
|
||||
@@ -26,6 +34,50 @@ package com.android.systemui.keyguard.domain.interactor
|
||||
* MUST list implementing classes in dagger module [StartKeyguardTransitionModule] and also in the
|
||||
* 'when' clause of [KeyguardTransitionCoreStartable]
|
||||
*/
|
||||
sealed class TransitionInteractor(val name: String) {
|
||||
sealed class TransitionInteractor(
|
||||
val fromState: KeyguardState,
|
||||
) {
|
||||
val name = this::class.simpleName ?: "UnknownTransitionInteractor"
|
||||
|
||||
abstract val transitionRepository: KeyguardTransitionRepository
|
||||
abstract val transitionInteractor: KeyguardTransitionInteractor
|
||||
abstract fun start()
|
||||
|
||||
fun startTransitionTo(
|
||||
toState: KeyguardState,
|
||||
animator: ValueAnimator? = getDefaultAnimatorForTransitionsToState(toState),
|
||||
resetIfCancelled: Boolean = false
|
||||
): UUID? {
|
||||
if (
|
||||
fromState != transitionInteractor.startedKeyguardState.value &&
|
||||
fromState != transitionInteractor.finishedKeyguardState.value
|
||||
) {
|
||||
Log.e(
|
||||
name,
|
||||
"startTransition: We were asked to transition from " +
|
||||
"$fromState to $toState, however we last finished a transition to " +
|
||||
"${transitionInteractor.finishedKeyguardState.value}, " +
|
||||
"and last started a transition to " +
|
||||
"${transitionInteractor.startedKeyguardState.value}. " +
|
||||
"Ignoring startTransition, but this should never happen."
|
||||
)
|
||||
return null
|
||||
}
|
||||
|
||||
return transitionRepository.startTransition(
|
||||
TransitionInfo(
|
||||
name,
|
||||
fromState,
|
||||
toState,
|
||||
animator,
|
||||
),
|
||||
resetIfCancelled
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a ValueAnimator to be used for transitions to [toState], if one is not explicitly
|
||||
* passed to [startTransitionTo].
|
||||
*/
|
||||
abstract fun getDefaultAnimatorForTransitionsToState(toState: KeyguardState): ValueAnimator?
|
||||
}
|
||||
|
||||
@@ -25,7 +25,6 @@ import com.android.systemui.flags.FakeFeatureFlags
|
||||
import com.android.systemui.flags.Flags
|
||||
import com.android.systemui.keyguard.data.repository.FakeKeyguardRepository
|
||||
import com.android.systemui.keyguard.data.repository.FakeKeyguardTransitionRepository
|
||||
import com.android.systemui.keyguard.data.repository.KeyguardTransitionRepository
|
||||
import com.android.systemui.keyguard.shared.model.BiometricUnlockModel
|
||||
import com.android.systemui.keyguard.shared.model.DozeStateModel
|
||||
import com.android.systemui.keyguard.shared.model.DozeTransitionModel
|
||||
@@ -56,6 +55,7 @@ import org.mockito.ArgumentMatchers.anyInt
|
||||
import org.mockito.Mock
|
||||
import org.mockito.Mockito.never
|
||||
import org.mockito.Mockito.reset
|
||||
import org.mockito.Mockito.spy
|
||||
import org.mockito.Mockito.verify
|
||||
import org.mockito.MockitoAnnotations
|
||||
|
||||
@@ -72,10 +72,10 @@ class KeyguardTransitionScenariosTest : SysuiTestCase() {
|
||||
private lateinit var bouncerRepository: FakeKeyguardBouncerRepository
|
||||
private lateinit var shadeRepository: ShadeRepository
|
||||
private lateinit var transitionRepository: FakeKeyguardTransitionRepository
|
||||
private lateinit var transitionInteractor: KeyguardTransitionInteractor
|
||||
private lateinit var featureFlags: FakeFeatureFlags
|
||||
|
||||
// Used to verify transition requests for test output
|
||||
@Mock private lateinit var mockTransitionRepository: KeyguardTransitionRepository
|
||||
@Mock private lateinit var keyguardSecurityModel: KeyguardSecurityModel
|
||||
|
||||
private lateinit var fromLockscreenTransitionInteractor: FromLockscreenTransitionInteractor
|
||||
@@ -97,92 +97,71 @@ class KeyguardTransitionScenariosTest : SysuiTestCase() {
|
||||
keyguardRepository = FakeKeyguardRepository()
|
||||
bouncerRepository = FakeKeyguardBouncerRepository()
|
||||
shadeRepository = FakeShadeRepository()
|
||||
transitionRepository = FakeKeyguardTransitionRepository()
|
||||
transitionRepository = spy(FakeKeyguardTransitionRepository())
|
||||
transitionInteractor = KeyguardTransitionInteractor(
|
||||
transitionRepository, testScope.backgroundScope)
|
||||
|
||||
whenever(keyguardSecurityModel.getSecurityMode(anyInt())).thenReturn(PIN)
|
||||
|
||||
featureFlags = FakeFeatureFlags().apply { set(Flags.FACE_AUTH_REFACTOR, true) }
|
||||
fromLockscreenTransitionInteractor =
|
||||
FromLockscreenTransitionInteractor(
|
||||
|
||||
fromLockscreenTransitionInteractor = FromLockscreenTransitionInteractor(
|
||||
scope = testScope,
|
||||
keyguardInteractor = createKeyguardInteractor(),
|
||||
transitionRepository = transitionRepository,
|
||||
transitionInteractor = transitionInteractor,
|
||||
shadeRepository = shadeRepository,
|
||||
keyguardTransitionRepository = mockTransitionRepository,
|
||||
keyguardTransitionInteractor =
|
||||
KeyguardTransitionInteractor(transitionRepository, testScope.backgroundScope),
|
||||
)
|
||||
fromLockscreenTransitionInteractor.start()
|
||||
).apply { start() }
|
||||
|
||||
fromDreamingTransitionInteractor =
|
||||
FromDreamingTransitionInteractor(
|
||||
fromPrimaryBouncerTransitionInteractor = FromPrimaryBouncerTransitionInteractor(
|
||||
scope = testScope,
|
||||
keyguardInteractor = createKeyguardInteractor(),
|
||||
keyguardTransitionRepository = mockTransitionRepository,
|
||||
keyguardTransitionInteractor =
|
||||
KeyguardTransitionInteractor(transitionRepository, testScope.backgroundScope),
|
||||
)
|
||||
fromDreamingTransitionInteractor.start()
|
||||
|
||||
fromAodTransitionInteractor =
|
||||
FromAodTransitionInteractor(
|
||||
scope = testScope,
|
||||
keyguardInteractor = createKeyguardInteractor(),
|
||||
keyguardTransitionRepository = mockTransitionRepository,
|
||||
keyguardTransitionInteractor =
|
||||
KeyguardTransitionInteractor(transitionRepository, testScope.backgroundScope),
|
||||
)
|
||||
fromAodTransitionInteractor.start()
|
||||
|
||||
fromGoneTransitionInteractor =
|
||||
FromGoneTransitionInteractor(
|
||||
scope = testScope,
|
||||
keyguardInteractor = createKeyguardInteractor(),
|
||||
keyguardTransitionRepository = mockTransitionRepository,
|
||||
keyguardTransitionInteractor =
|
||||
KeyguardTransitionInteractor(transitionRepository, testScope.backgroundScope),
|
||||
)
|
||||
fromGoneTransitionInteractor.start()
|
||||
|
||||
fromDozingTransitionInteractor =
|
||||
FromDozingTransitionInteractor(
|
||||
scope = testScope,
|
||||
keyguardInteractor = createKeyguardInteractor(),
|
||||
keyguardTransitionRepository = mockTransitionRepository,
|
||||
keyguardTransitionInteractor =
|
||||
KeyguardTransitionInteractor(transitionRepository, testScope.backgroundScope),
|
||||
)
|
||||
fromDozingTransitionInteractor.start()
|
||||
|
||||
fromOccludedTransitionInteractor =
|
||||
FromOccludedTransitionInteractor(
|
||||
scope = testScope,
|
||||
keyguardInteractor = createKeyguardInteractor(),
|
||||
keyguardTransitionRepository = mockTransitionRepository,
|
||||
keyguardTransitionInteractor =
|
||||
KeyguardTransitionInteractor(transitionRepository, testScope.backgroundScope),
|
||||
)
|
||||
fromOccludedTransitionInteractor.start()
|
||||
|
||||
fromAlternateBouncerTransitionInteractor =
|
||||
FromAlternateBouncerTransitionInteractor(
|
||||
scope = testScope,
|
||||
keyguardInteractor = createKeyguardInteractor(),
|
||||
keyguardTransitionRepository = mockTransitionRepository,
|
||||
keyguardTransitionInteractor =
|
||||
KeyguardTransitionInteractor(transitionRepository, testScope.backgroundScope),
|
||||
)
|
||||
fromAlternateBouncerTransitionInteractor.start()
|
||||
|
||||
fromPrimaryBouncerTransitionInteractor =
|
||||
FromPrimaryBouncerTransitionInteractor(
|
||||
scope = testScope,
|
||||
keyguardInteractor = createKeyguardInteractor(),
|
||||
keyguardTransitionRepository = mockTransitionRepository,
|
||||
keyguardTransitionInteractor =
|
||||
KeyguardTransitionInteractor(transitionRepository, testScope.backgroundScope),
|
||||
transitionRepository = transitionRepository,
|
||||
transitionInteractor = transitionInteractor,
|
||||
keyguardSecurityModel = keyguardSecurityModel,
|
||||
)
|
||||
fromPrimaryBouncerTransitionInteractor.start()
|
||||
).apply { start() }
|
||||
|
||||
fromDreamingTransitionInteractor = FromDreamingTransitionInteractor(
|
||||
scope = testScope,
|
||||
keyguardInteractor = createKeyguardInteractor(),
|
||||
transitionRepository = transitionRepository,
|
||||
transitionInteractor = transitionInteractor,
|
||||
).apply { start() }
|
||||
|
||||
fromAodTransitionInteractor = FromAodTransitionInteractor(
|
||||
scope = testScope,
|
||||
keyguardInteractor = createKeyguardInteractor(),
|
||||
transitionRepository = transitionRepository,
|
||||
transitionInteractor = transitionInteractor,
|
||||
).apply { start() }
|
||||
|
||||
fromGoneTransitionInteractor = FromGoneTransitionInteractor(
|
||||
scope = testScope,
|
||||
keyguardInteractor = createKeyguardInteractor(),
|
||||
transitionRepository = transitionRepository,
|
||||
transitionInteractor = transitionInteractor,
|
||||
).apply { start() }
|
||||
|
||||
fromDozingTransitionInteractor = FromDozingTransitionInteractor(
|
||||
scope = testScope,
|
||||
keyguardInteractor = createKeyguardInteractor(),
|
||||
transitionRepository = transitionRepository,
|
||||
transitionInteractor = transitionInteractor,
|
||||
).apply { start() }
|
||||
|
||||
fromOccludedTransitionInteractor = FromOccludedTransitionInteractor(
|
||||
scope = testScope,
|
||||
keyguardInteractor = createKeyguardInteractor(),
|
||||
transitionRepository = transitionRepository,
|
||||
transitionInteractor = transitionInteractor,
|
||||
).apply { start() }
|
||||
|
||||
fromAlternateBouncerTransitionInteractor = FromAlternateBouncerTransitionInteractor(
|
||||
scope = testScope,
|
||||
keyguardInteractor = createKeyguardInteractor(),
|
||||
transitionRepository = transitionRepository,
|
||||
transitionInteractor = transitionInteractor,
|
||||
).apply { start() }
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -201,7 +180,7 @@ class KeyguardTransitionScenariosTest : SysuiTestCase() {
|
||||
|
||||
val info =
|
||||
withArgCaptor<TransitionInfo> {
|
||||
verify(mockTransitionRepository).startTransition(capture(), anyBoolean())
|
||||
verify(transitionRepository).startTransition(capture(), anyBoolean())
|
||||
}
|
||||
// THEN a transition to PRIMARY_BOUNCER should occur
|
||||
assertThat(info.ownerName).isEqualTo("FromLockscreenTransitionInteractor")
|
||||
@@ -228,7 +207,7 @@ class KeyguardTransitionScenariosTest : SysuiTestCase() {
|
||||
|
||||
val info =
|
||||
withArgCaptor<TransitionInfo> {
|
||||
verify(mockTransitionRepository).startTransition(capture(), anyBoolean())
|
||||
verify(transitionRepository).startTransition(capture(), anyBoolean())
|
||||
}
|
||||
// THEN a transition to DOZING should occur
|
||||
assertThat(info.ownerName).isEqualTo("FromOccludedTransitionInteractor")
|
||||
@@ -255,7 +234,7 @@ class KeyguardTransitionScenariosTest : SysuiTestCase() {
|
||||
|
||||
val info =
|
||||
withArgCaptor<TransitionInfo> {
|
||||
verify(mockTransitionRepository).startTransition(capture(), anyBoolean())
|
||||
verify(transitionRepository).startTransition(capture(), anyBoolean())
|
||||
}
|
||||
// THEN a transition to DOZING should occur
|
||||
assertThat(info.ownerName).isEqualTo("FromOccludedTransitionInteractor")
|
||||
@@ -286,7 +265,7 @@ class KeyguardTransitionScenariosTest : SysuiTestCase() {
|
||||
|
||||
val info =
|
||||
withArgCaptor<TransitionInfo> {
|
||||
verify(mockTransitionRepository).startTransition(capture(), anyBoolean())
|
||||
verify(transitionRepository).startTransition(capture(), anyBoolean())
|
||||
}
|
||||
// THEN a transition to DREAMING should occur
|
||||
assertThat(info.ownerName).isEqualTo("FromLockscreenTransitionInteractor")
|
||||
@@ -313,7 +292,7 @@ class KeyguardTransitionScenariosTest : SysuiTestCase() {
|
||||
|
||||
val info =
|
||||
withArgCaptor<TransitionInfo> {
|
||||
verify(mockTransitionRepository).startTransition(capture(), anyBoolean())
|
||||
verify(transitionRepository).startTransition(capture(), anyBoolean())
|
||||
}
|
||||
// THEN a transition to DOZING should occur
|
||||
assertThat(info.ownerName).isEqualTo("FromLockscreenTransitionInteractor")
|
||||
@@ -340,7 +319,7 @@ class KeyguardTransitionScenariosTest : SysuiTestCase() {
|
||||
|
||||
val info =
|
||||
withArgCaptor<TransitionInfo> {
|
||||
verify(mockTransitionRepository).startTransition(capture(), anyBoolean())
|
||||
verify(transitionRepository).startTransition(capture(), anyBoolean())
|
||||
}
|
||||
// THEN a transition to DOZING should occur
|
||||
assertThat(info.ownerName).isEqualTo("FromLockscreenTransitionInteractor")
|
||||
@@ -363,7 +342,7 @@ class KeyguardTransitionScenariosTest : SysuiTestCase() {
|
||||
|
||||
val info =
|
||||
withArgCaptor<TransitionInfo> {
|
||||
verify(mockTransitionRepository).startTransition(capture(), anyBoolean())
|
||||
verify(transitionRepository).startTransition(capture(), anyBoolean())
|
||||
}
|
||||
// THEN a transition to DOZING should occur
|
||||
assertThat(info.ownerName).isEqualTo("FromDozingTransitionInteractor")
|
||||
@@ -388,14 +367,14 @@ class KeyguardTransitionScenariosTest : SysuiTestCase() {
|
||||
)
|
||||
)
|
||||
runCurrent()
|
||||
reset(mockTransitionRepository)
|
||||
reset(transitionRepository)
|
||||
|
||||
// WHEN a signal comes that dreaming is enabled
|
||||
keyguardRepository.setDreamingWithOverlay(true)
|
||||
advanceUntilIdle()
|
||||
|
||||
// THEN the transition is ignored
|
||||
verify(mockTransitionRepository, never()).startTransition(any(), anyBoolean())
|
||||
verify(transitionRepository, never()).startTransition(any(), anyBoolean())
|
||||
|
||||
coroutineContext.cancelChildren()
|
||||
}
|
||||
@@ -412,7 +391,7 @@ class KeyguardTransitionScenariosTest : SysuiTestCase() {
|
||||
|
||||
val info =
|
||||
withArgCaptor<TransitionInfo> {
|
||||
verify(mockTransitionRepository).startTransition(capture(), anyBoolean())
|
||||
verify(transitionRepository).startTransition(capture(), anyBoolean())
|
||||
}
|
||||
// THEN a transition to DOZING should occur
|
||||
assertThat(info.ownerName).isEqualTo("FromDozingTransitionInteractor")
|
||||
@@ -439,7 +418,7 @@ class KeyguardTransitionScenariosTest : SysuiTestCase() {
|
||||
|
||||
val info =
|
||||
withArgCaptor<TransitionInfo> {
|
||||
verify(mockTransitionRepository).startTransition(capture(), anyBoolean())
|
||||
verify(transitionRepository).startTransition(capture(), anyBoolean())
|
||||
}
|
||||
// THEN a transition to DOZING should occur
|
||||
assertThat(info.ownerName).isEqualTo("FromGoneTransitionInteractor")
|
||||
@@ -466,7 +445,7 @@ class KeyguardTransitionScenariosTest : SysuiTestCase() {
|
||||
|
||||
val info =
|
||||
withArgCaptor<TransitionInfo> {
|
||||
verify(mockTransitionRepository).startTransition(capture(), anyBoolean())
|
||||
verify(transitionRepository).startTransition(capture(), anyBoolean())
|
||||
}
|
||||
// THEN a transition to AOD should occur
|
||||
assertThat(info.ownerName).isEqualTo("FromGoneTransitionInteractor")
|
||||
@@ -489,7 +468,7 @@ class KeyguardTransitionScenariosTest : SysuiTestCase() {
|
||||
|
||||
val info =
|
||||
withArgCaptor<TransitionInfo> {
|
||||
verify(mockTransitionRepository).startTransition(capture(), anyBoolean())
|
||||
verify(transitionRepository).startTransition(capture(), anyBoolean())
|
||||
}
|
||||
// THEN a transition to AOD should occur
|
||||
assertThat(info.ownerName).isEqualTo("FromGoneTransitionInteractor")
|
||||
@@ -520,7 +499,7 @@ class KeyguardTransitionScenariosTest : SysuiTestCase() {
|
||||
|
||||
val info =
|
||||
withArgCaptor<TransitionInfo> {
|
||||
verify(mockTransitionRepository).startTransition(capture(), anyBoolean())
|
||||
verify(transitionRepository).startTransition(capture(), anyBoolean())
|
||||
}
|
||||
// THEN a transition to DREAMING should occur
|
||||
assertThat(info.ownerName).isEqualTo("FromGoneTransitionInteractor")
|
||||
@@ -543,7 +522,7 @@ class KeyguardTransitionScenariosTest : SysuiTestCase() {
|
||||
|
||||
val info =
|
||||
withArgCaptor<TransitionInfo> {
|
||||
verify(mockTransitionRepository).startTransition(capture(), anyBoolean())
|
||||
verify(transitionRepository).startTransition(capture(), anyBoolean())
|
||||
}
|
||||
// THEN a transition to PRIMARY_BOUNCER should occur
|
||||
assertThat(info.ownerName).isEqualTo("FromAlternateBouncerTransitionInteractor")
|
||||
@@ -572,7 +551,7 @@ class KeyguardTransitionScenariosTest : SysuiTestCase() {
|
||||
|
||||
val info =
|
||||
withArgCaptor<TransitionInfo> {
|
||||
verify(mockTransitionRepository).startTransition(capture(), anyBoolean())
|
||||
verify(transitionRepository).startTransition(capture(), anyBoolean())
|
||||
}
|
||||
// THEN a transition to AOD should occur
|
||||
assertThat(info.ownerName).isEqualTo("FromAlternateBouncerTransitionInteractor")
|
||||
@@ -602,7 +581,7 @@ class KeyguardTransitionScenariosTest : SysuiTestCase() {
|
||||
|
||||
val info =
|
||||
withArgCaptor<TransitionInfo> {
|
||||
verify(mockTransitionRepository).startTransition(capture(), anyBoolean())
|
||||
verify(transitionRepository).startTransition(capture(), anyBoolean())
|
||||
}
|
||||
// THEN a transition to DOZING should occur
|
||||
assertThat(info.ownerName).isEqualTo("FromAlternateBouncerTransitionInteractor")
|
||||
@@ -630,7 +609,7 @@ class KeyguardTransitionScenariosTest : SysuiTestCase() {
|
||||
|
||||
val info =
|
||||
withArgCaptor<TransitionInfo> {
|
||||
verify(mockTransitionRepository).startTransition(capture(), anyBoolean())
|
||||
verify(transitionRepository).startTransition(capture(), anyBoolean())
|
||||
}
|
||||
// THEN a transition to LOCKSCREEN should occur
|
||||
assertThat(info.ownerName).isEqualTo("FromAlternateBouncerTransitionInteractor")
|
||||
@@ -658,7 +637,7 @@ class KeyguardTransitionScenariosTest : SysuiTestCase() {
|
||||
|
||||
val info =
|
||||
withArgCaptor<TransitionInfo> {
|
||||
verify(mockTransitionRepository).startTransition(capture(), anyBoolean())
|
||||
verify(transitionRepository).startTransition(capture(), anyBoolean())
|
||||
}
|
||||
// THEN a transition to AOD should occur
|
||||
assertThat(info.ownerName).isEqualTo("FromPrimaryBouncerTransitionInteractor")
|
||||
@@ -686,7 +665,7 @@ class KeyguardTransitionScenariosTest : SysuiTestCase() {
|
||||
|
||||
val info =
|
||||
withArgCaptor<TransitionInfo> {
|
||||
verify(mockTransitionRepository).startTransition(capture(), anyBoolean())
|
||||
verify(transitionRepository).startTransition(capture(), anyBoolean())
|
||||
}
|
||||
// THEN a transition to DOZING should occur
|
||||
assertThat(info.ownerName).isEqualTo("FromPrimaryBouncerTransitionInteractor")
|
||||
@@ -713,7 +692,7 @@ class KeyguardTransitionScenariosTest : SysuiTestCase() {
|
||||
|
||||
val info =
|
||||
withArgCaptor<TransitionInfo> {
|
||||
verify(mockTransitionRepository).startTransition(capture(), anyBoolean())
|
||||
verify(transitionRepository).startTransition(capture(), anyBoolean())
|
||||
}
|
||||
// THEN a transition to LOCKSCREEN should occur
|
||||
assertThat(info.ownerName).isEqualTo("FromPrimaryBouncerTransitionInteractor")
|
||||
@@ -744,7 +723,7 @@ class KeyguardTransitionScenariosTest : SysuiTestCase() {
|
||||
|
||||
val info =
|
||||
withArgCaptor<TransitionInfo> {
|
||||
verify(mockTransitionRepository).startTransition(capture(), anyBoolean())
|
||||
verify(transitionRepository).startTransition(capture(), anyBoolean())
|
||||
}
|
||||
// THEN a transition to GONE should occur
|
||||
assertThat(info.ownerName).isEqualTo("FromOccludedTransitionInteractor")
|
||||
@@ -773,7 +752,7 @@ class KeyguardTransitionScenariosTest : SysuiTestCase() {
|
||||
|
||||
val info =
|
||||
withArgCaptor<TransitionInfo> {
|
||||
verify(mockTransitionRepository).startTransition(capture(), anyBoolean())
|
||||
verify(transitionRepository).startTransition(capture(), anyBoolean())
|
||||
}
|
||||
// THEN a transition to LOCKSCREEN should occur
|
||||
assertThat(info.ownerName).isEqualTo("FromOccludedTransitionInteractor")
|
||||
@@ -799,7 +778,7 @@ class KeyguardTransitionScenariosTest : SysuiTestCase() {
|
||||
|
||||
val info =
|
||||
withArgCaptor<TransitionInfo> {
|
||||
verify(mockTransitionRepository).startTransition(capture(), anyBoolean())
|
||||
verify(transitionRepository).startTransition(capture(), anyBoolean())
|
||||
}
|
||||
// THEN a transition to AlternateBouncer should occur
|
||||
assertThat(info.ownerName).isEqualTo("FromOccludedTransitionInteractor")
|
||||
@@ -828,7 +807,7 @@ class KeyguardTransitionScenariosTest : SysuiTestCase() {
|
||||
|
||||
val info =
|
||||
withArgCaptor<TransitionInfo> {
|
||||
verify(mockTransitionRepository).startTransition(capture(), anyBoolean())
|
||||
verify(transitionRepository).startTransition(capture(), anyBoolean())
|
||||
}
|
||||
// THEN a transition to AlternateBouncer should occur
|
||||
assertThat(info.ownerName).isEqualTo("FromPrimaryBouncerTransitionInteractor")
|
||||
@@ -890,6 +869,6 @@ class KeyguardTransitionScenariosTest : SysuiTestCase() {
|
||||
)
|
||||
)
|
||||
runCurrent()
|
||||
reset(mockTransitionRepository)
|
||||
reset(transitionRepository)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user