Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 76e80091 authored by Juan Sebastian Martinez's avatar Juan Sebastian Martinez
Browse files

Fixed clicking when directly touching a bookend and progress threshold

comparison.

The slider tracker is now not called to execute haptics when a bookend
is directly selected by touch. This was an unintended behavior.
Moreover, the comparison to determine if a change in slider progress is
beyond the jump threshold was improved to accomodate for floating point
precision error. Impacted tests were also fixed.

Test: atest SeekableSliderTrackerTest
Bug: 295932558
Change-Id: I75237967d69f61dd00c41ae1587680873cf0fd97
parent 036c9104
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -176,7 +176,6 @@ class SeekableSliderTracker(
            SliderState.DRAG_HANDLE_REACHED_BOOKEND -> executeOnBookend()
            SliderState.JUMP_TRACK_LOCATION_SELECTED ->
                sliderListener.onProgressJump(latestProgress)
            SliderState.JUMP_BOOKEND_SELECTED -> executeOnBookend()
            else -> {}
        }
    }
@@ -197,7 +196,7 @@ class SeekableSliderTracker(
        epsilon: Float = 0.00001f,
    ): Boolean {
        val delta = abs(currentProgress - latestProgress)
        return abs(delta - config.jumpThreshold) < epsilon
        return delta > config.jumpThreshold - epsilon
    }

    private fun bookendReached(currentProgress: Float): Boolean {
+2 −4
Original line number Diff line number Diff line
@@ -158,8 +158,8 @@ class SeekableSliderTrackerTest : SysuiTestCase() {
        var progress = 0.5f
        sliderEventProducer.sendEvent(SliderEvent(SliderEventType.STARTED_TRACKING_TOUCH, progress))

        // GIVEN a progress event due to a touch on the slider track at threshold
        progress += config.jumpThreshold
        // GIVEN a progress event due to a touch on the slider track beyond threshold
        progress += (config.jumpThreshold + 0.01f)
        sliderEventProducer.sendEvent(
            SliderEvent(SliderEventType.PROGRESS_CHANGE_BY_USER, progress)
        )
@@ -191,7 +191,6 @@ class SeekableSliderTrackerTest : SysuiTestCase() {
        // THEN the tracker moves to the jump-track location selected state
        assertThat(mSeekableSliderTracker.currentState).isEqualTo(SliderState.JUMP_BOOKEND_SELECTED)
        assertThat(mSeekableSliderTracker.isWaiting).isFalse()
        verify(sliderStateListener).onUpperBookend()
        verifyNoMoreInteractions(sliderStateListener)
    }

@@ -214,7 +213,6 @@ class SeekableSliderTrackerTest : SysuiTestCase() {
        // THEN the tracker moves to the JUMP_TRACK_LOCATION_SELECTED state
        assertThat(mSeekableSliderTracker.currentState).isEqualTo(SliderState.JUMP_BOOKEND_SELECTED)
        assertThat(mSeekableSliderTracker.isWaiting).isFalse()
        verify(sliderStateListener).onLowerBookend()
        verifyNoMoreInteractions(sliderStateListener)
    }