From 7fdc5b22bac1af6fd074df38bb6b98c921e713a1 Mon Sep 17 00:00:00 2001 From: bachinger Date: Wed, 11 Oct 2023 07:25:07 -0700 Subject: [PATCH] Check whether a session is still managed before removing When the controller of the `MediaNotificationManager` is disconnected, the session is removed from the service without checking whether the session hasn't already been removed. This caused flakiness in `MediaSessionServiceTest.addSession()`. Because there is a public API `MediaSessionService.removeSession()`, the controller can't make an assumption whether the session is still contained in the service when being disconnected. #minor-release PiperOrigin-RevId: 572568350 --- .../androidx/media3/session/MediaNotificationManager.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/libraries/session/src/main/java/androidx/media3/session/MediaNotificationManager.java b/libraries/session/src/main/java/androidx/media3/session/MediaNotificationManager.java index 82e497c537..8093161bd8 100644 --- a/libraries/session/src/main/java/androidx/media3/session/MediaNotificationManager.java +++ b/libraries/session/src/main/java/androidx/media3/session/MediaNotificationManager.java @@ -392,7 +392,9 @@ import java.util.concurrent.TimeoutException; @Override public void onDisconnected(MediaController controller) { - mediaSessionService.removeSession(session); + if (mediaSessionService.isSessionAdded(session)) { + mediaSessionService.removeSession(session); + } // We may need to hide the notification. mediaSessionService.onUpdateNotificationInternal( session, /* startInForegroundWhenPaused= */ false);