diff options
3 files changed, 29 insertions, 1 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/haptics/slider/SeekableSliderEventProducer.kt b/packages/SystemUI/src/com/android/systemui/haptics/slider/SeekableSliderEventProducer.kt index 629b361064a7..cfa5294567b7 100644 --- a/packages/SystemUI/src/com/android/systemui/haptics/slider/SeekableSliderEventProducer.kt +++ b/packages/SystemUI/src/com/android/systemui/haptics/slider/SeekableSliderEventProducer.kt @@ -65,4 +65,11 @@ class SeekableSliderEventProducer : SliderEventProducer, OnSeekBarChangeListener SliderEvent(SliderEventType.STOPPED_TRACKING_TOUCH, previousEvent.currentProgress) } } + + /** The arrow navigation that was operating the slider has stopped. */ + fun onArrowUp() { + _currentEvent.update { previousEvent -> + SliderEvent(SliderEventType.ARROW_UP, previousEvent.currentProgress) + } + } } diff --git a/packages/SystemUI/src/com/android/systemui/haptics/slider/SliderEventType.kt b/packages/SystemUI/src/com/android/systemui/haptics/slider/SliderEventType.kt index 413e27763ba8..4a63941b3f8c 100644 --- a/packages/SystemUI/src/com/android/systemui/haptics/slider/SliderEventType.kt +++ b/packages/SystemUI/src/com/android/systemui/haptics/slider/SliderEventType.kt @@ -29,5 +29,5 @@ enum class SliderEventType { /* The slider has stopped tracking touch events. */ STOPPED_TRACKING_TOUCH, /* The external (not touch) stimulus that was modifying the slider progress has stopped. */ - EXTERNAL_STIMULUS_RELEASE, + ARROW_UP, } diff --git a/packages/SystemUI/tests/src/com/android/systemui/haptics/slider/SeekableSliderEventProducerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/haptics/slider/SeekableSliderEventProducerTest.kt index 71a56cd8588c..c22d35cb214f 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/haptics/slider/SeekableSliderEventProducerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/haptics/slider/SeekableSliderEventProducerTest.kt @@ -123,4 +123,25 @@ class SeekableSliderEventProducerTest : SysuiTestCase() { assertEquals(SliderEvent(SliderEventType.STOPPED_TRACKING_TOUCH, 0.5F), latest) } + + @Test + fun onArrowUp_afterStartTrackingTouch_ArrowUpProduced() = runTest { + val latest by collectLastValue(eventFlow) + + eventProducer.onStartTrackingTouch(seekBar) + eventProducer.onArrowUp() + + assertEquals(SliderEvent(SliderEventType.ARROW_UP, 0f), latest) + } + + @Test + fun onArrowUp_afterChangeByProgram_ArrowUpProduced_withProgress() = runTest { + val progress = 50 + val latest by collectLastValue(eventFlow) + + eventProducer.onProgressChanged(seekBar, progress, false) + eventProducer.onArrowUp() + + assertEquals(SliderEvent(SliderEventType.ARROW_UP, 0.5f), latest) + } } |