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
This commit is contained in:
bachinger 2022-07-05 23:21:59 +00:00 committed by Rohit Singh
parent bbbb009608
commit 84c801a723
2 changed files with 47 additions and 2 deletions

View File

@ -126,11 +126,14 @@ public final class DefaultMediaItemConverter implements MediaItemConverter {
if (mediaItem.mediaMetadata.trackNumber != null) { if (mediaItem.mediaMetadata.trackNumber != null) {
metadata.putInt(MediaMetadata.KEY_TRACK_NUMBER, mediaItem.mediaMetadata.trackNumber); 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 = MediaInfo mediaInfo =
new MediaInfo.Builder(mediaItem.localConfiguration.uri.toString()) new MediaInfo.Builder(contentId)
.setStreamType(MediaInfo.STREAM_TYPE_BUFFERED) .setStreamType(MediaInfo.STREAM_TYPE_BUFFERED)
.setContentType(mediaItem.localConfiguration.mimeType) .setContentType(mediaItem.localConfiguration.mimeType)
.setContentUrl(contentUrl)
.setMetadata(metadata) .setMetadata(metadata)
.setCustomData(getCustomData(mediaItem)) .setCustomData(getCustomData(mediaItem))
.build(); .build();

View File

@ -50,6 +50,7 @@ public class DefaultMediaItemConverterTest {
MediaItem.Builder builder = new MediaItem.Builder(); MediaItem.Builder builder = new MediaItem.Builder();
MediaItem item = MediaItem item =
builder builder
.setMediaId("fooBar")
.setUri(Uri.parse("http://example.com")) .setUri(Uri.parse("http://example.com"))
.setMediaMetadata(MediaMetadata.EMPTY) .setMediaMetadata(MediaMetadata.EMPTY)
.setMimeType(MimeTypes.APPLICATION_MPD) .setMimeType(MimeTypes.APPLICATION_MPD)
@ -66,4 +67,45 @@ public class DefaultMediaItemConverterTest {
assertThat(reconstructedItem).isEqualTo(item); 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");
}
} }