Fix issue where player wouldn't expire

Cancellation was being registered only after the first playback state
change. Now I'm forcing registration right after the listener was
created.

Test: atest MediaTimeoutListenerTest
Fixes: 158528088
Fixes: 158788030
Change-Id: I53ffef8c1609212a396ebb2235301c53ca315baf
This commit is contained in:
Lucas Dupin
2020-06-16 16:51:03 -07:00
parent e710511e85
commit 281d646a39
2 changed files with 14 additions and 1 deletions

View File

@@ -82,6 +82,7 @@ class MediaTimeoutListener @Inject constructor(
init {
mediaController?.registerCallback(this)
onPlaybackStateChanged(mediaController?.playbackState)
}
fun destroy() {

View File

@@ -38,6 +38,7 @@ import org.mockito.Mock
import org.mockito.Mockito
import org.mockito.Mockito.`when`
import org.mockito.Mockito.clearInvocations
import org.mockito.Mockito.mock
import org.mockito.Mockito.never
import org.mockito.Mockito.verify
import org.mockito.junit.MockitoJUnit
@@ -99,6 +100,10 @@ class MediaTimeoutListenerTest : SysuiTestCase() {
@Test
fun testOnMediaDataLoaded_registersPlaybackListener() {
val playingState = mock(android.media.session.PlaybackState::class.java)
`when`(playingState.state).thenReturn(PlaybackState.STATE_PLAYING)
`when`(mediaController.playbackState).thenReturn(playingState)
mediaTimeoutListener.onMediaDataLoaded(KEY, null, mediaData)
verify(mediaController).registerCallback(capture(mediaCallbackCaptor))
@@ -108,6 +113,13 @@ class MediaTimeoutListenerTest : SysuiTestCase() {
verify(mediaController, never()).registerCallback(anyObject())
}
@Test
fun testOnMediaDataLoaded_registersTimeout_whenPaused() {
mediaTimeoutListener.onMediaDataLoaded(KEY, null, mediaData)
verify(mediaController).registerCallback(capture(mediaCallbackCaptor))
verify(executor).executeDelayed(capture(timeoutCaptor), anyLong())
}
@Test
fun testOnMediaDataRemoved_unregistersPlaybackListener() {
mediaTimeoutListener.onMediaDataLoaded(KEY, null, mediaData)
@@ -165,4 +177,4 @@ class MediaTimeoutListenerTest : SysuiTestCase() {
mediaTimeoutListener.onMediaDataLoaded(KEY, null, mediaData)
assertThat(mediaTimeoutListener.isTimedOut(KEY)).isFalse()
}
}
}