Loading packages/SystemUI/src/com/android/systemui/media/SeekBarViewModel.kt +9 −1 Original line number Diff line number Diff line Loading @@ -151,13 +151,21 @@ class SeekBarViewModel @Inject constructor( } /** * Event indicating that the user has moved the seek bar but hasn't yet finished the gesture. * Event indicating that the user has moved the seek bar. * * @param position Current location in the track. */ @AnyThread fun onSeekProgress(position: Long) = bgExecutor.execute { if (scrubbing) { // The user hasn't yet finished their touch gesture, so only update the data for visual // feedback and don't update [controller] yet. _data = _data.copy(elapsedTime = position.toInt()) } else { // The seek progress came from an a11y action and we should immediately update to the // new position. (a11y actions to change the seekbar position don't trigger // SeekBar.OnSeekBarChangeListener.onStartTrackingTouch or onStopTrackingTouch.) onSeek(position) } } Loading packages/SystemUI/tests/src/com/android/systemui/media/SeekBarViewModelTest.kt +8 −4 Original line number Diff line number Diff line Loading @@ -375,16 +375,20 @@ public class SeekBarViewModelTest : SysuiTestCase() { } @Test fun onProgressChangedFromUserWithoutStartTrackingTouch() { // WHEN user starts dragging the seek bar fun onProgressChangedFromUserWithoutStartTrackingTouch_transportUpdated() { whenever(mockController.transportControls).thenReturn(mockTransport) viewModel.updateController(mockController) val pos = 42 val bar = SeekBar(context) // WHEN we get an onProgressChanged event without an onStartTrackingTouch event with(viewModel.seekBarListener) { onProgressChanged(bar, pos, true) } fakeExecutor.runAllReady() // THEN then elapsed time should not be updated assertThat(viewModel.progress.value!!.elapsedTime).isNull() // THEN we immediately update the transport verify(mockTransport).seekTo(pos.toLong()) } @Test Loading Loading
packages/SystemUI/src/com/android/systemui/media/SeekBarViewModel.kt +9 −1 Original line number Diff line number Diff line Loading @@ -151,13 +151,21 @@ class SeekBarViewModel @Inject constructor( } /** * Event indicating that the user has moved the seek bar but hasn't yet finished the gesture. * Event indicating that the user has moved the seek bar. * * @param position Current location in the track. */ @AnyThread fun onSeekProgress(position: Long) = bgExecutor.execute { if (scrubbing) { // The user hasn't yet finished their touch gesture, so only update the data for visual // feedback and don't update [controller] yet. _data = _data.copy(elapsedTime = position.toInt()) } else { // The seek progress came from an a11y action and we should immediately update to the // new position. (a11y actions to change the seekbar position don't trigger // SeekBar.OnSeekBarChangeListener.onStartTrackingTouch or onStopTrackingTouch.) onSeek(position) } } Loading
packages/SystemUI/tests/src/com/android/systemui/media/SeekBarViewModelTest.kt +8 −4 Original line number Diff line number Diff line Loading @@ -375,16 +375,20 @@ public class SeekBarViewModelTest : SysuiTestCase() { } @Test fun onProgressChangedFromUserWithoutStartTrackingTouch() { // WHEN user starts dragging the seek bar fun onProgressChangedFromUserWithoutStartTrackingTouch_transportUpdated() { whenever(mockController.transportControls).thenReturn(mockTransport) viewModel.updateController(mockController) val pos = 42 val bar = SeekBar(context) // WHEN we get an onProgressChanged event without an onStartTrackingTouch event with(viewModel.seekBarListener) { onProgressChanged(bar, pos, true) } fakeExecutor.runAllReady() // THEN then elapsed time should not be updated assertThat(viewModel.progress.value!!.elapsedTime).isNull() // THEN we immediately update the transport verify(mockTransport).seekTo(pos.toLong()) } @Test Loading