From 84c801a723f56c9c0fcdf10ab8bbab35bfd9f333 Mon Sep 17 00:00:00 2001 From: bachinger Date: Tue, 5 Jul 2022 23:21:59 +0000 Subject: [PATCH] Use mediaId as contentId if available This is to be consistent with what cast `QueueMediaItem` is doing. If a contentId is not available the contentUrl is used as the ID. #minor-release PiperOrigin-RevId: 459133323 --- .../ext/cast/DefaultMediaItemConverter.java | 7 +++- .../cast/DefaultMediaItemConverterTest.java | 42 +++++++++++++++++++ 2 files changed, 47 insertions(+), 2 deletions(-) diff --git a/extensions/cast/src/main/java/com/google/android/exoplayer2/ext/cast/DefaultMediaItemConverter.java b/extensions/cast/src/main/java/com/google/android/exoplayer2/ext/cast/DefaultMediaItemConverter.java index a1a78e91d7..cf76c988ae 100644 --- a/extensions/cast/src/main/java/com/google/android/exoplayer2/ext/cast/DefaultMediaItemConverter.java +++ b/extensions/cast/src/main/java/com/google/android/exoplayer2/ext/cast/DefaultMediaItemConverter.java @@ -126,11 +126,14 @@ public final class DefaultMediaItemConverter implements MediaItemConverter { if (mediaItem.mediaMetadata.trackNumber != null) { metadata.putInt(MediaMetadata.KEY_TRACK_NUMBER, mediaItem.mediaMetadata.trackNumber); } - + String contentUrl = mediaItem.localConfiguration.uri.toString(); + String contentId = + mediaItem.mediaId.equals(MediaItem.DEFAULT_MEDIA_ID) ? contentUrl : mediaItem.mediaId; MediaInfo mediaInfo = - new MediaInfo.Builder(mediaItem.localConfiguration.uri.toString()) + new MediaInfo.Builder(contentId) .setStreamType(MediaInfo.STREAM_TYPE_BUFFERED) .setContentType(mediaItem.localConfiguration.mimeType) + .setContentUrl(contentUrl) .setMetadata(metadata) .setCustomData(getCustomData(mediaItem)) .build(); diff --git a/extensions/cast/src/test/java/com/google/android/exoplayer2/ext/cast/DefaultMediaItemConverterTest.java b/extensions/cast/src/test/java/com/google/android/exoplayer2/ext/cast/DefaultMediaItemConverterTest.java index 1092ecd8da..e4b9771a8a 100644 --- a/extensions/cast/src/test/java/com/google/android/exoplayer2/ext/cast/DefaultMediaItemConverterTest.java +++ b/extensions/cast/src/test/java/com/google/android/exoplayer2/ext/cast/DefaultMediaItemConverterTest.java @@ -50,6 +50,7 @@ public class DefaultMediaItemConverterTest { MediaItem.Builder builder = new MediaItem.Builder(); MediaItem item = builder + .setMediaId("fooBar") .setUri(Uri.parse("http://example.com")) .setMediaMetadata(MediaMetadata.EMPTY) .setMimeType(MimeTypes.APPLICATION_MPD) @@ -66,4 +67,45 @@ public class DefaultMediaItemConverterTest { assertThat(reconstructedItem).isEqualTo(item); } + + @Test + public void toMediaQueueItem_nonDefaultMediaId_usedAsContentId() { + MediaItem.Builder builder = new MediaItem.Builder(); + MediaItem item = + builder + .setMediaId("fooBar") + .setUri("http://example.com") + .setMimeType(MimeTypes.APPLICATION_MPD) + .build(); + + DefaultMediaItemConverter converter = new DefaultMediaItemConverter(); + MediaQueueItem queueItem = converter.toMediaQueueItem(item); + + assertThat(queueItem.getMedia().getContentId()).isEqualTo("fooBar"); + } + + @Test + public void toMediaQueueItem_defaultMediaId_uriAsContentId() { + DefaultMediaItemConverter converter = new DefaultMediaItemConverter(); + MediaItem mediaItem = + new MediaItem.Builder() + .setUri("http://example.com") + .setMimeType(MimeTypes.APPLICATION_MPD) + .build(); + + MediaQueueItem queueItem = converter.toMediaQueueItem(mediaItem); + + assertThat(queueItem.getMedia().getContentId()).isEqualTo("http://example.com"); + + MediaItem secondMediaItem = + new MediaItem.Builder() + .setMediaId(MediaItem.DEFAULT_MEDIA_ID) + .setUri("http://example.com") + .setMimeType(MimeTypes.APPLICATION_MPD) + .build(); + + MediaQueueItem secondQueueItem = converter.toMediaQueueItem(secondMediaItem); + + assertThat(secondQueueItem.getMedia().getContentId()).isEqualTo("http://example.com"); + } }