Loading packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotSoundController.kt +9 −1 Original line number Diff line number Diff line Loading @@ -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 { Loading packages/SystemUI/tests/src/com/android/systemui/screenshot/ScreenshotSoundControllerTest.kt +11 −0 Original line number Diff line number Diff line Loading @@ -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() Loading Loading
packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotSoundController.kt +9 −1 Original line number Diff line number Diff line Loading @@ -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 { Loading
packages/SystemUI/tests/src/com/android/systemui/screenshot/ScreenshotSoundControllerTest.kt +11 −0 Original line number Diff line number Diff line Loading @@ -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() Loading