Improve playlist operation behavior of session test MockPlayer

The MockPlayer currently:
 - uses separate fields for single mediaItem vs multiple mediaItems
 - replaces all items on addMediaItem operations
 - does nothing on remove/move operations.

Fix all of this by using a single field that replicates the player
operations directly.

Some tests also need to be updated to make them more realistic
(for example only removing items from a playlist that have
previously been added).

PiperOrigin-RevId: 451857271
This commit is contained in:
tonihei 2022-05-30 12:31:19 +00:00 committed by Marc Baechinger
parent c814f791d7
commit 342be88d81
7 changed files with 137 additions and 51 deletions

View File

@ -2315,8 +2315,9 @@ public class MediaControllerStateMaskingTest {
}
@Test
public void removeMediaItems_removeCurrentItemWhenShuffledModeDisabled_masksIndices()
throws Exception {
public void
removeMediaItems_removeCurrentItemWhenShuffledModeDisabledFromMiddleToEnd_masksIndices()
throws Exception {
String firstMediaId = "firstMediaId";
String secondMediaId = "secondMediaId";
String thirdMediaId = "thirdMediaId";
@ -2334,6 +2335,17 @@ public class MediaControllerStateMaskingTest {
/* testCurrentPeriodIndex= */ 0,
/* testTimeline= */ testTimeline,
/* testMediaId= */ firstMediaId);
}
@Test
public void removeMediaItems_removeCurrentItemWhenShuffledModeDisabledFromTheMiddle_masksIndices()
throws Exception {
String firstMediaId = "firstMediaId";
String secondMediaId = "secondMediaId";
String thirdMediaId = "thirdMediaId";
String fourthMediaId = "fourthMediaId";
Timeline testTimeline =
createTimeline(createMediaItems(firstMediaId, secondMediaId, thirdMediaId, fourthMediaId));
// Remove middle of the timeline.
assertRemoveMediaItems(
@ -2348,7 +2360,7 @@ public class MediaControllerStateMaskingTest {
}
@Test
public void removeMediaItems_removeCurrentItemWhenShuffledModeEnabled_masksIndices()
public void removeMediaItems_removeCurrentItemWhenShuffledModeEnabledWithNoNextItem_masksIndices()
throws Exception {
String firstMediaId = "firstMediaId";
String secondMediaId = "secondMediaId";
@ -2368,6 +2380,16 @@ public class MediaControllerStateMaskingTest {
createMediaItems(firstMediaId, secondMediaId, thirdMediaId, fourthMediaId),
/* shuffledIndices= */ new int[] {1, 2, 3, 0}),
/* testMediaId= */ secondMediaId);
}
@Test
public void
removeMediaItems_removeCurrentItemWhenShuffledModeEnabledWithNextItemAndChangedIndex_masksIndices()
throws Exception {
String firstMediaId = "firstMediaId";
String secondMediaId = "secondMediaId";
String thirdMediaId = "thirdMediaId";
String fourthMediaId = "fourthMediaId";
// Subsequent window index exists in the shuffled list after the fromIndex--current window index
// should subtract size of removed items.
@ -2382,6 +2404,16 @@ public class MediaControllerStateMaskingTest {
createMediaItems(firstMediaId, secondMediaId, thirdMediaId, fourthMediaId),
/* shuffledIndices= */ new int[] {0, 3, 1, 2}),
/* testMediaId= */ fourthMediaId);
}
@Test
public void
removeMediaItems_removeCurrentItemWhenShuffledModeEnabledWithNextItemAndSameIndex_masksIndices()
throws Exception {
String firstMediaId = "firstMediaId";
String secondMediaId = "secondMediaId";
String thirdMediaId = "thirdMediaId";
String fourthMediaId = "fourthMediaId";
// Subsequent window index exists in the shuffled list before the fromIndex--current window
// index should not subtract size of removed items.

View File

@ -315,7 +315,8 @@ public class MediaSessionCallbackWithMediaControllerCompatTest {
controller.addQueueItem(desc);
player.awaitMethodCalled(MockPlayer.METHOD_ADD_MEDIA_ITEM, TIMEOUT_MS);
assertThat(player.mediaItem.mediaId).isEqualTo(mediaId);
assertThat(player.mediaItems).hasSize(1);
assertThat(player.mediaItems.get(0).mediaId).isEqualTo(mediaId);
}
@Test
@ -329,9 +330,11 @@ public class MediaSessionCallbackWithMediaControllerCompatTest {
new RemoteMediaControllerCompat(
context, session.getSessionCompat().getSessionToken(), /* waitForConnection= */ true);
List<MediaItem> mediaItems = MediaTestUtils.createMediaItems(/* size= */ 10);
handler.postAndSync(
() -> {
player.timeline = MediaTestUtils.createTimeline(/* windowCount= */ 10);
player.setMediaItems(mediaItems);
player.timeline = new PlaylistTimeline(mediaItems);
player.notifyTimelineChanged(Player.TIMELINE_CHANGE_REASON_PLAYLIST_CHANGED);
});
@ -343,7 +346,8 @@ public class MediaSessionCallbackWithMediaControllerCompatTest {
player.awaitMethodCalled(MockPlayer.METHOD_ADD_MEDIA_ITEM_WITH_INDEX, TIMEOUT_MS);
assertThat(player.index).isEqualTo(testIndex);
assertThat(player.mediaItem.mediaId).isEqualTo(mediaId);
assertThat(player.mediaItems).hasSize(11);
assertThat(player.mediaItems.get(1).mediaId).isEqualTo(mediaId);
}
@Test
@ -360,6 +364,7 @@ public class MediaSessionCallbackWithMediaControllerCompatTest {
List<MediaItem> mediaItems = MediaTestUtils.createMediaItems(/* size= */ 10);
handler.postAndSync(
() -> {
player.setMediaItems(mediaItems);
player.timeline = new PlaylistTimeline(mediaItems);
player.notifyTimelineChanged(Player.TIMELINE_CHANGE_REASON_PLAYLIST_CHANGED);
});

View File

@ -151,7 +151,10 @@ public class MediaSessionPermissionTest {
public void removeMediaItems() throws Exception {
testOnCommandRequest(
COMMAND_CHANGE_MEDIA_ITEMS,
controller -> controller.removeMediaItems(/* fromIndex= */ 0, /* toIndex= */ 1));
controller -> {
controller.addMediaItems(MediaTestUtils.createMediaItems(/* size= */ 5));
controller.removeMediaItems(/* fromIndex= */ 0, /* toIndex= */ 1);
});
}
@Test

View File

@ -198,7 +198,7 @@ public class MediaSessionPlayerTest {
controller.setMediaItem(item);
player.awaitMethodCalled(MockPlayer.METHOD_SET_MEDIA_ITEM, TIMEOUT_MS);
assertThat(player.mediaItem).isEqualTo(item);
assertThat(player.mediaItems).containsExactly(item);
assertThat(player.startPositionMs).isEqualTo(startPositionMs);
assertThat(player.resetPosition).isEqualTo(resetPosition);
}
@ -214,7 +214,7 @@ public class MediaSessionPlayerTest {
controller.setMediaItem(item);
player.awaitMethodCalled(MockPlayer.METHOD_SET_MEDIA_ITEM, TIMEOUT_MS);
assertThat(player.mediaItem).isEqualTo(item);
assertThat(player.mediaItems).containsExactly(item);
assertThat(player.startPositionMs).isEqualTo(startPositionMs);
assertThat(player.resetPosition).isEqualTo(resetPosition);
}
@ -230,7 +230,7 @@ public class MediaSessionPlayerTest {
controller.setMediaItem(item);
player.awaitMethodCalled(MockPlayer.METHOD_SET_MEDIA_ITEM, TIMEOUT_MS);
assertThat(player.mediaItem).isEqualTo(item);
assertThat(player.mediaItems).containsExactly(item);
assertThat(player.startPositionMs).isEqualTo(startPositionMs);
assertThat(player.resetPosition).isEqualTo(resetPosition);
}
@ -318,7 +318,7 @@ public class MediaSessionPlayerTest {
controller.addMediaItem(mediaItem);
player.awaitMethodCalled(MockPlayer.METHOD_ADD_MEDIA_ITEM, TIMEOUT_MS);
assertThat(player.mediaItem).isEqualTo(mediaItem);
assertThat(player.mediaItems).hasSize(6);
}
@Test
@ -330,7 +330,7 @@ public class MediaSessionPlayerTest {
player.awaitMethodCalled(MockPlayer.METHOD_ADD_MEDIA_ITEM_WITH_INDEX, TIMEOUT_MS);
assertThat(player.index).isEqualTo(index);
assertThat(player.mediaItem).isEqualTo(mediaItem);
assertThat(player.mediaItems).hasSize(6);
}
@Test
@ -341,7 +341,7 @@ public class MediaSessionPlayerTest {
controller.addMediaItems(mediaItems);
player.awaitMethodCalled(MockPlayer.METHOD_ADD_MEDIA_ITEMS, TIMEOUT_MS);
assertThat(player.mediaItems).isEqualTo(mediaItems);
assertThat(player.mediaItems).hasSize(7);
}
@Test
@ -354,12 +354,12 @@ public class MediaSessionPlayerTest {
player.awaitMethodCalled(MockPlayer.METHOD_ADD_MEDIA_ITEMS_WITH_INDEX, TIMEOUT_MS);
assertThat(player.index).isEqualTo(index);
assertThat(player.mediaItems).isEqualTo(mediaItems);
assertThat(player.mediaItems).hasSize(7);
}
@Test
public void removeMediaItem() throws Exception {
int index = 5;
int index = 3;
controller.removeMediaItem(index);

View File

@ -136,7 +136,7 @@ public class MockPlayerTest {
player.setMediaItem(mediaItem);
assertThat(player.hasMethodBeenCalled(MockPlayer.METHOD_SET_MEDIA_ITEM)).isTrue();
assertThat(player.mediaItem).isSameInstanceAs(mediaItem);
assertThat(player.mediaItems).containsExactly(mediaItem);
}
@Test
@ -149,7 +149,7 @@ public class MockPlayerTest {
assertThat(player.hasMethodBeenCalled(MockPlayer.METHOD_SET_MEDIA_ITEM_WITH_START_POSITION))
.isTrue();
assertThat(player.startPositionMs).isEqualTo(startPositionMs);
assertThat(player.mediaItem).isSameInstanceAs(mediaItem);
assertThat(player.mediaItems).containsExactly(mediaItem);
}
@Test
@ -162,7 +162,7 @@ public class MockPlayerTest {
assertThat(player.hasMethodBeenCalled(MockPlayer.METHOD_SET_MEDIA_ITEM_WITH_RESET_POSITION))
.isTrue();
assertThat(player.resetPosition).isEqualTo(resetPosition);
assertThat(player.mediaItem).isEqualTo(mediaItem);
assertThat(player.mediaItems).containsExactly(mediaItem);
}
@Test
@ -172,7 +172,7 @@ public class MockPlayerTest {
player.setMediaItems(list);
assertThat(player.hasMethodBeenCalled(MockPlayer.METHOD_SET_MEDIA_ITEMS)).isTrue();
assertThat(player.mediaItems).isSameInstanceAs(list);
assertThat(player.mediaItems).containsExactlyElementsIn(list).inOrder();
}
@Test
@ -185,7 +185,7 @@ public class MockPlayerTest {
assertThat(player.hasMethodBeenCalled(MockPlayer.METHOD_SET_MEDIA_ITEMS_WITH_RESET_POSITION))
.isTrue();
assertThat(player.resetPosition).isEqualTo(resetPosition);
assertThat(player.mediaItems).isSameInstanceAs(list);
assertThat(player.mediaItems).containsExactlyElementsIn(list).inOrder();
}
@Test
@ -200,7 +200,7 @@ public class MockPlayerTest {
.isTrue();
assertThat(player.startMediaItemIndex).isEqualTo(startWindowIndex);
assertThat(player.startPositionMs).isEqualTo(startPositionMs);
assertThat(player.mediaItems).isSameInstanceAs(list);
assertThat(player.mediaItems).containsExactlyElementsIn(list).inOrder();
}
@Test
@ -211,7 +211,7 @@ public class MockPlayerTest {
player.setMediaItems(list);
assertThat(player.hasMethodBeenCalled(MockPlayer.METHOD_SET_MEDIA_ITEMS)).isTrue();
assertThat(player.mediaItems).isSameInstanceAs(list);
assertThat(player.mediaItems).containsExactlyElementsIn(list).inOrder();
}
@Test
@ -226,98 +226,132 @@ public class MockPlayerTest {
@Test
public void addMediaItem() {
MediaItem existingItem = MediaTestUtils.createMediaItem("existing");
MediaItem mediaItem = MediaTestUtils.createMediaItem("item");
player.setMediaItem(existingItem);
player.addMediaItem(mediaItem);
assertThat(player.hasMethodBeenCalled(MockPlayer.METHOD_ADD_MEDIA_ITEM)).isTrue();
assertThat(player.mediaItem).isSameInstanceAs(mediaItem);
assertThat(player.mediaItems).containsExactly(existingItem, mediaItem).inOrder();
}
@Test
public void addMediaItem_withIndex() {
int index = 1;
List<MediaItem> existingItems = MediaTestUtils.createMediaItems(/* size= */ 2);
MediaItem mediaItem = MediaTestUtils.createMediaItem("item");
player.setMediaItems(existingItems);
player.addMediaItem(index, mediaItem);
assertThat(player.hasMethodBeenCalled(MockPlayer.METHOD_ADD_MEDIA_ITEM_WITH_INDEX)).isTrue();
assertThat(player.index).isEqualTo(index);
assertThat(player.mediaItem).isSameInstanceAs(mediaItem);
assertThat(player.mediaItems)
.containsExactly(existingItems.get(0), mediaItem, existingItems.get(1))
.inOrder();
}
@Test
public void addMediaItems() {
int index = 1;
int size = 2;
int size = 4;
List<MediaItem> mediaItems = MediaTestUtils.createMediaItems(size);
player.setMediaItems(mediaItems.subList(/* fromIndex= */ 0, /* toIndex= */ 2));
player.addMediaItems(index, mediaItems);
player.addMediaItems(mediaItems.subList(/* fromIndex= */ 2, /* toIndex= */ 4));
assertThat(player.hasMethodBeenCalled(MockPlayer.METHOD_ADD_MEDIA_ITEMS_WITH_INDEX)).isTrue();
assertThat(player.index).isEqualTo(index);
assertThat(player.mediaItems).isSameInstanceAs(mediaItems);
assertThat(player.hasMethodBeenCalled(MockPlayer.METHOD_ADD_MEDIA_ITEMS)).isTrue();
assertThat(player.mediaItems).containsExactlyElementsIn(mediaItems).inOrder();
}
@Test
public void addMediaItems_withIndex() {
int index = 1;
int size = 2;
int size = 4;
List<MediaItem> mediaItems = MediaTestUtils.createMediaItems(size);
player.setMediaItems(mediaItems.subList(/* fromIndex= */ 0, /* toIndex= */ 2));
player.addMediaItems(index, mediaItems);
player.addMediaItems(index, mediaItems.subList(/* fromIndex= */ 2, /* toIndex= */ 4));
assertThat(player.hasMethodBeenCalled(MockPlayer.METHOD_ADD_MEDIA_ITEMS_WITH_INDEX)).isTrue();
assertThat(player.index).isEqualTo(index);
assertThat(player.mediaItems).isSameInstanceAs(mediaItems);
assertThat(player.mediaItems)
.containsExactly(mediaItems.get(0), mediaItems.get(2), mediaItems.get(3), mediaItems.get(1))
.inOrder();
}
@Test
public void removeMediaItem() {
int index = 8;
int index = 3;
List<MediaItem> mediaItems = MediaTestUtils.createMediaItems(/* size= */ 5);
player.addMediaItems(mediaItems);
player.removeMediaItem(index);
assertThat(player.hasMethodBeenCalled(MockPlayer.METHOD_REMOVE_MEDIA_ITEM)).isTrue();
assertThat(player.index).isEqualTo(index);
assertThat(player.mediaItems)
.containsExactly(mediaItems.get(0), mediaItems.get(1), mediaItems.get(2), mediaItems.get(4))
.inOrder();
}
@Test
public void removeMediaItems() {
int fromIndex = 1;
int toIndex = 3;
List<MediaItem> mediaItems = MediaTestUtils.createMediaItems(/* size= */ 5);
player.addMediaItems(mediaItems);
player.removeMediaItems(fromIndex, toIndex);
assertThat(player.hasMethodBeenCalled(MockPlayer.METHOD_REMOVE_MEDIA_ITEMS)).isTrue();
assertThat(player.fromIndex).isEqualTo(fromIndex);
assertThat(player.toIndex).isEqualTo(toIndex);
assertThat(player.mediaItems)
.containsExactly(mediaItems.get(0), mediaItems.get(3), mediaItems.get(4))
.inOrder();
}
@Test
public void clearMediaItems() {
List<MediaItem> mediaItems = MediaTestUtils.createMediaItems(/* size= */ 5);
player.addMediaItems(mediaItems);
player.clearMediaItems();
assertThat(player.hasMethodBeenCalled(MockPlayer.METHOD_CLEAR_MEDIA_ITEMS)).isTrue();
assertThat(player.mediaItems).isEmpty();
}
@Test
public void moveMediaItem() {
int index = 2;
int newIndex = 3;
List<MediaItem> mediaItems = MediaTestUtils.createMediaItems(/* size= */ 5);
player.addMediaItems(mediaItems);
player.moveMediaItem(index, newIndex);
assertThat(player.hasMethodBeenCalled(MockPlayer.METHOD_MOVE_MEDIA_ITEM)).isTrue();
assertThat(player.index).isEqualTo(index);
assertThat(player.newIndex).isEqualTo(newIndex);
assertThat(player.mediaItems)
.containsExactly(
mediaItems.get(0),
mediaItems.get(1),
mediaItems.get(3),
mediaItems.get(2),
mediaItems.get(4))
.inOrder();
}
@Test
public void moveMediaItems() {
int fromIndex = 1;
int toIndex = 2;
int toIndex = 3;
int newIndex = 3;
List<MediaItem> mediaItems = MediaTestUtils.createMediaItems(/* size= */ 5);
player.addMediaItems(mediaItems);
player.moveMediaItems(fromIndex, toIndex, newIndex);
@ -325,6 +359,14 @@ public class MockPlayerTest {
assertThat(player.fromIndex).isEqualTo(fromIndex);
assertThat(player.toIndex).isEqualTo(toIndex);
assertThat(player.newIndex).isEqualTo(newIndex);
assertThat(player.mediaItems)
.containsExactly(
mediaItems.get(0),
mediaItems.get(3),
mediaItems.get(4),
mediaItems.get(1),
mediaItems.get(2))
.inOrder();
}
@Test

View File

@ -58,8 +58,8 @@ public final class MediaTestUtils {
return new MediaItem.Builder().setMediaId(mediaId).setMediaMetadata(mediaMetadata).build();
}
public static List<MediaItem> createMediaItems(int size) {
List<MediaItem> list = new ArrayList<>();
public static ArrayList<MediaItem> createMediaItems(int size) {
ArrayList<MediaItem> list = new ArrayList<>();
for (int i = 0; i < size; i++) {
list.add(createMediaItem("mediaItem_" + (i + 1)));
}

View File

@ -48,6 +48,7 @@ import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeoutException;
@ -214,8 +215,7 @@ public class MockPlayer implements Player {
public int currentAdIndexInAdGroup;
@Nullable public PlaybackParameters playbackParameters;
public Timeline timeline;
public MediaItem mediaItem;
public List<MediaItem> mediaItems;
public ArrayList<MediaItem> mediaItems;
public boolean resetPosition;
public int startMediaItemIndex;
public long startPositionMs;
@ -260,14 +260,13 @@ public class MockPlayer implements Player {
mediaItems = MediaTestUtils.createMediaItems(builder.itemCount);
timeline = new PlaylistTimeline(mediaItems);
} else {
mediaItems = ImmutableList.of();
mediaItems = new ArrayList<>();
timeline = Timeline.EMPTY;
}
// Sets default audio attributes to prevent setVolume() from being called with the play().
audioAttributes = AudioAttributes.DEFAULT;
mediaItem = MediaItem.EMPTY;
playlistMetadata = MediaMetadata.EMPTY;
index = C.INDEX_UNSET;
fromIndex = C.INDEX_UNSET;
@ -709,40 +708,40 @@ public class MockPlayer implements Player {
@Override
public void setMediaItem(MediaItem mediaItem) {
this.mediaItem = mediaItem;
this.mediaItems = new ArrayList<>(ImmutableList.of(mediaItem));
checkNotNull(conditionVariables.get(METHOD_SET_MEDIA_ITEM)).open();
}
@Override
public void setMediaItem(MediaItem mediaItem, long startPositionMs) {
this.mediaItem = mediaItem;
this.mediaItems = new ArrayList<>(ImmutableList.of(mediaItem));
this.startPositionMs = startPositionMs;
checkNotNull(conditionVariables.get(METHOD_SET_MEDIA_ITEM_WITH_START_POSITION)).open();
}
@Override
public void setMediaItem(MediaItem mediaItem, boolean resetPosition) {
this.mediaItem = mediaItem;
this.mediaItems = new ArrayList<>(ImmutableList.of(mediaItem));
this.resetPosition = resetPosition;
checkNotNull(conditionVariables.get(METHOD_SET_MEDIA_ITEM_WITH_RESET_POSITION)).open();
}
@Override
public void setMediaItems(List<MediaItem> mediaItems) {
this.mediaItems = mediaItems;
this.mediaItems = new ArrayList<>(mediaItems);
checkNotNull(conditionVariables.get(METHOD_SET_MEDIA_ITEMS)).open();
}
@Override
public void setMediaItems(List<MediaItem> mediaItems, boolean resetPosition) {
this.mediaItems = mediaItems;
this.mediaItems = new ArrayList<>(mediaItems);
this.resetPosition = resetPosition;
checkNotNull(conditionVariables.get(METHOD_SET_MEDIA_ITEMS_WITH_RESET_POSITION)).open();
}
@Override
public void setMediaItems(List<MediaItem> mediaItems, int startIndex, long startPositionMs) {
this.mediaItems = mediaItems;
this.mediaItems = new ArrayList<>(mediaItems);
this.startMediaItemIndex = startIndex;
this.startPositionMs = startPositionMs;
checkNotNull(conditionVariables.get(METHOD_SET_MEDIA_ITEMS_WITH_START_INDEX)).open();
@ -851,33 +850,34 @@ public class MockPlayer implements Player {
@Override
public void addMediaItem(MediaItem mediaItem) {
this.mediaItem = mediaItem;
this.mediaItems.add(mediaItem);
checkNotNull(conditionVariables.get(METHOD_ADD_MEDIA_ITEM)).open();
}
@Override
public void addMediaItem(int index, MediaItem mediaItem) {
this.index = index;
this.mediaItem = mediaItem;
this.mediaItems.add(index, mediaItem);
checkNotNull(conditionVariables.get(METHOD_ADD_MEDIA_ITEM_WITH_INDEX)).open();
}
@Override
public void addMediaItems(List<MediaItem> mediaItems) {
this.mediaItems = mediaItems;
this.mediaItems.addAll(mediaItems);
checkNotNull(conditionVariables.get(METHOD_ADD_MEDIA_ITEMS)).open();
}
@Override
public void addMediaItems(int index, List<MediaItem> mediaItems) {
this.index = index;
this.mediaItems = mediaItems;
this.mediaItems.addAll(index, mediaItems);
checkNotNull(conditionVariables.get(METHOD_ADD_MEDIA_ITEMS_WITH_INDEX)).open();
}
@Override
public void removeMediaItem(int index) {
this.index = index;
this.mediaItems.remove(index);
checkNotNull(conditionVariables.get(METHOD_REMOVE_MEDIA_ITEM)).open();
}
@ -885,11 +885,13 @@ public class MockPlayer implements Player {
public void removeMediaItems(int fromIndex, int toIndex) {
this.fromIndex = fromIndex;
this.toIndex = toIndex;
Util.removeRange(mediaItems, fromIndex, toIndex);
checkNotNull(conditionVariables.get(METHOD_REMOVE_MEDIA_ITEMS)).open();
}
@Override
public void clearMediaItems() {
this.mediaItems.clear();
checkNotNull(conditionVariables.get(METHOD_CLEAR_MEDIA_ITEMS)).open();
}
@ -897,6 +899,7 @@ public class MockPlayer implements Player {
public void moveMediaItem(int currentIndex, int newIndex) {
this.index = currentIndex;
this.newIndex = newIndex;
Util.moveItems(mediaItems, currentIndex, /* toIndex= */ currentIndex + 1, newIndex);
checkNotNull(conditionVariables.get(METHOD_MOVE_MEDIA_ITEM)).open();
}
@ -905,6 +908,7 @@ public class MockPlayer implements Player {
this.fromIndex = fromIndex;
this.toIndex = toIndex;
this.newIndex = newIndex;
Util.moveItems(mediaItems, fromIndex, toIndex, newIndex);
checkNotNull(conditionVariables.get(METHOD_MOVE_MEDIA_ITEMS)).open();
}