diff --git a/libraries/session/src/main/java/androidx/media3/session/MediaController.java b/libraries/session/src/main/java/androidx/media3/session/MediaController.java index 05e5f39fce..54f6145d32 100644 --- a/libraries/session/src/main/java/androidx/media3/session/MediaController.java +++ b/libraries/session/src/main/java/androidx/media3/session/MediaController.java @@ -529,6 +529,7 @@ public class MediaController implements Player { try { controller = Futures.getDone(controllerFuture); } catch (CancellationException | ExecutionException e) { + Log.w(TAG, "MediaController future failed (so we couldn't release it)", e); return; } controller.release(); diff --git a/libraries/session/src/main/java/androidx/media3/session/MediaControllerImplBase.java b/libraries/session/src/main/java/androidx/media3/session/MediaControllerImplBase.java index 5a4b33be2b..7ad7b1d91e 100644 --- a/libraries/session/src/main/java/androidx/media3/session/MediaControllerImplBase.java +++ b/libraries/session/src/main/java/androidx/media3/session/MediaControllerImplBase.java @@ -2282,9 +2282,11 @@ import org.checkerframework.checker.nullness.qual.NonNull; SessionResult result; try { result = checkNotNull(future.get(), "SessionResult must not be null"); - } catch (CancellationException unused) { + } catch (CancellationException e) { + Log.w(TAG, "Session operation cancelled", e); result = new SessionResult(SessionResult.RESULT_INFO_SKIPPED); - } catch (ExecutionException | InterruptedException unused) { + } catch (ExecutionException | InterruptedException e) { + Log.w(TAG, "Session operation failed", e); result = new SessionResult(SessionResult.RESULT_ERROR_UNKNOWN); } sendControllerResult(seq, result); diff --git a/libraries/session/src/main/java/androidx/media3/session/MediaControllerImplLegacy.java b/libraries/session/src/main/java/androidx/media3/session/MediaControllerImplLegacy.java index 88e0658bba..f16b1af489 100644 --- a/libraries/session/src/main/java/androidx/media3/session/MediaControllerImplLegacy.java +++ b/libraries/session/src/main/java/androidx/media3/session/MediaControllerImplLegacy.java @@ -1429,7 +1429,7 @@ import org.checkerframework.checker.nullness.compatqual.NullableType; try { bitmap = Futures.getDone(future); } catch (CancellationException | ExecutionException e) { - Log.d(TAG, "Failed to get bitmap"); + Log.d(TAG, "Failed to get bitmap", e); } } controllerCompat.addQueueItem( diff --git a/libraries/session/src/main/java/androidx/media3/session/MediaLibraryServiceLegacyStub.java b/libraries/session/src/main/java/androidx/media3/session/MediaLibraryServiceLegacyStub.java index 51e81c1b6c..dcec2bf134 100644 --- a/libraries/session/src/main/java/androidx/media3/session/MediaLibraryServiceLegacyStub.java +++ b/libraries/session/src/main/java/androidx/media3/session/MediaLibraryServiceLegacyStub.java @@ -371,7 +371,8 @@ import org.checkerframework.checker.nullness.compatqual.NullableType; SessionResult sessionResult = checkNotNull(future.get(), "SessionResult must not be null"); result.sendResult(sessionResult.extras); - } catch (CancellationException | ExecutionException | InterruptedException unused) { + } catch (CancellationException | ExecutionException | InterruptedException e) { + Log.w(TAG, "Custom action failed", e); result.sendError(/* extras= */ null); } }, @@ -386,7 +387,8 @@ import org.checkerframework.checker.nullness.compatqual.NullableType; try { MediaBrowserCompat.MediaItem mediaItem = future.get(); result.sendResult(mediaItem); - } catch (CancellationException | ExecutionException | InterruptedException unused) { + } catch (CancellationException | ExecutionException | InterruptedException e) { + Log.w(TAG, "Library operation failed", e); result.sendError(/* extras= */ null); } }, @@ -404,7 +406,8 @@ import org.checkerframework.checker.nullness.compatqual.NullableType; (mediaItems == null) ? null : MediaUtils.truncateListBySize(mediaItems, TRANSACTION_SIZE_LIMIT_IN_BYTES)); - } catch (CancellationException | ExecutionException | InterruptedException unused) { + } catch (CancellationException | ExecutionException | InterruptedException e) { + Log.w(TAG, "Library operation failed", e); result.sendError(/* extras= */ null); } }, @@ -477,7 +480,7 @@ import org.checkerframework.checker.nullness.compatqual.NullableType; try { bitmap = Futures.getDone(future); } catch (CancellationException | ExecutionException e) { - Log.d(TAG, "Failed to get bitmap"); + Log.d(TAG, "Failed to get bitmap", e); } } outputMediaItems.add(MediaUtils.convertToBrowserItem(mediaItems.get(i), bitmap)); @@ -526,7 +529,7 @@ import org.checkerframework.checker.nullness.compatqual.NullableType; try { bitmap = Futures.getDone(bitmapFuture); } catch (CancellationException | ExecutionException e) { - Log.d(TAG, "failed to get bitmap"); + Log.d(TAG, "failed to get bitmap", e); } outputFuture.set(MediaUtils.convertToBrowserItem(mediaItem, bitmap)); }, diff --git a/libraries/session/src/main/java/androidx/media3/session/MediaLibrarySessionImpl.java b/libraries/session/src/main/java/androidx/media3/session/MediaLibrarySessionImpl.java index 5fda9c6e82..6759d78b44 100644 --- a/libraries/session/src/main/java/androidx/media3/session/MediaLibrarySessionImpl.java +++ b/libraries/session/src/main/java/androidx/media3/session/MediaLibrarySessionImpl.java @@ -359,7 +359,8 @@ import java.util.concurrent.Future; checkState(future.isDone()); try { return future.get(); - } catch (CancellationException | ExecutionException | InterruptedException unused) { + } catch (CancellationException | ExecutionException | InterruptedException e) { + Log.w(TAG, "Library operation failed", e); return null; } } diff --git a/libraries/session/src/main/java/androidx/media3/session/MediaSessionLegacyStub.java b/libraries/session/src/main/java/androidx/media3/session/MediaSessionLegacyStub.java index cc9075b3df..49d9723fe0 100644 --- a/libraries/session/src/main/java/androidx/media3/session/MediaSessionLegacyStub.java +++ b/libraries/session/src/main/java/androidx/media3/session/MediaSessionLegacyStub.java @@ -889,9 +889,11 @@ import org.checkerframework.checker.nullness.compatqual.NullableType; SessionResult result; try { result = checkNotNull(future.get(), "SessionResult must not be null"); - } catch (CancellationException unused) { + } catch (CancellationException e) { + Log.w(TAG, "Custom command cancelled", e); result = new SessionResult(RESULT_INFO_SKIPPED); - } catch (ExecutionException | InterruptedException unused) { + } catch (ExecutionException | InterruptedException e) { + Log.w(TAG, "Custom command failed", e); result = new SessionResult(RESULT_ERROR_UNKNOWN); } receiver.send(result.resultCode, result.extras); @@ -1208,7 +1210,7 @@ import org.checkerframework.checker.nullness.compatqual.NullableType; try { bitmap = Futures.getDone(future); } catch (CancellationException | ExecutionException e) { - Log.d(TAG, "Failed to get bitmap"); + Log.d(TAG, "Failed to get bitmap", e); } } queueItemList.add(MediaUtils.convertToQueueItem(mediaItems.get(i), i, bitmap)); diff --git a/libraries/session/src/main/java/androidx/media3/session/MediaSessionStub.java b/libraries/session/src/main/java/androidx/media3/session/MediaSessionStub.java index a336f69373..cfe20c0247 100644 --- a/libraries/session/src/main/java/androidx/media3/session/MediaSessionStub.java +++ b/libraries/session/src/main/java/androidx/media3/session/MediaSessionStub.java @@ -178,9 +178,11 @@ import java.util.concurrent.ExecutionException; SessionResult result; try { result = checkNotNull(future.get(), "SessionResult must not be null"); - } catch (CancellationException unused) { + } catch (CancellationException e) { + Log.w(TAG, "Session operation cancelled", e); result = new SessionResult(SessionResult.RESULT_INFO_SKIPPED); } catch (ExecutionException | InterruptedException exception) { + Log.w(TAG, "Session operation failed", exception); result = new SessionResult( exception.getCause() instanceof UnsupportedOperationException @@ -265,9 +267,11 @@ import java.util.concurrent.ExecutionException; LibraryResult result; try { result = checkNotNull(future.get(), "LibraryResult must not be null"); - } catch (CancellationException unused) { + } catch (CancellationException e) { + Log.w(TAG, "Library operation cancelled", e); result = LibraryResult.ofError(LibraryResult.RESULT_INFO_SKIPPED); - } catch (ExecutionException | InterruptedException unused) { + } catch (ExecutionException | InterruptedException e) { + Log.w(TAG, "Library operation failed", e); result = LibraryResult.ofError(LibraryResult.RESULT_ERROR_UNKNOWN); } sendLibraryResult(controller, sequenceNumber, result);