Commit 87e141d3 by tonihei Committed by Andrew Lewis

Remove boilerplate setting up FakeTimeline and FakeMediaSource.

In many cases it doesn't matter for the test itself how many windows
a timeline has, or even how the timeline of a MediaSource looks like.

And since we introduced the MediaItem-based APIs, single-window
Timelines are the only fully supported Timelines. Thus there is no
point in specifiying this explicitly.

Using these assumptions, we can remove some boilerplate when setting
up standard FakeTimelines or FakeMediaSources with a standard
FakeTimeline.

#exofixit

PiperOrigin-RevId: 344210395
parent b7047a24
......@@ -109,7 +109,6 @@ 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.Iterables;
import com.google.common.collect.Lists;
import com.google.common.collect.Range;
import java.io.IOException;
import java.util.ArrayList;
......@@ -196,7 +195,7 @@ public final class ExoPlayerTest {
/** Tests playback of a source that exposes a single period. */
@Test
public void playSinglePeriodTimeline() throws Exception {
Timeline timeline = new FakeTimeline(/* windowCount= */ 1);
Timeline timeline = new FakeTimeline();
FakeRenderer renderer = new FakeRenderer(C.TRACK_TYPE_VIDEO);
SimpleExoPlayer player = new TestExoPlayerBuilder(context).setRenderers(renderer).build();
EventListener mockEventListener = mock(EventListener.class);
......@@ -391,8 +390,7 @@ public final class ExoPlayerTest {
MediaSource firstSource = new FakeMediaSource(firstTimeline, ExoPlayerTestRunner.VIDEO_FORMAT);
AtomicBoolean secondSourcePrepared = new AtomicBoolean();
MediaSource secondSource =
new FakeMediaSource(
new FakeTimeline(/* windowCount= */ 1), ExoPlayerTestRunner.VIDEO_FORMAT) {
new FakeMediaSource(new FakeTimeline(), ExoPlayerTestRunner.VIDEO_FORMAT) {
@Override
public synchronized void prepareSourceInternal(
@Nullable TransferListener mediaTransferListener) {
......@@ -400,7 +398,7 @@ public final class ExoPlayerTest {
secondSourcePrepared.set(true);
}
};
Timeline thirdTimeline = new FakeTimeline(/* windowCount= */ 1);
Timeline thirdTimeline = new FakeTimeline();
MediaSource thirdSource = new FakeMediaSource(thirdTimeline, ExoPlayerTestRunner.VIDEO_FORMAT);
SimpleExoPlayer player = new TestExoPlayerBuilder(context).setRenderers(renderer).build();
EventListener mockEventListener = mock(EventListener.class);
......@@ -490,7 +488,7 @@ public final class ExoPlayerTest {
@Test
public void shuffleModeEnabledChanges() throws Exception {
Timeline fakeTimeline = new FakeTimeline(/* windowCount= */ 1);
Timeline fakeTimeline = new FakeTimeline();
MediaSource[] fakeMediaSources = {
new FakeMediaSource(fakeTimeline, ExoPlayerTestRunner.VIDEO_FORMAT),
new FakeMediaSource(fakeTimeline, ExoPlayerTestRunner.VIDEO_FORMAT),
......@@ -725,7 +723,7 @@ public final class ExoPlayerTest {
@Test
public void internalDiscontinuityAtInitialPosition() throws Exception {
FakeTimeline timeline = new FakeTimeline(/* windowCount= */ 1);
FakeTimeline timeline = new FakeTimeline();
FakeMediaSource mediaSource =
new FakeMediaSource(timeline, ExoPlayerTestRunner.VIDEO_FORMAT) {
@Override
......@@ -760,10 +758,9 @@ public final class ExoPlayerTest {
@Test
public void allActivatedTrackSelectionAreReleasedForSinglePeriod() throws Exception {
Timeline timeline = new FakeTimeline(/* windowCount= */ 1);
MediaSource mediaSource =
new FakeMediaSource(
timeline, ExoPlayerTestRunner.VIDEO_FORMAT, ExoPlayerTestRunner.AUDIO_FORMAT);
new FakeTimeline(), ExoPlayerTestRunner.VIDEO_FORMAT, ExoPlayerTestRunner.AUDIO_FORMAT);
FakeRenderer videoRenderer = new FakeRenderer(C.TRACK_TYPE_VIDEO);
FakeRenderer audioRenderer = new FakeRenderer(C.TRACK_TYPE_AUDIO);
FakeTrackSelector trackSelector = new FakeTrackSelector();
......@@ -820,10 +817,9 @@ public final class ExoPlayerTest {
@Test
public void allActivatedTrackSelectionAreReleasedWhenTrackSelectionsAreRemade() throws Exception {
Timeline timeline = new FakeTimeline(/* windowCount= */ 1);
MediaSource mediaSource =
new FakeMediaSource(
timeline, ExoPlayerTestRunner.VIDEO_FORMAT, ExoPlayerTestRunner.AUDIO_FORMAT);
new FakeTimeline(), ExoPlayerTestRunner.VIDEO_FORMAT, ExoPlayerTestRunner.AUDIO_FORMAT);
FakeRenderer videoRenderer = new FakeRenderer(C.TRACK_TYPE_VIDEO);
FakeRenderer audioRenderer = new FakeRenderer(C.TRACK_TYPE_AUDIO);
final FakeTrackSelector trackSelector = new FakeTrackSelector();
......@@ -859,10 +855,9 @@ public final class ExoPlayerTest {
@Test
public void allActivatedTrackSelectionAreReleasedWhenTrackSelectionsAreReused() throws Exception {
Timeline timeline = new FakeTimeline(/* windowCount= */ 1);
MediaSource mediaSource =
new FakeMediaSource(
timeline, ExoPlayerTestRunner.VIDEO_FORMAT, ExoPlayerTestRunner.AUDIO_FORMAT);
new FakeTimeline(), ExoPlayerTestRunner.VIDEO_FORMAT, ExoPlayerTestRunner.AUDIO_FORMAT);
FakeRenderer videoRenderer = new FakeRenderer(C.TRACK_TYPE_VIDEO);
FakeRenderer audioRenderer = new FakeRenderer(C.TRACK_TYPE_AUDIO);
final FakeTrackSelector trackSelector =
......@@ -976,8 +971,7 @@ public final class ExoPlayerTest {
final CountDownLatch createPeriodCalledCountDownLatch = new CountDownLatch(1);
final FakeMediaPeriod[] fakeMediaPeriodHolder = new FakeMediaPeriod[1];
MediaSource mediaSource =
new FakeMediaSource(
new FakeTimeline(/* windowCount= */ 1), ExoPlayerTestRunner.VIDEO_FORMAT) {
new FakeMediaSource(new FakeTimeline(), ExoPlayerTestRunner.VIDEO_FORMAT) {
@Override
protected FakeMediaPeriod createFakeMediaPeriod(
MediaPeriodId id,
......@@ -1029,7 +1023,6 @@ public final class ExoPlayerTest {
public void seekBeforePreparationCompletes_seeksToCorrectPosition() throws Exception {
CountDownLatch createPeriodCalledCountDownLatch = new CountDownLatch(1);
FakeMediaPeriod[] fakeMediaPeriodHolder = new FakeMediaPeriod[1];
Timeline timeline = new FakeTimeline(/* windowCount= */ 1);
FakeMediaSource mediaSource =
new FakeMediaSource(/* timeline= */ null, ExoPlayerTestRunner.VIDEO_FORMAT) {
@Override
......@@ -1061,7 +1054,7 @@ public final class ExoPlayerTest {
.waitForPlaybackState(Player.STATE_BUFFERING)
// Ensure we use the MaskingMediaPeriod by delaying the initial timeline update.
.delay(1)
.executeRunnable(() -> mediaSource.setNewSourceInfo(timeline))
.executeRunnable(() -> mediaSource.setNewSourceInfo(new FakeTimeline()))
.waitForTimelineChanged()
// Block until createPeriod has been called on the fake media source.
.executeRunnable(
......@@ -1099,13 +1092,12 @@ public final class ExoPlayerTest {
@Test
public void stop_withoutReset_doesNotResetPosition_correctMasking() throws Exception {
Timeline timeline = new FakeTimeline(/* windowCount= */ 1);
int[] currentWindowIndex = {C.INDEX_UNSET, C.INDEX_UNSET, C.INDEX_UNSET};
long[] currentPosition = {C.TIME_UNSET, C.TIME_UNSET, C.TIME_UNSET};
long[] bufferedPosition = {C.TIME_UNSET, C.TIME_UNSET, C.TIME_UNSET};
long[] totalBufferedDuration = {C.TIME_UNSET, C.TIME_UNSET, C.TIME_UNSET};
final FakeMediaSource mediaSource =
new FakeMediaSource(timeline, ExoPlayerTestRunner.VIDEO_FORMAT);
new FakeMediaSource(new FakeTimeline(), ExoPlayerTestRunner.VIDEO_FORMAT);
ActionSchedule actionSchedule =
new ActionSchedule.Builder(TAG)
.pause()
......@@ -1170,7 +1162,7 @@ public final class ExoPlayerTest {
@Test
public void stop_withoutReset_releasesMediaSource() throws Exception {
Timeline timeline = new FakeTimeline(/* windowCount= */ 1);
Timeline timeline = new FakeTimeline();
final FakeMediaSource mediaSource =
new FakeMediaSource(timeline, ExoPlayerTestRunner.VIDEO_FORMAT);
ActionSchedule actionSchedule =
......@@ -1192,13 +1184,12 @@ public final class ExoPlayerTest {
@Test
public void stop_withReset_doesResetPosition_correctMasking() throws Exception {
Timeline timeline = new FakeTimeline(/* windowCount= */ 1);
int[] currentWindowIndex = {C.INDEX_UNSET, C.INDEX_UNSET, C.INDEX_UNSET};
long[] currentPosition = {C.TIME_UNSET, C.TIME_UNSET, C.TIME_UNSET};
long[] bufferedPosition = {C.TIME_UNSET, C.TIME_UNSET, C.TIME_UNSET};
long[] totalBufferedDuration = {C.TIME_UNSET, C.TIME_UNSET, C.TIME_UNSET};
final FakeMediaSource mediaSource =
new FakeMediaSource(timeline, ExoPlayerTestRunner.VIDEO_FORMAT);
new FakeMediaSource(new FakeTimeline(), ExoPlayerTestRunner.VIDEO_FORMAT);
ActionSchedule actionSchedule =
new ActionSchedule.Builder(TAG)
.pause()
......@@ -1264,7 +1255,7 @@ public final class ExoPlayerTest {
@Test
public void stop_withReset_releasesMediaSource() throws Exception {
Timeline timeline = new FakeTimeline(/* windowCount= */ 1);
Timeline timeline = new FakeTimeline();
final FakeMediaSource mediaSource =
new FakeMediaSource(timeline, ExoPlayerTestRunner.VIDEO_FORMAT);
ActionSchedule actionSchedule =
......@@ -1286,13 +1277,12 @@ public final class ExoPlayerTest {
@Test
public void release_correctMasking() throws Exception {
Timeline timeline = new FakeTimeline(/* windowCount= */ 1);
int[] currentWindowIndex = {C.INDEX_UNSET, C.INDEX_UNSET, C.INDEX_UNSET};
long[] currentPosition = {C.TIME_UNSET, C.TIME_UNSET, C.TIME_UNSET};
long[] bufferedPosition = {C.TIME_UNSET, C.TIME_UNSET, C.TIME_UNSET};
long[] totalBufferedDuration = {C.TIME_UNSET, C.TIME_UNSET, C.TIME_UNSET};
final FakeMediaSource mediaSource =
new FakeMediaSource(timeline, ExoPlayerTestRunner.VIDEO_FORMAT);
new FakeMediaSource(new FakeTimeline(), ExoPlayerTestRunner.VIDEO_FORMAT);
ActionSchedule actionSchedule =
new ActionSchedule.Builder(TAG)
.pause()
......@@ -1351,7 +1341,7 @@ public final class ExoPlayerTest {
@Test
public void settingNewStartPositionPossibleAfterStopWithReset() throws Exception {
Timeline timeline = new FakeTimeline(/* windowCount= */ 1);
Timeline timeline = new FakeTimeline();
Timeline secondTimeline = new FakeTimeline(/* windowCount= */ 2);
MediaSource secondSource =
new FakeMediaSource(secondTimeline, ExoPlayerTestRunner.VIDEO_FORMAT);
......@@ -1577,7 +1567,6 @@ public final class ExoPlayerTest {
@Test
public void stopDuringPreparationOverwritesPreparation() throws Exception {
Timeline timeline = new FakeTimeline(/* windowCount= */ 1);
ActionSchedule actionSchedule =
new ActionSchedule.Builder(TAG)
.waitForPlaybackState(Player.STATE_BUFFERING)
......@@ -1586,7 +1575,7 @@ public final class ExoPlayerTest {
.build();
ExoPlayerTestRunner testRunner =
new ExoPlayerTestRunner.Builder(context)
.setTimeline(timeline)
.setTimeline(new FakeTimeline())
.setActionSchedule(actionSchedule)
.build()
.start()
......@@ -1600,7 +1589,7 @@ public final class ExoPlayerTest {
@Test
public void stopAndSeekAfterStopDoesNotResetTimeline() throws Exception {
Timeline timeline = new FakeTimeline(/* windowCount= */ 1);
Timeline timeline = new FakeTimeline();
ActionSchedule actionSchedule =
new ActionSchedule.Builder(TAG)
.waitForPlaybackState(Player.STATE_READY)
......@@ -1626,7 +1615,7 @@ public final class ExoPlayerTest {
@Test
public void reprepareAfterPlaybackError() throws Exception {
Timeline timeline = new FakeTimeline(/* windowCount= */ 1);
Timeline timeline = new FakeTimeline();
ActionSchedule actionSchedule =
new ActionSchedule.Builder(TAG)
.waitForPlaybackState(Player.STATE_READY)
......@@ -1654,7 +1643,7 @@ public final class ExoPlayerTest {
@Test
public void seekAndReprepareAfterPlaybackError() throws Exception {
Timeline timeline = new FakeTimeline(/* windowCount= */ 1);
Timeline timeline = new FakeTimeline();
final long[] positionHolder = new long[2];
ActionSchedule actionSchedule =
new ActionSchedule.Builder(TAG)
......@@ -1741,8 +1730,6 @@ public final class ExoPlayerTest {
@Test
public void restartAfterEmptyTimelineWithShuffleModeEnabledUsesCorrectFirstPeriod()
throws Exception {
Timeline timeline = new FakeTimeline(/* windowCount= */ 1);
FakeMediaSource mediaSource = new FakeMediaSource(timeline);
ConcatenatingMediaSource concatenatingMediaSource =
new ConcatenatingMediaSource(/* isAtomic= */ false, new FakeShuffleOrder(0));
AtomicInteger windowIndexAfterAddingSources = new AtomicInteger();
......@@ -1756,7 +1743,7 @@ public final class ExoPlayerTest {
.executeRunnable(
() ->
concatenatingMediaSource.addMediaSources(
Arrays.asList(mediaSource, mediaSource)))
ImmutableList.of(new FakeMediaSource(), new FakeMediaSource())))
.waitForTimelineChanged()
.executeRunnable(
new PlayerRunnable() {
......@@ -1908,7 +1895,6 @@ public final class ExoPlayerTest {
@Test
public void playbackErrorAndReprepareWithPositionResetKeepsWindowSequenceNumber()
throws Exception {
FakeMediaSource mediaSource = new FakeMediaSource(new FakeTimeline(/* windowCount= */ 1));
ActionSchedule actionSchedule =
new ActionSchedule.Builder(TAG)
.pause()
......@@ -1942,7 +1928,6 @@ public final class ExoPlayerTest {
};
ExoPlayerTestRunner testRunner =
new ExoPlayerTestRunner.Builder(context)
.setMediaSources(mediaSource)
.setActionSchedule(actionSchedule)
.setAnalyticsListener(listener)
.build();
......@@ -1957,7 +1942,7 @@ public final class ExoPlayerTest {
@Test
public void playbackErrorTwiceStillKeepsTimeline() throws Exception {
final Timeline timeline = new FakeTimeline(/* windowCount= */ 1);
final Timeline timeline = new FakeTimeline();
final FakeMediaSource mediaSource2 = new FakeMediaSource(timeline);
ActionSchedule actionSchedule =
new ActionSchedule.Builder(TAG)
......@@ -1993,7 +1978,6 @@ public final class ExoPlayerTest {
@Test
public void sendMessagesDuringPreparation() throws Exception {
Timeline timeline = new FakeTimeline(/* windowCount= */ 1);
PositionGrabbingMessageTarget target = new PositionGrabbingMessageTarget();
ActionSchedule actionSchedule =
new ActionSchedule.Builder(TAG)
......@@ -2003,7 +1987,6 @@ public final class ExoPlayerTest {
.play()
.build();
new ExoPlayerTestRunner.Builder(context)
.setTimeline(timeline)
.setActionSchedule(actionSchedule)
.build()
.start()
......@@ -2013,7 +1996,7 @@ public final class ExoPlayerTest {
@Test
public void sendMessagesAfterPreparation() throws Exception {
Timeline timeline = new FakeTimeline(/* windowCount= */ 1);
Timeline timeline = new FakeTimeline();
PositionGrabbingMessageTarget target = new PositionGrabbingMessageTarget();
ActionSchedule actionSchedule =
new ActionSchedule.Builder(TAG)
......@@ -2034,7 +2017,6 @@ public final class ExoPlayerTest {
@Test
public void multipleSendMessages() throws Exception {
Timeline timeline = new FakeTimeline(/* windowCount= */ 1);
PositionGrabbingMessageTarget target50 = new PositionGrabbingMessageTarget();
PositionGrabbingMessageTarget target80 = new PositionGrabbingMessageTarget();
ActionSchedule actionSchedule =
......@@ -2046,7 +2028,6 @@ public final class ExoPlayerTest {
.play()
.build();
new ExoPlayerTestRunner.Builder(context)
.setTimeline(timeline)
.setActionSchedule(actionSchedule)
.build()
.start()
......@@ -2058,7 +2039,6 @@ public final class ExoPlayerTest {
@Test
public void sendMessagesFromStartPositionOnlyOnce() throws Exception {
Timeline timeline = new FakeTimeline(/* windowCount= */ 1);
AtomicInteger counter = new AtomicInteger();
ActionSchedule actionSchedule =
new ActionSchedule.Builder(TAG)
......@@ -2074,7 +2054,6 @@ public final class ExoPlayerTest {
.play()
.build();
new ExoPlayerTestRunner.Builder(context)
.setTimeline(timeline)
.setActionSchedule(actionSchedule)
.build()
.start()
......@@ -2085,7 +2064,6 @@ public final class ExoPlayerTest {
@Test
public void multipleSendMessagesAtSameTime() throws Exception {
Timeline timeline = new FakeTimeline(/* windowCount= */ 1);
PositionGrabbingMessageTarget target1 = new PositionGrabbingMessageTarget();
PositionGrabbingMessageTarget target2 = new PositionGrabbingMessageTarget();
ActionSchedule actionSchedule =
......@@ -2097,7 +2075,6 @@ public final class ExoPlayerTest {
.play()
.build();
new ExoPlayerTestRunner.Builder(context)
.setTimeline(timeline)
.setActionSchedule(actionSchedule)
.build()
.start()
......@@ -2190,7 +2167,6 @@ public final class ExoPlayerTest {
@Test
public void sendMessagesSeekOnDeliveryTimeDuringPreparation() throws Exception {
Timeline timeline = new FakeTimeline(/* windowCount= */ 1);
PositionGrabbingMessageTarget target = new PositionGrabbingMessageTarget();
ActionSchedule actionSchedule =
new ActionSchedule.Builder(TAG)
......@@ -2199,7 +2175,6 @@ public final class ExoPlayerTest {
.seek(/* positionMs= */ 50)
.build();
new ExoPlayerTestRunner.Builder(context)
.setTimeline(timeline)
.setActionSchedule(actionSchedule)
.build()
.start()
......@@ -2209,7 +2184,7 @@ public final class ExoPlayerTest {
@Test
public void sendMessagesSeekOnDeliveryTimeAfterPreparation() throws Exception {
Timeline timeline = new FakeTimeline(/* windowCount= */ 1);
Timeline timeline = new FakeTimeline();
PositionGrabbingMessageTarget target = new PositionGrabbingMessageTarget();
ActionSchedule actionSchedule =
new ActionSchedule.Builder(TAG)
......@@ -2230,7 +2205,6 @@ public final class ExoPlayerTest {
@Test
public void sendMessagesSeekAfterDeliveryTimeDuringPreparation() throws Exception {
Timeline timeline = new FakeTimeline(/* windowCount= */ 1);
PositionGrabbingMessageTarget target = new PositionGrabbingMessageTarget();
ActionSchedule actionSchedule =
new ActionSchedule.Builder(TAG)
......@@ -2241,7 +2215,6 @@ public final class ExoPlayerTest {
.play()
.build();
new ExoPlayerTestRunner.Builder(context)
.setTimeline(timeline)
.setActionSchedule(actionSchedule)
.build()
.start()
......@@ -2251,7 +2224,7 @@ public final class ExoPlayerTest {
@Test
public void sendMessagesSeekAfterDeliveryTimeAfterPreparation() throws Exception {
Timeline timeline = new FakeTimeline(/* windowCount= */ 1);
Timeline timeline = new FakeTimeline();
PositionGrabbingMessageTarget target = new PositionGrabbingMessageTarget();
ActionSchedule actionSchedule =
new ActionSchedule.Builder(TAG)
......@@ -2273,7 +2246,6 @@ public final class ExoPlayerTest {
@Test
public void sendMessagesRepeatDoesNotRepost() throws Exception {
Timeline timeline = new FakeTimeline(/* windowCount= */ 1);
PositionGrabbingMessageTarget target = new PositionGrabbingMessageTarget();
ActionSchedule actionSchedule =
new ActionSchedule.Builder(TAG)
......@@ -2286,7 +2258,6 @@ public final class ExoPlayerTest {
.setRepeatMode(Player.REPEAT_MODE_OFF)
.build();
new ExoPlayerTestRunner.Builder(context)
.setTimeline(timeline)
.setActionSchedule(actionSchedule)
.build()
.start()
......@@ -2297,7 +2268,6 @@ public final class ExoPlayerTest {
@Test
public void sendMessagesRepeatWithoutDeletingDoesRepost() throws Exception {
Timeline timeline = new FakeTimeline(/* windowCount= */ 1);
PositionGrabbingMessageTarget target = new PositionGrabbingMessageTarget();
ActionSchedule actionSchedule =
new ActionSchedule.Builder(TAG)
......@@ -2315,7 +2285,6 @@ public final class ExoPlayerTest {
.play()
.build();
new ExoPlayerTestRunner.Builder(context)
.setTimeline(timeline)
.setActionSchedule(actionSchedule)
.build()
.start()
......@@ -2436,7 +2405,7 @@ public final class ExoPlayerTest {
@Test
public void sendMessagesNonLinearPeriodOrder() throws Exception {
Timeline fakeTimeline = new FakeTimeline(/* windowCount= */ 1);
Timeline fakeTimeline = new FakeTimeline();
MediaSource[] fakeMediaSources = {
new FakeMediaSource(fakeTimeline, ExoPlayerTestRunner.VIDEO_FORMAT),
new FakeMediaSource(fakeTimeline, ExoPlayerTestRunner.VIDEO_FORMAT),
......@@ -2471,7 +2440,6 @@ public final class ExoPlayerTest {
@Test
public void cancelMessageBeforeDelivery() throws Exception {
Timeline timeline = new FakeTimeline(/* windowCount= */ 1);
final PositionGrabbingMessageTarget target = new PositionGrabbingMessageTarget();
final AtomicReference<PlayerMessage> message = new AtomicReference<>();
ActionSchedule actionSchedule =
......@@ -2492,7 +2460,6 @@ public final class ExoPlayerTest {
.play()
.build();
new ExoPlayerTestRunner.Builder(context)
.setTimeline(timeline)
.setActionSchedule(actionSchedule)
.build()
.start()
......@@ -2503,7 +2470,6 @@ public final class ExoPlayerTest {
@Test
public void cancelRepeatedMessageAfterDelivery() throws Exception {
Timeline timeline = new FakeTimeline(/* windowCount= */ 1);
final CountingMessageTarget target = new CountingMessageTarget();
final AtomicReference<PlayerMessage> message = new AtomicReference<>();
ActionSchedule actionSchedule =
......@@ -2530,7 +2496,6 @@ public final class ExoPlayerTest {
.play()
.build();
new ExoPlayerTestRunner.Builder(context)
.setTimeline(timeline)
.setActionSchedule(actionSchedule)
.build()
.start()
......@@ -2543,8 +2508,7 @@ public final class ExoPlayerTest {
public void sendMessages_withMediaRemoval_triggersCorrectMessagesAndDoesNotThrow()
throws Exception {
ExoPlayer player = new TestExoPlayerBuilder(context).build();
MediaSource mediaSource = new FakeMediaSource(new FakeTimeline(/* windowCount= */ 1));
player.addMediaSources(Arrays.asList(mediaSource, mediaSource));
player.addMediaSources(ImmutableList.of(new FakeMediaSource(), new FakeMediaSource()));
player
.createMessage((messageType, payload) -> {})
.setPosition(/* windowIndex= */ 0, /* positionMs= */ 0)
......@@ -2761,7 +2725,7 @@ public final class ExoPlayerTest {
@Test
public void invalidSeekFallsBackToSubsequentPeriodOfTheRemovedPeriod() throws Exception {
Timeline timeline = new FakeTimeline(/* windowCount= */ 1);
Timeline timeline = new FakeTimeline();
CountDownLatch sourceReleasedCountDownLatch = new CountDownLatch(/* count= */ 1);
MediaSource mediaSourceToRemove =
new FakeMediaSource(timeline) {
......@@ -2992,9 +2956,7 @@ public final class ExoPlayerTest {
long expectedDurationUs = 700_000;
MediaSource mediaSource =
new ClippingMediaSource(
new FakeMediaSource(new FakeTimeline(/* windowCount= */ 1)),
startPositionUs,
startPositionUs + expectedDurationUs);
new FakeMediaSource(), startPositionUs, startPositionUs + expectedDurationUs);
Clock clock = new AutoAdvancingFakeClock();
AtomicReference<Player> playerReference = new AtomicReference<>();
AtomicLong positionAtDiscontinuityMs = new AtomicLong(C.TIME_UNSET);
......@@ -3057,7 +3019,7 @@ public final class ExoPlayerTest {
new FakeTimeline(
new TimelineWindowDefinition(
/* isSeekable= */ true, /* isDynamic= */ false, /* durationUs= */ C.TIME_UNSET));
Timeline timelineSetDuration = new FakeTimeline(/* windowCount= */ 1);
Timeline timelineSetDuration = new FakeTimeline();
MediaSource mediaSource =
new ConcatenatingMediaSource(
new FakeMediaSource(timelineUnsetDuration, ExoPlayerTestRunner.VIDEO_FORMAT),
......@@ -3131,7 +3093,6 @@ public final class ExoPlayerTest {
@Test
public void seekToUnpreparedWindowWithNonZeroOffsetInConcatenationStartsAtCorrectPosition()
throws Exception {
Timeline timeline = new FakeTimeline(/* windowCount= */ 1);
FakeMediaSource mediaSource = new FakeMediaSource(/* timeline= */ null);
MediaSource clippedMediaSource =
new ClippingMediaSource(
......@@ -3148,7 +3109,7 @@ public final class ExoPlayerTest {
.seek(/* positionMs= */ 10)
.waitForPendingPlayerCommands()
// Finish preparation.
.executeRunnable(() -> mediaSource.setNewSourceInfo(timeline))
.executeRunnable(() -> mediaSource.setNewSourceInfo(new FakeTimeline()))
.waitForTimelineChanged()
.waitForPlaybackState(Player.STATE_READY)
.executeRunnable(
......@@ -3619,7 +3580,7 @@ public final class ExoPlayerTest {
@SuppressWarnings("deprecation")
@Test
public void seekTo_windowIndexIsReset_deprecated() throws Exception {
FakeTimeline fakeTimeline = new FakeTimeline(/* windowCount= */ 1);
FakeTimeline fakeTimeline = new FakeTimeline();
FakeMediaSource mediaSource = new FakeMediaSource(fakeTimeline);
LoopingMediaSource loopingMediaSource = new LoopingMediaSource(mediaSource, 2);
final int[] windowIndex = {C.INDEX_UNSET};
......@@ -3673,7 +3634,7 @@ public final class ExoPlayerTest {
@Test
public void seekTo_windowIndexIsReset() throws Exception {
FakeTimeline fakeTimeline = new FakeTimeline(/* windowCount= */ 1);
FakeTimeline fakeTimeline = new FakeTimeline();
FakeMediaSource mediaSource = new FakeMediaSource(fakeTimeline);
LoopingMediaSource loopingMediaSource = new LoopingMediaSource(mediaSource, 2);
final int[] windowIndex = {C.INDEX_UNSET};
......@@ -3835,8 +3796,8 @@ public final class ExoPlayerTest {
positionMs,
bufferedPositions,
totalBufferedDuration,
new FakeMediaSource(new FakeTimeline(/* windowCount= */ 1)),
new FakeMediaSource(new FakeTimeline(/* windowCount= */ 1)),
new FakeMediaSource(),
new FakeMediaSource(),
createPartiallyBufferedMediaSource(/* maxBufferedPositionMs= */ 9200));
assertThat(windowIndex[0]).isEqualTo(0);
......@@ -3864,8 +3825,8 @@ public final class ExoPlayerTest {
positionMs,
bufferedPositions,
totalBufferedDuration,
new FakeMediaSource(new FakeTimeline(/* windowCount= */ 1)),
new FakeMediaSource(new FakeTimeline(/* windowCount= */ 1)),
new FakeMediaSource(),
new FakeMediaSource(),
createPartiallyBufferedMediaSource(/* maxBufferedPositionMs= */ 0));
assertThat(windowIndex[0]).isEqualTo(2);
......@@ -3898,8 +3859,8 @@ public final class ExoPlayerTest {
positionMs,
bufferedPositions,
totalBufferedDuration,
new FakeMediaSource(new FakeTimeline(/* windowCount= */ 1)),
new FakeMediaSource(new FakeTimeline(/* windowCount= */ 1)));
new FakeMediaSource(),
new FakeMediaSource());
assertThat(windowIndex[0]).isEqualTo(1);
assertThat(positionMs[0]).isEqualTo(1000);
......@@ -3934,7 +3895,7 @@ public final class ExoPlayerTest {
positionMs,
bufferedPositions,
totalBufferedDuration,
new FakeMediaSource(new FakeTimeline(/* windowCount= */ 1)),
new FakeMediaSource(),
createPartiallyBufferedMediaSource(/* maxBufferedPositionMs= */ 4000));
assertThat(windowIndex[0]).isEqualTo(1);
......@@ -3969,7 +3930,7 @@ public final class ExoPlayerTest {
positionMs,
bufferedPositions,
totalBufferedDuration,
new FakeMediaSource(new FakeTimeline(/* windowCount= */ 1)),
new FakeMediaSource(),
createPartiallyBufferedMediaSource(/* maxBufferedPositionMs= */ 4000));
assertThat(windowIndex[0]).isEqualTo(1);
......@@ -4002,8 +3963,8 @@ public final class ExoPlayerTest {
positionMs,
bufferedPositions,
totalBufferedDuration,
new FakeMediaSource(new FakeTimeline(/* windowCount= */ 1)),
new FakeMediaSource(new FakeTimeline(/* windowCount= */ 1)),
new FakeMediaSource(),
new FakeMediaSource(),
createPartiallyBufferedMediaSource(/* maxBufferedPositionMs= */ 4000));
assertThat(windowIndex[0]).isEqualTo(1);
......@@ -4039,7 +4000,7 @@ public final class ExoPlayerTest {
positionMs,
bufferedPositions,
totalBufferedDuration,
new FakeMediaSource(new FakeTimeline(/* windowCount= */ 1)),
new FakeMediaSource(),
createPartiallyBufferedMediaSource(/* maxBufferedPositionMs= */ 4000));
assertThat(windowIndex[0]).isEqualTo(0);
......@@ -4072,8 +4033,8 @@ public final class ExoPlayerTest {
positionMs,
bufferedPositions,
totalBufferedDuration,
new FakeMediaSource(new FakeTimeline(/* windowCount= */ 1)),
new FakeMediaSource(new FakeTimeline(/* windowCount= */ 1)),
new FakeMediaSource(),
new FakeMediaSource(),
createPartiallyBufferedMediaSource(/* maxBufferedPositionMs= */ 4000));
assertThat(windowIndex[0]).isEqualTo(0);
......@@ -4106,8 +4067,8 @@ public final class ExoPlayerTest {
positionMs,
bufferedPositions,
totalBufferedDuration,
new FakeMediaSource(new FakeTimeline(/* windowCount= */ 1)),
new FakeMediaSource(new FakeTimeline(/* windowCount= */ 1)),
new FakeMediaSource(),
new FakeMediaSource(),
createPartiallyBufferedMediaSource(/* maxBufferedPositionMs= */ 4000),
createPartiallyBufferedMediaSource(/* maxBufferedPositionMs= */ 0));
......@@ -4141,7 +4102,7 @@ public final class ExoPlayerTest {
positionMs,
bufferedPositions,
totalBufferedDuration,
new FakeMediaSource(new FakeTimeline(/* windowCount= */ 1)),
new FakeMediaSource(),
createPartiallyBufferedMediaSource(/* maxBufferedPositionMs= */ 4000));
assertThat(windowIndex[0]).isEqualTo(0);
......@@ -4176,8 +4137,8 @@ public final class ExoPlayerTest {
positionMs,
bufferedPositions,
totalBufferedDuration,
new FakeMediaSource(new FakeTimeline(/* windowCount= */ 1)),
new FakeMediaSource(new FakeTimeline(/* windowCount= */ 1)),
new FakeMediaSource(),
new FakeMediaSource(),
createPartiallyBufferedMediaSource(/* maxBufferedPositionMs= */ 4000));
assertThat(windowIndex[0]).isEqualTo(0);
......@@ -4211,8 +4172,8 @@ public final class ExoPlayerTest {
positionMs,
bufferedPositions,
totalBufferedDuration,
new FakeMediaSource(new FakeTimeline(/* windowCount= */ 1)),
new FakeMediaSource(new FakeTimeline(/* windowCount= */ 1)),
new FakeMediaSource(),
new FakeMediaSource(),
createPartiallyBufferedMediaSource(/* maxBufferedPositionMs= */ 4000));
assertThat(windowIndex[0]).isEqualTo(0);
......@@ -4245,8 +4206,8 @@ public final class ExoPlayerTest {
positionMs,
bufferedPositions,
totalBufferedDuration,
new FakeMediaSource(new FakeTimeline(/* windowCount= */ 1)),
new FakeMediaSource(new FakeTimeline(/* windowCount= */ 1)),
new FakeMediaSource(),
new FakeMediaSource(),
createPartiallyBufferedMediaSource(/* maxBufferedPositionMs= */ 4000));
assertThat(windowIndex[0]).isEqualTo(0);
......@@ -4384,9 +4345,7 @@ public final class ExoPlayerTest {
new PlayerRunnable() {
@Override
public void run(SimpleExoPlayer player) {
player.addMediaSource(
/* index= */ 1,
new FakeMediaSource(new FakeTimeline(/* windowCount= */ 1)));
player.addMediaSource(/* index= */ 1, new FakeMediaSource());
windowIndex[0] = player.getCurrentWindowIndex();
isPlayingAd[0] = player.isPlayingAd();
positionMs[0] = player.getCurrentPosition();
......@@ -4412,8 +4371,7 @@ public final class ExoPlayerTest {
new PlayerRunnable() {
@Override
public void run(SimpleExoPlayer player) {
player.addMediaSource(
new FakeMediaSource(new FakeTimeline(/* windowCount= */ 1)));
player.addMediaSource(new FakeMediaSource());
windowIndex[2] = player.getCurrentWindowIndex();
isPlayingAd[2] = player.isPlayingAd();
positionMs[2] = player.getCurrentPosition();
......@@ -4425,8 +4383,7 @@ public final class ExoPlayerTest {
.build();
new ExoPlayerTestRunner.Builder(context)
.setMediaSources(
adsMediaSource, new FakeMediaSource(new FakeTimeline(/* windowCount= */ 1)))
.setMediaSources(adsMediaSource, new FakeMediaSource())
.setActionSchedule(actionSchedule)
.build()
.start()
......@@ -4622,7 +4579,7 @@ public final class ExoPlayerTest {
/* chunkDurationUs= */ 500_000, /* bitratePercentStdDev= */ 10.0);
MediaSource chunkedMediaSource =
new FakeAdaptiveMediaSource(
new FakeTimeline(/* windowCount= */ 1),
new FakeTimeline(),
new TrackGroupArray(new TrackGroup(ExoPlayerTestRunner.VIDEO_FORMAT)),
new FakeChunkSource.Factory(dataSetFactory, new FakeDataSource.Factory()));
......@@ -4663,8 +4620,7 @@ public final class ExoPlayerTest {
}
};
MediaSource mediaSourceWithLoadInProgress =
new FakeMediaSource(
new FakeTimeline(/* windowCount= */ 1), ExoPlayerTestRunner.VIDEO_FORMAT) {
new FakeMediaSource(new FakeTimeline(), ExoPlayerTestRunner.VIDEO_FORMAT) {
@Override
protected FakeMediaPeriod createFakeMediaPeriod(
MediaPeriodId id,
......@@ -4747,7 +4703,7 @@ public final class ExoPlayerTest {
/* chunkDurationUs= */ 500_000, /* bitratePercentStdDev= */ 10.0);
MediaSource chunkedMediaSource =
new FakeAdaptiveMediaSource(
new FakeTimeline(/* windowCount= */ 1),
new FakeTimeline(),
new TrackGroupArray(new TrackGroup(ExoPlayerTestRunner.VIDEO_FORMAT)),
new FakeChunkSource.Factory(dataSetFactory, new FakeDataSource.Factory()));
......@@ -4931,7 +4887,7 @@ public final class ExoPlayerTest {
@Test
public void clearMediaItems() throws Exception {
Timeline timeline = new FakeTimeline(/* windowCount= */ 1);
Timeline timeline = new FakeTimeline();
ActionSchedule actionSchedule =
new ActionSchedule.Builder(TAG)
.waitForTimelineChanged(timeline, Player.TIMELINE_CHANGE_REASON_SOURCE_UPDATE)
......@@ -4959,7 +4915,7 @@ public final class ExoPlayerTest {
@Test
public void multipleModificationWithRecursiveListenerInvocations() throws Exception {
Timeline timeline = new FakeTimeline(/* windowCount= */ 1);
Timeline timeline = new FakeTimeline();
MediaSource mediaSource = new FakeMediaSource(timeline);
Timeline secondTimeline = new FakeTimeline(/* windowCount= */ 2);
MediaSource secondMediaSource = new FakeMediaSource(secondTimeline);
......@@ -4995,10 +4951,6 @@ public final class ExoPlayerTest {
@Test
public void modifyPlaylistUnprepared_remainsInIdle_needsPrepareForBuffering() throws Exception {
Timeline firstTimeline = new FakeTimeline(/* windowCount= */ 1);
MediaSource firstMediaSource = new FakeMediaSource(firstTimeline);
Timeline secondTimeline = new FakeTimeline(/* windowCount= */ 1);
MediaSource secondMediaSource = new FakeMediaSource(secondTimeline);
int[] playbackStates = new int[4];
int[] timelineWindowCounts = new int[4];
int[] maskingPlaybackState = {C.INDEX_UNSET};
......@@ -5015,13 +4967,13 @@ public final class ExoPlayerTest {
new PlayerRunnable() {
@Override
public void run(SimpleExoPlayer player) {
player.setMediaSource(firstMediaSource, /* startPositionMs= */ 1000);
player.setMediaSource(new FakeMediaSource(), /* startPositionMs= */ 1000);
maskingPlaybackState[0] = player.getPlaybackState();
}
})
.executeRunnable(
new PlaybackStateCollector(/* index= */ 2, playbackStates, timelineWindowCounts))
.addMediaSources(secondMediaSource)
.addMediaSources(new FakeMediaSource())
.executeRunnable(
new PlaybackStateCollector(/* index= */ 3, playbackStates, timelineWindowCounts))
.seek(/* windowIndex= */ 1, /* positionMs= */ 2000)
......@@ -5033,7 +4985,7 @@ public final class ExoPlayerTest {
.build();
ExoPlayerTestRunner exoPlayerTestRunner =
new ExoPlayerTestRunner.Builder(context)
.setMediaSources(firstMediaSource)
.setMediaSources(new FakeMediaSource())
.setActionSchedule(actionSchedule)
.build()
.start(/* doPrepare= */ false)
......@@ -5083,7 +5035,7 @@ public final class ExoPlayerTest {
@Test
public void modifyPlaylistPrepared_remainsInEnded_needsSeekForBuffering() throws Exception {
Timeline timeline = new FakeTimeline(/* windowCount= */ 1);
Timeline timeline = new FakeTimeline();
FakeMediaSource secondMediaSource = new FakeMediaSource(timeline);
ActionSchedule actionSchedule =
new ActionSchedule.Builder(TAG)
......@@ -5142,7 +5094,7 @@ public final class ExoPlayerTest {
@Test
public void stopWithNoReset_modifyingPlaylistRemainsInIdleState_needsPrepareForBuffering()
throws Exception {
Timeline timeline = new FakeTimeline(/* windowCount= */ 1);
Timeline timeline = new FakeTimeline();
FakeMediaSource secondMediaSource = new FakeMediaSource(timeline);
int[] playbackStateHolder = new int[3];
int[] windowCountHolder = new int[3];
......@@ -5225,7 +5177,7 @@ public final class ExoPlayerTest {
@Test
public void prepareWhenAlreadyPreparedIsANoop() throws Exception {
Timeline timeline = new FakeTimeline(/* windowCount= */ 1);
Timeline timeline = new FakeTimeline();
ActionSchedule actionSchedule =
new ActionSchedule.Builder(TAG).waitForPlaybackState(Player.STATE_READY).prepare().build();
ExoPlayerTestRunner exoPlayerTestRunner =
......@@ -5568,8 +5520,6 @@ public final class ExoPlayerTest {
@Test
public void setMediaSources_empty_whenEmpty_correctMaskingWindowIndex() throws Exception {
Timeline secondTimeline = new FakeTimeline(/* windowCount= */ 1);
MediaSource secondMediaSource = new FakeMediaSource(secondTimeline);
final int[] currentWindowIndices = {C.INDEX_UNSET, C.INDEX_UNSET, C.INDEX_UNSET};
ActionSchedule actionSchedule =
new ActionSchedule.Builder(TAG)
......@@ -5578,9 +5528,8 @@ public final class ExoPlayerTest {
@Override
public void run(SimpleExoPlayer player) {
currentWindowIndices[0] = player.getCurrentWindowIndex();
List<MediaSource> listOfTwo = new ArrayList<>();
listOfTwo.add(secondMediaSource);
listOfTwo.add(secondMediaSource);
List<MediaSource> listOfTwo =
ImmutableList.of(new FakeMediaSource(), new FakeMediaSource());
player.addMediaSources(/* index= */ 0, listOfTwo);
currentWindowIndices[1] = player.getCurrentWindowIndex();
}
......@@ -5620,7 +5569,7 @@ public final class ExoPlayerTest {
currentWindowIndices[0] = player.getCurrentWindowIndex();
currentPositions[0] = player.getCurrentPosition();
List<MediaItem> listOfTwo =
Lists.newArrayList(
ImmutableList.of(
MediaItem.fromUri(Uri.EMPTY), MediaItem.fromUri(Uri.EMPTY));
player.setMediaItems(listOfTwo, /* resetPosition= */ true);
currentWindowIndices[1] = player.getCurrentWindowIndex();
......@@ -5644,8 +5593,6 @@ public final class ExoPlayerTest {
@Test
public void setMediaSources_empty_whenEmpty_validInitialSeek_correctMaskingWindowIndex()
throws Exception {
Timeline secondTimeline = new FakeTimeline(/* windowCount= */ 1);
MediaSource secondMediaSource = new FakeMediaSource(secondTimeline);
final int[] currentWindowIndices = {C.INDEX_UNSET, C.INDEX_UNSET, C.INDEX_UNSET};
ActionSchedule actionSchedule =
new ActionSchedule.Builder(TAG)
......@@ -5657,9 +5604,8 @@ public final class ExoPlayerTest {
@Override
public void run(SimpleExoPlayer player) {
currentWindowIndices[0] = player.getCurrentWindowIndex();
List<MediaSource> listOfTwo = new ArrayList<>();
listOfTwo.add(secondMediaSource);
listOfTwo.add(secondMediaSource);
List<MediaSource> listOfTwo =
ImmutableList.of(new FakeMediaSource(), new FakeMediaSource());
player.addMediaSources(/* index= */ 0, listOfTwo);
currentWindowIndices[1] = player.getCurrentWindowIndex();
}
......@@ -5688,8 +5634,6 @@ public final class ExoPlayerTest {
@Test
public void setMediaSources_empty_whenEmpty_invalidInitialSeek_correctMaskingWindowIndex()
throws Exception {
Timeline secondTimeline = new FakeTimeline(/* windowCount= */ 1);
MediaSource secondMediaSource = new FakeMediaSource(secondTimeline);
final int[] currentWindowIndices = {C.INDEX_UNSET, C.INDEX_UNSET, C.INDEX_UNSET};
ActionSchedule actionSchedule =
new ActionSchedule.Builder(TAG)
......@@ -5701,9 +5645,8 @@ public final class ExoPlayerTest {
@Override
public void run(SimpleExoPlayer player) {
currentWindowIndices[0] = player.getCurrentWindowIndex();
List<MediaSource> listOfTwo = new ArrayList<>();
listOfTwo.add(secondMediaSource);
listOfTwo.add(secondMediaSource);
List<MediaSource> listOfTwo =
ImmutableList.of(new FakeMediaSource(), new FakeMediaSource());
player.addMediaSources(/* index= */ 0, listOfTwo);
currentWindowIndices[1] = player.getCurrentWindowIndex();
}
......@@ -5731,10 +5674,6 @@ public final class ExoPlayerTest {
@Test
public void setMediaSources_whenEmpty_correctMaskingWindowIndex() throws Exception {
Timeline firstTimeline = new FakeTimeline(/* windowCount= */ 1);
MediaSource firstMediaSource = new FakeMediaSource(firstTimeline);
Timeline secondTimeline = new FakeTimeline(/* windowCount= */ 1);
MediaSource secondMediaSource = new FakeMediaSource(secondTimeline);
final int[] currentWindowIndices = {C.INDEX_UNSET, C.INDEX_UNSET, C.INDEX_UNSET, C.INDEX_UNSET};
ActionSchedule actionSchedule =
new ActionSchedule.Builder(TAG)
......@@ -5744,7 +5683,7 @@ public final class ExoPlayerTest {
@Override
public void run(SimpleExoPlayer player) {
// Increase current window index.
player.addMediaSource(/* index= */ 0, secondMediaSource);
player.addMediaSource(/* index= */ 0, new FakeMediaSource());
currentWindowIndices[0] = player.getCurrentWindowIndex();
}
})
......@@ -5753,7 +5692,7 @@ public final class ExoPlayerTest {
@Override
public void run(SimpleExoPlayer player) {
// Current window index is unchanged.
player.addMediaSource(/* index= */ 2, secondMediaSource);
player.addMediaSource(/* index= */ 2, new FakeMediaSource());
currentWindowIndices[1] = player.getCurrentWindowIndex();
}
})
......@@ -5761,8 +5700,7 @@ public final class ExoPlayerTest {
new PlayerRunnable() {
@Override
public void run(SimpleExoPlayer player) {
MediaSource mediaSource =
new FakeMediaSource(new FakeTimeline(/* windowCount= */ 1));
MediaSource mediaSource = new FakeMediaSource();
ConcatenatingMediaSource concatenatingMediaSource =
new ConcatenatingMediaSource(mediaSource, mediaSource, mediaSource);
// Increase current window with multi window source.
......@@ -5783,7 +5721,7 @@ public final class ExoPlayerTest {
})
.build();
new ExoPlayerTestRunner.Builder(context)
.setMediaSources(firstMediaSource)
.setMediaSources(new FakeMediaSource())
.setActionSchedule(actionSchedule)
.build()
.start()
......@@ -5847,10 +5785,6 @@ public final class ExoPlayerTest {
@Test
public void setMediaSources_whenEmpty_invalidInitialSeek_correctMasking() throws Exception {
Timeline firstTimeline = new FakeTimeline(/* windowCount= */ 1);
MediaSource firstMediaSource = new FakeMediaSource(firstTimeline);
Timeline secondTimeline = new FakeTimeline(/* windowCount= */ 1, new Object());
MediaSource secondMediaSource = new FakeMediaSource(secondTimeline);
final int[] currentWindowIndices = {C.INDEX_UNSET, C.INDEX_UNSET, C.INDEX_UNSET};
final long[] currentPositions = {C.TIME_UNSET, C.TIME_UNSET, C.TIME_UNSET};
final long[] bufferedPositions = {C.TIME_UNSET, C.TIME_UNSET, C.TIME_UNSET};
......@@ -5867,7 +5801,7 @@ public final class ExoPlayerTest {
currentPositions[0] = player.getCurrentPosition();
bufferedPositions[0] = player.getBufferedPosition();
// Increase current window index.
player.addMediaSource(/* index= */ 0, secondMediaSource);
player.addMediaSource(/* index= */ 0, new FakeMediaSource());
currentWindowIndices[1] = player.getCurrentWindowIndex();
currentPositions[1] = player.getCurrentPosition();
bufferedPositions[1] = player.getBufferedPosition();
......@@ -5888,7 +5822,7 @@ public final class ExoPlayerTest {
.build();
new ExoPlayerTestRunner.Builder(context)
.initialSeek(/* windowIndex= */ 1, 2000)
.setMediaSources(firstMediaSource)
.setMediaSources(new FakeMediaSource())
.setActionSchedule(actionSchedule)
.build()
.start(/* doPrepare= */ false)
......@@ -5901,10 +5835,6 @@ public final class ExoPlayerTest {
@Test
public void setMediaSources_correctMaskingWindowIndex() throws Exception {
Timeline firstTimeline = new FakeTimeline(/* windowCount= */ 1);
MediaSource firstMediaSource = new FakeMediaSource(firstTimeline);
Timeline secondTimeline = new FakeTimeline(/* windowCount= */ 1, new Object());
MediaSource secondMediaSource = new FakeMediaSource(secondTimeline);
final int[] currentWindowIndices = {C.INDEX_UNSET, C.INDEX_UNSET, C.INDEX_UNSET};
ActionSchedule actionSchedule =
new ActionSchedule.Builder(TAG)
......@@ -5915,7 +5845,7 @@ public final class ExoPlayerTest {
public void run(SimpleExoPlayer player) {
currentWindowIndices[0] = player.getCurrentWindowIndex();
// Increase current window index.
player.addMediaSource(/* index= */ 0, secondMediaSource);
player.addMediaSource(/* index= */ 0, new FakeMediaSource());
currentWindowIndices[1] = player.getCurrentWindowIndex();
}
})
......@@ -5929,7 +5859,7 @@ public final class ExoPlayerTest {
})
.build();
new ExoPlayerTestRunner.Builder(context)
.setMediaSources(firstMediaSource)
.setMediaSources(new FakeMediaSource())
.setActionSchedule(actionSchedule)
.build()
.start()
......@@ -5940,10 +5870,6 @@ public final class ExoPlayerTest {
@Test
public void setMediaSources_whenIdle_correctMaskingPlaybackState() throws Exception {
Timeline firstTimeline = new FakeTimeline(/* windowCount= */ 1, 1L);
MediaSource firstMediaSource = new FakeMediaSource(firstTimeline);
Timeline secondTimeline = new FakeTimeline(/* windowCount= */ 1, 2L);
MediaSource secondMediaSource = new FakeMediaSource(secondTimeline);
final int[] maskingPlaybackStates = new int[4];
Arrays.fill(maskingPlaybackStates, C.INDEX_UNSET);
ActionSchedule actionSchedule =
......@@ -5962,7 +5888,7 @@ public final class ExoPlayerTest {
@Override
public void run(SimpleExoPlayer player) {
// Set media item with an implicit seek to the current position.
player.setMediaSource(firstMediaSource);
player.setMediaSource(new FakeMediaSource());
maskingPlaybackStates[1] = player.getPlaybackState();
}
})
......@@ -5971,7 +5897,8 @@ public final class ExoPlayerTest {
@Override
public void run(SimpleExoPlayer player) {
// Set media item with an explicit seek.
player.setMediaSource(secondMediaSource, /* startPositionMs= */ C.TIME_UNSET);
player.setMediaSource(
new FakeMediaSource(), /* startPositionMs= */ C.TIME_UNSET);
maskingPlaybackStates[2] = player.getPlaybackState();
}
})
......@@ -6058,8 +5985,7 @@ public final class ExoPlayerTest {
@Override
public void run(SimpleExoPlayer player) {
// Set media item with no seek.
player.setMediaSource(
new FakeMediaSource(new FakeTimeline(/* windowCount= */ 1)));
player.setMediaSource(new FakeMediaSource());
maskingPlaybackStates[0] = player.getPlaybackState();
}
})
......@@ -6098,7 +6024,7 @@ public final class ExoPlayerTest {
maskingPlaybackStates[0] = player.getPlaybackState();
}
})
.setMediaSources(new FakeMediaSource(new FakeTimeline(/* windowCount= */ 1)))
.setMediaSources(new FakeMediaSource())
.prepare()
.waitForPlaybackState(Player.STATE_READY)
.build();
......@@ -6256,9 +6182,7 @@ public final class ExoPlayerTest {
@Override
public void run(SimpleExoPlayer player) {
// Set media item with no seek (keep current position).
player.setMediaSource(
new FakeMediaSource(new FakeTimeline(/* windowCount= */ 1)),
/* resetPosition= */ false);
player.setMediaSource(new FakeMediaSource(), /* resetPosition= */ false);
maskingPlaybackStates[0] = player.getPlaybackState();
}
})
......@@ -6499,9 +6423,7 @@ public final class ExoPlayerTest {
new PlayerRunnable() {
@Override
public void run(SimpleExoPlayer player) {
player.addMediaSource(
/* index= */ 0,
new FakeMediaSource(new FakeTimeline(/* windowCount= */ 1)));
player.addMediaSource(/* index= */ 0, new FakeMediaSource());
positions[0] = player.getCurrentPosition();
positions[1] = player.getBufferedPosition();
}
......@@ -6547,9 +6469,7 @@ public final class ExoPlayerTest {
/* index= */ 0,
new FakeMediaSource(new FakeTimeline(/* windowCount= */ 2)));
currentWindowIndices[2] = player.getCurrentWindowIndex();
player.addMediaSource(
/* index= */ 0,
new FakeMediaSource(new FakeTimeline(/* windowCount= */ 1)));
player.addMediaSource(/* index= */ 0, new FakeMediaSource());
currentWindowIndices[3] = player.getCurrentWindowIndex();
// With a non-empty timeline, we mask the periodId in the playback info.
currentPositions[1] = player.getCurrentPosition();
......@@ -6590,8 +6510,6 @@ public final class ExoPlayerTest {
public void
testAddMediaSources_skipSettingMediaItems_invalidInitialSeek_correctMaskingWindowIndex()
throws Exception {
Timeline secondTimeline = new FakeTimeline(/* windowCount= */ 1);
MediaSource secondMediaSource = new FakeMediaSource(secondTimeline);
final int[] currentWindowIndices = {C.INDEX_UNSET, C.INDEX_UNSET, C.INDEX_UNSET};
ActionSchedule actionSchedule =
new ActionSchedule.Builder(TAG)
......@@ -6603,7 +6521,7 @@ public final class ExoPlayerTest {
@Override
public void run(SimpleExoPlayer player) {
currentWindowIndices[0] = player.getCurrentWindowIndex();
player.addMediaSource(secondMediaSource);
player.addMediaSource(new FakeMediaSource());
currentWindowIndices[1] = player.getCurrentWindowIndex();
}
})
......@@ -6630,7 +6548,7 @@ public final class ExoPlayerTest {
@Test
public void moveMediaItems_correctMaskingWindowIndex() throws Exception {
Timeline timeline = new FakeTimeline(/* windowCount= */ 1);
Timeline timeline = new FakeTimeline();
MediaSource firstMediaSource = new FakeMediaSource(timeline);
MediaSource secondMediaSource = new FakeMediaSource(timeline);
MediaSource thirdMediaSource = new FakeMediaSource(timeline);
......@@ -6711,10 +6629,6 @@ public final class ExoPlayerTest {
@Test
public void moveMediaItems_unprepared_correctMaskingWindowIndex() throws Exception {
Timeline firstTimeline = new FakeTimeline(/* windowCount= */ 1);
MediaSource firstMediaSource = new FakeMediaSource(firstTimeline);
Timeline secondTimeline = new FakeTimeline(/* windowCount= */ 1);
MediaSource secondMediaSource = new FakeMediaSource(secondTimeline);
final int[] currentWindowIndices = {C.INDEX_UNSET, C.INDEX_UNSET, C.INDEX_UNSET};
ActionSchedule actionSchedule =
new ActionSchedule.Builder(TAG)
......@@ -6740,7 +6654,7 @@ public final class ExoPlayerTest {
})
.build();
new ExoPlayerTestRunner.Builder(context)
.setMediaSources(firstMediaSource, secondMediaSource)
.setMediaSources(new FakeMediaSource(), new FakeMediaSource())
.setActionSchedule(actionSchedule)
.build()
.start(/* doPrepare= */ false)
......@@ -6751,10 +6665,6 @@ public final class ExoPlayerTest {
@Test
public void removeMediaItems_correctMaskingWindowIndex() throws Exception {
Timeline firstTimeline = new FakeTimeline(/* windowCount= */ 1);
MediaSource firstMediaSource = new FakeMediaSource(firstTimeline);
Timeline secondTimeline = new FakeTimeline(/* windowCount= */ 1);
MediaSource secondMediaSource = new FakeMediaSource(secondTimeline);
final int[] currentWindowIndices = {C.INDEX_UNSET, C.INDEX_UNSET};
ActionSchedule actionSchedule =
new ActionSchedule.Builder(TAG)
......@@ -6772,7 +6682,7 @@ public final class ExoPlayerTest {
.build();
new ExoPlayerTestRunner.Builder(context)
.initialSeek(/* windowIndex= */ 1, /* positionMs= */ C.TIME_UNSET)
.setMediaSources(firstMediaSource, secondMediaSource)
.setMediaSources(new FakeMediaSource(), new FakeMediaSource())
.setActionSchedule(actionSchedule)
.build()
.start()
......@@ -6783,10 +6693,6 @@ public final class ExoPlayerTest {
@Test
public void removeMediaItems_currentItemRemoved_correctMasking() throws Exception {
Timeline firstTimeline = new FakeTimeline(/* windowCount= */ 1);
MediaSource firstMediaSource = new FakeMediaSource(firstTimeline);
Timeline secondTimeline = new FakeTimeline(/* windowCount= */ 1);
MediaSource secondMediaSource = new FakeMediaSource(secondTimeline);
final int[] currentWindowIndices = {C.INDEX_UNSET, C.INDEX_UNSET};
final long[] currentPositions = {C.TIME_UNSET, C.TIME_UNSET};
final long[] bufferedPositions = {C.TIME_UNSET, C.TIME_UNSET};
......@@ -6810,7 +6716,7 @@ public final class ExoPlayerTest {
.build();
new ExoPlayerTestRunner.Builder(context)
.initialSeek(/* windowIndex= */ 1, /* positionMs= */ 5000)
.setMediaSources(firstMediaSource, secondMediaSource, firstMediaSource)
.setMediaSources(new FakeMediaSource(), new FakeMediaSource(), new FakeMediaSource())
.setActionSchedule(actionSchedule)
.build()
.start()
......@@ -6957,10 +6863,6 @@ public final class ExoPlayerTest {
@Test
public void removeMediaItems_removeTailWithCurrentWindow_whenIdle_finishesPlayback()
throws Exception {
Timeline firstTimeline = new FakeTimeline(/* windowCount= */ 1);
MediaSource firstMediaSource = new FakeMediaSource(firstTimeline);
Timeline secondTimeline = new FakeTimeline(/* windowCount= */ 1, new Object());
MediaSource secondMediaSource = new FakeMediaSource(secondTimeline);
ActionSchedule actionSchedule =
new ActionSchedule.Builder(TAG)
.seek(/* windowIndex= */ 1, /* positionMs= */ C.TIME_UNSET)
......@@ -6971,7 +6873,7 @@ public final class ExoPlayerTest {
.build();
ExoPlayerTestRunner exoPlayerTestRunner =
new ExoPlayerTestRunner.Builder(context)
.setMediaSources(firstMediaSource, secondMediaSource)
.setMediaSources(new FakeMediaSource(), new FakeMediaSource())
.setActionSchedule(actionSchedule)
.build()
.start(/* doPrepare= */ false)
......@@ -6983,10 +6885,6 @@ public final class ExoPlayerTest {
@Test
public void clearMediaItems_correctMasking() throws Exception {
Timeline firstTimeline = new FakeTimeline(/* windowCount= */ 1);
MediaSource firstMediaSource = new FakeMediaSource(firstTimeline);
Timeline secondTimeline = new FakeTimeline(/* windowCount= */ 1);
MediaSource secondMediaSource = new FakeMediaSource(secondTimeline);
final int[] currentWindowIndices = {C.INDEX_UNSET, C.INDEX_UNSET};
final int[] maskingPlaybackState = {C.INDEX_UNSET};
final long[] currentPosition = {C.TIME_UNSET, C.TIME_UNSET};
......@@ -7013,7 +6911,7 @@ public final class ExoPlayerTest {
.build();
new ExoPlayerTestRunner.Builder(context)
.initialSeek(/* windowIndex= */ 1, /* positionMs= */ C.TIME_UNSET)
.setMediaSources(firstMediaSource, secondMediaSource)
.setMediaSources(new FakeMediaSource(), new FakeMediaSource())
.setActionSchedule(actionSchedule)
.build()
.start()
......@@ -7030,10 +6928,6 @@ public final class ExoPlayerTest {
@Test
public void clearMediaItems_unprepared_correctMaskingWindowIndex_notEnded() throws Exception {
Timeline firstTimeline = new FakeTimeline(/* windowCount= */ 1);
MediaSource firstMediaSource = new FakeMediaSource(firstTimeline);
Timeline secondTimeline = new FakeTimeline(/* windowCount= */ 1);
MediaSource secondMediaSource = new FakeMediaSource(secondTimeline);
final int[] currentWindowIndices = {C.INDEX_UNSET, C.INDEX_UNSET};
final int[] currentStates = {C.INDEX_UNSET, C.INDEX_UNSET, C.INDEX_UNSET};
ActionSchedule actionSchedule =
......@@ -7064,7 +6958,7 @@ public final class ExoPlayerTest {
.build();
new ExoPlayerTestRunner.Builder(context)
.initialSeek(/* windowIndex= */ 1, /* positionMs= */ C.TIME_UNSET)
.setMediaSources(firstMediaSource, secondMediaSource)
.setMediaSources(new FakeMediaSource(), new FakeMediaSource())
.setActionSchedule(actionSchedule)
.build()
.start(/* doPrepare= */ false)
......@@ -7079,12 +6973,9 @@ public final class ExoPlayerTest {
public void errorThrownDuringPlaylistUpdate_keepsConsistentPlayerState() {
FakeMediaSource source1 =
new FakeMediaSource(
new FakeTimeline(/* windowCount= */ 1),
ExoPlayerTestRunner.VIDEO_FORMAT,
ExoPlayerTestRunner.AUDIO_FORMAT);
new FakeTimeline(), ExoPlayerTestRunner.VIDEO_FORMAT, ExoPlayerTestRunner.AUDIO_FORMAT);
FakeMediaSource source2 =
new FakeMediaSource(
new FakeTimeline(/* windowCount= */ 1), ExoPlayerTestRunner.AUDIO_FORMAT);
new FakeMediaSource(new FakeTimeline(), ExoPlayerTestRunner.AUDIO_FORMAT);
AtomicInteger audioRendererEnableCount = new AtomicInteger(0);
FakeRenderer videoRenderer = new FakeRenderer(C.TRACK_TYPE_VIDEO);
FakeRenderer audioRenderer =
......@@ -7280,8 +7171,7 @@ public final class ExoPlayerTest {
// Return no end of stream signal to prevent playback from ending.
FakeMediaPeriod.TrackDataFactory trackDataWithoutEos = (format, periodId) -> ImmutableList.of();
MediaSource continuouslyAllocatingMediaSource =
new FakeMediaSource(
new FakeTimeline(/* windowCount= */ 1), ExoPlayerTestRunner.VIDEO_FORMAT) {
new FakeMediaSource(new FakeTimeline(), ExoPlayerTestRunner.VIDEO_FORMAT) {
@Override
protected FakeMediaPeriod createFakeMediaPeriod(
MediaPeriodId id,
......@@ -7358,8 +7248,7 @@ public final class ExoPlayerTest {
public void cancelLoad() {}
};
MediaSource largeBufferAllocatingMediaSource =
new FakeMediaSource(
new FakeTimeline(/* windowCount= */ 1), ExoPlayerTestRunner.VIDEO_FORMAT) {
new FakeMediaSource(new FakeTimeline(), ExoPlayerTestRunner.VIDEO_FORMAT) {
@Override
protected FakeMediaPeriod createFakeMediaPeriod(
MediaPeriodId id,
......@@ -7995,7 +7884,7 @@ public final class ExoPlayerTest {
mediaSourceMaybeThrowSourceInfoRefreshError_isNotThrownUntilPlaybackReachedFailingItem()
throws Exception {
ExoPlayer player = new TestExoPlayerBuilder(context).build();
player.addMediaSource(new FakeMediaSource(new FakeTimeline(/* windowCount= */ 1)));
player.addMediaSource(new FakeMediaSource());
player.addMediaSource(
new FakeMediaSource(/* timeline= */ null) {
@Override
......@@ -8021,7 +7910,7 @@ public final class ExoPlayerTest {
public void mediaPeriodMaybeThrowPrepareError_isNotThrownUntilPlaybackReachedFailingItem()
throws Exception {
ExoPlayer player = new TestExoPlayerBuilder(context).build();
Timeline timeline = new FakeTimeline(/* windowCount= */ 1);
Timeline timeline = new FakeTimeline();
player.addMediaSource(new FakeMediaSource(timeline, ExoPlayerTestRunner.VIDEO_FORMAT));
player.addMediaSource(
new FakeMediaSource(timeline, ExoPlayerTestRunner.VIDEO_FORMAT) {
......@@ -8066,7 +7955,7 @@ public final class ExoPlayerTest {
public void sampleStreamMaybeThrowError_isNotThrownUntilPlaybackReachedFailingItem()
throws Exception {
ExoPlayer player = new TestExoPlayerBuilder(context).build();
Timeline timeline = new FakeTimeline(/* windowCount= */ 1);
Timeline timeline = new FakeTimeline();
player.addMediaSource(new FakeMediaSource(timeline, ExoPlayerTestRunner.VIDEO_FORMAT));
player.addMediaSource(
new FakeMediaSource(timeline, ExoPlayerTestRunner.VIDEO_FORMAT) {
......@@ -8120,11 +8009,9 @@ public final class ExoPlayerTest {
@Test
public void rendererError_isReportedWithReadingMediaPeriodId() throws Exception {
FakeMediaSource source0 =
new FakeMediaSource(
new FakeTimeline(/* windowCount= */ 1), ExoPlayerTestRunner.VIDEO_FORMAT);
new FakeMediaSource(new FakeTimeline(), ExoPlayerTestRunner.VIDEO_FORMAT);
FakeMediaSource source1 =
new FakeMediaSource(
new FakeTimeline(/* windowCount= */ 1), ExoPlayerTestRunner.AUDIO_FORMAT);
new FakeMediaSource(new FakeTimeline(), ExoPlayerTestRunner.AUDIO_FORMAT);
RenderersFactory renderersFactory =
(eventHandler, videoListener, audioListener, textOutput, metadataOutput) ->
new Renderer[] {
......@@ -8173,7 +8060,7 @@ public final class ExoPlayerTest {
public void enableOffloadSchedulingWhilePlaying_isToggled_isReported() throws Exception {
FakeSleepRenderer sleepRenderer = new FakeSleepRenderer(C.TRACK_TYPE_AUDIO).sleepOnNextRender();
SimpleExoPlayer player = new TestExoPlayerBuilder(context).setRenderers(sleepRenderer).build();
Timeline timeline = new FakeTimeline(/* windowCount= */ 1);
Timeline timeline = new FakeTimeline();
player.setMediaSource(new FakeMediaSource(timeline, ExoPlayerTestRunner.AUDIO_FORMAT));
player.prepare();
player.play();
......@@ -8190,7 +8077,7 @@ public final class ExoPlayerTest {
throws Exception {
FakeSleepRenderer sleepRenderer = new FakeSleepRenderer(C.TRACK_TYPE_AUDIO).sleepOnNextRender();
SimpleExoPlayer player = new TestExoPlayerBuilder(context).setRenderers(sleepRenderer).build();
Timeline timeline = new FakeTimeline(/* windowCount= */ 1);
Timeline timeline = new FakeTimeline();
player.setMediaSource(new FakeMediaSource(timeline, ExoPlayerTestRunner.AUDIO_FORMAT));
player.experimentalSetOffloadSchedulingEnabled(true);
player.prepare();
......@@ -8205,7 +8092,7 @@ public final class ExoPlayerTest {
public void enableOffloadScheduling_isEnable_playerSleeps() throws Exception {
FakeSleepRenderer sleepRenderer = new FakeSleepRenderer(C.TRACK_TYPE_AUDIO);
SimpleExoPlayer player = new TestExoPlayerBuilder(context).setRenderers(sleepRenderer).build();
Timeline timeline = new FakeTimeline(/* windowCount= */ 1);
Timeline timeline = new FakeTimeline();
player.setMediaSource(new FakeMediaSource(timeline, ExoPlayerTestRunner.AUDIO_FORMAT));
player.experimentalSetOffloadSchedulingEnabled(true);
player.prepare();
......@@ -8223,7 +8110,7 @@ public final class ExoPlayerTest {
throws Exception {
FakeSleepRenderer sleepRenderer = new FakeSleepRenderer(C.TRACK_TYPE_AUDIO).sleepOnNextRender();
SimpleExoPlayer player = new TestExoPlayerBuilder(context).setRenderers(sleepRenderer).build();
Timeline timeline = new FakeTimeline(/* windowCount= */ 1);
Timeline timeline = new FakeTimeline();
player.setMediaSource(new FakeMediaSource(timeline, ExoPlayerTestRunner.AUDIO_FORMAT));
player.experimentalSetOffloadSchedulingEnabled(true);
player.prepare();
......@@ -8241,7 +8128,7 @@ public final class ExoPlayerTest {
public void wakeupListenerWhileSleepingForOffload_isWokenUp_renderingResumes() throws Exception {
FakeSleepRenderer sleepRenderer = new FakeSleepRenderer(C.TRACK_TYPE_AUDIO).sleepOnNextRender();
SimpleExoPlayer player = new TestExoPlayerBuilder(context).setRenderers(sleepRenderer).build();
Timeline timeline = new FakeTimeline(/* windowCount= */ 1);
Timeline timeline = new FakeTimeline();
player.setMediaSource(new FakeMediaSource(timeline, ExoPlayerTestRunner.AUDIO_FORMAT));
player.experimentalSetOffloadSchedulingEnabled(true);
player.prepare();
......@@ -8561,6 +8448,7 @@ public final class ExoPlayerTest {
new TestExoPlayerBuilder(context)
.setClock(new AutoAdvancingFakeClock(/* initialTimeMs= */ nowUnixTimeMs))
.build();
Timeline nonLiveTimeline = new FakeTimeline();
Timeline liveTimeline =
new FakeTimeline(
new TimelineWindowDefinition(
......@@ -8576,7 +8464,7 @@ public final class ExoPlayerTest {
AdPlaybackState.NONE,
new MediaItem.Builder().setUri(Uri.EMPTY).setLiveTargetOffsetMs(9_000).build()));
player.pause();
player.addMediaSource(new FakeMediaSource(new FakeTimeline(/* windowCount= */ 1)));
player.addMediaSource(new FakeMediaSource(nonLiveTimeline));
player.addMediaSource(new FakeMediaSource(liveTimeline));
player.prepare();
TestPlayerRunHelper.runUntilPlaybackState(player, Player.STATE_READY);
......@@ -8755,8 +8643,7 @@ public final class ExoPlayerTest {
.build();
// Set multiple values together.
player.setMediaSource(
new FakeMediaSource(new FakeTimeline(/* windowCount= */ 1), formatWithStaticMetadata));
player.setMediaSource(new FakeMediaSource(new FakeTimeline(), formatWithStaticMetadata));
player.seekTo(2_000);
player.setPlaybackParameters(new PlaybackParameters(/* speed= */ 2.0f));
ShadowLooper.runMainLooperToNextTask();
......
......@@ -30,7 +30,6 @@ import com.google.android.exoplayer2.source.MediaSource;
import com.google.android.exoplayer2.source.ShuffleOrder;
import com.google.android.exoplayer2.testutil.FakeMediaSource;
import com.google.android.exoplayer2.testutil.FakeShuffleOrder;
import com.google.android.exoplayer2.testutil.FakeTimeline;
import com.google.android.exoplayer2.util.Util;
import java.util.ArrayList;
import java.util.Collections;
......@@ -528,11 +527,11 @@ public class MediaSourceListTest {
}
private static List<MediaSourceList.MediaSourceHolder> createFakeHolders() {
MediaSource fakeMediaSource = new FakeMediaSource(new FakeTimeline(1));
List<MediaSourceList.MediaSourceHolder> holders = new ArrayList<>();
for (int i = 0; i < MEDIA_SOURCE_LIST_SIZE; i++) {
holders.add(
new MediaSourceList.MediaSourceHolder(fakeMediaSource, /* useLazyPreparation= */ true));
new MediaSourceList.MediaSourceHolder(
new FakeMediaSource(), /* useLazyPreparation= */ true));
}
return holders;
}
......
......@@ -160,7 +160,7 @@ public final class AnalyticsCollectorTest {
ExoPlayerTestRunner.VIDEO_FORMAT.buildUpon().setDrmInitData(DRM_DATA_1).build();
private static final int TIMEOUT_MS = 10_000;
private static final Timeline SINGLE_PERIOD_TIMELINE = new FakeTimeline(/* windowCount= */ 1);
private static final Timeline SINGLE_PERIOD_TIMELINE = new FakeTimeline();
private static final EventWindowAndPeriodId WINDOW_0 =
new EventWindowAndPeriodId(/* windowIndex= */ 0, /* mediaPeriodId= */ null);
private static final EventWindowAndPeriodId WINDOW_1 =
......@@ -1520,11 +1520,9 @@ public final class AnalyticsCollectorTest {
public void onPlayerError_thrownDuringRendererEnableAtPeriodTransition_isReportedForNewPeriod()
throws Exception {
FakeMediaSource source0 =
new FakeMediaSource(
new FakeTimeline(/* windowCount= */ 1), ExoPlayerTestRunner.VIDEO_FORMAT);
new FakeMediaSource(new FakeTimeline(), ExoPlayerTestRunner.VIDEO_FORMAT);
FakeMediaSource source1 =
new FakeMediaSource(
new FakeTimeline(/* windowCount= */ 1), ExoPlayerTestRunner.AUDIO_FORMAT);
new FakeMediaSource(new FakeTimeline(), ExoPlayerTestRunner.AUDIO_FORMAT);
RenderersFactory renderersFactory =
(eventHandler, videoListener, audioListener, textOutput, metadataOutput) ->
new Renderer[] {
......@@ -1554,11 +1552,9 @@ public final class AnalyticsCollectorTest {
public void onPlayerError_thrownDuringRenderAtPeriodTransition_isReportedForNewPeriod()
throws Exception {
FakeMediaSource source0 =
new FakeMediaSource(
new FakeTimeline(/* windowCount= */ 1), ExoPlayerTestRunner.VIDEO_FORMAT);
new FakeMediaSource(new FakeTimeline(), ExoPlayerTestRunner.VIDEO_FORMAT);
FakeMediaSource source1 =
new FakeMediaSource(
new FakeTimeline(/* windowCount= */ 1), ExoPlayerTestRunner.AUDIO_FORMAT);
new FakeMediaSource(new FakeTimeline(), ExoPlayerTestRunner.AUDIO_FORMAT);
RenderersFactory renderersFactory =
(eventHandler, videoListener, audioListener, textOutput, metadataOutput) ->
new Renderer[] {
......@@ -1589,8 +1585,7 @@ public final class AnalyticsCollectorTest {
onPlayerError_thrownDuringRendererReplaceStreamAtPeriodTransition_isReportedForNewPeriod()
throws Exception {
FakeMediaSource source =
new FakeMediaSource(
new FakeTimeline(/* windowCount= */ 1), ExoPlayerTestRunner.AUDIO_FORMAT);
new FakeMediaSource(new FakeTimeline(), ExoPlayerTestRunner.AUDIO_FORMAT);
RenderersFactory renderersFactory =
(eventHandler, videoListener, audioListener, textOutput, metadataOutput) ->
new Renderer[] {
......@@ -1634,7 +1629,7 @@ public final class AnalyticsCollectorTest {
player.addAnalyticsListener(listener);
// Trigger some simultaneous events.
player.setMediaSource(new FakeMediaSource(new FakeTimeline(/* windowCount= */ 1), formats));
player.setMediaSource(new FakeMediaSource(new FakeTimeline(), formats));
player.seekTo(2_000);
player.setPlaybackParameters(new PlaybackParameters(/* speed= */ 2.0f));
ShadowLooper.runMainLooperToNextTask();
......@@ -1642,7 +1637,7 @@ public final class AnalyticsCollectorTest {
// Move to another item and fail with a third one to trigger events with different EventTimes.
player.prepare();
TestPlayerRunHelper.runUntilPlaybackState(player, Player.STATE_READY);
player.addMediaSource(new FakeMediaSource(new FakeTimeline(/* windowCount= */ 1), formats));
player.addMediaSource(new FakeMediaSource(new FakeTimeline(), formats));
player.play();
TestPlayerRunHelper.runUntilPositionDiscontinuity(
player, Player.DISCONTINUITY_REASON_PERIOD_TRANSITION);
......
......@@ -61,7 +61,7 @@ public final class DefaultPlaybackSessionManagerTest {
@Test
public void updateSessions_withoutMediaPeriodId_createsNewSession() {
Timeline timeline = new FakeTimeline(/* windowCount= */ 1);
Timeline timeline = new FakeTimeline();
EventTime eventTime = createEventTime(timeline, /* windowIndex= */ 0, /* mediaPeriodId */ null);
sessionManager.updateSessions(eventTime);
......@@ -73,7 +73,7 @@ public final class DefaultPlaybackSessionManagerTest {
@Test
public void updateSessions_withMediaPeriodId_createsNewSession() {
Timeline timeline = new FakeTimeline(/* windowCount= */ 1);
Timeline timeline = new FakeTimeline();
MediaPeriodId mediaPeriodId =
new MediaPeriodId(
timeline.getUidOfPeriod(/* periodIndex= */ 0), /* windowSequenceNumber= */ 0);
......@@ -92,7 +92,7 @@ public final class DefaultPlaybackSessionManagerTest {
@Test
public void
updateSessions_ofSameWindow_withMediaPeriodId_afterWithoutMediaPeriodId_doesNotCreateNewSession() {
Timeline timeline = new FakeTimeline(/* windowCount= */ 1);
Timeline timeline = new FakeTimeline();
MediaPeriodId mediaPeriodId =
new MediaPeriodId(
timeline.getUidOfPeriod(/* periodIndex= */ 0), /* windowSequenceNumber= */ 0);
......@@ -113,7 +113,7 @@ public final class DefaultPlaybackSessionManagerTest {
@Test
public void updateSessions_ofSameWindow_withAd_afterWithoutMediaPeriodId_createsNewSession() {
Timeline timeline = new FakeTimeline(/* windowCount= */ 1);
Timeline timeline = new FakeTimeline();
MediaPeriodId mediaPeriodId =
new MediaPeriodId(
timeline.getUidOfPeriod(/* periodIndex= */ 0),
......@@ -141,7 +141,7 @@ public final class DefaultPlaybackSessionManagerTest {
@Test
public void
updateSessions_ofSameWindow_withoutMediaPeriodId_afterMediaPeriodId_doesNotCreateNewSession() {
Timeline timeline = new FakeTimeline(/* windowCount= */ 1);
Timeline timeline = new FakeTimeline();
MediaPeriodId mediaPeriodId =
new MediaPeriodId(
timeline.getUidOfPeriod(/* periodIndex= */ 0), /* windowSequenceNumber= */ 0);
......@@ -310,7 +310,7 @@ public final class DefaultPlaybackSessionManagerTest {
@Test
public void updateSessions_ofSameWindow_withNewWindowSequenceNumber_createsNewSession() {
Timeline timeline = new FakeTimeline(/* windowCount= */ 1);
Timeline timeline = new FakeTimeline();
MediaPeriodId mediaPeriodId1 =
new MediaPeriodId(
timeline.getUidOfPeriod(/* periodIndex= */ 0), /* windowSequenceNumber= */ 0);
......@@ -339,7 +339,7 @@ public final class DefaultPlaybackSessionManagerTest {
@Test
public void
updateSessions_withoutMediaPeriodId_andPreviouslyCreatedSessions_doesNotCreateNewSession() {
Timeline timeline = new FakeTimeline(/* windowCount= */ 1);
Timeline timeline = new FakeTimeline();
MediaPeriodId mediaPeriodId1 =
new MediaPeriodId(
timeline.getUidOfPeriod(/* periodIndex= */ 0), /* windowSequenceNumber= */ 0);
......@@ -372,7 +372,7 @@ public final class DefaultPlaybackSessionManagerTest {
@Test
public void updateSessions_afterSessionForMediaPeriodId_withSameMediaPeriodId_returnsSameValue() {
Timeline timeline = new FakeTimeline(/* windowCount= */ 1);
Timeline timeline = new FakeTimeline();
MediaPeriodId mediaPeriodId =
new MediaPeriodId(
timeline.getUidOfPeriod(/* periodIndex= */ 0), /* windowSequenceNumber= */ 0);
......@@ -390,7 +390,7 @@ public final class DefaultPlaybackSessionManagerTest {
@Test
public void updateSessions_withoutMediaPeriodId_afterSessionForMediaPeriodId_returnsSameValue() {
Timeline timeline = new FakeTimeline(/* windowCount= */ 1);
Timeline timeline = new FakeTimeline();
MediaPeriodId mediaPeriodId =
new MediaPeriodId(
timeline.getUidOfPeriod(/* periodIndex= */ 0), /* windowSequenceNumber= */ 0);
......@@ -474,7 +474,7 @@ public final class DefaultPlaybackSessionManagerTest {
@Test
public void getSessionForMediaPeriodId_returnsValue_butDoesNotCreateSession() {
Timeline timeline = new FakeTimeline(/* windowCount= */ 1);
Timeline timeline = new FakeTimeline();
MediaPeriodId mediaPeriodId =
new MediaPeriodId(
timeline.getUidOfPeriod(/* periodIndex= */ 0), /* windowSequenceNumber= */ 0);
......@@ -488,7 +488,7 @@ public final class DefaultPlaybackSessionManagerTest {
public void belongsToSession_withSameWindowIndex_returnsTrue() {
EventTime eventTime =
createEventTime(Timeline.EMPTY, /* windowIndex= */ 0, /* mediaPeriodId= */ null);
Timeline timeline = new FakeTimeline(/* windowCount= */ 1);
Timeline timeline = new FakeTimeline();
EventTime eventTimeWithTimeline =
createEventTime(timeline, /* windowIndex= */ 0, /* mediaPeriodId= */ null);
MediaPeriodId mediaPeriodId =
......@@ -532,7 +532,7 @@ public final class DefaultPlaybackSessionManagerTest {
@Test
public void belongsToSession_withOtherWindowSequenceNumber_returnsFalse() {
Timeline timeline = new FakeTimeline(/* windowCount= */ 1);
Timeline timeline = new FakeTimeline();
MediaPeriodId mediaPeriodId1 =
new MediaPeriodId(
timeline.getUidOfPeriod(/* periodIndex= */ 0), /* windowSequenceNumber= */ 0);
......@@ -592,7 +592,7 @@ public final class DefaultPlaybackSessionManagerTest {
createEventTime(Timeline.EMPTY, /* windowIndex= */ 1, /* mediaPeriodId= */ null);
sessionManager.updateSessions(eventTime1);
sessionManager.updateSessions(eventTime2);
Timeline timeline = new FakeTimeline(/* windowCount= */ 1);
Timeline timeline = new FakeTimeline();
EventTime newTimelineEventTime =
createEventTime(timeline, /* windowIndex= */ 0, /* mediaPeriodId= */ null);
......@@ -827,7 +827,7 @@ public final class DefaultPlaybackSessionManagerTest {
@Test
public void positionDiscontinuity_toSameWindow_withoutMediaPeriodId_doesNotFinishSession() {
Timeline timeline = new FakeTimeline(/* windowCount= */ 1);
Timeline timeline = new FakeTimeline();
EventTime eventTime1 =
createEventTime(
timeline,
......
......@@ -50,7 +50,7 @@ public final class PlaybackStatsListenerTest {
/* currentMediaPeriodId= */ null,
/* currentPlaybackPositionMs= */ 0,
/* totalBufferedDurationMs= */ 0);
private static final Timeline TEST_TIMELINE = new FakeTimeline(/* windowCount= */ 1);
private static final Timeline TEST_TIMELINE = new FakeTimeline();
private static final MediaSource.MediaPeriodId TEST_MEDIA_PERIOD_ID =
new MediaSource.MediaPeriodId(
TEST_TIMELINE.getPeriod(/* periodIndex= */ 0, new Timeline.Period(), /* setIds= */ true)
......
......@@ -854,7 +854,7 @@ public final class ConcatenatingMediaSourceTest {
@Test
public void duplicateNestedMediaSources() throws IOException, InterruptedException {
Timeline childTimeline = new FakeTimeline(/* windowCount= */ 1);
Timeline childTimeline = new FakeTimeline();
FakeMediaSource childSource = new FakeMediaSource(childTimeline);
ConcatenatingMediaSource nestedConcatenation = new ConcatenatingMediaSource();
......
......@@ -110,7 +110,7 @@ public final class DefaultTrackSelectorTest {
private static final TrackSelection[] TRACK_SELECTIONS_WITH_NO_SAMPLE_RENDERER =
new TrackSelection[] {new FixedTrackSelection(VIDEO_TRACK_GROUP, 0), null};
private static final Timeline TIMELINE = new FakeTimeline(/* windowCount= */ 1);
private static final Timeline TIMELINE = new FakeTimeline();
private static MediaPeriodId periodId;
......
......@@ -52,7 +52,7 @@ public final class MappingTrackSelectorTest {
private static final TrackGroup AUDIO_TRACK_GROUP = buildTrackGroup(MimeTypes.AUDIO_AAC);
private static final TrackGroup METADATA_TRACK_GROUP = buildTrackGroup(MimeTypes.APPLICATION_ID3);
private static final Timeline TIMELINE = new FakeTimeline(/* windowCount= */ 1);
private static final Timeline TIMELINE = new FakeTimeline();
private static MediaPeriodId periodId;
......
......@@ -92,6 +92,11 @@ public class FakeMediaSource extends BaseMediaSource {
@Nullable private Handler sourceInfoRefreshHandler;
@Nullable private TransferListener transferListener;
/** Creates a {@link FakeMediaSource} with a default {@link FakeTimeline}. */
public FakeMediaSource() {
this(new FakeTimeline());
}
/**
* Creates a {@link FakeMediaSource}. This media source creates {@link FakeMediaPeriod}s with a
* {@link TrackGroupArray} using the given {@link Format}s. The provided {@link Timeline} may be
......
......@@ -267,6 +267,14 @@ public final class FakeTimeline extends Timeline {
}
/**
* Create a fake timeline with one seekable, non-dynamic window with one period and a duration of
* {@link TimelineWindowDefinition#DEFAULT_WINDOW_DURATION_US}.
*/
public FakeTimeline() {
this(/* windowCount= */ 1);
}
/**
* Creates a fake timeline with the given number of seekable, non-dynamic windows with one period
* with a duration of {@link TimelineWindowDefinition#DEFAULT_WINDOW_DURATION_US} each.
*
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment