Add two helpful methods to FakeMediaSource for testing
PiperOrigin-RevId: 566636545
This commit is contained in:
parent
39c1ac7f3a
commit
ceac1f458f
@ -49,6 +49,7 @@ import androidx.media3.exoplayer.source.TrackGroupArray;
|
|||||||
import androidx.media3.exoplayer.upstream.Allocator;
|
import androidx.media3.exoplayer.upstream.Allocator;
|
||||||
import androidx.media3.test.utils.FakeMediaPeriod.TrackDataFactory;
|
import androidx.media3.test.utils.FakeMediaPeriod.TrackDataFactory;
|
||||||
import com.google.common.collect.ImmutableMap;
|
import com.google.common.collect.ImmutableMap;
|
||||||
|
import com.google.common.collect.Iterables;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -106,6 +107,7 @@ public class FakeMediaSource extends BaseMediaSource {
|
|||||||
private boolean releasedSource;
|
private boolean releasedSource;
|
||||||
@Nullable private Handler sourceInfoRefreshHandler;
|
@Nullable private Handler sourceInfoRefreshHandler;
|
||||||
@Nullable private TransferListener transferListener;
|
@Nullable private TransferListener transferListener;
|
||||||
|
private boolean periodDefersOnPreparedCallback;
|
||||||
|
|
||||||
/** Creates a {@link FakeMediaSource} with a default {@link FakeTimeline}. */
|
/** Creates a {@link FakeMediaSource} with a default {@link FakeTimeline}. */
|
||||||
public FakeMediaSource() {
|
public FakeMediaSource() {
|
||||||
@ -359,6 +361,27 @@ public class FakeMediaSource extends BaseMediaSource {
|
|||||||
return createdMediaPeriods;
|
return createdMediaPeriods;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets whether the created {@link FakeMediaPeriod period} should defer to call {@link
|
||||||
|
* MediaPeriod.Callback#onPrepared(MediaPeriod)}. If set to true, {@link
|
||||||
|
* MediaPeriod.Callback#onPrepared(MediaPeriod)} should be called only after {@link
|
||||||
|
* FakeMediaPeriod#setPreparationComplete()} has been called, otherwise the preparation completes
|
||||||
|
* immediately.
|
||||||
|
*/
|
||||||
|
public void setPeriodDefersOnPreparedCallback(boolean periodDefersOnPreparedCallback) {
|
||||||
|
this.periodDefersOnPreparedCallback = periodDefersOnPreparedCallback;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the last created active {@link MediaPeriod}.
|
||||||
|
*
|
||||||
|
* <p>Must only be called if the source has created at least one period and it hasn't been
|
||||||
|
* released.
|
||||||
|
*/
|
||||||
|
public MediaPeriod getLastCreatedActiveMediaPeriod() {
|
||||||
|
return Iterables.getLast(activeMediaPeriods);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a {@link MediaPeriod} for this media source.
|
* Creates a {@link MediaPeriod} for this media source.
|
||||||
*
|
*
|
||||||
@ -372,7 +395,7 @@ public class FakeMediaSource extends BaseMediaSource {
|
|||||||
* events.
|
* events.
|
||||||
* @param transferListener The transfer listener which should be informed of any data transfers.
|
* @param transferListener The transfer listener which should be informed of any data transfers.
|
||||||
* May be null if no listener is available.
|
* May be null if no listener is available.
|
||||||
* @return A new {@link FakeMediaPeriod}.
|
* @return A new {@link MediaPeriod}.
|
||||||
*/
|
*/
|
||||||
@RequiresNonNull("this.timeline")
|
@RequiresNonNull("this.timeline")
|
||||||
protected MediaPeriod createMediaPeriod(
|
protected MediaPeriod createMediaPeriod(
|
||||||
@ -395,7 +418,7 @@ public class FakeMediaSource extends BaseMediaSource {
|
|||||||
mediaSourceEventDispatcher,
|
mediaSourceEventDispatcher,
|
||||||
drmSessionManager,
|
drmSessionManager,
|
||||||
drmEventDispatcher,
|
drmEventDispatcher,
|
||||||
/* deferOnPrepared= */ false);
|
periodDefersOnPreparedCallback);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
x
Reference in New Issue
Block a user