From 12072f72483fe666a78b153ef81a6368680b5e78 Mon Sep 17 00:00:00 2001 From: ibaker Date: Thu, 13 Feb 2025 06:35:42 -0800 Subject: [PATCH] Rename `TestPlayerRunHelper.run(...)` to `advance(...)` This avoids a clash with the `run` keyword in Kotlin. PiperOrigin-RevId: 726461032 --- .../media3/exoplayer/ExoPlayerTest.java | 92 ++++----- .../ExoPlayerWithPrewarmingRenderersTest.java | 186 +++++++++--------- .../DefaultAnalyticsCollectorTest.java | 42 ++-- .../audio/AudioCapabilitiesEndToEndTest.java | 6 +- .../e2etest/MergingPlaylistPlaybackTest.java | 6 +- .../e2etest/PlaylistPlaybackTest.java | 10 +- .../PrewarmingRendererPlaybackTest.java | 4 +- .../e2etest/SubtitlePlaybackTest.java | 38 ++-- .../exoplayer/e2etest/WebvttPlaybackTest.java | 18 +- .../ServerSideAdInsertionMediaSourceTest.java | 4 +- .../dash/e2etest/DashPlaybackTest.java | 46 ++--- .../hls/e2etest/HlsPlaybackTest.java | 34 ++-- ...aServerSideAdInsertionMediaSourceTest.java | 6 +- .../robolectric/TestPlayerRunHelper.java | 78 +++++--- .../CompositionPlayerAudioPlaybackTest.java | 18 +- .../transformer/CompositionPlayerTest.java | 4 +- 16 files changed, 308 insertions(+), 284 deletions(-) diff --git a/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/ExoPlayerTest.java b/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/ExoPlayerTest.java index 385440904d..7c8520a82b 100644 --- a/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/ExoPlayerTest.java +++ b/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/ExoPlayerTest.java @@ -58,10 +58,10 @@ import static androidx.media3.test.utils.FakeTimeline.TimelineWindowDefinition.D import static androidx.media3.test.utils.TestUtil.assertTimelinesSame; import static androidx.media3.test.utils.TestUtil.timelinesAreSame; import static androidx.media3.test.utils.robolectric.RobolectricUtil.runMainLooperUntil; +import static androidx.media3.test.utils.robolectric.TestPlayerRunHelper.advance; import static androidx.media3.test.utils.robolectric.TestPlayerRunHelper.play; import static androidx.media3.test.utils.robolectric.TestPlayerRunHelper.playUntilPosition; import static androidx.media3.test.utils.robolectric.TestPlayerRunHelper.playUntilStartOfMediaItem; -import static androidx.media3.test.utils.robolectric.TestPlayerRunHelper.run; import static androidx.media3.test.utils.robolectric.TestPlayerRunHelper.runUntilError; import static androidx.media3.test.utils.robolectric.TestPlayerRunHelper.runUntilPendingCommandsAreFullyHandled; import static androidx.media3.test.utils.robolectric.TestPlayerRunHelper.runUntilPlayWhenReady; @@ -4465,7 +4465,7 @@ public class ExoPlayerTest { .getLastAudioFocusRequest() .listener .onAudioFocusChange(AudioManager.AUDIOFOCUS_LOSS); - run(player).untilPendingCommandsAreFullyHandled(); + advance(player).untilPendingCommandsAreFullyHandled(); boolean playWhenReady = player.getPlayWhenReady(); @Player.PlaybackSuppressionReason int suppressionReason = player.getPlaybackSuppressionReason(); player.release(); @@ -4501,14 +4501,14 @@ public class ExoPlayerTest { .getLastAudioFocusRequest() .listener .onAudioFocusChange(AudioManager.AUDIOFOCUS_LOSS_TRANSIENT); - run(player).untilPendingCommandsAreFullyHandled(); + advance(player).untilPendingCommandsAreFullyHandled(); boolean playWhenReady = player.getPlayWhenReady(); @Player.PlaybackSuppressionReason int suppressionReason = player.getPlaybackSuppressionReason(); shadowOf(audioManager) .getLastAudioFocusRequest() .listener .onAudioFocusChange(AudioManager.AUDIOFOCUS_GAIN); - run(player).untilPendingCommandsAreFullyHandled(); + advance(player).untilPendingCommandsAreFullyHandled(); boolean playWhenReadyAfterGain = player.getPlayWhenReady(); @Player.PlaybackSuppressionReason int suppressionReasonAfterGain = player.getPlaybackSuppressionReason(); @@ -4553,7 +4553,7 @@ public class ExoPlayerTest { .getLastAudioFocusRequest() .listener .onAudioFocusChange(AudioManager.AUDIOFOCUS_LOSS_TRANSIENT); - run(player).untilPendingCommandsAreFullyHandled(); + advance(player).untilPendingCommandsAreFullyHandled(); player.pause(); boolean playWhenReady = player.getPlayWhenReady(); @Player.PlaybackSuppressionReason int suppressionReason = player.getPlaybackSuppressionReason(); @@ -4610,7 +4610,7 @@ public class ExoPlayerTest { .getLastAudioFocusRequest() .listener .onAudioFocusChange(AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK); - run(player).untilPendingCommandsAreFullyHandled(); + advance(player).untilPendingCommandsAreFullyHandled(); boolean playWhenReady = player.getPlayWhenReady(); @Player.PlaybackSuppressionReason int suppressionReason = player.getPlaybackSuppressionReason(); player.release(); @@ -4644,7 +4644,7 @@ public class ExoPlayerTest { .getLastAudioFocusRequest() .listener .onAudioFocusChange(AudioManager.AUDIOFOCUS_LOSS); - run(player).untilPendingCommandsAreFullyHandled(); + advance(player).untilPendingCommandsAreFullyHandled(); boolean playWhenReady = player.getPlayWhenReady(); @Player.PlaybackSuppressionReason int suppressionReason = player.getPlaybackSuppressionReason(); player.release(); @@ -4684,14 +4684,14 @@ public class ExoPlayerTest { .getLastAudioFocusRequest() .listener .onAudioFocusChange(AudioManager.AUDIOFOCUS_LOSS_TRANSIENT); - run(player).untilPendingCommandsAreFullyHandled(); + advance(player).untilPendingCommandsAreFullyHandled(); boolean playWhenReady = player.getPlayWhenReady(); @Player.PlaybackSuppressionReason int suppressionReason = player.getPlaybackSuppressionReason(); shadowOf(audioManager) .getLastAudioFocusRequest() .listener .onAudioFocusChange(AudioManager.AUDIOFOCUS_GAIN); - run(player).untilPendingCommandsAreFullyHandled(); + advance(player).untilPendingCommandsAreFullyHandled(); boolean playWhenReadyAfterGain = player.getPlayWhenReady(); @Player.PlaybackSuppressionReason int suppressionReasonAfterGain = player.getPlaybackSuppressionReason(); @@ -4740,7 +4740,7 @@ public class ExoPlayerTest { .getLastAudioFocusRequest() .listener .onAudioFocusChange(AudioManager.AUDIOFOCUS_LOSS_TRANSIENT); - run(player).untilPendingCommandsAreFullyHandled(); + advance(player).untilPendingCommandsAreFullyHandled(); player.play(); boolean playWhenReady = player.getPlayWhenReady(); @Player.PlaybackSuppressionReason int suppressionReason = player.getPlaybackSuppressionReason(); @@ -4803,7 +4803,7 @@ public class ExoPlayerTest { .getLastAudioFocusRequest() .listener .onAudioFocusChange(AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK); - run(player).untilPendingCommandsAreFullyHandled(); + advance(player).untilPendingCommandsAreFullyHandled(); boolean playWhenReady = player.getPlayWhenReady(); @Player.PlaybackSuppressionReason int suppressionReason = player.getPlaybackSuppressionReason(); player.release(); @@ -7278,7 +7278,7 @@ public class ExoPlayerTest { player.setMediaSource(mediaSource); player.prepare(); - run(player).untilPendingCommandsAreFullyHandled(); + advance(player).untilPendingCommandsAreFullyHandled(); assertThat(createdMediaPeriodIds).hasSize(2); player.setRepeatMode(Player.REPEAT_MODE_OFF); @@ -7384,7 +7384,7 @@ public class ExoPlayerTest { player.setMediaSources(ImmutableList.of(mediaSource1, mediaSource2)); player.prepare(); - run(player).untilPendingCommandsAreFullyHandled(); + advance(player).untilPendingCommandsAreFullyHandled(); // Assert both media periods are created, prepared and loaded when paused after preparation. assertThat(createdMediaPeriodIds) @@ -7492,7 +7492,7 @@ public class ExoPlayerTest { player.setMediaSources(ImmutableList.of(mediaSource1, mediaSource2)); player.prepare(); - run(player).untilPendingCommandsAreFullyHandled(); + advance(player).untilPendingCommandsAreFullyHandled(); // Assert the media period of the second source isn't created yet. assertThat(createdMediaPeriodIds).containsExactly(firstMediaPeriodId); @@ -11305,9 +11305,9 @@ public class ExoPlayerTest { player.play(); runUntilPlaybackState(player, Player.STATE_READY); - run(player).untilBackgroundThreadCondition(() -> clock.currentTimeMillis() >= 500); + advance(player).untilBackgroundThreadCondition(() -> clock.currentTimeMillis() >= 500); renderCounter.set(0); - run(player).untilBackgroundThreadCondition(() -> clock.currentTimeMillis() >= 800); + advance(player).untilBackgroundThreadCondition(() -> clock.currentTimeMillis() >= 800); assertThat(renderCounter.get()).isEqualTo(2); @@ -11329,9 +11329,9 @@ public class ExoPlayerTest { player.play(); runUntilPlaybackState(player, Player.STATE_READY); - run(player).untilBackgroundThreadCondition(() -> clock.currentTimeMillis() >= 500); + advance(player).untilBackgroundThreadCondition(() -> clock.currentTimeMillis() >= 500); renderCounter.set(0); - run(player).untilBackgroundThreadCondition(() -> clock.currentTimeMillis() >= 800); + advance(player).untilBackgroundThreadCondition(() -> clock.currentTimeMillis() >= 800); assertThat(renderCounter.get()).isEqualTo(30); @@ -11365,9 +11365,9 @@ public class ExoPlayerTest { player.play(); runUntilPlaybackState(player, Player.STATE_READY); - run(player).untilBackgroundThreadCondition(() -> clock.currentTimeMillis() >= 500); + advance(player).untilBackgroundThreadCondition(() -> clock.currentTimeMillis() >= 500); renderCounter.set(0); - run(player).untilBackgroundThreadCondition(() -> clock.currentTimeMillis() >= 800); + advance(player).untilBackgroundThreadCondition(() -> clock.currentTimeMillis() >= 800); assertThat(renderCounter.get()).isEqualTo(10); @@ -11392,9 +11392,9 @@ public class ExoPlayerTest { new FakeMediaSource(new FakeTimeline(), ExoPlayerTestRunner.AUDIO_FORMAT)); player.prepare(); - run(player).untilBackgroundThreadCondition(() -> clock.currentTimeMillis() >= 1000); + advance(player).untilBackgroundThreadCondition(() -> clock.currentTimeMillis() >= 1000); renderCounter.set(0); - run(player).untilBackgroundThreadCondition(() -> clock.currentTimeMillis() >= 3000); + advance(player).untilBackgroundThreadCondition(() -> clock.currentTimeMillis() >= 3000); assertThat(renderCounter.get()).isEqualTo(2); @@ -11432,9 +11432,9 @@ public class ExoPlayerTest { player.play(); runUntilPlaybackState(player, Player.STATE_BUFFERING); - run(player).untilBackgroundThreadCondition(() -> clock.currentTimeMillis() >= 200); + advance(player).untilBackgroundThreadCondition(() -> clock.currentTimeMillis() >= 200); renderCounter.set(0); - run(player).untilBackgroundThreadCondition(() -> clock.currentTimeMillis() >= 500); + advance(player).untilBackgroundThreadCondition(() -> clock.currentTimeMillis() >= 500); assertThat(renderCounter.get()).isEqualTo(30); @@ -14188,7 +14188,7 @@ public class ExoPlayerTest { .setDeviceVolumeControlEnabled(true)) .build(); Player.Listener listener = mock(Player.Listener.class); - run(player).untilPendingCommandsAreFullyHandled(); + advance(player).untilPendingCommandsAreFullyHandled(); int deviceVolume = player.getDeviceVolume(); int noVolumeFlags = 0; @@ -14537,8 +14537,8 @@ public class ExoPlayerTest { @Renderer.State int videoState1 = videoRenderer.getState(); @Renderer.State int audioState1 = audioRenderer.getState(); // Play until we reached the start of the second item. - run(player).untilBackgroundThreadCondition(() -> player.getCurrentMediaItemIndex() == 1); - run(player).untilPendingCommandsAreFullyHandled(); + advance(player).untilBackgroundThreadCondition(() -> player.getCurrentMediaItemIndex() == 1); + advance(player).untilPendingCommandsAreFullyHandled(); @Renderer.State int videoState2 = videoRenderer.getState(); @Renderer.State int audioState2 = audioRenderer.getState(); player.release(); @@ -14569,17 +14569,17 @@ public class ExoPlayerTest { play(player).untilBackgroundThreadCondition(() -> player.getCurrentPosition() >= 5000); // Pause in this "Read Ahead" state. player.pause(); - run(player).untilPendingCommandsAreFullyHandled(); + advance(player).untilPendingCommandsAreFullyHandled(); @Renderer.State int videoState1 = videoRenderer.getState(); @Renderer.State int audioState1 = audioRenderer.getState(); // Play in this "Read Ahead" state. player.play(); - run(player).untilPendingCommandsAreFullyHandled(); + advance(player).untilPendingCommandsAreFullyHandled(); @Renderer.State int videoState2 = videoRenderer.getState(); @Renderer.State int audioState2 = audioRenderer.getState(); // Play until the start of the second item. - run(player).untilBackgroundThreadCondition(() -> player.getCurrentMediaItemIndex() == 1); - run(player).untilPendingCommandsAreFullyHandled(); + advance(player).untilBackgroundThreadCondition(() -> player.getCurrentMediaItemIndex() == 1); + advance(player).untilPendingCommandsAreFullyHandled(); @Renderer.State int videoState3 = videoRenderer.getState(); @Renderer.State int audioState3 = audioRenderer.getState(); player.release(); @@ -16015,7 +16015,7 @@ public class ExoPlayerTest { (format, mediaPeriodId) -> ImmutableList.of(), ExoPlayerTestRunner.VIDEO_FORMAT)); player.prepare(); - run(player).untilPendingCommandsAreFullyHandled(); + advance(player).untilPendingCommandsAreFullyHandled(); priorityTaskManager.add(C.PRIORITY_PLAYBACK + 1); // Higher priority than playback. boolean canProcessOtherTask = priorityTaskManager.proceedNonBlocking(C.PRIORITY_PLAYBACK + 1); @@ -16045,7 +16045,7 @@ public class ExoPlayerTest { (format, mediaPeriodId) -> ImmutableList.of(), ExoPlayerTestRunner.VIDEO_FORMAT)); player.prepare(); - run(player).untilPendingCommandsAreFullyHandled(); + advance(player).untilPendingCommandsAreFullyHandled(); priorityTaskManager.add(C.PRIORITY_PLAYBACK - 1); // Lower priority than playback. boolean canProcessOtherTask = priorityTaskManager.proceedNonBlocking(C.PRIORITY_PLAYBACK + 1); @@ -16078,7 +16078,7 @@ public class ExoPlayerTest { .build(); player.setPriority(C.PRIORITY_DOWNLOAD); - run(player).untilPendingCommandsAreFullyHandled(); + advance(player).untilPendingCommandsAreFullyHandled(); player.release(); // Assert default setting and updated setting arrived in the renderer. @@ -16099,10 +16099,10 @@ public class ExoPlayerTest { FakeMediaSource fakeMediaSource = new FakeMediaSource(timeline1); player.setMediaSources(ImmutableList.of(fakeMediaSource, new FakeMediaSource())); player.prepare(); - run(player).untilState(Player.STATE_READY); + advance(player).untilState(Player.STATE_READY); fakeMediaSource.setNewSourceInfo(timeline2); - run(player).untilTimelineChanges(); + advance(player).untilTimelineChanges(); int windowIndexAfterUpdate = player.getCurrentMediaItemIndex(); player.release(); @@ -16136,10 +16136,10 @@ public class ExoPlayerTest { FakeMediaSource liveSource = new FakeMediaSource(liveTimeline1); player.setMediaSources(ImmutableList.of(liveSource, new FakeMediaSource())); player.prepare(); - run(player).untilState(Player.STATE_READY); + advance(player).untilState(Player.STATE_READY); liveSource.setNewSourceInfo(liveTimeline2); - run(player).untilTimelineChanges(); + advance(player).untilTimelineChanges(); int windowIndexAfterUpdate = player.getCurrentMediaItemIndex(); player.release(); @@ -16175,20 +16175,20 @@ public class ExoPlayerTest { player.setMediaSources(ImmutableList.of(liveSource, new FakeMediaSource())); player.prepare(); - run(player).untilState(Player.STATE_READY); + advance(player).untilState(Player.STATE_READY); player .createMessage( (message, payload) -> { throw new IllegalStateException(); }) .send(); - run(player).untilPlayerError(); + advance(player).untilPlayerError(); liveSource.setNewSourceInfo(liveTimeline2); liveSource.setAllowPreparation(false); // Lazily update timeline to simulate new manifest load player.prepare(); - run(player).untilPendingCommandsAreFullyHandled(); + advance(player).untilPendingCommandsAreFullyHandled(); liveSource.setAllowPreparation(true); - run(player).untilState(Player.STATE_READY); + advance(player).untilState(Player.STATE_READY); int mediaItemIndexAfterReprepare = player.getCurrentMediaItemIndex(); player.release(); @@ -16257,10 +16257,10 @@ public class ExoPlayerTest { player.setPlayWhenReady(true); player.prepare(); - run(player).untilState(Player.STATE_READY); + advance(player).untilState(Player.STATE_READY); player.setPlayWhenReady(false); player.setPlayWhenReady(true); - run(player).untilPendingCommandsAreFullyHandled(); + advance(player).untilPendingCommandsAreFullyHandled(); player.release(); assertThat(reportedPlayWhenReadyChanges).containsExactly(true, false, true).inOrder(); @@ -16293,10 +16293,10 @@ public class ExoPlayerTest { player.setPlaybackSpeed(2f); player.prepare(); - run(player).untilState(Player.STATE_READY); + advance(player).untilState(Player.STATE_READY); player.setPlaybackSpeed(1.5f); player.setPlaybackSpeed(1f); - run(player).untilPendingCommandsAreFullyHandled(); + advance(player).untilPendingCommandsAreFullyHandled(); player.release(); assertThat(reportedSpeedChanges).containsExactly(2f, 1.5f, 1f).inOrder(); diff --git a/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/ExoPlayerWithPrewarmingRenderersTest.java b/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/ExoPlayerWithPrewarmingRenderersTest.java index 4b6f14a085..52e794cb27 100644 --- a/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/ExoPlayerWithPrewarmingRenderersTest.java +++ b/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/ExoPlayerWithPrewarmingRenderersTest.java @@ -18,7 +18,7 @@ package androidx.media3.exoplayer; import static androidx.media3.common.Player.REPEAT_MODE_ONE; import static androidx.media3.test.utils.FakeSampleStream.FakeSampleStreamItem.END_OF_STREAM_ITEM; import static androidx.media3.test.utils.FakeSampleStream.FakeSampleStreamItem.oneByteSample; -import static androidx.media3.test.utils.robolectric.TestPlayerRunHelper.run; +import static androidx.media3.test.utils.robolectric.TestPlayerRunHelper.advance; import static androidx.media3.test.utils.robolectric.TestPlayerRunHelper.runUntilError; import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.any; @@ -114,13 +114,13 @@ public class ExoPlayerWithPrewarmingRenderersTest { // Play a bit until the second renderer is being pre-warmed. player.play(); - run(player) + advance(player) .untilBackgroundThreadCondition( () -> secondaryVideoRenderer.getState() == Renderer.STATE_ENABLED); @Renderer.State int videoState1 = videoRenderer.getState(); @Renderer.State int secondaryVideoState1 = secondaryVideoRenderer.getState(); // Play until second item is started. - run(player) + advance(player) .untilBackgroundThreadCondition( () -> secondaryVideoRenderer.getState() == Renderer.STATE_STARTED); @Renderer.State int videoState2 = videoRenderer.getState(); @@ -162,18 +162,18 @@ public class ExoPlayerWithPrewarmingRenderersTest { // Play a bit until the secondary renderer is being pre-warmed. player.play(); - run(player) + advance(player) .untilBackgroundThreadCondition( () -> secondaryVideoRenderer.getState() == Renderer.STATE_ENABLED); @Renderer.State int videoState1 = videoRenderer.getState(); @Renderer.State int secondaryVideoState1 = secondaryVideoRenderer.getState(); // Play until until the primary renderer is being pre-warmed. - run(player) + advance(player) .untilBackgroundThreadCondition(() -> videoRenderer.getState() == Renderer.STATE_ENABLED); @Renderer.State int videoState2 = videoRenderer.getState(); @Renderer.State int secondaryVideoState2 = secondaryVideoRenderer.getState(); // Play until past transition back to primary renderer for third media item. - run(player) + advance(player) .untilBackgroundThreadCondition(() -> videoRenderer.getState() == Renderer.STATE_STARTED); @Renderer.State int videoState3 = videoRenderer.getState(); @Renderer.State int secondaryVideoState3 = secondaryVideoRenderer.getState(); @@ -210,7 +210,7 @@ public class ExoPlayerWithPrewarmingRenderersTest { player.prepare(); // Advance media periods until secondary renderer is being pre-warmed. - run(player) + advance(player) .untilBackgroundThreadCondition( () -> secondaryVideoRenderer.getState() == Renderer.STATE_ENABLED); @Renderer.State int secondaryVideoState = secondaryVideoRenderer.getState(); @@ -251,19 +251,19 @@ public class ExoPlayerWithPrewarmingRenderersTest { // Play a bit until the primary renderer has been enabled, but not yet started. player.play(); - run(player) + advance(player) .untilBackgroundThreadCondition( () -> secondaryVideoRenderer.getState() == Renderer.STATE_STARTED); - run(player) + advance(player) .untilBackgroundThreadCondition(() -> videoRenderer.getState() == Renderer.STATE_ENABLED); @Renderer.State int videoState1 = videoRenderer.getState(); @Renderer.State int secondaryVideoState1 = secondaryVideoRenderer.getState(); player.pause(); - run(player).untilPendingCommandsAreFullyHandled(); + advance(player).untilPendingCommandsAreFullyHandled(); @Renderer.State int videoState2 = videoRenderer.getState(); @Renderer.State int secondaryVideoState2 = secondaryVideoRenderer.getState(); player.play(); - run(player) + advance(player) .untilBackgroundThreadCondition( () -> secondaryVideoRenderer.getState() == Renderer.STATE_STARTED); @Renderer.State int videoState3 = videoRenderer.getState(); @@ -302,16 +302,16 @@ public class ExoPlayerWithPrewarmingRenderersTest { player.prepare(); // Play a bit until the primary renderer has been enabled, but not yet started. - run(player).untilState(Player.STATE_READY); + advance(player).untilState(Player.STATE_READY); player.play(); - run(player).untilPendingCommandsAreFullyHandled(); + advance(player).untilPendingCommandsAreFullyHandled(); @Renderer.State int videoState1 = videoRenderer.getState(); @Renderer.State int secondaryVideoState1 = secondaryVideoRenderer.getState(); player.pause(); - run(player).untilPendingCommandsAreFullyHandled(); + advance(player).untilPendingCommandsAreFullyHandled(); @Renderer.State int videoState2 = videoRenderer.getState(); player.play(); - run(player).untilPendingCommandsAreFullyHandled(); + advance(player).untilPendingCommandsAreFullyHandled(); @Renderer.State int videoState3 = videoRenderer.getState(); player.release(); @@ -349,10 +349,10 @@ public class ExoPlayerWithPrewarmingRenderersTest { // Play a bit until the primary renderer is being prewarmed, but not yet started. player.play(); - run(player) + advance(player) .untilBackgroundThreadCondition( () -> secondaryVideoRenderer.getState() == Renderer.STATE_STARTED); - run(player) + advance(player) .untilBackgroundThreadCondition(() -> videoRenderer.getState() == Renderer.STATE_ENABLED); @Renderer.State int videoState1 = videoRenderer.getState(); @Renderer.State int secondaryVideoState1 = secondaryVideoRenderer.getState(); @@ -363,8 +363,8 @@ public class ExoPlayerWithPrewarmingRenderersTest { .buildUpon() .setTrackTypeDisabled(C.TRACK_TYPE_AUDIO, true) .build()); - run(player).untilPendingCommandsAreFullyHandled(); - run(player) + advance(player).untilPendingCommandsAreFullyHandled(); + advance(player) .untilBackgroundThreadCondition(() -> videoRenderer.getState() == Renderer.STATE_ENABLED); @Renderer.State int videoState2 = videoRenderer.getState(); @Renderer.State int secondaryVideoState2 = secondaryVideoRenderer.getState(); @@ -409,9 +409,9 @@ public class ExoPlayerWithPrewarmingRenderersTest { player.prepare(); // Play a bit until the primary renderer is being pre-warmed, but not yet started. - run(player).untilState(Player.STATE_READY); + advance(player).untilState(Player.STATE_READY); player.play(); - run(player).untilPendingCommandsAreFullyHandled(); + advance(player).untilPendingCommandsAreFullyHandled(); @Renderer.State int videoState1 = videoRenderer.getState(); @Renderer.State int secondaryVideoState1 = secondaryVideoRenderer.getState(); SampleStream sampleStream1 = videoRenderer.getStream(); @@ -422,11 +422,11 @@ public class ExoPlayerWithPrewarmingRenderersTest { .buildUpon() .setMaxVideoBitrate(videoFormat1.averageBitrate) .build()); - run(player).untilPendingCommandsAreFullyHandled(); - run(player) + advance(player).untilPendingCommandsAreFullyHandled(); + advance(player) .untilBackgroundThreadCondition( () -> secondaryVideoRenderer.getState() == Renderer.STATE_ENABLED); - run(player).untilPendingCommandsAreFullyHandled(); + advance(player).untilPendingCommandsAreFullyHandled(); @Renderer.State int videoState2 = videoRenderer.getState(); @Renderer.State int secondaryVideoState2 = secondaryVideoRenderer.getState(); SampleStream sampleStream2 = videoRenderer.getStream(); @@ -466,9 +466,9 @@ public class ExoPlayerWithPrewarmingRenderersTest { player.prepare(); // Play until the second renderer has been enabled and reading period has not advanced. - run(player).untilState(Player.STATE_READY); + advance(player).untilState(Player.STATE_READY); player.play(); - run(player).untilPendingCommandsAreFullyHandled(); + advance(player).untilPendingCommandsAreFullyHandled(); @Renderer.State int videoState1 = videoRenderer.getState(); @Renderer.State int secondaryVideoState1 = secondaryVideoRenderer.getState(); SampleStream videoStream1 = videoRenderer.getStream(); @@ -480,10 +480,10 @@ public class ExoPlayerWithPrewarmingRenderersTest { .buildUpon() .setMaxVideoBitrate(videoFormat2.averageBitrate) .build()); - run(player) + advance(player) .untilBackgroundThreadCondition( () -> secondaryVideoRenderer.getState() == Renderer.STATE_ENABLED); - run(player).untilPendingCommandsAreFullyHandled(); + advance(player).untilPendingCommandsAreFullyHandled(); SampleStream videoStream2 = videoRenderer.getStream(); SampleStream secondaryVideoStream2 = secondaryVideoRenderer.getStream(); player.release(); @@ -521,9 +521,9 @@ public class ExoPlayerWithPrewarmingRenderersTest { player.prepare(); // Play until the second renderer has been enabled and reading period has not advanced. - run(player).untilState(Player.STATE_READY); + advance(player).untilState(Player.STATE_READY); player.play(); - run(player).untilPendingCommandsAreFullyHandled(); + advance(player).untilPendingCommandsAreFullyHandled(); @Renderer.State int videoState1 = videoRenderer.getState(); @Renderer.State int secondaryVideoState1 = secondaryVideoRenderer.getState(); SampleStream videoStream1 = videoRenderer.getStream(); @@ -534,7 +534,7 @@ public class ExoPlayerWithPrewarmingRenderersTest { .buildUpon() .setMaxVideoBitrate(videoFormat2.averageBitrate) .build()); - run(player).untilPendingCommandsAreFullyHandled(); + advance(player).untilPendingCommandsAreFullyHandled(); SampleStream videoStream2 = videoRenderer.getStream(); player.release(); @@ -598,14 +598,14 @@ public class ExoPlayerWithPrewarmingRenderersTest { // Play a bit until the final media source has been prepared and gone through track selection. player.play(); - run(player).untilBackgroundThreadCondition(() -> selectedAudioTrack.get() != null); + advance(player).untilBackgroundThreadCondition(() -> selectedAudioTrack.get() != null); @Renderer.State int videoState1 = videoRenderer.getState(); @Renderer.State int secondaryVideoState1 = secondaryVideoRenderer.getState(); SampleStream secondaryVideoStream1 = secondaryVideoRenderer.getStream(); // Disable the Audio track to trigger track reselection. player.setTrackSelectionParameters( player.getTrackSelectionParameters().buildUpon().setMaxAudioBitrate(60_000).build()); - run(player) + advance(player) .untilBackgroundThreadCondition(() -> audioRenderer.getState() == Renderer.STATE_DISABLED); @Renderer.State int videoState2 = videoRenderer.getState(); @Renderer.State int secondaryVideoState2 = secondaryVideoRenderer.getState(); @@ -647,7 +647,7 @@ public class ExoPlayerWithPrewarmingRenderersTest { // Play a bit until the second renderer is pre-warming. player.play(); - run(player) + advance(player) .untilBackgroundThreadCondition( () -> secondaryVideoRenderer.getState() == Renderer.STATE_ENABLED); @Renderer.State int videoState1 = videoRenderer.getState(); @@ -655,8 +655,8 @@ public class ExoPlayerWithPrewarmingRenderersTest { SampleStream secondaryVideoStream1 = secondaryVideoRenderer.getStream(); // Seek to position in current period. player.seekTo(/* mediaItemIndex= */ 0, /* positionMs= */ 3000); - run(player).untilPendingCommandsAreFullyHandled(); - run(player) + advance(player).untilPendingCommandsAreFullyHandled(); + advance(player) .untilBackgroundThreadCondition( () -> secondaryVideoRenderer.getState() == Renderer.STATE_ENABLED); @Renderer.State int videoState2 = videoRenderer.getState(); @@ -697,15 +697,15 @@ public class ExoPlayerWithPrewarmingRenderersTest { player.prepare(); // Play a bit until the second renderer is started. - run(player).untilStartOfMediaItem(/* mediaItemIndex= */ 1); - run(player).untilPendingCommandsAreFullyHandled(); + advance(player).untilStartOfMediaItem(/* mediaItemIndex= */ 1); + advance(player).untilPendingCommandsAreFullyHandled(); @Renderer.State int videoState1 = videoRenderer.getState(); @Renderer.State int secondaryVideoState1 = secondaryVideoRenderer.getState(); SampleStream videoStream1 = videoRenderer.getStream(); // Seek to position in current period. player.seekTo(/* mediaItemIndex= */ 1, /* positionMs= */ 3000); - run(player).untilPendingCommandsAreFullyHandled(); - run(player) + advance(player).untilPendingCommandsAreFullyHandled(); + advance(player) .untilBackgroundThreadCondition(() -> videoRenderer.getState() == Renderer.STATE_ENABLED); SampleStream videoStream2 = videoRenderer.getStream(); @Renderer.State int videoState2 = videoRenderer.getState(); @@ -744,18 +744,18 @@ public class ExoPlayerWithPrewarmingRenderersTest { // Play a bit until the second renderer is started. player.play(); - run(player) + advance(player) .untilBackgroundThreadCondition( () -> secondaryVideoRenderer.getState() == Renderer.STATE_STARTED); - run(player) + advance(player) .untilBackgroundThreadCondition(() -> videoRenderer.getState() == Renderer.STATE_ENABLED); @Renderer.State int videoState1 = videoRenderer.getState(); @Renderer.State int secondaryVideoState1 = secondaryVideoRenderer.getState(); // Seek to position in current period. player.seekTo(/* mediaItemIndex= */ 1, /* positionMs= */ 500); - run(player).untilPendingCommandsAreFullyHandled(); + advance(player).untilPendingCommandsAreFullyHandled(); // Play until secondary renderer is being pre-warmed on third media item. - run(player) + advance(player) .untilBackgroundThreadCondition( () -> secondaryVideoRenderer.getState() == Renderer.STATE_ENABLED); @Renderer.State int videoState2 = videoRenderer.getState(); @@ -793,13 +793,13 @@ public class ExoPlayerWithPrewarmingRenderersTest { player.prepare(); // Play a bit until the second renderer is started. - run(player).untilStartOfMediaItem(/* mediaItemIndex= */ 1); - run(player).untilPendingCommandsAreFullyHandled(); + advance(player).untilStartOfMediaItem(/* mediaItemIndex= */ 1); + advance(player).untilPendingCommandsAreFullyHandled(); @Renderer.State int videoState1 = videoRenderer.getState(); @Renderer.State int secondaryVideoState1 = secondaryVideoRenderer.getState(); // Seek to position in following period. player.seekTo(/* mediaItemIndex= */ 2, /* positionMs= */ 3000); - run(player).untilPendingCommandsAreFullyHandled(); + advance(player).untilPendingCommandsAreFullyHandled(); @Renderer.State int videoState2 = videoRenderer.getState(); @Renderer.State int secondaryVideoState2 = secondaryVideoRenderer.getState(); player.release(); @@ -841,16 +841,16 @@ public class ExoPlayerWithPrewarmingRenderersTest { // Play a bit until the second renderer is started and primary is pre-warming. player.play(); - run(player) + advance(player) .untilBackgroundThreadCondition( () -> secondaryVideoRenderer.getState() == Renderer.STATE_STARTED); - run(player) + advance(player) .untilBackgroundThreadCondition(() -> videoRenderer.getState() == Renderer.STATE_ENABLED); @Renderer.State int videoState1 = videoRenderer.getState(); @Renderer.State int secondaryVideoState1 = secondaryVideoRenderer.getState(); // Remove the reading period. player.removeMediaItem(1); - run(player).untilPendingCommandsAreFullyHandled(); + advance(player).untilPendingCommandsAreFullyHandled(); @Renderer.State int videoState2 = videoRenderer.getState(); @Renderer.State int secondaryVideoState2 = secondaryVideoRenderer.getState(); player.release(); @@ -894,15 +894,15 @@ public class ExoPlayerWithPrewarmingRenderersTest { // Play a bit until the second renderer is started and primary is pre-warming. player.play(); - run(player) + advance(player) .untilBackgroundThreadCondition( () -> secondaryVideoRenderer.getState() == Renderer.STATE_STARTED); - run(player) + advance(player) .untilBackgroundThreadCondition(() -> videoRenderer.getState() == Renderer.STATE_ENABLED); @Renderer.State int videoState1 = videoRenderer.getState(); @Renderer.State int secondaryVideoState1 = secondaryVideoRenderer.getState(); player.removeMediaItem(1); - run(player).untilPendingCommandsAreFullyHandled(); + advance(player).untilPendingCommandsAreFullyHandled(); @Renderer.State int videoState2 = videoRenderer.getState(); @Renderer.State int secondaryVideoState2 = secondaryVideoRenderer.getState(); player.release(); @@ -946,17 +946,17 @@ public class ExoPlayerWithPrewarmingRenderersTest { // Play a bit until the second renderer is started and primary is pre-warming. player.play(); - run(player) + advance(player) .untilBackgroundThreadCondition( () -> secondaryVideoRenderer.getState() == Renderer.STATE_STARTED); - run(player) + advance(player) .untilBackgroundThreadCondition(() -> videoRenderer.getState() == Renderer.STATE_ENABLED); @Renderer.State int videoState1 = videoRenderer.getState(); @Renderer.State int secondaryVideoState1 = secondaryVideoRenderer.getState(); // Remove pre-warming media item. player.removeMediaItem(2); - run(player).untilPendingCommandsAreFullyHandled(); - run(player) + advance(player).untilPendingCommandsAreFullyHandled(); + advance(player) .untilBackgroundThreadCondition( () -> secondaryVideoRenderer.getState() == Renderer.STATE_ENABLED); @Renderer.State int videoState2 = videoRenderer.getState(); @@ -999,15 +999,15 @@ public class ExoPlayerWithPrewarmingRenderersTest { player.prepare(); // Play a bit until the second renderer is started. - run(player).untilStartOfMediaItem(/* mediaItemIndex= */ 1); - run(player).untilPendingCommandsAreFullyHandled(); + advance(player).untilStartOfMediaItem(/* mediaItemIndex= */ 1); + advance(player).untilPendingCommandsAreFullyHandled(); @Renderer.State int videoState1 = videoRenderer.getState(); @Renderer.State int secondaryVideoState1 = secondaryVideoRenderer.getState(); // Replace media item past pre-warming period. player.replaceMediaItem( 3, new FakeMediaSource(new FakeTimeline(), ExoPlayerTestRunner.VIDEO_FORMAT).getMediaItem()); - run(player).untilPendingCommandsAreFullyHandled(); + advance(player).untilPendingCommandsAreFullyHandled(); @Renderer.State int videoState2 = videoRenderer.getState(); @Renderer.State int secondaryVideoState2 = secondaryVideoRenderer.getState(); player.release(); @@ -1044,15 +1044,15 @@ public class ExoPlayerWithPrewarmingRenderersTest { player.prepare(); // Play a bit until the primary renderer is pre-warming. - run(player).untilStartOfMediaItem(/* mediaItemIndex= */ 1); - run(player).untilPendingCommandsAreFullyHandled(); + advance(player).untilStartOfMediaItem(/* mediaItemIndex= */ 1); + advance(player).untilPendingCommandsAreFullyHandled(); @Renderer.State int videoState1 = videoRenderer.getState(); @Renderer.State int secondaryVideoState1 = secondaryVideoRenderer.getState(); // Replace pre-warming media item. player.replaceMediaItem( 2, new FakeMediaSource(new FakeTimeline(), ExoPlayerTestRunner.VIDEO_FORMAT).getMediaItem()); - run(player).untilPendingCommandsAreFullyHandled(); + advance(player).untilPendingCommandsAreFullyHandled(); @Renderer.State int videoState2 = videoRenderer.getState(); @Renderer.State int secondaryVideoState2 = secondaryVideoRenderer.getState(); player.release(); @@ -1094,15 +1094,15 @@ public class ExoPlayerWithPrewarmingRenderersTest { // Play a bit until the second renderer is started and primary is pre-warming. player.play(); - run(player) + advance(player) .untilBackgroundThreadCondition( () -> secondaryVideoRenderer.getState() == Renderer.STATE_STARTED); - run(player) + advance(player) .untilBackgroundThreadCondition(() -> videoRenderer.getState() == Renderer.STATE_ENABLED); @Renderer.State int videoState1 = videoRenderer.getState(); @Renderer.State int secondaryVideoState1 = secondaryVideoRenderer.getState(); player.setRepeatMode(REPEAT_MODE_ONE); - run(player).untilPendingCommandsAreFullyHandled(); + advance(player).untilPendingCommandsAreFullyHandled(); @Renderer.State int videoState2 = videoRenderer.getState(); @Renderer.State int secondaryVideoState2 = secondaryVideoRenderer.getState(); player.release(); @@ -1140,9 +1140,9 @@ public class ExoPlayerWithPrewarmingRenderersTest { player.prepare(); // Play a bit until the second renderer is enabled and throws errors. - run(player).untilState(Player.STATE_READY); + advance(player).untilState(Player.STATE_READY); player.play(); - run(player).untilPendingCommandsAreFullyHandled(); + advance(player).untilPendingCommandsAreFullyHandled(); @Renderer.State int videoState = videoRenderer.getState(); @Renderer.State int secondaryVideoState = secondaryVideoRenderer.getState(); player.release(); @@ -1179,17 +1179,17 @@ public class ExoPlayerWithPrewarmingRenderersTest { player.prepare(); // Play a bit until the second renderer is enabled and throws error. - run(player).untilState(Player.STATE_READY); + advance(player).untilState(Player.STATE_READY); player.play(); - run(player).untilPendingCommandsAreFullyHandled(); + advance(player).untilPendingCommandsAreFullyHandled(); @Renderer.State int videoState1 = videoRenderer.getState(); @Renderer.State int secondaryVideoState1 = secondaryVideoRenderer.getState(); assertThat(attemptedRenderWithSecondaryRenderer.get()).isTrue(); attemptedRenderWithSecondaryRenderer.set(false); // Play a bit so that primary renderer is enabled on second media item. - run(player).untilStartOfMediaItem(/* mediaItemIndex= */ 1); - run(player).untilPendingCommandsAreFullyHandled(); + advance(player).untilStartOfMediaItem(/* mediaItemIndex= */ 1); + advance(player).untilPendingCommandsAreFullyHandled(); @Renderer.State int videoState2 = videoRenderer.getState(); @Renderer.State int secondaryVideoState2 = secondaryVideoRenderer.getState(); player.release(); @@ -1229,16 +1229,16 @@ public class ExoPlayerWithPrewarmingRenderersTest { player.prepare(); // Play a bit until the second renderer is enabled and throws error. - run(player).untilState(Player.STATE_READY); + advance(player).untilState(Player.STATE_READY); player.play(); - run(player).untilBackgroundThreadCondition(attemptedRenderWithSecondaryRenderer::get); + advance(player).untilBackgroundThreadCondition(attemptedRenderWithSecondaryRenderer::get); @Renderer.State int videoState1 = videoRenderer.getState(); @Renderer.State int secondaryVideoState1 = secondaryVideoRenderer.getState(); assertThat(attemptedRenderWithSecondaryRenderer.get()).isTrue(); shouldSecondaryRendererThrow.set(false); - run(player).untilStartOfMediaItem(/* mediaItemIndex= */ 1); - run(player).untilPendingCommandsAreFullyHandled(); + advance(player).untilStartOfMediaItem(/* mediaItemIndex= */ 1); + advance(player).untilPendingCommandsAreFullyHandled(); @Renderer.State int videoState2 = videoRenderer.getState(); @Renderer.State int secondaryVideoState2 = secondaryVideoRenderer.getState(); player.release(); @@ -1278,19 +1278,19 @@ public class ExoPlayerWithPrewarmingRenderersTest { player.prepare(); // Play a bit until the second renderer is started. - run(player).untilState(Player.STATE_READY); + advance(player).untilState(Player.STATE_READY); player.play(); - run(player).untilPendingCommandsAreFullyHandled(); + advance(player).untilPendingCommandsAreFullyHandled(); @Renderer.State int videoState1 = videoRenderer.getState(); @Renderer.State int secondaryVideoState1 = secondaryVideoRenderer.getState(); assertThat(attemptedRenderWithSecondaryRenderer.get()).isTrue(); - run(player).untilPosition(/* mediaItemIndex= */ 0, /* positionMs= */ 500); - run(player).untilPendingCommandsAreFullyHandled(); + advance(player).untilPosition(/* mediaItemIndex= */ 0, /* positionMs= */ 500); + advance(player).untilPendingCommandsAreFullyHandled(); @Renderer.State int videoState2 = videoRenderer.getState(); @Renderer.State int secondaryVideoState2 = secondaryVideoRenderer.getState(); shouldSecondaryRendererThrow.set(false); - run(player).untilPosition(/* mediaItemIndex= */ 1, /* positionMs= */ 500); - run(player).untilPendingCommandsAreFullyHandled(); + advance(player).untilPosition(/* mediaItemIndex= */ 1, /* positionMs= */ 500); + advance(player).untilPendingCommandsAreFullyHandled(); @Renderer.State int videoState3 = videoRenderer.getState(); @Renderer.State int secondaryVideoState3 = secondaryVideoRenderer.getState(); player.release(); @@ -1361,17 +1361,17 @@ public class ExoPlayerWithPrewarmingRenderersTest { // Play a bit until the second renderer is pre-warming. player.play(); - run(player) + advance(player) .untilBackgroundThreadCondition( () -> secondaryVideoRenderer.getState() == Renderer.STATE_ENABLED); @Renderer.State int videoState1 = videoRenderer.getState(); @Renderer.State int secondaryVideoState1 = secondaryVideoRenderer.getState(); - run(player) + advance(player) .untilBackgroundThreadCondition(() -> videoRenderer.getState() == Renderer.STATE_ENABLED); @Renderer.State int videoState2 = videoRenderer.getState(); @Renderer.State int secondaryVideoState2 = secondaryVideoRenderer.getState(); shouldPrimaryRendererThrow.set(true); - run(player) + advance(player) .untilBackgroundThreadCondition(() -> videoRenderer.getState() == Renderer.STATE_DISABLED); @Renderer.State int videoState3 = videoRenderer.getState(); @Renderer.State int secondaryVideoState3 = secondaryVideoRenderer.getState(); @@ -1442,22 +1442,22 @@ public class ExoPlayerWithPrewarmingRenderersTest { player.prepare(); // Play a bit until the second renderer is enabled. - run(player).untilState(Player.STATE_READY); + advance(player).untilState(Player.STATE_READY); player.play(); - run(player).untilPendingCommandsAreFullyHandled(); + advance(player).untilPendingCommandsAreFullyHandled(); @Renderer.State int videoState1 = videoRenderer.getState(); @Renderer.State int secondaryVideoState1 = secondaryVideoRenderer.getState(); // Force primary renderer to error, killing playback. shouldPrimaryRendererThrow.set(true); - run(player).untilPlayerError(); + advance(player).untilPlayerError(); @Renderer.State int videoState2 = videoRenderer.getState(); @Renderer.State int secondaryVideoState2 = secondaryVideoRenderer.getState(); // Restart playback with primary renderer functioning properly. shouldPrimaryRendererThrow.set(false); player.prepare(); player.play(); - run(player).untilPosition(/* mediaItemIndex= */ 0, /* positionMs= */ 500); - run(player).untilPendingCommandsAreFullyHandled(); + advance(player).untilPosition(/* mediaItemIndex= */ 0, /* positionMs= */ 500); + advance(player).untilPendingCommandsAreFullyHandled(); @Renderer.State int videoState3 = videoRenderer.getState(); @Renderer.State int secondaryVideoState3 = secondaryVideoRenderer.getState(); player.release(); @@ -1499,8 +1499,8 @@ public class ExoPlayerWithPrewarmingRenderersTest { player.prepare(); // Play a bit until on second media item and the primary renderer is pre-warming. - run(player).untilStartOfMediaItem(/* mediaItemIndex= */ 1); - run(player).untilPendingCommandsAreFullyHandled(); + advance(player).untilStartOfMediaItem(/* mediaItemIndex= */ 1); + advance(player).untilPendingCommandsAreFullyHandled(); @Renderer.State int videoState1 = videoRenderer.getState(); @Renderer.State int secondaryVideoState1 = secondaryVideoRenderer.getState(); // Force secondary renderer to error, killing playback. @@ -1510,7 +1510,7 @@ public class ExoPlayerWithPrewarmingRenderersTest { shouldSecondaryRendererThrow.set(false); player.prepare(); // Play until secondary renderer is pre-warming. - run(player) + advance(player) .untilBackgroundThreadCondition( () -> secondaryVideoRenderer.getState() == Renderer.STATE_ENABLED); @Renderer.State int videoState2 = videoRenderer.getState(); diff --git a/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/analytics/DefaultAnalyticsCollectorTest.java b/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/analytics/DefaultAnalyticsCollectorTest.java index 3ad11f5a4f..2f9bccd832 100644 --- a/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/analytics/DefaultAnalyticsCollectorTest.java +++ b/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/analytics/DefaultAnalyticsCollectorTest.java @@ -51,9 +51,9 @@ import static androidx.media3.exoplayer.analytics.AnalyticsListener.EVENT_VIDEO_ import static androidx.media3.test.utils.FakeSampleStream.FakeSampleStreamItem.END_OF_STREAM_ITEM; import static androidx.media3.test.utils.FakeSampleStream.FakeSampleStreamItem.oneByteSample; import static androidx.media3.test.utils.TestUtil.assertSubclassOverridesAllMethods; +import static androidx.media3.test.utils.robolectric.TestPlayerRunHelper.advance; import static androidx.media3.test.utils.robolectric.TestPlayerRunHelper.play; import static androidx.media3.test.utils.robolectric.TestPlayerRunHelper.playUntilPosition; -import static androidx.media3.test.utils.robolectric.TestPlayerRunHelper.run; import static androidx.media3.test.utils.robolectric.TestPlayerRunHelper.runUntilError; import static androidx.media3.test.utils.robolectric.TestPlayerRunHelper.runUntilIsLoading; import static androidx.media3.test.utils.robolectric.TestPlayerRunHelper.runUntilPlaybackState; @@ -472,10 +472,10 @@ public final class DefaultAnalyticsCollectorTest { player.setMediaSources(ImmutableList.of(mediaSource1, mediaSource2)); player.prepare(); // Wait until second period has fully loaded to assert loading events. - run(player).untilFullyBuffered(); + advance(player).untilFullyBuffered(); player.seekTo(/* mediaItemIndex= */ 1, /* positionMs= */ 0); player.play(); - run(player).untilState(Player.STATE_ENDED); + advance(player).untilState(Player.STATE_ENDED); populateEventIds(listener.lastReportedTimeline); assertThat(listener.getEvents(EVENT_PLAYER_STATE_CHANGED)) @@ -969,15 +969,15 @@ public final class DefaultAnalyticsCollectorTest { player.setMediaSource(fakeMediaSource); player.prepare(); - run(player).untilState(Player.STATE_READY); + advance(player).untilState(Player.STATE_READY); player.addMediaSource(fakeMediaSource); // Wait until second period has fully loaded to assert loading events. - run(player).untilFullyBuffered(); + advance(player).untilFullyBuffered(); player.removeMediaItem(/* index= */ 0); - run(player).untilState(Player.STATE_BUFFERING); - run(player).untilState(Player.STATE_READY); + advance(player).untilState(Player.STATE_BUFFERING); + advance(player).untilState(Player.STATE_READY); player.play(); - run(player).untilState(Player.STATE_ENDED); + advance(player).untilState(Player.STATE_ENDED); // Populate event ids with second to last timeline that still contained both periods. populateEventIds(listener.reportedTimelines.get(listener.reportedTimelines.size() - 2)); @@ -1133,17 +1133,17 @@ public final class DefaultAnalyticsCollectorTest { player.setMediaSource(fakeMediaSource); player.prepare(); // Ensure everything is preloaded. - run(player).untilFullyBuffered(); - run(player).untilState(Player.STATE_READY); + advance(player).untilFullyBuffered(); + advance(player).untilState(Player.STATE_READY); // Wait in each content part to ensure previously triggered events get a chance to be delivered. play(player).untilPosition(/* mediaItemIndex= */ 0, /* positionMs= */ 3_000); - run(player).untilPendingCommandsAreFullyHandled(); + advance(player).untilPendingCommandsAreFullyHandled(); play(player).untilPosition(/* mediaItemIndex= */ 0, /* positionMs= */ 8_000); - run(player).untilPendingCommandsAreFullyHandled(); + advance(player).untilPendingCommandsAreFullyHandled(); player.play(); - run(player).untilState(Player.STATE_ENDED); + advance(player).untilState(Player.STATE_ENDED); // Wait for final timeline change that marks post-roll played. - run(player).untilTimelineChanges(); + advance(player).untilTimelineChanges(); Object periodUid = listener.lastReportedTimeline.getUidOfPeriod(/* periodIndex= */ 0); EventWindowAndPeriodId prerollAd = @@ -1343,13 +1343,13 @@ public final class DefaultAnalyticsCollectorTest { player.setMediaSource(fakeMediaSource); player.prepare(); // Ensure everything is preloaded. - run(player).untilFullyBuffered(); + advance(player).untilFullyBuffered(); // Seek behind the midroll. player.seekTo(/* positionMs= */ 6_000); // Wait until loading started again to assert loading events. - run(player).untilLoadingIs(true); + advance(player).untilLoadingIs(true); player.play(); - run(player).untilState(Player.STATE_ENDED); + advance(player).untilState(Player.STATE_ENDED); Object periodUid = listener.lastReportedTimeline.getUidOfPeriod(/* periodIndex= */ 0); EventWindowAndPeriodId midrollAd = @@ -1515,9 +1515,9 @@ public final class DefaultAnalyticsCollectorTest { // Wait for the media to be fully buffered before unblocking the DRM key request. This // ensures both periods report the same load event (because period1's DRM session is // already preacquired by the time the key load completes). - run(player).untilFullyBuffered(); + advance(player).untilFullyBuffered(); mediaDrmCallback.keyCondition.open(); - run(player).untilState(Player.STATE_ENDED); + advance(player).untilState(Player.STATE_ENDED); populateEventIds(listener.lastReportedTimeline); assertThat(listener.getEvents(EVENT_DRM_SESSION_MANAGER_ERROR)).isEmpty(); @@ -1587,9 +1587,9 @@ public final class DefaultAnalyticsCollectorTest { player.play(); player.setMediaSource(mediaSource); player.prepare(); - run(player).untilFullyBuffered(); + advance(player).untilFullyBuffered(); mediaDrmCallback.keyCondition.open(); - run(player).untilPlayerError(); + advance(player).untilPlayerError(); populateEventIds(listener.lastReportedTimeline); assertThat(listener.getEvents(EVENT_DRM_SESSION_MANAGER_ERROR)).containsExactly(period0); diff --git a/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/audio/AudioCapabilitiesEndToEndTest.java b/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/audio/AudioCapabilitiesEndToEndTest.java index 2d39c69c2d..bf0b9e1547 100644 --- a/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/audio/AudioCapabilitiesEndToEndTest.java +++ b/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/audio/AudioCapabilitiesEndToEndTest.java @@ -19,7 +19,7 @@ import static android.media.AudioFormat.CHANNEL_OUT_5POINT1; import static android.media.AudioFormat.CHANNEL_OUT_STEREO; import static android.media.AudioFormat.ENCODING_AC3; import static androidx.media3.common.util.Assertions.checkNotNull; -import static androidx.media3.test.utils.robolectric.TestPlayerRunHelper.run; +import static androidx.media3.test.utils.robolectric.TestPlayerRunHelper.advance; import static com.google.common.truth.Truth.assertThat; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.times; @@ -143,7 +143,7 @@ public class AudioCapabilitiesEndToEndTest { player.addListener(listener); player.play(); - run(player).ignoringNonFatalErrors().untilState(Player.STATE_ENDED); + advance(player).ignoringNonFatalErrors().untilState(Player.STATE_ENDED); player.release(); ArgumentCaptor tracks = ArgumentCaptor.forClass(Tracks.class); @@ -207,7 +207,7 @@ public class AudioCapabilitiesEndToEndTest { player.addAnalyticsListener(createAnalyticsListener()); player.play(); - run(player).ignoringNonFatalErrors().untilState(Player.STATE_ENDED); + advance(player).ignoringNonFatalErrors().untilState(Player.STATE_ENDED); player.release(); // We expect to start playing audio via passthrough and mid-playback switch to a local decoder. diff --git a/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/e2etest/MergingPlaylistPlaybackTest.java b/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/e2etest/MergingPlaylistPlaybackTest.java index 5c6cab1450..11d7c0d8eb 100644 --- a/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/e2etest/MergingPlaylistPlaybackTest.java +++ b/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/e2etest/MergingPlaylistPlaybackTest.java @@ -15,7 +15,7 @@ */ package androidx.media3.exoplayer.e2etest; -import static androidx.media3.test.utils.robolectric.TestPlayerRunHelper.run; +import static androidx.media3.test.utils.robolectric.TestPlayerRunHelper.advance; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.reset; @@ -108,7 +108,7 @@ public final class MergingPlaylistPlaybackTest { player.prepare(); // Load all content prior to play to reduce flaky-ness resulting from the playback advancement // speed and handling of discontinuities. - run(player).untilFullyBuffered(); + advance(player).untilFullyBuffered(); // Reset the listener to avoid verifying the onIsLoadingChanged events from prepare(). reset(listener); player.play(); @@ -154,7 +154,7 @@ public final class MergingPlaylistPlaybackTest { player.prepare(); // Load all content prior to play to reduce flaky-ness resulting from the playback advancement // speed and handling of discontinuities. - run(player).untilFullyBuffered(); + advance(player).untilFullyBuffered(); // Reset the listener to avoid verifying the onIsLoadingChanged events from prepare(). reset(listener); player.play(); diff --git a/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/e2etest/PlaylistPlaybackTest.java b/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/e2etest/PlaylistPlaybackTest.java index 68c8cd7e59..22ad2ed47a 100644 --- a/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/e2etest/PlaylistPlaybackTest.java +++ b/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/e2etest/PlaylistPlaybackTest.java @@ -15,7 +15,7 @@ */ package androidx.media3.exoplayer.e2etest; -import static androidx.media3.test.utils.robolectric.TestPlayerRunHelper.run; +import static androidx.media3.test.utils.robolectric.TestPlayerRunHelper.advance; import static com.google.common.truth.Truth.assertThat; import static org.robolectric.annotation.GraphicsMode.Mode.NATIVE; @@ -89,9 +89,9 @@ public final class PlaylistPlaybackTest { player.addMediaItem(MediaItem.fromUri("asset:///media/mka/bear-opus.mka")); player.prepare(); - run(player).untilFullyBuffered(); + advance(player).untilFullyBuffered(); player.addMediaItem(MediaItem.fromUri("asset:///media/wav/sample.wav")); - run(player).untilFullyBuffered(); + advance(player).untilFullyBuffered(); // Wait until second period has fully loaded to start the playback. player.play(); TestPlayerRunHelper.runUntilPlaybackState(player, Player.STATE_ENDED); @@ -116,7 +116,7 @@ public final class PlaylistPlaybackTest { player.addMediaItem(MediaItem.fromUri("asset:///media/mp4/preroll-5s.mp4")); player.prepare(); - run(player).untilFullyBuffered(); + advance(player).untilFullyBuffered(); MediaItem mediaItemWithSubtitle = new MediaItem.Builder() .setUri("asset:///media/mp4/preroll-5s.mp4") @@ -130,7 +130,7 @@ public final class PlaylistPlaybackTest { .build())) .build(); player.addMediaItem(mediaItemWithSubtitle); - run(player).untilFullyBuffered(); + advance(player).untilFullyBuffered(); // Wait until second period has fully loaded to start the playback. player.play(); TestPlayerRunHelper.runUntilPlaybackState(player, Player.STATE_ENDED); diff --git a/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/e2etest/PrewarmingRendererPlaybackTest.java b/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/e2etest/PrewarmingRendererPlaybackTest.java index ca8c97e416..ffc648c124 100644 --- a/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/e2etest/PrewarmingRendererPlaybackTest.java +++ b/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/e2etest/PrewarmingRendererPlaybackTest.java @@ -15,7 +15,7 @@ */ package androidx.media3.exoplayer.e2etest; -import static androidx.media3.test.utils.robolectric.TestPlayerRunHelper.run; +import static androidx.media3.test.utils.robolectric.TestPlayerRunHelper.advance; import android.content.Context; import android.graphics.SurfaceTexture; @@ -165,7 +165,7 @@ public class PrewarmingRendererPlaybackTest { player.prepare(); player.play(); - run(player).untilStartOfMediaItem(1); + advance(player).untilStartOfMediaItem(1); // Stop and reset player to simulate stop, reset, and transition back to using primary. player.stop(); diff --git a/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/e2etest/SubtitlePlaybackTest.java b/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/e2etest/SubtitlePlaybackTest.java index 696933d011..dcf81fd356 100644 --- a/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/e2etest/SubtitlePlaybackTest.java +++ b/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/e2etest/SubtitlePlaybackTest.java @@ -15,7 +15,7 @@ */ package androidx.media3.exoplayer.e2etest; -import static androidx.media3.test.utils.robolectric.TestPlayerRunHelper.run; +import static androidx.media3.test.utils.robolectric.TestPlayerRunHelper.advance; import static com.google.common.truth.Truth.assertThat; import android.content.Context; @@ -103,10 +103,10 @@ public class SubtitlePlaybackTest { player.setMediaItem(mediaItem); player.prepare(); - run(player).untilState(Player.STATE_READY); - run(player).untilLoadingIs(false); + advance(player).untilState(Player.STATE_READY); + advance(player).untilLoadingIs(false); player.play(); - run(player).untilState(Player.STATE_ENDED); + advance(player).untilState(Player.STATE_ENDED); player.release(); assertThat(loadStartedUris).containsNoneOf(typicalVttUri, simpleTtmlUri); @@ -137,10 +137,10 @@ public class SubtitlePlaybackTest { player.setMediaItem(MediaItem.fromUri("asset:///media/mp4/fragmented_captions.mp4")); player.prepare(); - run(player).untilState(Player.STATE_READY); - run(player).untilFullyBuffered(); + advance(player).untilState(Player.STATE_READY); + advance(player).untilFullyBuffered(); player.play(); - run(player).untilState(Player.STATE_ENDED); + advance(player).untilState(Player.STATE_ENDED); player.release(); surface.release(); @@ -178,10 +178,10 @@ public class SubtitlePlaybackTest { player.setMediaItems(ImmutableList.of(mediaItemClipped, mediaItemFull)); player.prepare(); - run(player).untilState(Player.STATE_READY); - run(player).untilFullyBuffered(); + advance(player).untilState(Player.STATE_READY); + advance(player).untilFullyBuffered(); player.play(); - run(player).untilState(Player.STATE_ENDED); + advance(player).untilState(Player.STATE_ENDED); player.release(); surface.release(); @@ -230,10 +230,10 @@ public class SubtitlePlaybackTest { player.setMediaItem(mediaItem); player.prepare(); - run(player).ignoringNonFatalErrors().untilState(Player.STATE_READY); - run(player).ignoringNonFatalErrors().untilFullyBuffered(); + advance(player).ignoringNonFatalErrors().untilState(Player.STATE_READY); + advance(player).ignoringNonFatalErrors().untilFullyBuffered(); player.play(); - run(player).ignoringNonFatalErrors().untilState(Player.STATE_ENDED); + advance(player).ignoringNonFatalErrors().untilState(Player.STATE_ENDED); player.release(); surface.release(); @@ -291,10 +291,10 @@ public class SubtitlePlaybackTest { player.setMediaItem(mediaItem); player.prepare(); - run(player).ignoringNonFatalErrors().untilState(Player.STATE_READY); - run(player).ignoringNonFatalErrors().untilFullyBuffered(); + advance(player).ignoringNonFatalErrors().untilState(Player.STATE_READY); + advance(player).ignoringNonFatalErrors().untilFullyBuffered(); player.play(); - run(player).ignoringNonFatalErrors().untilState(Player.STATE_ENDED); + advance(player).ignoringNonFatalErrors().untilState(Player.STATE_ENDED); player.release(); surface.release(); @@ -330,10 +330,10 @@ public class SubtitlePlaybackTest { player.setMediaItem(mediaItem); player.prepare(); - run(player).untilState(Player.STATE_READY); - run(player).untilFullyBuffered(); + advance(player).untilState(Player.STATE_READY); + advance(player).untilFullyBuffered(); player.play(); - run(player).untilState(Player.STATE_ENDED); + advance(player).untilState(Player.STATE_ENDED); player.release(); surface.release(); diff --git a/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/e2etest/WebvttPlaybackTest.java b/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/e2etest/WebvttPlaybackTest.java index 7be876cc2a..887f047903 100644 --- a/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/e2etest/WebvttPlaybackTest.java +++ b/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/e2etest/WebvttPlaybackTest.java @@ -15,8 +15,8 @@ */ package androidx.media3.exoplayer.e2etest; +import static androidx.media3.test.utils.robolectric.TestPlayerRunHelper.advance; import static androidx.media3.test.utils.robolectric.TestPlayerRunHelper.play; -import static androidx.media3.test.utils.robolectric.TestPlayerRunHelper.run; import static com.google.common.truth.Truth.assertThat; import android.content.Context; @@ -97,10 +97,10 @@ public class WebvttPlaybackTest { player.setMediaItem(mediaItem); player.prepare(); - run(player).untilState(Player.STATE_READY); - run(player).untilFullyBuffered(); + advance(player).untilState(Player.STATE_READY); + advance(player).untilFullyBuffered(); player.play(); - run(player).untilState(Player.STATE_ENDED); + advance(player).untilState(Player.STATE_ENDED); player.release(); surface.release(); @@ -140,15 +140,15 @@ public class WebvttPlaybackTest { // Play media fully (with back buffer) to ensure we have all the segment data available. player.setMediaItem(mediaItem); player.prepare(); - run(player).untilState(Player.STATE_READY); - run(player).untilFullyBuffered(); + advance(player).untilState(Player.STATE_READY); + advance(player).untilFullyBuffered(); player.play(); - run(player).untilState(Player.STATE_ENDED); + advance(player).untilState(Player.STATE_ENDED); // Seek back to within first subtitle. player.seekTo(1000); player.play(); - run(player).untilState(Player.STATE_ENDED); + advance(player).untilState(Player.STATE_ENDED); player.release(); surface.release(); @@ -365,7 +365,7 @@ public class WebvttPlaybackTest { } player.pause(); player.play(); - run(player).untilPendingCommandsAreFullyHandled(); + advance(player).untilPendingCommandsAreFullyHandled(); } if (player.getPlayerError() != null) { throw player.getPlayerError(); diff --git a/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/source/ads/ServerSideAdInsertionMediaSourceTest.java b/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/source/ads/ServerSideAdInsertionMediaSourceTest.java index 6d005f99fc..786ad37c7e 100644 --- a/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/source/ads/ServerSideAdInsertionMediaSourceTest.java +++ b/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/source/ads/ServerSideAdInsertionMediaSourceTest.java @@ -21,8 +21,8 @@ import static androidx.media3.exoplayer.source.ads.ServerSideAdInsertionUtil.add import static androidx.media3.test.utils.FakeSampleStream.FakeSampleStreamItem.END_OF_STREAM_ITEM; import static androidx.media3.test.utils.FakeSampleStream.FakeSampleStreamItem.oneByteSample; import static androidx.media3.test.utils.robolectric.RobolectricUtil.runMainLooperUntil; +import static androidx.media3.test.utils.robolectric.TestPlayerRunHelper.advance; import static androidx.media3.test.utils.robolectric.TestPlayerRunHelper.playUntilPosition; -import static androidx.media3.test.utils.robolectric.TestPlayerRunHelper.run; import static androidx.media3.test.utils.robolectric.TestPlayerRunHelper.runUntilPendingCommandsAreFullyHandled; import static androidx.media3.test.utils.robolectric.TestPlayerRunHelper.runUntilPlaybackState; import static com.google.common.truth.Truth.assertThat; @@ -524,7 +524,7 @@ public final class ServerSideAdInsertionMediaSourceTest { // Add ad at the current playback position during playback. runUntilPlaybackState(player, Player.STATE_READY); - run(player).untilFullyBuffered(); + advance(player).untilFullyBuffered(); AdPlaybackState secondAdPlaybackState = addAdGroupToAdPlaybackState( firstAdPlaybackState, diff --git a/libraries/exoplayer_dash/src/test/java/androidx/media3/exoplayer/dash/e2etest/DashPlaybackTest.java b/libraries/exoplayer_dash/src/test/java/androidx/media3/exoplayer/dash/e2etest/DashPlaybackTest.java index ff949c9413..ef4c45ddf8 100644 --- a/libraries/exoplayer_dash/src/test/java/androidx/media3/exoplayer/dash/e2etest/DashPlaybackTest.java +++ b/libraries/exoplayer_dash/src/test/java/androidx/media3/exoplayer/dash/e2etest/DashPlaybackTest.java @@ -16,7 +16,7 @@ package androidx.media3.exoplayer.dash.e2etest; import static androidx.media3.common.util.Assertions.checkNotNull; -import static androidx.media3.test.utils.robolectric.TestPlayerRunHelper.run; +import static androidx.media3.test.utils.robolectric.TestPlayerRunHelper.advance; import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyInt; @@ -97,9 +97,9 @@ public final class DashPlaybackTest { player.setMediaItem(MediaItem.fromUri("asset:///media/dash/standalone-webvtt/sample.mpd")); player.prepare(); // Ensure media is fully buffered so that the first subtitle is ready at the start of playback. - run(player).untilFullyBuffered(); + advance(player).untilFullyBuffered(); player.play(); - run(player).untilState(Player.STATE_ENDED); + advance(player).untilState(Player.STATE_ENDED); player.release(); surface.release(); @@ -137,9 +137,9 @@ public final class DashPlaybackTest { player.setMediaItem(MediaItem.fromUri("asset:///media/dash/standalone-webvtt/sample.mpd")); player.prepare(); // Ensure media is fully buffered so that the first subtitle is ready at the start of playback. - run(player).ignoringNonFatalErrors().untilFullyBuffered(); + advance(player).ignoringNonFatalErrors().untilFullyBuffered(); player.play(); - run(player).ignoringNonFatalErrors().untilState(Player.STATE_ENDED); + advance(player).ignoringNonFatalErrors().untilState(Player.STATE_ENDED); player.release(); surface.release(); @@ -176,9 +176,9 @@ public final class DashPlaybackTest { player.setMediaItem(MediaItem.fromUri("asset:///media/dash/standalone-webvtt/sample.mpd")); player.prepare(); // Ensure media is fully buffered so that the first subtitle is ready at the start of playback. - run(player).ignoringNonFatalErrors().untilFullyBuffered(); + advance(player).ignoringNonFatalErrors().untilFullyBuffered(); player.play(); - run(player).ignoringNonFatalErrors().untilState(Player.STATE_ENDED); + advance(player).ignoringNonFatalErrors().untilState(Player.STATE_ENDED); player.release(); surface.release(); @@ -213,9 +213,9 @@ public final class DashPlaybackTest { player.setMediaItem(MediaItem.fromUri("asset:///media/dash/standalone-ttml/sample.mpd")); player.prepare(); // Ensure media is fully buffered so that the first subtitle is ready at the start of playback. - run(player).untilFullyBuffered(); + advance(player).untilFullyBuffered(); player.play(); - run(player).untilState(Player.STATE_ENDED); + advance(player).untilState(Player.STATE_ENDED); player.release(); surface.release(); @@ -244,9 +244,9 @@ public final class DashPlaybackTest { player.setMediaItem(MediaItem.fromUri("asset:///media/dash/webvtt-in-mp4/sample.mpd")); player.prepare(); // Ensure media is fully buffered so that the first subtitle is ready at the start of playback. - run(player).untilFullyBuffered(); + advance(player).untilFullyBuffered(); player.play(); - run(player).untilState(Player.STATE_ENDED); + advance(player).untilState(Player.STATE_ENDED); player.release(); surface.release(); @@ -274,9 +274,9 @@ public final class DashPlaybackTest { player.setMediaItem(MediaItem.fromUri("asset:///media/dash/ttml-in-mp4/sample.mpd")); player.prepare(); // Ensure media is fully buffered so that the first subtitle is ready at the start of playback. - run(player).untilFullyBuffered(); + advance(player).untilFullyBuffered(); player.play(); - run(player).untilState(Player.STATE_ENDED); + advance(player).untilState(Player.STATE_ENDED); player.release(); surface.release(); @@ -314,9 +314,9 @@ public final class DashPlaybackTest { player.setMediaItem(MediaItem.fromUri("asset:///media/dash/ttml-in-mp4/sample.mpd")); player.prepare(); // Ensure media is fully buffered so that the first subtitle is ready at the start of playback. - run(player).ignoringNonFatalErrors().untilFullyBuffered(); + advance(player).ignoringNonFatalErrors().untilFullyBuffered(); player.play(); - run(player).ignoringNonFatalErrors().untilState(Player.STATE_ENDED); + advance(player).ignoringNonFatalErrors().untilState(Player.STATE_ENDED); player.release(); surface.release(); @@ -353,9 +353,9 @@ public final class DashPlaybackTest { player.setMediaItem(MediaItem.fromUri("asset:///media/dash/ttml-in-mp4/sample.mpd")); player.prepare(); // Ensure media is fully buffered so that the first subtitle is ready at the start of playback. - run(player).ignoringNonFatalErrors().untilFullyBuffered(); + advance(player).ignoringNonFatalErrors().untilFullyBuffered(); player.play(); - run(player).ignoringNonFatalErrors().untilState(Player.STATE_ENDED); + advance(player).ignoringNonFatalErrors().untilState(Player.STATE_ENDED); player.release(); surface.release(); @@ -397,9 +397,9 @@ public final class DashPlaybackTest { player.setMediaItem(MediaItem.fromUri("asset:///media/dash/cea608/manifest.mpd")); player.prepare(); // Ensure media is fully buffered so that the first subtitle is ready at the start of playback. - run(player).untilFullyBuffered(); + advance(player).untilFullyBuffered(); player.play(); - run(player).untilState(Player.STATE_ENDED); + advance(player).untilState(Player.STATE_ENDED); player.release(); surface.release(); @@ -437,9 +437,9 @@ public final class DashPlaybackTest { player.setMediaItem(MediaItem.fromUri("asset:///media/dash/cea608/manifest.mpd")); player.prepare(); // Ensure media is fully buffered so that the first subtitle is ready at the start of playback. - run(player).untilFullyBuffered(); + advance(player).untilFullyBuffered(); player.play(); - run(player).untilState(Player.STATE_ENDED); + advance(player).untilState(Player.STATE_ENDED); player.release(); surface.release(); @@ -713,9 +713,9 @@ public final class DashPlaybackTest { MediaItem.fromUri("asset:///media/dash/multi-period-with-offset/sample.mpd")); player.prepare(); // Ensure media is fully buffered to avoid flakiness from loading second period too late. - run(player).untilFullyBuffered(); + advance(player).untilFullyBuffered(); player.play(); - run(player).untilState(Player.STATE_ENDED); + advance(player).untilState(Player.STATE_ENDED); player.release(); surface.release(); diff --git a/libraries/exoplayer_hls/src/test/java/androidx/media3/exoplayer/hls/e2etest/HlsPlaybackTest.java b/libraries/exoplayer_hls/src/test/java/androidx/media3/exoplayer/hls/e2etest/HlsPlaybackTest.java index 4698d3d2b5..3f9c881eb9 100644 --- a/libraries/exoplayer_hls/src/test/java/androidx/media3/exoplayer/hls/e2etest/HlsPlaybackTest.java +++ b/libraries/exoplayer_hls/src/test/java/androidx/media3/exoplayer/hls/e2etest/HlsPlaybackTest.java @@ -16,7 +16,7 @@ package androidx.media3.exoplayer.hls.e2etest; -import static androidx.media3.test.utils.robolectric.TestPlayerRunHelper.run; +import static androidx.media3.test.utils.robolectric.TestPlayerRunHelper.advance; import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyInt; @@ -87,9 +87,9 @@ public final class HlsPlaybackTest { MediaItem.fromUri("asset:///media/hls/standalone-webvtt/multivariant_playlist.m3u8")); player.prepare(); // Ensure media is fully buffered so that the first subtitle is ready at the start of playback. - run(player).untilFullyBuffered(); + advance(player).untilFullyBuffered(); player.play(); - run(player).untilState(Player.STATE_ENDED); + advance(player).untilState(Player.STATE_ENDED); player.release(); surface.release(); @@ -125,9 +125,9 @@ public final class HlsPlaybackTest { MediaItem.fromUri("asset:///media/hls/standalone-webvtt/multivariant_playlist.m3u8")); player.prepare(); // Ensure media is fully buffered so that the first subtitle is ready at the start of playback. - run(player).ignoringNonFatalErrors().untilFullyBuffered(); + advance(player).ignoringNonFatalErrors().untilFullyBuffered(); player.play(); - run(player).ignoringNonFatalErrors().untilState(Player.STATE_ENDED); + advance(player).ignoringNonFatalErrors().untilState(Player.STATE_ENDED); player.release(); surface.release(); @@ -162,9 +162,9 @@ public final class HlsPlaybackTest { MediaItem.fromUri("asset:///media/hls/standalone-webvtt/multivariant_playlist.m3u8")); player.prepare(); // Ensure media is fully buffered so that the first subtitle is ready at the start of playback. - run(player).ignoringNonFatalErrors().untilFullyBuffered(); + advance(player).ignoringNonFatalErrors().untilFullyBuffered(); player.play(); - run(player).ignoringNonFatalErrors().untilState(Player.STATE_ENDED); + advance(player).ignoringNonFatalErrors().untilState(Player.STATE_ENDED); player.release(); surface.release(); @@ -193,9 +193,9 @@ public final class HlsPlaybackTest { MediaItem.fromUri("asset:///media/hls/ttml-in-mp4/multivariant_playlist.m3u8")); player.prepare(); // Ensure media is fully buffered so that the first subtitle is ready at the start of playback. - run(player).untilFullyBuffered(); + advance(player).untilFullyBuffered(); player.play(); - run(player).untilState(Player.STATE_ENDED); + advance(player).untilState(Player.STATE_ENDED); player.release(); surface.release(); @@ -230,9 +230,9 @@ public final class HlsPlaybackTest { MediaItem.fromUri("asset:///media/hls/ttml-in-mp4/multivariant_playlist.m3u8")); player.prepare(); // Ensure media is fully buffered so that the first subtitle is ready at the start of playback. - run(player).ignoringNonFatalErrors().untilFullyBuffered(); + advance(player).ignoringNonFatalErrors().untilFullyBuffered(); player.play(); - run(player).ignoringNonFatalErrors().untilState(Player.STATE_ENDED); + advance(player).ignoringNonFatalErrors().untilState(Player.STATE_ENDED); player.release(); surface.release(); @@ -266,9 +266,9 @@ public final class HlsPlaybackTest { MediaItem.fromUri("asset:///media/hls/ttml-in-mp4/multivariant_playlist.m3u8")); player.prepare(); // Ensure media is fully buffered so that the first subtitle is ready at the start of playback. - run(player).ignoringNonFatalErrors().untilFullyBuffered(); + advance(player).ignoringNonFatalErrors().untilFullyBuffered(); player.play(); - run(player).ignoringNonFatalErrors().untilState(Player.STATE_ENDED); + advance(player).ignoringNonFatalErrors().untilState(Player.STATE_ENDED); player.release(); surface.release(); @@ -306,9 +306,9 @@ public final class HlsPlaybackTest { player.setMediaItem(MediaItem.fromUri("asset:///media/hls/cea608/manifest.m3u8")); player.prepare(); // Ensure media is fully buffered so that the first subtitle is ready at the start of playback. - run(player).untilFullyBuffered(); + advance(player).untilFullyBuffered(); player.play(); - run(player).untilState(Player.STATE_ENDED); + advance(player).untilState(Player.STATE_ENDED); player.release(); surface.release(); @@ -342,9 +342,9 @@ public final class HlsPlaybackTest { player.setMediaItem(MediaItem.fromUri("asset:///media/hls/cea608/manifest.m3u8")); player.prepare(); // Ensure media is fully buffered so that the first subtitle is ready at the start of playback. - run(player).untilFullyBuffered(); + advance(player).untilFullyBuffered(); player.play(); - run(player).untilState(Player.STATE_ENDED); + advance(player).untilState(Player.STATE_ENDED); player.release(); surface.release(); diff --git a/libraries/exoplayer_ima/src/test/java/androidx/media3/exoplayer/ima/ImaServerSideAdInsertionMediaSourceTest.java b/libraries/exoplayer_ima/src/test/java/androidx/media3/exoplayer/ima/ImaServerSideAdInsertionMediaSourceTest.java index ba8ce2c39f..3e8e266fb3 100644 --- a/libraries/exoplayer_ima/src/test/java/androidx/media3/exoplayer/ima/ImaServerSideAdInsertionMediaSourceTest.java +++ b/libraries/exoplayer_ima/src/test/java/androidx/media3/exoplayer/ima/ImaServerSideAdInsertionMediaSourceTest.java @@ -15,7 +15,7 @@ */ package androidx.media3.exoplayer.ima; -import static androidx.media3.test.utils.robolectric.TestPlayerRunHelper.run; +import static androidx.media3.test.utils.robolectric.TestPlayerRunHelper.advance; import static com.google.common.truth.Truth.assertThat; import android.content.Context; @@ -96,13 +96,13 @@ public class ImaServerSideAdInsertionMediaSourceTest { MediaItem.fromUri("ssai://dai.google.com/?assetKey=ABC&format=0&adsId=2")); player.setMediaSource(mediaSource); player.prepare(); - run(player).untilPendingCommandsAreFullyHandled(); + advance(player).untilPendingCommandsAreFullyHandled(); // Clearing the playlist will cause internal state of the ads source to be invalid and // potentially accessing empty timelines. See b/354026260. The test simply ensures that clearing // the playlist will not throw any exceptions. player.clearMediaItems(); - run(player).untilPendingCommandsAreFullyHandled(); + advance(player).untilPendingCommandsAreFullyHandled(); player.release(); } } diff --git a/libraries/test_utils_robolectric/src/main/java/androidx/media3/test/utils/robolectric/TestPlayerRunHelper.java b/libraries/test_utils_robolectric/src/main/java/androidx/media3/test/utils/robolectric/TestPlayerRunHelper.java index dce3217d51..b66f6ff1c7 100644 --- a/libraries/test_utils_robolectric/src/main/java/androidx/media3/test/utils/robolectric/TestPlayerRunHelper.java +++ b/libraries/test_utils_robolectric/src/main/java/androidx/media3/test/utils/robolectric/TestPlayerRunHelper.java @@ -38,6 +38,7 @@ import androidx.media3.exoplayer.source.LoadEventInfo; import androidx.media3.exoplayer.source.MediaLoadData; import androidx.media3.test.utils.ThreadTestUtil; import com.google.common.base.Supplier; +import com.google.errorprone.annotations.InlineMe; import java.io.IOException; import java.util.ArrayList; import java.util.List; @@ -544,7 +545,7 @@ public final class TestPlayerRunHelper { *

Callers can use the returned {@link PlayerRunResult} to run the main {@link Looper} until * certain conditions are met. */ - public static PlayerRunResult run(Player player) { + public static PlayerRunResult advance(Player player) { return new PlayerRunResult( player, /* playBeforeWaiting= */ false, /* throwNonFatalErrors= */ true); } @@ -555,19 +556,41 @@ public final class TestPlayerRunHelper { *

Callers can use the returned {@link ExoPlayerRunResult} to run the main {@link Looper} until * certain conditions are met. */ - public static ExoPlayerRunResult run(ExoPlayer player) { + public static ExoPlayerRunResult advance(ExoPlayer player) { return new ExoPlayerRunResult( player, /* playBeforeWaiting= */ false, /* throwNonFatalErrors= */ true); } + /** + * @deprecated Use {@link #advance(Player)} instead. + */ + @InlineMe( + replacement = "TestPlayerRunHelper.advance(player)", + imports = "androidx.media3.test.utils.robolectric.TestPlayerRunHelper") + @Deprecated + public static PlayerRunResult run(Player player) { + return advance(player); + } + + /** + * @deprecated Use {@link #advance(ExoPlayer)} instead. + */ + @InlineMe( + replacement = "TestPlayerRunHelper.advance(player)", + imports = "androidx.media3.test.utils.robolectric.TestPlayerRunHelper") + @Deprecated + public static ExoPlayerRunResult run(ExoPlayer player) { + return advance(player); + } + /** * Entry point for a fluent "start playback and wait for condition X" assertion. * *

Callers can use the returned {@link PlayerRunResult} to run the main {@link Looper} until * certain conditions are met. * - *

This is the same as {@link #run(Player)} but ensures {@link Player#play()} is called before - * waiting in subsequent {@code untilXXX(...)} methods. + *

This is the same as {@link #advance(Player)} but ensures {@link Player#play()} is called + * before waiting in subsequent {@code untilXXX(...)} methods. */ public static PlayerRunResult play(Player player) { return new PlayerRunResult( @@ -580,8 +603,8 @@ public final class TestPlayerRunHelper { *

Callers can use the returned {@link ExoPlayerRunResult} to run the main {@link Looper} until * certain conditions are met. * - *

This is the same as {@link #run(ExoPlayer)} but ensures {@link ExoPlayer#play()} is called - * before waiting in subsequent {@code untilXXX(...)} methods. + *

This is the same as {@link #advance(ExoPlayer)} but ensures {@link ExoPlayer#play()} is + * called before waiting in subsequent {@code untilXXX(...)} methods. */ public static ExoPlayerRunResult play(ExoPlayer player) { return new ExoPlayerRunResult( @@ -595,7 +618,8 @@ public final class TestPlayerRunHelper { *

If a fatal {@link PlaybackException} occurs it will be thrown wrapped in an {@link * IllegalStateException}. * - *

New usages should prefer {@link #run(Player)} and {@link PlayerRunResult#untilState(int)}. + *

New usages should prefer {@link #advance(Player)} and {@link + * PlayerRunResult#untilState(int)}. * * @param player The {@link Player}. * @param expectedState The expected {@link Player.State}. @@ -605,7 +629,7 @@ public final class TestPlayerRunHelper { public static void runUntilPlaybackState(Player player, @Player.State int expectedState) throws TimeoutException { try { - run(player).untilState(expectedState); + advance(player).untilState(expectedState); } catch (PlaybackException e) { throw new IllegalStateException(e); } @@ -618,7 +642,7 @@ public final class TestPlayerRunHelper { *

If a fatal {@link PlaybackException} occurs it will be thrown wrapped in an {@link * IllegalStateException}. * - *

New usages should prefer {@link #run(Player)} and {@link + *

New usages should prefer {@link #advance(Player)} and {@link * PlayerRunResult#untilPlayWhenReadyIs(boolean)}. * * @param player The {@link Player}. @@ -629,7 +653,7 @@ public final class TestPlayerRunHelper { public static void runUntilPlayWhenReady(Player player, boolean expectedPlayWhenReady) throws TimeoutException { try { - run(player).untilPlayWhenReadyIs(expectedPlayWhenReady); + advance(player).untilPlayWhenReadyIs(expectedPlayWhenReady); } catch (PlaybackException e) { throw new IllegalStateException(e); } @@ -642,7 +666,7 @@ public final class TestPlayerRunHelper { *

If a fatal {@link PlaybackException} occurs it will be thrown wrapped in an {@link * IllegalStateException}. * - *

New usages should prefer {@link #run(Player)} and {@link + *

New usages should prefer {@link #advance(Player)} and {@link * PlayerRunResult#untilLoadingIs(boolean)}. * * @param player The {@link Player}. @@ -653,7 +677,7 @@ public final class TestPlayerRunHelper { public static void runUntilIsLoading(Player player, boolean expectedIsLoading) throws TimeoutException { try { - run(player).untilLoadingIs(expectedIsLoading); + advance(player).untilLoadingIs(expectedIsLoading); } catch (PlaybackException e) { throw new IllegalStateException(e); } @@ -666,7 +690,7 @@ public final class TestPlayerRunHelper { *

If a fatal {@link PlaybackException} occurs it will be thrown wrapped in an {@link * IllegalStateException}. * - *

New usages should prefer {@link #run(Player)} and {@link + *

New usages should prefer {@link #advance(Player)} and {@link * PlayerRunResult#untilTimelineChangesTo(Timeline)}. * * @param player The {@link Player}. @@ -677,7 +701,7 @@ public final class TestPlayerRunHelper { public static void runUntilTimelineChanged(Player player, Timeline expectedTimeline) throws TimeoutException { try { - run(player).untilTimelineChangesTo(expectedTimeline); + advance(player).untilTimelineChangesTo(expectedTimeline); } catch (PlaybackException e) { throw new IllegalStateException(e); } @@ -689,7 +713,7 @@ public final class TestPlayerRunHelper { *

If a fatal {@link PlaybackException} occurs it will be thrown wrapped in an {@link * IllegalStateException}. * - *

New usages should prefer {@link #run(Player)} and {@link + *

New usages should prefer {@link #advance(Player)} and {@link * PlayerRunResult#untilTimelineChanges()}. * * @param player The {@link Player}. @@ -699,7 +723,7 @@ public final class TestPlayerRunHelper { */ public static Timeline runUntilTimelineChanged(Player player) throws TimeoutException { try { - return run(player).untilTimelineChanges(); + return advance(player).untilTimelineChanges(); } catch (PlaybackException e) { throw new IllegalStateException(e); } @@ -713,7 +737,7 @@ public final class TestPlayerRunHelper { *

If a fatal {@link PlaybackException} occurs it will be thrown wrapped in an {@link * IllegalStateException}. * - *

New usages should prefer {@link #run(Player)} and {@link + *

New usages should prefer {@link #advance(Player)} and {@link * PlayerRunResult#untilPositionDiscontinuityWithReason(int)}. * * @param player The {@link Player}. @@ -724,7 +748,7 @@ public final class TestPlayerRunHelper { public static void runUntilPositionDiscontinuity( Player player, @Player.DiscontinuityReason int expectedReason) throws TimeoutException { try { - run(player).untilPositionDiscontinuityWithReason(expectedReason); + advance(player).untilPositionDiscontinuityWithReason(expectedReason); } catch (PlaybackException e) { throw new IllegalStateException(e); } @@ -735,7 +759,7 @@ public final class TestPlayerRunHelper { * *

Non-fatal errors are ignored. * - *

New usages should prefer {@link #run(ExoPlayer)} and {@link + *

New usages should prefer {@link #advance(ExoPlayer)} and {@link * ExoPlayerRunResult#untilPlayerError()}. * * @param player The {@link Player}. @@ -744,7 +768,7 @@ public final class TestPlayerRunHelper { * exceeded. */ public static ExoPlaybackException runUntilError(ExoPlayer player) throws TimeoutException { - return run(player).untilPlayerError(); + return advance(player).untilPlayerError(); } /** @@ -754,7 +778,7 @@ public final class TestPlayerRunHelper { *

If a fatal {@link PlaybackException} occurs it will be thrown wrapped in an {@link * IllegalStateException}. * - *

New usages should prefer {@link #run(ExoPlayer)} and {@link + *

New usages should prefer {@link #advance(ExoPlayer)} and {@link * ExoPlayerRunResult#untilSleepingForOffloadBecomes(boolean)}. * * @param player The {@link Player}. @@ -765,7 +789,7 @@ public final class TestPlayerRunHelper { public static void runUntilSleepingForOffload(ExoPlayer player, boolean expectedSleepForOffload) throws TimeoutException { try { - run(player).untilSleepingForOffloadBecomes(expectedSleepForOffload); + advance(player).untilSleepingForOffloadBecomes(expectedSleepForOffload); } catch (PlaybackException e) { throw new IllegalStateException(e); } @@ -778,7 +802,7 @@ public final class TestPlayerRunHelper { *

If a fatal {@link PlaybackException} occurs it will be thrown wrapped in an {@link * IllegalStateException}. * - *

New usages should prefer {@link #run(Player)} and {@link + *

New usages should prefer {@link #advance(Player)} and {@link * PlayerRunResult#untilFirstFrameIsRendered()}. * * @param player The {@link Player}. @@ -787,7 +811,7 @@ public final class TestPlayerRunHelper { */ public static void runUntilRenderedFirstFrame(ExoPlayer player) throws TimeoutException { try { - run(player).untilFirstFrameIsRendered(); + advance(player).untilFirstFrameIsRendered(); } catch (PlaybackException e) { throw new IllegalStateException(e); } @@ -805,7 +829,7 @@ public final class TestPlayerRunHelper { *

If a fatal {@link PlaybackException} occurs it will be thrown wrapped in an {@link * IllegalStateException}. * - *

New usages should prefer {@link #run(ExoPlayer)} and {@link + *

New usages should prefer {@link #advance(ExoPlayer)} and {@link * ExoPlayerRunResult#untilPosition(int, long)}. * * @param player The {@link Player}. @@ -835,7 +859,7 @@ public final class TestPlayerRunHelper { *

If a fatal {@link PlaybackException} occurs it will be thrown wrapped in an {@link * IllegalStateException}. * - *

New usages should prefer {@link #run(ExoPlayer)} and {@link + *

New usages should prefer {@link #advance(ExoPlayer)} and {@link * ExoPlayerRunResult#untilStartOfMediaItem(int)}. * * @param player The {@link Player}. @@ -864,7 +888,7 @@ public final class TestPlayerRunHelper { */ public static void runUntilPendingCommandsAreFullyHandled(ExoPlayer player) throws TimeoutException { - run(player).untilPendingCommandsAreFullyHandled(); + advance(player).untilPendingCommandsAreFullyHandled(); } private static void verifyMainTestThread(Player player) { diff --git a/libraries/transformer/src/test/java/androidx/media3/transformer/CompositionPlayerAudioPlaybackTest.java b/libraries/transformer/src/test/java/androidx/media3/transformer/CompositionPlayerAudioPlaybackTest.java index 7d7ae38605..5d4cb4201a 100644 --- a/libraries/transformer/src/test/java/androidx/media3/transformer/CompositionPlayerAudioPlaybackTest.java +++ b/libraries/transformer/src/test/java/androidx/media3/transformer/CompositionPlayerAudioPlaybackTest.java @@ -75,7 +75,7 @@ public final class CompositionPlayerAudioPlaybackTest { player.setComposition(composition); player.prepare(); player.play(); - TestPlayerRunHelper.run(player).untilState(Player.STATE_ENDED); + TestPlayerRunHelper.advance(player).untilState(Player.STATE_ENDED); player.release(); DumpFileAsserts.assertOutput( @@ -105,7 +105,7 @@ public final class CompositionPlayerAudioPlaybackTest { player.setComposition(composition); player.prepare(); player.play(); - TestPlayerRunHelper.run(player).untilState(Player.STATE_ENDED); + TestPlayerRunHelper.advance(player).untilState(Player.STATE_ENDED); player.release(); DumpFileAsserts.assertOutput( @@ -132,7 +132,7 @@ public final class CompositionPlayerAudioPlaybackTest { player.setComposition(composition); player.prepare(); player.play(); - TestPlayerRunHelper.run(player).untilState(Player.STATE_ENDED); + TestPlayerRunHelper.advance(player).untilState(Player.STATE_ENDED); player.release(); DumpFileAsserts.assertOutput( @@ -157,7 +157,7 @@ public final class CompositionPlayerAudioPlaybackTest { player.setComposition(composition); player.prepare(); player.play(); - TestPlayerRunHelper.run(player).untilState(Player.STATE_ENDED); + TestPlayerRunHelper.advance(player).untilState(Player.STATE_ENDED); player.release(); DumpFileAsserts.assertOutput( @@ -199,7 +199,7 @@ public final class CompositionPlayerAudioPlaybackTest { player.setComposition(composition); player.prepare(); player.play(); - TestPlayerRunHelper.run(player).untilState(Player.STATE_ENDED); + TestPlayerRunHelper.advance(player).untilState(Player.STATE_ENDED); player.release(); DumpFileAsserts.assertOutput( @@ -496,7 +496,7 @@ public final class CompositionPlayerAudioPlaybackTest { player.seekTo(/* positionMs= */ 500); player.prepare(); player.play(); - TestPlayerRunHelper.run(player).untilState(Player.STATE_ENDED); + TestPlayerRunHelper.advance(player).untilState(Player.STATE_ENDED); player.release(); DumpFileAsserts.assertOutput( @@ -525,7 +525,7 @@ public final class CompositionPlayerAudioPlaybackTest { player.seekTo(/* positionMs= */ 1200); player.prepare(); player.play(); - TestPlayerRunHelper.run(player).untilState(Player.STATE_ENDED); + TestPlayerRunHelper.advance(player).untilState(Player.STATE_ENDED); player.release(); DumpFileAsserts.assertOutput( @@ -557,7 +557,7 @@ public final class CompositionPlayerAudioPlaybackTest { player.seekTo(/* positionMs= */ 500); player.prepare(); player.play(); - TestPlayerRunHelper.run(player).untilState(Player.STATE_ENDED); + TestPlayerRunHelper.advance(player).untilState(Player.STATE_ENDED); player.release(); DumpFileAsserts.assertOutput( @@ -599,7 +599,7 @@ public final class CompositionPlayerAudioPlaybackTest { player.seekTo(/* positionMs= */ 800); player.prepare(); player.play(); - TestPlayerRunHelper.run(player).untilState(Player.STATE_ENDED); + TestPlayerRunHelper.advance(player).untilState(Player.STATE_ENDED); player.release(); DumpFileAsserts.assertOutput( diff --git a/libraries/transformer/src/test/java/androidx/media3/transformer/CompositionPlayerTest.java b/libraries/transformer/src/test/java/androidx/media3/transformer/CompositionPlayerTest.java index 4957500d39..54b91ec49c 100644 --- a/libraries/transformer/src/test/java/androidx/media3/transformer/CompositionPlayerTest.java +++ b/libraries/transformer/src/test/java/androidx/media3/transformer/CompositionPlayerTest.java @@ -211,7 +211,7 @@ public class CompositionPlayerTest { player.setComposition(buildComposition()); player.prepare(); - TestPlayerRunHelper.run(player).untilState(Player.STATE_READY); + TestPlayerRunHelper.advance(player).untilState(Player.STATE_READY); player.release(); @@ -838,7 +838,7 @@ public class CompositionPlayerTest { player.play(); player.seekTo(/* positionMs= */ 1100); - TestPlayerRunHelper.run(player).untilState(Player.STATE_ENDED); + TestPlayerRunHelper.advance(player).untilState(Player.STATE_ENDED); player.release(); }