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

Commit 16ec1846 authored by Caitlin Cassidy's avatar Caitlin Cassidy Committed by Automerger Merge Worker
Browse files

Merge "[Media] Allow a11y interactions to change seekbar position." into...

Merge "[Media] Allow a11y interactions to change seekbar position." into tm-dev am: b1b22000 am: bed21fb5

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/17892724



Change-Id: I3855eb04488738b3654e8df4eb27d387e71fc704
Ignore-AOSP-First: this is an automerge
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents ebbf314c bed21fb5
Loading
Loading
Loading
Loading
+9 −1
Original line number Diff line number Diff line
@@ -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)
        }
    }

+8 −4
Original line number Diff line number Diff line
@@ -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