Use event time instead of System.currentTimeMillis

As per the associated bugs, using system time is incorrect and can
result in flaky tests. This CL moves over to use event time.

Fix: 265023850
Test: manually verified that the shake animation still shows up if I tap
the quick affordance or slide my finger off of it
Test: manually verified that long-pressing the quick affordance still
works as expected

Change-Id: Ie4a45ade40690637e621b88f6a110fefa2af3216
This commit is contained in:
Alejandro Nijamkin
2023-01-16 13:45:03 -08:00
parent 7eb00fa994
commit d6c7050d9f

View File

@@ -342,14 +342,12 @@ object KeyguardBottomAreaViewBinder {
private val longPressDurationMs = ViewConfiguration.getLongPressTimeout().toLong()
private var longPressAnimator: ViewPropertyAnimator? = null
private var downTimestamp = 0L
@SuppressLint("ClickableViewAccessibility")
override fun onTouch(v: View?, event: MotionEvent?): Boolean {
return when (event?.actionMasked) {
MotionEvent.ACTION_DOWN ->
if (viewModel.configKey != null) {
downTimestamp = System.currentTimeMillis()
longPressAnimator =
view
.animate()
@@ -396,7 +394,7 @@ object KeyguardBottomAreaViewBinder {
MotionEvent.ACTION_UP -> {
cancel(
onAnimationEnd =
if (System.currentTimeMillis() - downTimestamp < longPressDurationMs) {
if (event.eventTime - event.downTime < longPressDurationMs) {
Runnable {
messageDisplayer.invoke(
R.string.keyguard_affordance_press_too_short
@@ -437,7 +435,6 @@ object KeyguardBottomAreaViewBinder {
}
private fun cancel(onAnimationEnd: Runnable? = null) {
downTimestamp = 0L
longPressAnimator?.cancel()
longPressAnimator = null
view.animate().scaleX(1f).scaleY(1f).withEndAction(onAnimationEnd)