mirror of
https://github.com/androidx/media.git
synced 2025-04-30 06:46:50 +08:00
Make resetPosition reset the position if true
Issue: #8024 PiperOrigin-RevId: 335846035
This commit is contained in:
parent
64d5be8719
commit
0a9b11d3dd
@ -309,6 +309,13 @@ public final class CastPlayer extends BasePlayer {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setMediaItems(List<MediaItem> mediaItems, boolean resetPosition) {
|
||||
int windowIndex = resetPosition ? 0 : getCurrentWindowIndex();
|
||||
long startPositionMs = resetPosition ? C.TIME_UNSET : getContentPosition();
|
||||
setMediaItems(mediaItems, windowIndex, startPositionMs);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setMediaItems(
|
||||
List<MediaItem> mediaItems, int startWindowIndex, long startPositionMs) {
|
||||
|
@ -44,12 +44,6 @@ public abstract class BasePlayer implements Player {
|
||||
setMediaItems(Collections.singletonList(mediaItem), resetPosition);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setMediaItems(List<MediaItem> mediaItems, boolean resetPosition) {
|
||||
setMediaItems(
|
||||
mediaItems, /* startWindowIndex= */ C.INDEX_UNSET, /* startPositionMs= */ C.TIME_UNSET);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setMediaItems(List<MediaItem> mediaItems) {
|
||||
setMediaItems(mediaItems, /* resetPosition= */ true);
|
||||
|
@ -338,6 +338,11 @@ import java.util.concurrent.TimeoutException;
|
||||
prepare();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setMediaItems(List<MediaItem> mediaItems, boolean resetPosition) {
|
||||
setMediaSources(createMediaSources(mediaItems), resetPosition);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setMediaItems(
|
||||
List<MediaItem> mediaItems, int startWindowIndex, long startPositionMs) {
|
||||
|
@ -109,6 +109,7 @@ import com.google.android.exoplayer2.util.Assertions;
|
||||
import com.google.android.exoplayer2.util.Clock;
|
||||
import com.google.android.exoplayer2.util.MimeTypes;
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import com.google.common.collect.Lists;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
@ -5706,6 +5707,42 @@ public final class ExoPlayerTest {
|
||||
assertArrayEquals(new int[] {0, 0, 0}, currentWindowIndices);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void setMediaItems_resetPosition_resetsPosition() throws Exception {
|
||||
final int[] currentWindowIndices = {C.INDEX_UNSET, C.INDEX_UNSET};
|
||||
final long[] currentPositions = {C.INDEX_UNSET, C.INDEX_UNSET};
|
||||
ActionSchedule actionSchedule =
|
||||
new ActionSchedule.Builder(TAG)
|
||||
.pause()
|
||||
.executeRunnable(
|
||||
new PlayerRunnable() {
|
||||
@Override
|
||||
public void run(SimpleExoPlayer player) {
|
||||
player.seekTo(/* windowIndex= */ 1, /* positionMs= */ 1000);
|
||||
currentWindowIndices[0] = player.getCurrentWindowIndex();
|
||||
currentPositions[0] = player.getCurrentPosition();
|
||||
List<MediaItem> listOfTwo =
|
||||
Lists.newArrayList(
|
||||
MediaItem.fromUri(Uri.EMPTY), MediaItem.fromUri(Uri.EMPTY));
|
||||
player.setMediaItems(listOfTwo, /* resetPosition= */ true);
|
||||
currentWindowIndices[1] = player.getCurrentWindowIndex();
|
||||
currentPositions[1] = player.getCurrentPosition();
|
||||
}
|
||||
})
|
||||
.prepare()
|
||||
.waitForTimelineChanged()
|
||||
.play()
|
||||
.build();
|
||||
new ExoPlayerTestRunner.Builder(context)
|
||||
.setActionSchedule(actionSchedule)
|
||||
.build()
|
||||
.start(/* doPrepare= */ false)
|
||||
.blockUntilActionScheduleFinished(TIMEOUT_MS)
|
||||
.blockUntilEnded(TIMEOUT_MS);
|
||||
assertArrayEquals(new int[] {1, 0}, currentWindowIndices);
|
||||
assertArrayEquals(new long[] {1000, 0}, currentPositions);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void setMediaSources_empty_whenEmpty_validInitialSeek_correctMaskingWindowIndex()
|
||||
throws Exception {
|
||||
|
Loading…
x
Reference in New Issue
Block a user