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

Commit 2442a334 authored by Beth Thibodeau's avatar Beth Thibodeau Committed by Android (Google) Code Review
Browse files

Merge "Handle possible null PlaybackState"

parents 8ff36752 f06e4fff
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())
    }
}