|
100 | 100 | public class CastPlayerTest { |
101 | 101 |
|
102 | 102 | private CastPlayer castPlayer; |
| 103 | + private DefaultMediaItemConverter mediaItemConverter; |
103 | 104 | private RemoteMediaClient.Callback remoteMediaClientCallback; |
104 | 105 |
|
105 | 106 | @Mock private RemoteMediaClient mockRemoteMediaClient; |
@@ -134,7 +135,8 @@ public void setUp() { |
134 | 135 | when(mockRemoteMediaClient.isPaused()).thenReturn(true); |
135 | 136 | when(mockMediaStatus.getQueueRepeatMode()).thenReturn(MediaStatus.REPEAT_MODE_REPEAT_OFF); |
136 | 137 | when(mockMediaStatus.getPlaybackRate()).thenReturn(1.0d); |
137 | | - castPlayer = new CastPlayer(mockCastContext); |
| 138 | + mediaItemConverter = new DefaultMediaItemConverter(); |
| 139 | + castPlayer = new CastPlayer(mockCastContext, mediaItemConverter); |
138 | 140 | castPlayer.addListener(mockListener); |
139 | 141 | verify(mockRemoteMediaClient).registerCallback(callbackArgumentCaptor.capture()); |
140 | 142 | remoteMediaClientCallback = callbackArgumentCaptor.getValue(); |
@@ -427,22 +429,13 @@ public void setMediaItems_replaceExistingPlaylist_notifiesMediaItemTransition() |
427 | 429 | String uri1 = "http://www.google.com/video1"; |
428 | 430 | String uri2 = "http://www.google.com/video2"; |
429 | 431 | firstPlaylist.add( |
430 | | - new MediaItem.Builder() |
431 | | - .setUri(uri1) |
432 | | - .setMimeType(MimeTypes.APPLICATION_MPD) |
433 | | - .setTag(1) |
434 | | - .build()); |
| 432 | + new MediaItem.Builder().setUri(uri1).setMimeType(MimeTypes.APPLICATION_MPD).build()); |
435 | 433 | firstPlaylist.add( |
436 | | - new MediaItem.Builder() |
437 | | - .setUri(uri2) |
438 | | - .setMimeType(MimeTypes.APPLICATION_MP4) |
439 | | - .setTag(2) |
440 | | - .build()); |
| 434 | + new MediaItem.Builder().setUri(uri2).setMimeType(MimeTypes.APPLICATION_MP4).build()); |
441 | 435 | ImmutableList<MediaItem> secondPlaylist = |
442 | 436 | ImmutableList.of( |
443 | 437 | new MediaItem.Builder() |
444 | 438 | .setUri(Uri.EMPTY) |
445 | | - .setTag(3) |
446 | 439 | .setMimeType(MimeTypes.APPLICATION_MPD) |
447 | 440 | .build()); |
448 | 441 |
|
@@ -472,23 +465,14 @@ public void setMediaItems_replaceExistingPlaylist_notifiesPositionDiscontinuity( |
472 | 465 | String uri1 = "http://www.google.com/video1"; |
473 | 466 | String uri2 = "http://www.google.com/video2"; |
474 | 467 | firstPlaylist.add( |
475 | | - new MediaItem.Builder() |
476 | | - .setUri(uri1) |
477 | | - .setMimeType(MimeTypes.APPLICATION_MPD) |
478 | | - .setTag(1) |
479 | | - .build()); |
| 468 | + new MediaItem.Builder().setUri(uri1).setMimeType(MimeTypes.APPLICATION_MPD).build()); |
480 | 469 | firstPlaylist.add( |
481 | | - new MediaItem.Builder() |
482 | | - .setUri(uri2) |
483 | | - .setMimeType(MimeTypes.APPLICATION_MP4) |
484 | | - .setTag(2) |
485 | | - .build()); |
| 470 | + new MediaItem.Builder().setUri(uri2).setMimeType(MimeTypes.APPLICATION_MP4).build()); |
486 | 471 | ImmutableList<MediaItem> secondPlaylist = |
487 | 472 | ImmutableList.of( |
488 | 473 | new MediaItem.Builder() |
489 | 474 | .setUri(Uri.EMPTY) |
490 | 475 | .setMimeType(MimeTypes.APPLICATION_MPD) |
491 | | - .setTag(3) |
492 | 476 | .build()); |
493 | 477 |
|
494 | 478 | castPlayer.setMediaItems(firstPlaylist, /* startIndex= */ 1, /* startPositionMs= */ 2000L); |
@@ -556,34 +540,37 @@ public void addMediaItems_callsRemoteMediaClient() { |
556 | 540 | verify(mockRemoteMediaClient) |
557 | 541 | .queueInsertItems( |
558 | 542 | queueItemsArgumentCaptor.capture(), eq(MediaQueueItem.INVALID_ITEM_ID), any()); |
559 | | - |
560 | 543 | MediaQueueItem[] mediaQueueItems = queueItemsArgumentCaptor.getValue(); |
561 | 544 | assertThat(mediaQueueItems[0].getMedia().getContentId()).isEqualTo(uri1); |
562 | 545 | assertThat(mediaQueueItems[1].getMedia().getContentId()).isEqualTo(uri2); |
563 | 546 | } |
564 | 547 |
|
565 | | - @SuppressWarnings("ConstantConditions") |
566 | 548 | @Test |
567 | 549 | public void addMediaItems_insertAtIndex_callsRemoteMediaClient() { |
568 | 550 | int[] mediaQueueItemIds = createMediaQueueItemIds(/* numberOfIds= */ 2); |
569 | 551 | List<MediaItem> mediaItems = createMediaItems(mediaQueueItemIds); |
| 552 | + // Add two items. |
570 | 553 | addMediaItemsAndUpdateTimeline(mediaItems, mediaQueueItemIds); |
571 | 554 | String uri = "http://www.google.com/video3"; |
572 | 555 | MediaItem anotherMediaItem = |
573 | 556 | new MediaItem.Builder().setUri(uri).setMimeType(MimeTypes.APPLICATION_MPD).build(); |
574 | | - |
575 | | - // Add another on position 1 |
576 | 557 | int index = 1; |
577 | | - castPlayer.addMediaItems(index, Collections.singletonList(anotherMediaItem)); |
| 558 | + List<MediaItem> newPlaylist = Collections.singletonList(anotherMediaItem); |
578 | 559 |
|
579 | | - verify(mockRemoteMediaClient) |
580 | | - .queueInsertItems( |
581 | | - queueItemsArgumentCaptor.capture(), |
582 | | - eq((int) mediaItems.get(index).localConfiguration.tag), |
583 | | - any()); |
| 560 | + // Add another on position 1 |
| 561 | + castPlayer.addMediaItems(index, newPlaylist); |
| 562 | + updateTimeLine(newPlaylist, /* mediaQueueItemIds= */ new int[] {123}, /* currentItemId= */ 1); |
584 | 563 |
|
585 | | - MediaQueueItem[] mediaQueueItems = queueItemsArgumentCaptor.getValue(); |
586 | | - assertThat(mediaQueueItems[0].getMedia().getContentId()).isEqualTo(uri); |
| 564 | + verify(mockRemoteMediaClient, times(2)) |
| 565 | + .queueInsertItems(queueItemsArgumentCaptor.capture(), anyInt(), any()); |
| 566 | + assertThat(queueItemsArgumentCaptor.getAllValues().get(1)[0]) |
| 567 | + .isEqualTo(mediaItemConverter.toMediaQueueItem(anotherMediaItem)); |
| 568 | + Timeline.Window currentWindow = |
| 569 | + castPlayer |
| 570 | + .getCurrentTimeline() |
| 571 | + .getWindow(castPlayer.getCurrentMediaItemIndex(), new Timeline.Window()); |
| 572 | + assertThat(currentWindow.uid).isEqualTo(123); |
| 573 | + assertThat(currentWindow.mediaItem).isEqualTo(anotherMediaItem); |
587 | 574 | } |
588 | 575 |
|
589 | 576 | @Test |
@@ -722,8 +709,8 @@ public void addMediaItems_fillsTimeline() { |
722 | 709 |
|
723 | 710 | Timeline currentTimeline = castPlayer.getCurrentTimeline(); |
724 | 711 | for (int i = 0; i < mediaItems.size(); i++) { |
725 | | - assertThat(currentTimeline.getWindow(/* windowIndex= */ i, window).uid) |
726 | | - .isEqualTo(mediaItems.get(i).localConfiguration.tag); |
| 712 | + assertThat(currentTimeline.getWindow(/* windowIndex= */ i, window).mediaItem) |
| 713 | + .isEqualTo(mediaItems.get(i)); |
727 | 714 | } |
728 | 715 | } |
729 | 716 |
|
@@ -1791,21 +1778,18 @@ public void setMediaItems_doesNotifyOnMetadataChanged() { |
1791 | 1778 | .setUri(uri1) |
1792 | 1779 | .setMimeType(MimeTypes.APPLICATION_MPD) |
1793 | 1780 | .setMediaMetadata(new MediaMetadata.Builder().setArtist("foo").build()) |
1794 | | - .setTag(1) |
1795 | 1781 | .build()); |
1796 | 1782 | ImmutableList<MediaItem> secondPlaylist = |
1797 | 1783 | ImmutableList.of( |
1798 | 1784 | new MediaItem.Builder() |
1799 | 1785 | .setUri(Uri.EMPTY) |
1800 | | - .setTag(2) |
1801 | 1786 | .setMediaMetadata(new MediaMetadata.Builder().setArtist("bar").build()) |
1802 | 1787 | .setMimeType(MimeTypes.APPLICATION_MPD) |
1803 | 1788 | .build(), |
1804 | 1789 | new MediaItem.Builder() |
1805 | 1790 | .setUri(uri2) |
1806 | 1791 | .setMimeType(MimeTypes.APPLICATION_MP4) |
1807 | 1792 | .setMediaMetadata(new MediaMetadata.Builder().setArtist("foobar").build()) |
1808 | | - .setTag(3) |
1809 | 1793 | .build()); |
1810 | 1794 | castPlayer.addListener(mockListener); |
1811 | 1795 |
|
@@ -1902,7 +1886,6 @@ private MediaItem createMediaItem(int mediaQueueItemId) { |
1902 | 1886 | .setMediaMetadata( |
1903 | 1887 | new MediaMetadata.Builder().setArtist("Foo Bar - " + mediaQueueItemId).build()) |
1904 | 1888 | .setMimeType(MimeTypes.APPLICATION_MPD) |
1905 | | - .setTag(mediaQueueItemId) |
1906 | 1889 | .build(); |
1907 | 1890 | } |
1908 | 1891 |
|
|
0 commit comments