From cb0ea7fc95ffb1160cfd7904ee5c548d8f0a68cb Mon Sep 17 00:00:00 2001 From: bachinger Date: Wed, 9 Apr 2025 09:17:56 -0700 Subject: [PATCH] Make sure subtitle is used without display title being set PiperOrigin-RevId: 745616511 --- .../media3/session/LegacyConversions.java | 2 ++ .../session/legacy/MediaMetadataCompat.java | 3 +- .../media3/session/LegacyConversionsTest.java | 32 +++++++++++++++++++ 3 files changed, 36 insertions(+), 1 deletion(-) diff --git a/libraries/session/src/main/java/androidx/media3/session/LegacyConversions.java b/libraries/session/src/main/java/androidx/media3/session/LegacyConversions.java index 82854025e5..664e6dfeec 100644 --- a/libraries/session/src/main/java/androidx/media3/session/LegacyConversions.java +++ b/libraries/session/src/main/java/androidx/media3/session/LegacyConversions.java @@ -894,6 +894,8 @@ import java.util.concurrent.TimeoutException; return metadata.writer; case MediaMetadataCompat.METADATA_KEY_COMPOSER: return metadata.composer; + case MediaMetadataCompat.METADATA_KEY_DISPLAY_SUBTITLE: + return metadata.subtitle; default: return null; } diff --git a/libraries/session/src/main/java/androidx/media3/session/legacy/MediaMetadataCompat.java b/libraries/session/src/main/java/androidx/media3/session/legacy/MediaMetadataCompat.java index 38e8df6127..891febc21f 100644 --- a/libraries/session/src/main/java/androidx/media3/session/legacy/MediaMetadataCompat.java +++ b/libraries/session/src/main/java/androidx/media3/session/legacy/MediaMetadataCompat.java @@ -315,7 +315,8 @@ public final class MediaMetadataCompat implements Parcelable { METADATA_KEY_ALBUM_ARTIST, METADATA_KEY_WRITER, METADATA_KEY_AUTHOR, - METADATA_KEY_COMPOSER + METADATA_KEY_COMPOSER, + METADATA_KEY_DISPLAY_SUBTITLE }; final Bundle mBundle; diff --git a/libraries/session/src/test/java/androidx/media3/session/LegacyConversionsTest.java b/libraries/session/src/test/java/androidx/media3/session/LegacyConversionsTest.java index 64160ae903..fd670d9e9c 100644 --- a/libraries/session/src/test/java/androidx/media3/session/LegacyConversionsTest.java +++ b/libraries/session/src/test/java/androidx/media3/session/LegacyConversionsTest.java @@ -266,6 +266,38 @@ public final class LegacyConversionsTest { assertThat(convertedMediaItemWithDisplayTitleAndTitle.mediaMetadata.albumTitle).isNull(); } + @Test + public void + convertToMediaDescriptionCompat_withoutDisplayTitleWithSubtitle_subtitleUsedAsSubtitle() { + MediaMetadata metadata = + new MediaMetadata.Builder().setTitle("a_title").setSubtitle("a_subtitle").build(); + MediaItem mediaItem = + new MediaItem.Builder().setMediaId("testId").setMediaMetadata(metadata).build(); + + MediaDescriptionCompat descriptionCompat = + LegacyConversions.convertToMediaDescriptionCompat(mediaItem, /* artworkBitmap= */ null); + + assertThat(descriptionCompat.getTitle().toString()).isEqualTo("a_title"); + assertThat(descriptionCompat.getSubtitle().toString()).isEqualTo("a_subtitle"); + } + + @Test + public void convertToMediaDescriptionCompat_withDisplayTitleAndSubtitle_subtitleUsedAsSubtitle() { + MediaMetadata metadata = + new MediaMetadata.Builder() + .setDisplayTitle("a_display_title") + .setSubtitle("a_subtitle") + .build(); + MediaItem mediaItem = + new MediaItem.Builder().setMediaId("testId").setMediaMetadata(metadata).build(); + + MediaDescriptionCompat descriptionCompat = + LegacyConversions.convertToMediaDescriptionCompat(mediaItem, /* artworkBitmap= */ null); + + assertThat(descriptionCompat.getTitle().toString()).isEqualTo("a_display_title"); + assertThat(descriptionCompat.getSubtitle().toString()).isEqualTo("a_subtitle"); + } + @Test public void convertToQueueItemId() { assertThat(LegacyConversions.convertToQueueItemId(C.INDEX_UNSET))