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

Commit f06e4fff authored by Beth Thibodeau's avatar Beth Thibodeau
Browse files

Handle possible null PlaybackState

Fixes: 170706598
Test: atest SeekBarViewModelTest
Change-Id: I78428dd2d48658878957a7b58948a73d3f6bfaad
parent fb038e9b
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -91,9 +91,9 @@ class SeekBarViewModel @Inject constructor(@Background private val bgExecutor: R
        }
    private var playbackState: PlaybackState? = null
    private var callback = object : MediaController.Callback() {
        override fun onPlaybackStateChanged(state: PlaybackState) {
        override fun onPlaybackStateChanged(state: PlaybackState?) {
            playbackState = state
            if (PlaybackState.STATE_NONE.equals(playbackState)) {
            if (playbackState == null || PlaybackState.STATE_NONE.equals(playbackState)) {
                clearController()
            } else {
                checkIfPollingNeeded()
+17 −0
Original line number Diff line number Diff line
@@ -654,4 +654,21 @@ public class SeekBarViewModelTest : SysuiTestCase() {
        fakeExecutor.runAllReady()
        verify(mockController).unregisterCallback(any())
    }

    @Test
    fun nullPlaybackStateUnregistersCallback() {
        viewModel.updateController(mockController)
        val captor = ArgumentCaptor.forClass(MediaController.Callback::class.java)
        verify(mockController).registerCallback(captor.capture())
        val callback = captor.value
        // WHEN the callback receives a null state
        callback.onPlaybackStateChanged(null)
        with(fakeExecutor) {
            advanceClockToNext()
            runAllReady()
        }
        // THEN we unregister callback (as a result of clearing the controller)
        fakeExecutor.runAllReady()
        verify(mockController).unregisterCallback(any())
    }
}