Merge "Handle possible null PlaybackState"

This commit is contained in:
Beth Thibodeau
2020-10-19 19:49:01 +00:00
committed by Android (Google) Code Review
2 changed files with 19 additions and 2 deletions

View File

@@ -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()

View File

@@ -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())
}
}