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

Commit 5a446455 authored by Miranda Kephart's avatar Miranda Kephart
Browse files

Catch IllegalStateException in screenshot media player

Bug: 318693272
Fix: 318693272
Flag: NONE
Test: manual
Change-Id: Ib6bc482e7848d9f0caf65a3a33522af64c99e96f
parent a9d2c1f1
Loading
Loading
Loading
Loading
+9 −1
Original line number Diff line number Diff line
@@ -58,8 +58,16 @@ constructor(
        }

    override fun playCameraSound(): Deferred<Unit> {
        return coroutineScope.async("playCameraSound", bgDispatcher) { player.await()?.start() }
        return coroutineScope.async("playCameraSound", bgDispatcher) {
            try {
                player.await()?.start()
            } catch (e: IllegalStateException) {
                Log.w(TAG, "Screenshot sound failed to play", e)
                releaseScreenshotSound()
            }
        }
    }

    override fun releaseScreenshotSound(): Deferred<Unit> {
        return coroutineScope.async("releaseScreenshotSound", bgDispatcher) {
            try {
+11 −0
Original line number Diff line number Diff line
@@ -72,6 +72,17 @@ class ScreenshotSoundControllerTest : SysuiTestCase() {
        verify(mediaPlayer).start()
    }

    @Test
    fun playCameraSound_illegalStateException_doesNotThrow() = runTest {
        whenever(mediaPlayer.start()).thenThrow(IllegalStateException())

        val controller = createController()
        controller.playCameraSound().await()

        verify(mediaPlayer).start()
        verify(mediaPlayer).release()
    }

    @Test
    fun playCameraSound_soundLoadingSuccessful_mediaPlayerReleases() = runTest {
        val controller = createController()