Update udfps icon interpolator for transition to AlternateBouncer

Test: atest UdfpsLockscreenviewModelTest, manual
Bug: 278719514
Change-Id: I2675e43022861d3b1499f9250d196a53b5b65ea7
This commit is contained in:
Beverly
2023-07-13 19:54:02 +00:00
committed by Beverly Tai
parent 15f2355116
commit b775665ee0
2 changed files with 59 additions and 1 deletions

View File

@@ -26,6 +26,7 @@ import com.android.systemui.keyguard.domain.interactor.KeyguardTransitionInterac
import com.android.systemui.keyguard.domain.interactor.UdfpsKeyguardInteractor
import com.android.systemui.keyguard.shared.model.KeyguardState
import com.android.systemui.keyguard.shared.model.StatusBarState
import com.android.wm.shell.animation.Interpolators
import javax.inject.Inject
import kotlin.math.roundToInt
import kotlinx.coroutines.ExperimentalCoroutinesApi
@@ -68,7 +69,7 @@ open class UdfpsLockscreenViewModel(
if (visibleInKeyguardState(it.from, statusBarState)) {
1f
} else {
it.value
Interpolators.FAST_OUT_SLOW_IN.getInterpolation(it.value)
},
color = getColorAttrDefaultColor(context, alternateBouncerColorResId),
)

View File

@@ -40,6 +40,7 @@ import com.android.systemui.statusbar.phone.SystemUIDialogManager
import com.android.systemui.util.mockito.argumentCaptor
import com.android.systemui.util.mockito.mock
import com.android.systemui.util.time.FakeSystemClock
import com.android.wm.shell.animation.Interpolators
import com.google.common.collect.Range
import com.google.common.truth.Truth.assertThat
import kotlinx.coroutines.ExperimentalCoroutinesApi
@@ -689,6 +690,62 @@ class UdfpsLockscreenViewModelTest : SysuiTestCase() {
assertThat(transition?.alpha).isEqualTo(1f)
}
@Test
fun occludedToAlternateBouncer() =
testScope.runTest {
val transition by collectLastValue(underTest.transition)
val visible by collectLastValue(underTest.visible)
// TransitionState.STARTED: occluded -> alternate bouncer
transitionRepository.sendTransitionStep(
TransitionStep(
from = KeyguardState.OCCLUDED,
to = KeyguardState.ALTERNATE_BOUNCER,
value = 0f,
transitionState = TransitionState.STARTED,
ownerName = "occludedToAlternateBouncer",
)
)
runCurrent()
assertThat(transition?.alpha).isEqualTo(1f)
assertThat(transition?.scale).isEqualTo(0f)
assertThat(transition?.color).isEqualTo(alternateBouncerColor)
assertThat(visible).isTrue()
// TransitionState.RUNNING: occluded -> alternate bouncer
transitionRepository.sendTransitionStep(
TransitionStep(
from = KeyguardState.OCCLUDED,
to = KeyguardState.ALTERNATE_BOUNCER,
value = .6f,
transitionState = TransitionState.RUNNING,
ownerName = "occludedToAlternateBouncer",
)
)
runCurrent()
assertThat(transition?.alpha).isEqualTo(1f)
assertThat(transition?.scale)
.isEqualTo(Interpolators.FAST_OUT_SLOW_IN.getInterpolation(.6f))
assertThat(transition?.color).isEqualTo(alternateBouncerColor)
assertThat(visible).isTrue()
// TransitionState.FINISHED: occluded -> alternate bouncer
transitionRepository.sendTransitionStep(
TransitionStep(
from = KeyguardState.OCCLUDED,
to = KeyguardState.ALTERNATE_BOUNCER,
value = 1f,
transitionState = TransitionState.FINISHED,
ownerName = "occludedToAlternateBouncer",
)
)
runCurrent()
assertThat(transition?.alpha).isEqualTo(1f)
assertThat(transition?.scale).isEqualTo(1f)
assertThat(transition?.color).isEqualTo(alternateBouncerColor)
assertThat(visible).isTrue()
}
private suspend fun givenTransitionToLockscreenFinished() {
transitionRepository.sendTransitionStep(
TransitionStep(