Don't set the tag in CastTimeline
Leaving the media item that has been passed in unchanged, ensures that the media item in the timeline is equal to the media item that the user has passed into the player. The value of the tag is the uid of the window, meaning this is redundant information. #minor-release PiperOrigin-RevId: 460542246
This commit is contained in:
parent
9d9bbe3d33
commit
b61a06ba2f
@ -132,7 +132,7 @@ import java.util.Arrays;
|
|||||||
int id = ids[i];
|
int id = ids[i];
|
||||||
idsToIndex.put(id, i);
|
idsToIndex.put(id, i);
|
||||||
ItemData data = itemIdToData.get(id, ItemData.EMPTY);
|
ItemData data = itemIdToData.get(id, ItemData.EMPTY);
|
||||||
mediaItems[i] = data.mediaItem.buildUpon().setTag(id).build();
|
mediaItems[i] = data.mediaItem;
|
||||||
durationsUs[i] = data.durationUs;
|
durationsUs[i] = data.durationUs;
|
||||||
defaultPositionsUs[i] = data.defaultPositionUs == C.TIME_UNSET ? 0 : data.defaultPositionUs;
|
defaultPositionsUs[i] = data.defaultPositionUs == C.TIME_UNSET ? 0 : data.defaultPositionUs;
|
||||||
isLive[i] = data.isLive;
|
isLive[i] = data.isLive;
|
||||||
|
@ -100,6 +100,7 @@ import org.mockito.Mockito;
|
|||||||
public class CastPlayerTest {
|
public class CastPlayerTest {
|
||||||
|
|
||||||
private CastPlayer castPlayer;
|
private CastPlayer castPlayer;
|
||||||
|
private DefaultMediaItemConverter mediaItemConverter;
|
||||||
private RemoteMediaClient.Callback remoteMediaClientCallback;
|
private RemoteMediaClient.Callback remoteMediaClientCallback;
|
||||||
|
|
||||||
@Mock private RemoteMediaClient mockRemoteMediaClient;
|
@Mock private RemoteMediaClient mockRemoteMediaClient;
|
||||||
@ -134,7 +135,8 @@ public class CastPlayerTest {
|
|||||||
when(mockRemoteMediaClient.isPaused()).thenReturn(true);
|
when(mockRemoteMediaClient.isPaused()).thenReturn(true);
|
||||||
when(mockMediaStatus.getQueueRepeatMode()).thenReturn(MediaStatus.REPEAT_MODE_REPEAT_OFF);
|
when(mockMediaStatus.getQueueRepeatMode()).thenReturn(MediaStatus.REPEAT_MODE_REPEAT_OFF);
|
||||||
when(mockMediaStatus.getPlaybackRate()).thenReturn(1.0d);
|
when(mockMediaStatus.getPlaybackRate()).thenReturn(1.0d);
|
||||||
castPlayer = new CastPlayer(mockCastContext);
|
mediaItemConverter = new DefaultMediaItemConverter();
|
||||||
|
castPlayer = new CastPlayer(mockCastContext, mediaItemConverter);
|
||||||
castPlayer.addListener(mockListener);
|
castPlayer.addListener(mockListener);
|
||||||
verify(mockRemoteMediaClient).registerCallback(callbackArgumentCaptor.capture());
|
verify(mockRemoteMediaClient).registerCallback(callbackArgumentCaptor.capture());
|
||||||
remoteMediaClientCallback = callbackArgumentCaptor.getValue();
|
remoteMediaClientCallback = callbackArgumentCaptor.getValue();
|
||||||
@ -427,22 +429,13 @@ public class CastPlayerTest {
|
|||||||
String uri1 = "http://www.google.com/video1";
|
String uri1 = "http://www.google.com/video1";
|
||||||
String uri2 = "http://www.google.com/video2";
|
String uri2 = "http://www.google.com/video2";
|
||||||
firstPlaylist.add(
|
firstPlaylist.add(
|
||||||
new MediaItem.Builder()
|
new MediaItem.Builder().setUri(uri1).setMimeType(MimeTypes.APPLICATION_MPD).build());
|
||||||
.setUri(uri1)
|
|
||||||
.setMimeType(MimeTypes.APPLICATION_MPD)
|
|
||||||
.setTag(1)
|
|
||||||
.build());
|
|
||||||
firstPlaylist.add(
|
firstPlaylist.add(
|
||||||
new MediaItem.Builder()
|
new MediaItem.Builder().setUri(uri2).setMimeType(MimeTypes.APPLICATION_MP4).build());
|
||||||
.setUri(uri2)
|
|
||||||
.setMimeType(MimeTypes.APPLICATION_MP4)
|
|
||||||
.setTag(2)
|
|
||||||
.build());
|
|
||||||
ImmutableList<MediaItem> secondPlaylist =
|
ImmutableList<MediaItem> secondPlaylist =
|
||||||
ImmutableList.of(
|
ImmutableList.of(
|
||||||
new MediaItem.Builder()
|
new MediaItem.Builder()
|
||||||
.setUri(Uri.EMPTY)
|
.setUri(Uri.EMPTY)
|
||||||
.setTag(3)
|
|
||||||
.setMimeType(MimeTypes.APPLICATION_MPD)
|
.setMimeType(MimeTypes.APPLICATION_MPD)
|
||||||
.build());
|
.build());
|
||||||
|
|
||||||
@ -472,23 +465,14 @@ public class CastPlayerTest {
|
|||||||
String uri1 = "http://www.google.com/video1";
|
String uri1 = "http://www.google.com/video1";
|
||||||
String uri2 = "http://www.google.com/video2";
|
String uri2 = "http://www.google.com/video2";
|
||||||
firstPlaylist.add(
|
firstPlaylist.add(
|
||||||
new MediaItem.Builder()
|
new MediaItem.Builder().setUri(uri1).setMimeType(MimeTypes.APPLICATION_MPD).build());
|
||||||
.setUri(uri1)
|
|
||||||
.setMimeType(MimeTypes.APPLICATION_MPD)
|
|
||||||
.setTag(1)
|
|
||||||
.build());
|
|
||||||
firstPlaylist.add(
|
firstPlaylist.add(
|
||||||
new MediaItem.Builder()
|
new MediaItem.Builder().setUri(uri2).setMimeType(MimeTypes.APPLICATION_MP4).build());
|
||||||
.setUri(uri2)
|
|
||||||
.setMimeType(MimeTypes.APPLICATION_MP4)
|
|
||||||
.setTag(2)
|
|
||||||
.build());
|
|
||||||
ImmutableList<MediaItem> secondPlaylist =
|
ImmutableList<MediaItem> secondPlaylist =
|
||||||
ImmutableList.of(
|
ImmutableList.of(
|
||||||
new MediaItem.Builder()
|
new MediaItem.Builder()
|
||||||
.setUri(Uri.EMPTY)
|
.setUri(Uri.EMPTY)
|
||||||
.setMimeType(MimeTypes.APPLICATION_MPD)
|
.setMimeType(MimeTypes.APPLICATION_MPD)
|
||||||
.setTag(3)
|
|
||||||
.build());
|
.build());
|
||||||
|
|
||||||
castPlayer.setMediaItems(firstPlaylist, /* startIndex= */ 1, /* startPositionMs= */ 2000L);
|
castPlayer.setMediaItems(firstPlaylist, /* startIndex= */ 1, /* startPositionMs= */ 2000L);
|
||||||
@ -556,34 +540,37 @@ public class CastPlayerTest {
|
|||||||
verify(mockRemoteMediaClient)
|
verify(mockRemoteMediaClient)
|
||||||
.queueInsertItems(
|
.queueInsertItems(
|
||||||
queueItemsArgumentCaptor.capture(), eq(MediaQueueItem.INVALID_ITEM_ID), any());
|
queueItemsArgumentCaptor.capture(), eq(MediaQueueItem.INVALID_ITEM_ID), any());
|
||||||
|
|
||||||
MediaQueueItem[] mediaQueueItems = queueItemsArgumentCaptor.getValue();
|
MediaQueueItem[] mediaQueueItems = queueItemsArgumentCaptor.getValue();
|
||||||
assertThat(mediaQueueItems[0].getMedia().getContentId()).isEqualTo(uri1);
|
assertThat(mediaQueueItems[0].getMedia().getContentId()).isEqualTo(uri1);
|
||||||
assertThat(mediaQueueItems[1].getMedia().getContentId()).isEqualTo(uri2);
|
assertThat(mediaQueueItems[1].getMedia().getContentId()).isEqualTo(uri2);
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("ConstantConditions")
|
|
||||||
@Test
|
@Test
|
||||||
public void addMediaItems_insertAtIndex_callsRemoteMediaClient() {
|
public void addMediaItems_insertAtIndex_callsRemoteMediaClient() {
|
||||||
int[] mediaQueueItemIds = createMediaQueueItemIds(/* numberOfIds= */ 2);
|
int[] mediaQueueItemIds = createMediaQueueItemIds(/* numberOfIds= */ 2);
|
||||||
List<MediaItem> mediaItems = createMediaItems(mediaQueueItemIds);
|
List<MediaItem> mediaItems = createMediaItems(mediaQueueItemIds);
|
||||||
|
// Add two items.
|
||||||
addMediaItemsAndUpdateTimeline(mediaItems, mediaQueueItemIds);
|
addMediaItemsAndUpdateTimeline(mediaItems, mediaQueueItemIds);
|
||||||
String uri = "http://www.google.com/video3";
|
String uri = "http://www.google.com/video3";
|
||||||
MediaItem anotherMediaItem =
|
MediaItem anotherMediaItem =
|
||||||
new MediaItem.Builder().setUri(uri).setMimeType(MimeTypes.APPLICATION_MPD).build();
|
new MediaItem.Builder().setUri(uri).setMimeType(MimeTypes.APPLICATION_MPD).build();
|
||||||
|
int index = 1;
|
||||||
|
List<MediaItem> newPlaylist = Collections.singletonList(anotherMediaItem);
|
||||||
|
|
||||||
// Add another on position 1
|
// Add another on position 1
|
||||||
int index = 1;
|
castPlayer.addMediaItems(index, newPlaylist);
|
||||||
castPlayer.addMediaItems(index, Collections.singletonList(anotherMediaItem));
|
updateTimeLine(newPlaylist, /* mediaQueueItemIds= */ new int[] {123}, /* currentItemId= */ 1);
|
||||||
|
|
||||||
verify(mockRemoteMediaClient)
|
verify(mockRemoteMediaClient, times(2))
|
||||||
.queueInsertItems(
|
.queueInsertItems(queueItemsArgumentCaptor.capture(), anyInt(), any());
|
||||||
queueItemsArgumentCaptor.capture(),
|
assertThat(queueItemsArgumentCaptor.getAllValues().get(1)[0])
|
||||||
eq((int) mediaItems.get(index).localConfiguration.tag),
|
.isEqualTo(mediaItemConverter.toMediaQueueItem(anotherMediaItem));
|
||||||
any());
|
Timeline.Window currentWindow =
|
||||||
|
castPlayer
|
||||||
MediaQueueItem[] mediaQueueItems = queueItemsArgumentCaptor.getValue();
|
.getCurrentTimeline()
|
||||||
assertThat(mediaQueueItems[0].getMedia().getContentId()).isEqualTo(uri);
|
.getWindow(castPlayer.getCurrentMediaItemIndex(), new Timeline.Window());
|
||||||
|
assertThat(currentWindow.uid).isEqualTo(123);
|
||||||
|
assertThat(currentWindow.mediaItem).isEqualTo(anotherMediaItem);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@ -722,8 +709,8 @@ public class CastPlayerTest {
|
|||||||
|
|
||||||
Timeline currentTimeline = castPlayer.getCurrentTimeline();
|
Timeline currentTimeline = castPlayer.getCurrentTimeline();
|
||||||
for (int i = 0; i < mediaItems.size(); i++) {
|
for (int i = 0; i < mediaItems.size(); i++) {
|
||||||
assertThat(currentTimeline.getWindow(/* windowIndex= */ i, window).uid)
|
assertThat(currentTimeline.getWindow(/* windowIndex= */ i, window).mediaItem)
|
||||||
.isEqualTo(mediaItems.get(i).localConfiguration.tag);
|
.isEqualTo(mediaItems.get(i));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1791,13 +1778,11 @@ public class CastPlayerTest {
|
|||||||
.setUri(uri1)
|
.setUri(uri1)
|
||||||
.setMimeType(MimeTypes.APPLICATION_MPD)
|
.setMimeType(MimeTypes.APPLICATION_MPD)
|
||||||
.setMediaMetadata(new MediaMetadata.Builder().setArtist("foo").build())
|
.setMediaMetadata(new MediaMetadata.Builder().setArtist("foo").build())
|
||||||
.setTag(1)
|
|
||||||
.build());
|
.build());
|
||||||
ImmutableList<MediaItem> secondPlaylist =
|
ImmutableList<MediaItem> secondPlaylist =
|
||||||
ImmutableList.of(
|
ImmutableList.of(
|
||||||
new MediaItem.Builder()
|
new MediaItem.Builder()
|
||||||
.setUri(Uri.EMPTY)
|
.setUri(Uri.EMPTY)
|
||||||
.setTag(2)
|
|
||||||
.setMediaMetadata(new MediaMetadata.Builder().setArtist("bar").build())
|
.setMediaMetadata(new MediaMetadata.Builder().setArtist("bar").build())
|
||||||
.setMimeType(MimeTypes.APPLICATION_MPD)
|
.setMimeType(MimeTypes.APPLICATION_MPD)
|
||||||
.build(),
|
.build(),
|
||||||
@ -1805,7 +1790,6 @@ public class CastPlayerTest {
|
|||||||
.setUri(uri2)
|
.setUri(uri2)
|
||||||
.setMimeType(MimeTypes.APPLICATION_MP4)
|
.setMimeType(MimeTypes.APPLICATION_MP4)
|
||||||
.setMediaMetadata(new MediaMetadata.Builder().setArtist("foobar").build())
|
.setMediaMetadata(new MediaMetadata.Builder().setArtist("foobar").build())
|
||||||
.setTag(3)
|
|
||||||
.build());
|
.build());
|
||||||
castPlayer.addListener(mockListener);
|
castPlayer.addListener(mockListener);
|
||||||
|
|
||||||
@ -1902,7 +1886,6 @@ public class CastPlayerTest {
|
|||||||
.setMediaMetadata(
|
.setMediaMetadata(
|
||||||
new MediaMetadata.Builder().setArtist("Foo Bar - " + mediaQueueItemId).build())
|
new MediaMetadata.Builder().setArtist("Foo Bar - " + mediaQueueItemId).build())
|
||||||
.setMimeType(MimeTypes.APPLICATION_MPD)
|
.setMimeType(MimeTypes.APPLICATION_MPD)
|
||||||
.setTag(mediaQueueItemId)
|
|
||||||
.build();
|
.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user