From 1f1897709f78efcf718708d814ce765c60c1c1bd Mon Sep 17 00:00:00 2001 From: tianyifeng Date: Thu, 30 May 2024 06:29:51 -0700 Subject: [PATCH] Rename `PreloadMediaSource.PreloadControl` methods The IntDefs in `DefaultPreloadManager.Stage` are also renamed accordingly. PiperOrigin-RevId: 638631357 --- RELEASENOTES.md | 3 + .../source/preload/DefaultPreloadManager.java | 25 +- .../source/preload/PreloadMediaSource.java | 16 +- .../preload/DefaultPreloadManagerTest.java | 22 +- .../PreloadAndPlaybackCoordinationTest.java | 60 ++--- .../preload/PreloadMediaSourceTest.java | 254 +++++++----------- 6 files changed, 166 insertions(+), 214 deletions(-) diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 49a871ff12..216e226036 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -38,6 +38,9 @@ * Fix bug where playback moved to `STATE_ENDED` when re-preparing a multi-period DASH live stream after the original period was already removed from the manifest. + * Rename `onTimelineRefreshed` to `onSourcePrepared` and `onPrepared` to + `onTracksSelected` in `PreloadMediaSource.PreloadControl`. Also rename + the IntDefs in `DefaultPreloadManager.Stage` accordingly. * Transformer: * Work around a decoder bug where the number of audio channels was capped at stereo when handling PCM input. diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/source/preload/DefaultPreloadManager.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/source/preload/DefaultPreloadManager.java index 676f90dd64..b42d3f1cfd 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/source/preload/DefaultPreloadManager.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/source/preload/DefaultPreloadManager.java @@ -24,7 +24,6 @@ import android.os.Looper; import androidx.annotation.IntDef; import androidx.annotation.Nullable; import androidx.media3.common.C; -import androidx.media3.common.Timeline; import androidx.media3.common.util.UnstableApi; import androidx.media3.common.util.Util; import androidx.media3.exoplayer.ExoPlayer; @@ -57,25 +56,25 @@ public final class DefaultPreloadManager extends BasePreloadManager { public static class Status implements TargetPreloadStatusControl.PreloadStatus { /** - * Stages that for the preload status. One of {@link #STAGE_TIMELINE_REFRESHED}, {@link - * #STAGE_SOURCE_PREPARED} or {@link #STAGE_LOADED_TO_POSITION_MS}. + * Stages for the preload status. One of {@link #STAGE_SOURCE_PREPARED}, {@link + * #STAGE_TRACKS_SELECTED} or {@link #STAGE_LOADED_TO_POSITION_MS}. */ @Documented @Retention(RetentionPolicy.SOURCE) @Target(TYPE_USE) @IntDef( value = { - STAGE_TIMELINE_REFRESHED, STAGE_SOURCE_PREPARED, + STAGE_TRACKS_SELECTED, STAGE_LOADED_TO_POSITION_MS, }) public @interface Stage {} - /** The {@link PreloadMediaSource} has its {@link Timeline} refreshed. */ - public static final int STAGE_TIMELINE_REFRESHED = 0; + /** The {@link PreloadMediaSource} has completed preparation. */ + public static final int STAGE_SOURCE_PREPARED = 0; - /** The {@link PreloadMediaSource} is prepared. */ - public static final int STAGE_SOURCE_PREPARED = 1; + /** The {@link PreloadMediaSource} has tracks selected. */ + public static final int STAGE_TRACKS_SELECTED = 1; /** The {@link PreloadMediaSource} is loaded to a specific position in microseconds. */ public static final int STAGE_LOADED_TO_POSITION_MS = 2; @@ -205,25 +204,25 @@ public final class DefaultPreloadManager extends BasePreloadManager { private final class SourcePreloadControl implements PreloadMediaSource.PreloadControl { @Override - public boolean onTimelineRefreshed(PreloadMediaSource mediaSource) { + public boolean onSourcePrepared(PreloadMediaSource mediaSource) { // The PreloadMediaSource may have more data preloaded than the target preload status if it // has been preloaded before, thus we set `clearExceededDataFromTargetPreloadStatus` to // `true` to clear the exceeded data. return continueOrCompletePreloading( mediaSource, /* continueLoadingPredicate= */ status -> - status.getStage() > Status.STAGE_TIMELINE_REFRESHED, + status.getStage() > Status.STAGE_SOURCE_PREPARED, /* clearExceededDataFromTargetPreloadStatus= */ true); } @Override - public boolean onPrepared(PreloadMediaSource mediaSource) { + public boolean onTracksSelected(PreloadMediaSource mediaSource) { // Set `clearExceededDataFromTargetPreloadStatus` to `false` as clearing the exceeded data - // from the status STAGE_SOURCE_PREPARED is not supported. + // from the status STAGE_TRACKS_SELECTED is not supported. return continueOrCompletePreloading( mediaSource, /* continueLoadingPredicate= */ status -> - status.getStage() > Status.STAGE_SOURCE_PREPARED, + status.getStage() > Status.STAGE_TRACKS_SELECTED, /* clearExceededDataFromTargetPreloadStatus= */ false); } diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/source/preload/PreloadMediaSource.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/source/preload/PreloadMediaSource.java index 67b19af86d..d6065d37fe 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/source/preload/PreloadMediaSource.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/source/preload/PreloadMediaSource.java @@ -63,20 +63,20 @@ public final class PreloadMediaSource extends WrappingMediaSource { public interface PreloadControl { /** - * Called from {@link PreloadMediaSource} when the {@link Timeline} is refreshed. + * Called from {@link PreloadMediaSource} when it has completed preparation. * - * @param mediaSource The {@link PreloadMediaSource} that has its {@link Timeline} refreshed. + * @param mediaSource The {@link PreloadMediaSource} that has completed preparation. * @return True if the {@code mediaSource} should continue preloading, false otherwise. */ - boolean onTimelineRefreshed(PreloadMediaSource mediaSource); + boolean onSourcePrepared(PreloadMediaSource mediaSource); /** - * Called from {@link PreloadMediaSource} when it is prepared. + * Called from {@link PreloadMediaSource} when it has tracks selected. * - * @param mediaSource The {@link PreloadMediaSource} it is prepared. + * @param mediaSource The {@link PreloadMediaSource} that has tracks selected. * @return True if the {@code mediaSource} should continue preloading, false otherwise. */ - boolean onPrepared(PreloadMediaSource mediaSource); + boolean onTracksSelected(PreloadMediaSource mediaSource); /** * Called from {@link PreloadMediaSource} when it requests to continue loading. @@ -291,7 +291,7 @@ public final class PreloadMediaSource extends WrappingMediaSource { protected void onChildSourceInfoRefreshed(Timeline newTimeline) { this.timeline = newTimeline; refreshSourceInfo(newTimeline); - if (isUsedByPlayer() || !preloadControl.onTimelineRefreshed(PreloadMediaSource.this)) { + if (isUsedByPlayer() || !preloadControl.onSourcePrepared(PreloadMediaSource.this)) { return; } Pair periodPosition = @@ -415,7 +415,7 @@ public final class PreloadMediaSource extends WrappingMediaSource { if (trackSelectorResult != null) { preloadMediaPeriod.selectTracksForPreloading( trackSelectorResult.selections, periodStartPositionUs); - if (preloadControl.onPrepared(PreloadMediaSource.this)) { + if (preloadControl.onTracksSelected(PreloadMediaSource.this)) { preloadMediaPeriod.continueLoading( new LoadingInfo.Builder().setPlaybackPositionUs(periodStartPositionUs).build()); } diff --git a/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/source/preload/DefaultPreloadManagerTest.java b/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/source/preload/DefaultPreloadManagerTest.java index 1ae196cbc4..addbb0fac8 100644 --- a/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/source/preload/DefaultPreloadManagerTest.java +++ b/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/source/preload/DefaultPreloadManagerTest.java @@ -17,7 +17,7 @@ package androidx.media3.exoplayer.source.preload; import static androidx.media3.exoplayer.source.preload.DefaultPreloadManager.Status.STAGE_LOADED_TO_POSITION_MS; import static androidx.media3.exoplayer.source.preload.DefaultPreloadManager.Status.STAGE_SOURCE_PREPARED; -import static androidx.media3.exoplayer.source.preload.DefaultPreloadManager.Status.STAGE_TIMELINE_REFRESHED; +import static androidx.media3.exoplayer.source.preload.DefaultPreloadManager.Status.STAGE_TRACKS_SELECTED; import static androidx.media3.test.utils.FakeMediaSourceFactory.DEFAULT_WINDOW_UID; import static androidx.media3.test.utils.robolectric.RobolectricUtil.runMainLooperUntil; import static com.google.common.truth.Truth.assertThat; @@ -192,7 +192,7 @@ public class DefaultPreloadManagerTest { if (abs(rankingData - currentPlayingItemIndex.get()) == 1) { return new DefaultPreloadManager.Status(STAGE_LOADED_TO_POSITION_MS, 100L); } else { - return new DefaultPreloadManager.Status(STAGE_TIMELINE_REFRESHED); + return new DefaultPreloadManager.Status(STAGE_SOURCE_PREPARED); } }; ProgressiveMediaSource.Factory mediaSourceFactory = @@ -244,7 +244,7 @@ public class DefaultPreloadManagerTest { if (abs(rankingData - currentPlayingItemIndex.get()) == 1) { return new DefaultPreloadManager.Status(STAGE_LOADED_TO_POSITION_MS, 100L); } else { - return new DefaultPreloadManager.Status(STAGE_TIMELINE_REFRESHED); + return new DefaultPreloadManager.Status(STAGE_SOURCE_PREPARED); } }; ProgressiveMediaSource.Factory mediaSourceFactory = @@ -297,7 +297,7 @@ public class DefaultPreloadManagerTest { TargetPreloadStatusControl targetPreloadStatusControl = rankingData -> { targetPreloadStatusControlCallStates.add(rankingData); - return new DefaultPreloadManager.Status(STAGE_TIMELINE_REFRESHED); + return new DefaultPreloadManager.Status(STAGE_SOURCE_PREPARED); }; FakeMediaSourceFactory fakeMediaSourceFactory = new FakeMediaSourceFactory(); DefaultPreloadManager preloadManager = @@ -340,7 +340,7 @@ public class DefaultPreloadManagerTest { TargetPreloadStatusControl targetPreloadStatusControl = rankingData -> { targetPreloadStatusControlCallStates.add(rankingData); - return new DefaultPreloadManager.Status(STAGE_TIMELINE_REFRESHED); + return new DefaultPreloadManager.Status(STAGE_SOURCE_PREPARED); }; FakeMediaSourceFactory fakeMediaSourceFactory = new FakeMediaSourceFactory(); DefaultPreloadManager preloadManager = @@ -453,9 +453,9 @@ public class DefaultPreloadManagerTest { rankingData -> { targetPreloadStatusControlCallStates.add(rankingData); if (abs(rankingData - currentPlayingIndex.get()) <= 2) { - return new DefaultPreloadManager.Status(STAGE_SOURCE_PREPARED); + return new DefaultPreloadManager.Status(STAGE_TRACKS_SELECTED); } else if (abs(rankingData - currentPlayingIndex.get()) == 3) { - return new DefaultPreloadManager.Status(STAGE_TIMELINE_REFRESHED); + return new DefaultPreloadManager.Status(STAGE_SOURCE_PREPARED); } return null; }; @@ -573,7 +573,7 @@ public class DefaultPreloadManagerTest { @Test public void removeByMediaItems_correspondingHeldSourceRemovedAndReleased() { TargetPreloadStatusControl targetPreloadStatusControl = - rankingData -> new DefaultPreloadManager.Status(STAGE_TIMELINE_REFRESHED); + rankingData -> new DefaultPreloadManager.Status(STAGE_SOURCE_PREPARED); MediaSource.Factory mockMediaSourceFactory = mock(MediaSource.Factory.class); DefaultPreloadManager preloadManager = new DefaultPreloadManager( @@ -624,7 +624,7 @@ public class DefaultPreloadManagerTest { @Test public void removeByMediaSources_heldSourceRemovedAndReleased() { TargetPreloadStatusControl targetPreloadStatusControl = - rankingData -> new DefaultPreloadManager.Status(STAGE_TIMELINE_REFRESHED); + rankingData -> new DefaultPreloadManager.Status(STAGE_SOURCE_PREPARED); MediaSource.Factory mockMediaSourceFactory = mock(MediaSource.Factory.class); DefaultPreloadManager preloadManager = new DefaultPreloadManager( @@ -682,7 +682,7 @@ public class DefaultPreloadManagerTest { @Test public void reset_returnZeroCount_sourcesButNotRendererCapabilitiesListReleased() { TargetPreloadStatusControl targetPreloadStatusControl = - rankingData -> new DefaultPreloadManager.Status(STAGE_TIMELINE_REFRESHED); + rankingData -> new DefaultPreloadManager.Status(STAGE_SOURCE_PREPARED); MediaSource.Factory mockMediaSourceFactory = mock(MediaSource.Factory.class); List underlyingRenderers = new ArrayList<>(); RenderersFactory renderersFactory = @@ -753,7 +753,7 @@ public class DefaultPreloadManagerTest { @Test public void release_returnZeroCount_sourcesAndRendererCapabilitiesListReleased() { TargetPreloadStatusControl targetPreloadStatusControl = - rankingData -> new DefaultPreloadManager.Status(STAGE_TIMELINE_REFRESHED); + rankingData -> new DefaultPreloadManager.Status(STAGE_SOURCE_PREPARED); MediaSource.Factory mockMediaSourceFactory = mock(MediaSource.Factory.class); List underlyingRenderers = new ArrayList<>(); RenderersFactory renderersFactory = diff --git a/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/source/preload/PreloadAndPlaybackCoordinationTest.java b/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/source/preload/PreloadAndPlaybackCoordinationTest.java index 534d088f0d..853dd8b327 100644 --- a/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/source/preload/PreloadAndPlaybackCoordinationTest.java +++ b/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/source/preload/PreloadAndPlaybackCoordinationTest.java @@ -68,8 +68,8 @@ public class PreloadAndPlaybackCoordinationTest { private final FakeMediaSource wrappedMediaSource; private final MediaSource.MediaSourceCaller playbackMediaSourceCaller; - private final AtomicInteger preloadControlOnSourceInfoRefreshedCalledCounter; - private final AtomicInteger preloadControlOnPreparedCalledCounter; + private final AtomicInteger preloadControlOnSourcePreparedCalledCounter; + private final AtomicInteger preloadControlOnTracksSelectedCalledCounter; private final AtomicInteger preloadControlOnUsedByPlayerCounter; private final AtomicBoolean playbackSourceCallerOnSourceInfoRefreshedCalled; private final AtomicBoolean playbackPeriodCallbackOnPreparedCalled; @@ -93,8 +93,8 @@ public class PreloadAndPlaybackCoordinationTest { SystemClock.DEFAULT.createHandler(handler.getLooper(), /* callback= */ null), audioListener) }; - preloadControlOnSourceInfoRefreshedCalledCounter = new AtomicInteger(); - preloadControlOnPreparedCalledCounter = new AtomicInteger(); + preloadControlOnSourcePreparedCalledCounter = new AtomicInteger(); + preloadControlOnTracksSelectedCalledCounter = new AtomicInteger(); preloadControlOnUsedByPlayerCounter = new AtomicInteger(); playbackSourceCallerOnSourceInfoRefreshedCalled = new AtomicBoolean(); playbackPeriodCallbackOnPreparedCalled = new AtomicBoolean(); @@ -103,14 +103,14 @@ public class PreloadAndPlaybackCoordinationTest { PreloadMediaSource.PreloadControl preloadControl = new PreloadMediaSource.PreloadControl() { @Override - public boolean onTimelineRefreshed(PreloadMediaSource mediaSource) { - preloadControlOnSourceInfoRefreshedCalledCounter.addAndGet(1); + public boolean onSourcePrepared(PreloadMediaSource mediaSource) { + preloadControlOnSourcePreparedCalledCounter.addAndGet(1); return true; } @Override - public boolean onPrepared(PreloadMediaSource mediaSource) { - preloadControlOnPreparedCalledCounter.addAndGet(1); + public boolean onTracksSelected(PreloadMediaSource mediaSource) { + preloadControlOnTracksSelectedCalledCounter.addAndGet(1); return true; } @@ -173,8 +173,8 @@ public class PreloadAndPlaybackCoordinationTest { playbackMediaSourceCaller, bandwidthMeter.getTransferListener(), PlayerId.UNSET); ShadowLooper.idleMainLooper(); - assertThat(preloadControlOnSourceInfoRefreshedCalledCounter.get()).isEqualTo(0); - assertThat(preloadControlOnPreparedCalledCounter.get()).isEqualTo(0); + assertThat(preloadControlOnSourcePreparedCalledCounter.get()).isEqualTo(0); + assertThat(preloadControlOnTracksSelectedCalledCounter.get()).isEqualTo(0); assertThat(preloadControlOnUsedByPlayerCounter.get()).isEqualTo(1); assertThat(playbackSourceCallerOnSourceInfoRefreshedCalled.get()).isTrue(); assertThat(playbackPeriodCallbackOnPreparedCalled.get()).isTrue(); @@ -187,8 +187,8 @@ public class PreloadAndPlaybackCoordinationTest { preloadMediaSource.preload(/* startPositionUs= */ 0L); ShadowLooper.idleMainLooper(); - assertThat(preloadControlOnSourceInfoRefreshedCalledCounter.get()).isEqualTo(1); - assertThat(preloadControlOnPreparedCalledCounter.get()).isEqualTo(1); + assertThat(preloadControlOnSourcePreparedCalledCounter.get()).isEqualTo(1); + assertThat(preloadControlOnTracksSelectedCalledCounter.get()).isEqualTo(1); assertThat(preloadControlOnUsedByPlayerCounter.get()).isEqualTo(1); } @@ -199,8 +199,8 @@ public class PreloadAndPlaybackCoordinationTest { preloadMediaSource.preload(/* startPositionUs= */ 0L); ShadowLooper.idleMainLooper(); - assertThat(preloadControlOnSourceInfoRefreshedCalledCounter.get()).isEqualTo(0); - assertThat(preloadControlOnPreparedCalledCounter.get()).isEqualTo(0); + assertThat(preloadControlOnSourcePreparedCalledCounter.get()).isEqualTo(0); + assertThat(preloadControlOnTracksSelectedCalledCounter.get()).isEqualTo(0); assertThat(preloadControlOnUsedByPlayerCounter.get()).isEqualTo(2); assertThat(playbackSourceCallerOnSourceInfoRefreshedCalled.get()).isTrue(); assertThat(playbackPeriodCallbackOnPreparedCalled.get()).isTrue(); @@ -213,13 +213,13 @@ public class PreloadAndPlaybackCoordinationTest { preloadMediaSource.preload(/* startPositionUs= */ 0L); ShadowLooper.idleMainLooper(); - assertThat(preloadControlOnSourceInfoRefreshedCalledCounter.get()).isEqualTo(1); - assertThat(preloadControlOnPreparedCalledCounter.get()).isEqualTo(1); + assertThat(preloadControlOnSourcePreparedCalledCounter.get()).isEqualTo(1); + assertThat(preloadControlOnTracksSelectedCalledCounter.get()).isEqualTo(1); assertThat(preloadControlOnUsedByPlayerCounter.get()).isEqualTo(2); } @Test - public void playbackBetweenPreloadStartAndTimelineInfoRefreshed_reusableForPreloadAfterRelease() { + public void playbackBetweenPreloadStartAndSourcePrepared_reusableForPreloadAfterRelease() { wrappedMediaSource.setAllowPreparation(false); preloadMediaSource.preload(/* startPositionUs= */ 0L); @@ -229,8 +229,8 @@ public class PreloadAndPlaybackCoordinationTest { wrappedMediaSource.setAllowPreparation(true); ShadowLooper.idleMainLooper(); - assertThat(preloadControlOnSourceInfoRefreshedCalledCounter.get()).isEqualTo(0); - assertThat(preloadControlOnPreparedCalledCounter.get()).isEqualTo(0); + assertThat(preloadControlOnSourcePreparedCalledCounter.get()).isEqualTo(0); + assertThat(preloadControlOnTracksSelectedCalledCounter.get()).isEqualTo(0); assertThat(preloadControlOnUsedByPlayerCounter.get()).isEqualTo(1); assertThat(playbackSourceCallerOnSourceInfoRefreshedCalled.get()).isTrue(); assertThat(playbackPeriodCallbackOnPreparedCalled.get()).isTrue(); @@ -243,14 +243,14 @@ public class PreloadAndPlaybackCoordinationTest { preloadMediaSource.preload(/* startPositionUs= */ 0L); ShadowLooper.idleMainLooper(); - assertThat(preloadControlOnSourceInfoRefreshedCalledCounter.get()).isEqualTo(1); - assertThat(preloadControlOnPreparedCalledCounter.get()).isEqualTo(1); + assertThat(preloadControlOnSourcePreparedCalledCounter.get()).isEqualTo(1); + assertThat(preloadControlOnTracksSelectedCalledCounter.get()).isEqualTo(1); assertThat(preloadControlOnUsedByPlayerCounter.get()).isEqualTo(1); } @Test public void - playbackBetweenPreloadTimelineRefreshedAndPeriodPrepared_reusableForPreloadAfterRelease() { + playbackBetweenPreloadSourcePreparedAndTracksSelected_reusableForPreloadAfterRelease() { wrappedMediaSource.setPeriodDefersOnPreparedCallback(true); preloadMediaSource.preload(/* startPositionUs= */ 0L); @@ -262,8 +262,8 @@ public class PreloadAndPlaybackCoordinationTest { lastCreatedActiveMediaPeriod.setPreparationComplete(); ShadowLooper.idleMainLooper(); - assertThat(preloadControlOnSourceInfoRefreshedCalledCounter.get()).isEqualTo(1); - assertThat(preloadControlOnPreparedCalledCounter.get()).isEqualTo(0); + assertThat(preloadControlOnSourcePreparedCalledCounter.get()).isEqualTo(1); + assertThat(preloadControlOnTracksSelectedCalledCounter.get()).isEqualTo(0); assertThat(preloadControlOnUsedByPlayerCounter.get()).isEqualTo(1); assertThat(playbackSourceCallerOnSourceInfoRefreshedCalled.get()).isTrue(); assertThat(playbackPeriodCallbackOnPreparedCalled.get()).isTrue(); @@ -277,8 +277,8 @@ public class PreloadAndPlaybackCoordinationTest { preloadMediaSource.preload(/* startPositionUs= */ 0L); ShadowLooper.idleMainLooper(); - assertThat(preloadControlOnSourceInfoRefreshedCalledCounter.get()).isEqualTo(2); - assertThat(preloadControlOnPreparedCalledCounter.get()).isEqualTo(1); + assertThat(preloadControlOnSourcePreparedCalledCounter.get()).isEqualTo(2); + assertThat(preloadControlOnTracksSelectedCalledCounter.get()).isEqualTo(1); assertThat(preloadControlOnUsedByPlayerCounter.get()).isEqualTo(1); } @@ -290,8 +290,8 @@ public class PreloadAndPlaybackCoordinationTest { playbackMediaSourceCaller, bandwidthMeter.getTransferListener(), PlayerId.UNSET); ShadowLooper.idleMainLooper(); - assertThat(preloadControlOnSourceInfoRefreshedCalledCounter.get()).isEqualTo(1); - assertThat(preloadControlOnPreparedCalledCounter.get()).isEqualTo(1); + assertThat(preloadControlOnSourcePreparedCalledCounter.get()).isEqualTo(1); + assertThat(preloadControlOnTracksSelectedCalledCounter.get()).isEqualTo(1); assertThat(preloadControlOnUsedByPlayerCounter.get()).isEqualTo(1); assertThat(playbackSourceCallerOnSourceInfoRefreshedCalled.get()).isTrue(); assertThat(playbackPeriodCallbackOnPreparedCalled.get()).isTrue(); @@ -304,8 +304,8 @@ public class PreloadAndPlaybackCoordinationTest { preloadMediaSource.preload(/* startPositionUs= */ 0L); ShadowLooper.idleMainLooper(); - assertThat(preloadControlOnSourceInfoRefreshedCalledCounter.get()).isEqualTo(2); - assertThat(preloadControlOnPreparedCalledCounter.get()).isEqualTo(2); + assertThat(preloadControlOnSourcePreparedCalledCounter.get()).isEqualTo(2); + assertThat(preloadControlOnTracksSelectedCalledCounter.get()).isEqualTo(2); assertThat(preloadControlOnUsedByPlayerCounter.get()).isEqualTo(1); } diff --git a/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/source/preload/PreloadMediaSourceTest.java b/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/source/preload/PreloadMediaSourceTest.java index 8b108bf71c..f60a17f38c 100644 --- a/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/source/preload/PreloadMediaSourceTest.java +++ b/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/source/preload/PreloadMediaSourceTest.java @@ -107,22 +107,22 @@ public final class PreloadMediaSourceTest { @Test public void preload_loadPeriodToTargetPreloadPosition() throws Exception { - AtomicBoolean onTimelineRefreshedCalled = new AtomicBoolean(); - AtomicBoolean onPreparedCalled = new AtomicBoolean(); + AtomicBoolean onSourcePreparedCalled = new AtomicBoolean(); + AtomicBoolean onTracksSelectedCalled = new AtomicBoolean(); AtomicBoolean onContinueLoadingStopped = new AtomicBoolean(); AtomicReference preloadMediaSourceReference = new AtomicReference<>(); AtomicBoolean onUsedByPlayerCalled = new AtomicBoolean(); PreloadMediaSource.PreloadControl preloadControl = new PreloadMediaSource.PreloadControl() { @Override - public boolean onTimelineRefreshed(PreloadMediaSource mediaSource) { - onTimelineRefreshedCalled.set(true); + public boolean onSourcePrepared(PreloadMediaSource mediaSource) { + onSourcePreparedCalled.set(true); return true; } @Override - public boolean onPrepared(PreloadMediaSource mediaSource) { - onPreparedCalled.set(true); + public boolean onTracksSelected(PreloadMediaSource mediaSource) { + onTracksSelectedCalled.set(true); return true; } @@ -167,31 +167,31 @@ public final class PreloadMediaSourceTest { preloadMediaSource.preload(/* startPositionUs= */ 0L); runMainLooperUntil(onContinueLoadingStopped::get); - assertThat(onTimelineRefreshedCalled.get()).isTrue(); - assertThat(onPreparedCalled.get()).isTrue(); + assertThat(onSourcePreparedCalled.get()).isTrue(); + assertThat(onTracksSelectedCalled.get()).isTrue(); assertThat(onUsedByPlayerCalled.get()).isFalse(); assertThat(preloadMediaSourceReference.get()).isSameInstanceAs(preloadMediaSource); } @Test - public void preload_stopWhenPeriodPreparedByPreloadControl() throws Exception { - AtomicBoolean onTimelineRefreshedCalled = new AtomicBoolean(); - AtomicBoolean onPreparedCalled = new AtomicBoolean(); + public void preload_stopWhenTracksSelectedByPreloadControl() throws Exception { + AtomicBoolean onSourcePreparedCalled = new AtomicBoolean(); + AtomicBoolean onTracksSelectedCalled = new AtomicBoolean(); AtomicReference preloadMediaSourceReference = new AtomicReference<>(); AtomicBoolean onContinueLoadingRequestedCalled = new AtomicBoolean(); AtomicBoolean onUsedByPlayerCalled = new AtomicBoolean(); PreloadMediaSource.PreloadControl preloadControl = new PreloadMediaSource.PreloadControl() { @Override - public boolean onTimelineRefreshed(PreloadMediaSource mediaSource) { - onTimelineRefreshedCalled.set(true); + public boolean onSourcePrepared(PreloadMediaSource mediaSource) { + onSourcePreparedCalled.set(true); return true; } @Override - public boolean onPrepared(PreloadMediaSource mediaSource) { + public boolean onTracksSelected(PreloadMediaSource mediaSource) { preloadMediaSourceReference.set(mediaSource); - onPreparedCalled.set(true); + onTracksSelectedCalled.set(true); return false; } @@ -230,33 +230,33 @@ public final class PreloadMediaSourceTest { .build()); preloadMediaSource.preload(/* startPositionUs= */ 0L); - runMainLooperUntil(onPreparedCalled::get); + runMainLooperUntil(onTracksSelectedCalled::get); - assertThat(onTimelineRefreshedCalled.get()).isTrue(); + assertThat(onSourcePreparedCalled.get()).isTrue(); assertThat(preloadMediaSourceReference.get()).isSameInstanceAs(preloadMediaSource); assertThat(onContinueLoadingRequestedCalled.get()).isFalse(); assertThat(onUsedByPlayerCalled.get()).isFalse(); } @Test - public void preload_stopWhenTimelineRefreshedByPreloadControl() throws Exception { - AtomicBoolean onTimelineRefreshedCalled = new AtomicBoolean(); + public void preload_stopWhenSourcePreparedByPreloadControl() throws Exception { + AtomicBoolean onSourcePreparedCalled = new AtomicBoolean(); AtomicReference preloadMediaSourceReference = new AtomicReference<>(); - AtomicBoolean onPreparedCalled = new AtomicBoolean(); + AtomicBoolean onTracksSelectedCalled = new AtomicBoolean(); AtomicBoolean onContinueLoadingRequestedCalled = new AtomicBoolean(); AtomicBoolean onUsedByPlayerCalled = new AtomicBoolean(); PreloadMediaSource.PreloadControl preloadControl = new PreloadMediaSource.PreloadControl() { @Override - public boolean onTimelineRefreshed(PreloadMediaSource mediaSource) { + public boolean onSourcePrepared(PreloadMediaSource mediaSource) { preloadMediaSourceReference.set(mediaSource); - onTimelineRefreshedCalled.set(true); + onSourcePreparedCalled.set(true); return false; } @Override - public boolean onPrepared(PreloadMediaSource mediaSource) { - onPreparedCalled.set(true); + public boolean onTracksSelected(PreloadMediaSource mediaSource) { + onTracksSelectedCalled.set(true); return false; } @@ -294,30 +294,30 @@ public final class PreloadMediaSourceTest { .build()); preloadMediaSource.preload(/* startPositionUs= */ 0L); - runMainLooperUntil(onTimelineRefreshedCalled::get); + runMainLooperUntil(onSourcePreparedCalled::get); assertThat(preloadMediaSourceReference.get()).isSameInstanceAs(preloadMediaSource); - assertThat(onPreparedCalled.get()).isFalse(); + assertThat(onTracksSelectedCalled.get()).isFalse(); assertThat(onContinueLoadingRequestedCalled.get()).isFalse(); assertThat(onUsedByPlayerCalled.get()).isFalse(); } @Test public void preload_whileSourceIsAccessedByExternalCaller_notProceedWithPreloading() { - AtomicBoolean onTimelineRefreshedCalled = new AtomicBoolean(false); - AtomicBoolean onPreparedCalled = new AtomicBoolean(false); + AtomicBoolean onSourcePreparedCalled = new AtomicBoolean(false); + AtomicBoolean onTracksSelectedCalled = new AtomicBoolean(false); AtomicBoolean onUsedByPlayerCalled = new AtomicBoolean(); PreloadMediaSource.PreloadControl preloadControl = new PreloadMediaSource.PreloadControl() { @Override - public boolean onTimelineRefreshed(PreloadMediaSource mediaSource) { - onTimelineRefreshedCalled.set(true); + public boolean onSourcePrepared(PreloadMediaSource mediaSource) { + onSourcePreparedCalled.set(true); return true; } @Override - public boolean onPrepared(PreloadMediaSource mediaSource) { - onPreparedCalled.set(true); + public boolean onTracksSelected(PreloadMediaSource mediaSource) { + onTracksSelectedCalled.set(true); return true; } @@ -351,12 +351,7 @@ public final class PreloadMediaSourceTest { AtomicReference externalCallerMediaSourceReference = new AtomicReference<>(); MediaSource.MediaSourceCaller externalCaller = - new MediaSource.MediaSourceCaller() { - @Override - public void onSourceInfoRefreshed(MediaSource source, Timeline timeline) { - externalCallerMediaSourceReference.set(source); - } - }; + (source, timeline) -> externalCallerMediaSourceReference.set(source); preloadMediaSource.prepareSource( externalCaller, bandwidthMeter.getTransferListener(), PlayerId.UNSET); shadowOf(Looper.getMainLooper()).idle(); @@ -364,29 +359,29 @@ public final class PreloadMediaSourceTest { shadowOf(Looper.getMainLooper()).idle(); assertThat(externalCallerMediaSourceReference.get()).isSameInstanceAs(preloadMediaSource); - assertThat(onTimelineRefreshedCalled.get()).isFalse(); - assertThat(onPreparedCalled.get()).isFalse(); + assertThat(onSourcePreparedCalled.get()).isFalse(); + assertThat(onTracksSelectedCalled.get()).isFalse(); assertThat(onUsedByPlayerCalled.get()).isTrue(); } @Test public void preload_loadToTheEndOfSource() throws Exception { - AtomicBoolean onTimelineRefreshedCalled = new AtomicBoolean(); - AtomicBoolean onPreparedCalled = new AtomicBoolean(); + AtomicBoolean onSourcePreparedCalled = new AtomicBoolean(); + AtomicBoolean onTracksSelectedCalled = new AtomicBoolean(); AtomicBoolean onContinueLoadingRequestedCalled = new AtomicBoolean(); AtomicBoolean onLoadedToTheEndOfSourceCalled = new AtomicBoolean(); AtomicBoolean onUsedByPlayerCalled = new AtomicBoolean(); PreloadMediaSource.PreloadControl preloadControl = new PreloadMediaSource.PreloadControl() { @Override - public boolean onTimelineRefreshed(PreloadMediaSource mediaSource) { - onTimelineRefreshedCalled.set(true); + public boolean onSourcePrepared(PreloadMediaSource mediaSource) { + onSourcePreparedCalled.set(true); return true; } @Override - public boolean onPrepared(PreloadMediaSource mediaSource) { - onPreparedCalled.set(true); + public boolean onTracksSelected(PreloadMediaSource mediaSource) { + onTracksSelectedCalled.set(true); return true; } @@ -437,8 +432,8 @@ public final class PreloadMediaSourceTest { preloadMediaSource.preload(/* startPositionUs= */ 0L); runMainLooperUntil(onLoadedToTheEndOfSourceCalled::get); - assertThat(onTimelineRefreshedCalled.get()).isTrue(); - assertThat(onPreparedCalled.get()).isTrue(); + assertThat(onSourcePreparedCalled.get()).isTrue(); + assertThat(onTracksSelectedCalled.get()).isTrue(); assertThat(onContinueLoadingRequestedCalled.get()).isTrue(); assertThat(onUsedByPlayerCalled.get()).isFalse(); } @@ -446,20 +441,20 @@ public final class PreloadMediaSourceTest { @Test public void prepareSource_beforeSourceInfoRefreshedForPreloading_onlyInvokeExternalCallerOnSourceInfoRefreshed() { - AtomicBoolean onTimelineRefreshedCalled = new AtomicBoolean(false); - AtomicBoolean onPreparedCalled = new AtomicBoolean(false); + AtomicBoolean onSourcePreparedCalled = new AtomicBoolean(false); + AtomicBoolean onTracksSelectedCalled = new AtomicBoolean(false); AtomicBoolean onUsedByPlayerCalled = new AtomicBoolean(); PreloadMediaSource.PreloadControl preloadControl = new PreloadMediaSource.PreloadControl() { @Override - public boolean onTimelineRefreshed(PreloadMediaSource mediaSource) { - onTimelineRefreshedCalled.set(true); + public boolean onSourcePrepared(PreloadMediaSource mediaSource) { + onSourcePreparedCalled.set(true); return true; } @Override - public boolean onPrepared(PreloadMediaSource mediaSource) { - onPreparedCalled.set(true); + public boolean onTracksSelected(PreloadMediaSource mediaSource) { + onTracksSelectedCalled.set(true); return true; } @@ -497,39 +492,34 @@ public final class PreloadMediaSourceTest { shadowOf(Looper.getMainLooper()).idle(); AtomicReference externalCallerMediaSourceReference = new AtomicReference<>(); MediaSource.MediaSourceCaller externalCaller = - new MediaSource.MediaSourceCaller() { - @Override - public void onSourceInfoRefreshed(MediaSource source, Timeline timeline) { - externalCallerMediaSourceReference.set(source); - } - }; + (source, timeline) -> externalCallerMediaSourceReference.set(source); preloadMediaSource.prepareSource( externalCaller, bandwidthMeter.getTransferListener(), PlayerId.UNSET); wrappedMediaSource.setAllowPreparation(true); shadowOf(Looper.getMainLooper()).idle(); assertThat(externalCallerMediaSourceReference.get()).isSameInstanceAs(preloadMediaSource); - assertThat(onTimelineRefreshedCalled.get()).isFalse(); - assertThat(onPreparedCalled.get()).isFalse(); + assertThat(onSourcePreparedCalled.get()).isFalse(); + assertThat(onTracksSelectedCalled.get()).isFalse(); assertThat(onUsedByPlayerCalled.get()).isTrue(); } @Test public void prepareSource_afterPreload_immediatelyInvokeExternalCallerOnSourceInfoRefreshed() { - AtomicBoolean onTimelineRefreshedCalled = new AtomicBoolean(false); - AtomicBoolean onPreparedCalled = new AtomicBoolean(false); + AtomicBoolean onSourcePreparedCalled = new AtomicBoolean(false); + AtomicBoolean onTracksSelectedCalled = new AtomicBoolean(false); AtomicBoolean onUsedByPlayerCalled = new AtomicBoolean(); PreloadMediaSource.PreloadControl preloadControl = new PreloadMediaSource.PreloadControl() { @Override - public boolean onTimelineRefreshed(PreloadMediaSource mediaSource) { - onTimelineRefreshedCalled.set(true); + public boolean onSourcePrepared(PreloadMediaSource mediaSource) { + onSourcePreparedCalled.set(true); return true; } @Override - public boolean onPrepared(PreloadMediaSource mediaSource) { - onPreparedCalled.set(true); + public boolean onTracksSelected(PreloadMediaSource mediaSource) { + onTracksSelectedCalled.set(true); return true; } @@ -566,17 +556,12 @@ public final class PreloadMediaSourceTest { shadowOf(Looper.getMainLooper()).idle(); AtomicReference externalCallerMediaSourceReference = new AtomicReference<>(); MediaSource.MediaSourceCaller externalCaller = - new MediaSource.MediaSourceCaller() { - @Override - public void onSourceInfoRefreshed(MediaSource source, Timeline timeline) { - externalCallerMediaSourceReference.set(source); - } - }; + (source, timeline) -> externalCallerMediaSourceReference.set(source); preloadMediaSource.prepareSource( externalCaller, bandwidthMeter.getTransferListener(), PlayerId.UNSET); - assertThat(onTimelineRefreshedCalled.get()).isTrue(); - assertThat(onPreparedCalled.get()).isTrue(); + assertThat(onSourcePreparedCalled.get()).isTrue(); + assertThat(onTracksSelectedCalled.get()).isTrue(); assertThat(externalCallerMediaSourceReference.get()).isSameInstanceAs(preloadMediaSource); assertThat(onUsedByPlayerCalled.get()).isTrue(); } @@ -584,17 +569,17 @@ public final class PreloadMediaSourceTest { @Test public void createPeriodWithSameMediaPeriodIdAndStartPosition_returnExistingPeriod() throws Exception { - AtomicBoolean onPreparedCalled = new AtomicBoolean(); + AtomicBoolean onTracksSelectedCalled = new AtomicBoolean(); PreloadMediaSource.PreloadControl preloadControl = new PreloadMediaSource.PreloadControl() { @Override - public boolean onTimelineRefreshed(PreloadMediaSource mediaSource) { + public boolean onSourcePrepared(PreloadMediaSource mediaSource) { return true; } @Override - public boolean onPrepared(PreloadMediaSource mediaSource) { - onPreparedCalled.set(true); + public boolean onTracksSelected(PreloadMediaSource mediaSource) { + onTracksSelectedCalled.set(true); return false; } @@ -668,12 +653,7 @@ public final class PreloadMediaSourceTest { shadowOf(Looper.getMainLooper()).idle(); AtomicReference externalCallerSourceInfoTimelineReference = new AtomicReference<>(); MediaSource.MediaSourceCaller externalCaller = - new MediaSource.MediaSourceCaller() { - @Override - public void onSourceInfoRefreshed(MediaSource source, Timeline timeline) { - externalCallerSourceInfoTimelineReference.set(timeline); - } - }; + (source, timeline) -> externalCallerSourceInfoTimelineReference.set(timeline); preloadMediaSource.prepareSource( externalCaller, bandwidthMeter.getTransferListener(), PlayerId.UNSET); Pair periodPosition = @@ -687,24 +667,24 @@ public final class PreloadMediaSourceTest { MediaSource.MediaPeriodId mediaPeriodId = new MediaSource.MediaPeriodId(periodPosition.first); preloadMediaSource.createPeriod(mediaPeriodId, allocator, periodPosition.second); - assertThat(onPreparedCalled.get()).isTrue(); + assertThat(onTracksSelectedCalled.get()).isTrue(); verify(internalSourceReference.get()).createPeriod(any(), any(), anyLong()); } @Test public void createPeriodWithSameMediaPeriodIdAndDifferentStartPosition_returnNewPeriod() throws Exception { - AtomicBoolean onPreparedCalled = new AtomicBoolean(); + AtomicBoolean onTracksSelectedCalled = new AtomicBoolean(); PreloadMediaSource.PreloadControl preloadControl = new PreloadMediaSource.PreloadControl() { @Override - public boolean onTimelineRefreshed(PreloadMediaSource mediaSource) { + public boolean onSourcePrepared(PreloadMediaSource mediaSource) { return true; } @Override - public boolean onPrepared(PreloadMediaSource mediaSource) { - onPreparedCalled.set(true); + public boolean onTracksSelected(PreloadMediaSource mediaSource) { + onTracksSelectedCalled.set(true); return false; } @@ -778,12 +758,7 @@ public final class PreloadMediaSourceTest { shadowOf(Looper.getMainLooper()).idle(); AtomicReference externalCallerSourceInfoTimelineReference = new AtomicReference<>(); MediaSource.MediaSourceCaller externalCaller = - new MediaSource.MediaSourceCaller() { - @Override - public void onSourceInfoRefreshed(MediaSource source, Timeline timeline) { - externalCallerSourceInfoTimelineReference.set(timeline); - } - }; + (source, timeline) -> externalCallerSourceInfoTimelineReference.set(timeline); preloadMediaSource.prepareSource( externalCaller, bandwidthMeter.getTransferListener(), PlayerId.UNSET); // Create a period from different position. @@ -798,23 +773,23 @@ public final class PreloadMediaSourceTest { MediaSource.MediaPeriodId mediaPeriodId = new MediaSource.MediaPeriodId(periodPosition.first); preloadMediaSource.createPeriod(mediaPeriodId, allocator, periodPosition.second); - assertThat(onPreparedCalled.get()).isTrue(); + assertThat(onTracksSelectedCalled.get()).isTrue(); verify(internalSourceReference.get(), times(2)).createPeriod(any(), any(), anyLong()); } @Test public void clear_preloadingPeriodReleased() throws Exception { - AtomicBoolean onPreparedCalled = new AtomicBoolean(); + AtomicBoolean onTracksSelectedCalled = new AtomicBoolean(); PreloadMediaSource.PreloadControl preloadControl = new PreloadMediaSource.PreloadControl() { @Override - public boolean onTimelineRefreshed(PreloadMediaSource mediaSource) { + public boolean onSourcePrepared(PreloadMediaSource mediaSource) { return true; } @Override - public boolean onPrepared(PreloadMediaSource mediaSource) { - onPreparedCalled.set(true); + public boolean onTracksSelected(PreloadMediaSource mediaSource) { + onTracksSelectedCalled.set(true); return false; } @@ -871,7 +846,7 @@ public final class PreloadMediaSourceTest { .setUri(Uri.parse("asset://android_asset/media/mp4/sample.mp4")) .build()); preloadMediaSource.preload(/* startPositionUs= */ 0L); - runMainLooperUntil(onPreparedCalled::get); + runMainLooperUntil(onTracksSelectedCalled::get); preloadMediaSource.clear(); shadowOf(Looper.getMainLooper()).idle(); @@ -884,12 +859,12 @@ public final class PreloadMediaSourceTest { PreloadMediaSource.PreloadControl preloadControl = new PreloadMediaSource.PreloadControl() { @Override - public boolean onTimelineRefreshed(PreloadMediaSource mediaSource) { + public boolean onSourcePrepared(PreloadMediaSource mediaSource) { return false; } @Override - public boolean onPrepared(PreloadMediaSource mediaSource) { + public boolean onTracksSelected(PreloadMediaSource mediaSource) { return false; } @@ -940,12 +915,7 @@ public final class PreloadMediaSourceTest { .build()); AtomicBoolean externalCallerSourceInfoRefreshedCalled = new AtomicBoolean(); MediaSource.MediaSourceCaller externalCaller = - new MediaSource.MediaSourceCaller() { - @Override - public void onSourceInfoRefreshed(MediaSource source, Timeline timeline) { - externalCallerSourceInfoRefreshedCalled.set(true); - } - }; + (source, timeline) -> externalCallerSourceInfoRefreshedCalled.set(true); preloadMediaSource.prepareSource( externalCaller, bandwidthMeter.getTransferListener(), PlayerId.UNSET); shadowOf(Looper.getMainLooper()).idle(); @@ -959,17 +929,17 @@ public final class PreloadMediaSourceTest { @Test public void releaseSourceByAllExternalCallers_stillPreloading_notReleaseInternalSource() { - AtomicBoolean onTimelineRefreshedCalled = new AtomicBoolean(false); + AtomicBoolean onSourcePreparedCalled = new AtomicBoolean(false); PreloadMediaSource.PreloadControl preloadControl = new PreloadMediaSource.PreloadControl() { @Override - public boolean onTimelineRefreshed(PreloadMediaSource mediaSource) { - onTimelineRefreshedCalled.set(true); + public boolean onSourcePrepared(PreloadMediaSource mediaSource) { + onSourcePreparedCalled.set(true); return true; } @Override - public boolean onPrepared(PreloadMediaSource mediaSource) { + public boolean onTracksSelected(PreloadMediaSource mediaSource) { return true; } @@ -1020,19 +990,14 @@ public final class PreloadMediaSourceTest { .build()); AtomicBoolean externalCallerSourceInfoRefreshedCalled = new AtomicBoolean(); MediaSource.MediaSourceCaller externalCaller = - new MediaSource.MediaSourceCaller() { - @Override - public void onSourceInfoRefreshed(MediaSource source, Timeline timeline) { - externalCallerSourceInfoRefreshedCalled.set(true); - } - }; + (source, timeline) -> externalCallerSourceInfoRefreshedCalled.set(true); preloadMediaSource.preload(/* startPositionUs= */ 0L); shadowOf(Looper.getMainLooper()).idle(); preloadMediaSource.prepareSource( externalCaller, bandwidthMeter.getTransferListener(), PlayerId.UNSET); preloadMediaSource.releaseSource(externalCaller); - assertThat(onTimelineRefreshedCalled.get()).isTrue(); + assertThat(onSourcePreparedCalled.get()).isTrue(); assertThat(externalCallerSourceInfoRefreshedCalled.get()).isTrue(); MediaSource internalSource = internalSourceReference.get(); assertThat(internalSource).isNotNull(); @@ -1045,12 +1010,12 @@ public final class PreloadMediaSourceTest { PreloadMediaSource.PreloadControl preloadControl = new PreloadMediaSource.PreloadControl() { @Override - public boolean onTimelineRefreshed(PreloadMediaSource mediaSource) { + public boolean onSourcePrepared(PreloadMediaSource mediaSource) { return false; } @Override - public boolean onPrepared(PreloadMediaSource mediaSource) { + public boolean onTracksSelected(PreloadMediaSource mediaSource) { return false; } @@ -1102,19 +1067,9 @@ public final class PreloadMediaSourceTest { AtomicBoolean externalCaller1SourceInfoRefreshedCalled = new AtomicBoolean(); AtomicBoolean externalCaller2SourceInfoRefreshedCalled = new AtomicBoolean(); MediaSource.MediaSourceCaller externalCaller1 = - new MediaSource.MediaSourceCaller() { - @Override - public void onSourceInfoRefreshed(MediaSource source, Timeline timeline) { - externalCaller1SourceInfoRefreshedCalled.set(true); - } - }; + (source, timeline) -> externalCaller1SourceInfoRefreshedCalled.set(true); MediaSource.MediaSourceCaller externalCaller2 = - new MediaSource.MediaSourceCaller() { - @Override - public void onSourceInfoRefreshed(MediaSource source, Timeline timeline) { - externalCaller2SourceInfoRefreshedCalled.set(true); - } - }; + (source, timeline) -> externalCaller2SourceInfoRefreshedCalled.set(true); preloadMediaSource.prepareSource( externalCaller1, bandwidthMeter.getTransferListener(), PlayerId.UNSET); preloadMediaSource.prepareSource( @@ -1131,17 +1086,17 @@ public final class PreloadMediaSourceTest { @Test public void releasePreloadMediaSource_notUsedByExternalCallers_releaseInternalSource() { - AtomicBoolean onTimelineRefreshedCalled = new AtomicBoolean(false); + AtomicBoolean onSourcePreparedCalled = new AtomicBoolean(false); PreloadMediaSource.PreloadControl preloadControl = new PreloadMediaSource.PreloadControl() { @Override - public boolean onTimelineRefreshed(PreloadMediaSource mediaSource) { - onTimelineRefreshedCalled.set(true); + public boolean onSourcePrepared(PreloadMediaSource mediaSource) { + onSourcePreparedCalled.set(true); return false; } @Override - public boolean onPrepared(PreloadMediaSource mediaSource) { + public boolean onTracksSelected(PreloadMediaSource mediaSource) { return false; } @@ -1195,7 +1150,7 @@ public final class PreloadMediaSourceTest { preloadMediaSource.releasePreloadMediaSource(); shadowOf(Looper.getMainLooper()).idle(); - assertThat(onTimelineRefreshedCalled.get()).isTrue(); + assertThat(onSourcePreparedCalled.get()).isTrue(); MediaSource internalSource = internalSourceReference.get(); assertThat(internalSource).isNotNull(); verify(internalSource).releaseSource(any()); @@ -1203,17 +1158,17 @@ public final class PreloadMediaSourceTest { @Test public void releasePreloadMediaSource_stillUsedByExternalCallers_releaseInternalSource() { - AtomicBoolean onTimelineRefreshedCalled = new AtomicBoolean(false); + AtomicBoolean onSourcePreparedCalled = new AtomicBoolean(false); PreloadMediaSource.PreloadControl preloadControl = new PreloadMediaSource.PreloadControl() { @Override - public boolean onTimelineRefreshed(PreloadMediaSource mediaSource) { - onTimelineRefreshedCalled.set(true); + public boolean onSourcePrepared(PreloadMediaSource mediaSource) { + onSourcePreparedCalled.set(true); return false; } @Override - public boolean onPrepared(PreloadMediaSource mediaSource) { + public boolean onTracksSelected(PreloadMediaSource mediaSource) { return false; } @@ -1264,12 +1219,7 @@ public final class PreloadMediaSourceTest { .build()); AtomicBoolean externalCallerSourceInfoRefreshedCalled = new AtomicBoolean(); MediaSource.MediaSourceCaller externalCaller = - new MediaSource.MediaSourceCaller() { - @Override - public void onSourceInfoRefreshed(MediaSource source, Timeline timeline) { - externalCallerSourceInfoRefreshedCalled.set(true); - } - }; + (source, timeline) -> externalCallerSourceInfoRefreshedCalled.set(true); preloadMediaSource.preload(/* startPositionUs= */ 0L); shadowOf(Looper.getMainLooper()).idle(); preloadMediaSource.prepareSource( @@ -1278,7 +1228,7 @@ public final class PreloadMediaSourceTest { preloadMediaSource.releasePreloadMediaSource(); shadowOf(Looper.getMainLooper()).idle(); - assertThat(onTimelineRefreshedCalled.get()).isTrue(); + assertThat(onSourcePreparedCalled.get()).isTrue(); assertThat(externalCallerSourceInfoRefreshedCalled.get()).isTrue(); MediaSource internalSource = internalSourceReference.get(); assertThat(internalSource).isNotNull();