Verify radio restoration waits for both service and Telecom release

This commit is contained in:
evgeny committed 2026-10-29 13:34:25 +01:00
1 parent e81138e3d1
commit eaed746934
2 files changed
+11

No files matched your search

@@ -4,6 +4,7 @@ import android.content.Context
import java.util.concurrent.CompletableFuture
import java.util.concurrent.Future
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.first
/** Только DSP/camera/Telecom и чужие media. CallService/CallController/CoreActivity компилируются из приложения. */
object AppLanguage {
@@ -270,6 +270,16 @@ class CallServiceLifecycleTest {
assertFalse(CallController.blocksMedia())
}
@Test fun radioRestorationAlsoWaitsForTheTelecomConnectionCleanup() {
val radio = RadioAudioEngine.instance(); radio.activeGroup.value = 7
active(); TelecomCallManager.pending = true; CallController.end(); dispatcher.scheduler.runCurrent()
assertEquals(CallPhase.ENDED, state?.phase); assertFalse(CallService.cleanupPending())
assertTrue(CallController.blocksMedia()); assertTrue(radio.restored.isEmpty())
TelecomCallManager.pending = false
await("radio restored after Telecom cleanup") { radio.restored == listOf(7L) }
assertFalse(CallController.blocksMedia())
}
@Test fun unexpectedDestroyStillRetainsFailedCleanupAndEndsTheControllerSession() {
val service = active(); service.audio.failures = setOf("stop")
service.onDestroy()