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

Commit 281d646a authored by Lucas Dupin's avatar Lucas Dupin
Browse files

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
parent e710511e
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -82,6 +82,7 @@ class MediaTimeoutListener @Inject constructor(

        init {
            mediaController?.registerCallback(this)
            onPlaybackStateChanged(mediaController?.playbackState)
        }

        fun destroy() {
+13 −1
Original line number Diff line number Diff line
@@ -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)