From 6e7de583bb42871267899776966575512152b111 Mon Sep 17 00:00:00 2001 From: tonihei Date: Tue, 13 Dec 2022 11:37:20 +0000 Subject: [PATCH] Reset isLoading when calling SimpleBasePlayer.stop/release isLoading is not allowed to be true when IDLE, so we have to set to false when stopping in case it was set to true before. PiperOrigin-RevId: 494975405 --- .../java/androidx/media3/common/SimpleBasePlayer.java | 2 ++ .../androidx/media3/common/SimpleBasePlayerTest.java | 9 ++++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/libraries/common/src/main/java/androidx/media3/common/SimpleBasePlayer.java b/libraries/common/src/main/java/androidx/media3/common/SimpleBasePlayer.java index 512b9d9311..0d6f24d98e 100644 --- a/libraries/common/src/main/java/androidx/media3/common/SimpleBasePlayer.java +++ b/libraries/common/src/main/java/androidx/media3/common/SimpleBasePlayer.java @@ -2200,6 +2200,7 @@ public abstract class SimpleBasePlayer extends BasePlayer { .setTotalBufferedDurationMs(PositionSupplier.ZERO) .setContentBufferedPositionMs(state.contentPositionMsSupplier) .setAdBufferedPositionMs(state.adPositionMsSupplier) + .setIsLoading(false) .build()); } @@ -2231,6 +2232,7 @@ public abstract class SimpleBasePlayer extends BasePlayer { .setTotalBufferedDurationMs(PositionSupplier.ZERO) .setContentBufferedPositionMs(state.contentPositionMsSupplier) .setAdBufferedPositionMs(state.adPositionMsSupplier) + .setIsLoading(false) .build(); } diff --git a/libraries/common/src/test/java/androidx/media3/common/SimpleBasePlayerTest.java b/libraries/common/src/test/java/androidx/media3/common/SimpleBasePlayerTest.java index 5c53e5e27b..498fb60068 100644 --- a/libraries/common/src/test/java/androidx/media3/common/SimpleBasePlayerTest.java +++ b/libraries/common/src/test/java/androidx/media3/common/SimpleBasePlayerTest.java @@ -2095,6 +2095,7 @@ public class SimpleBasePlayerTest { .setPlaylist( ImmutableList.of( new SimpleBasePlayer.MediaItemData.Builder(/* uid= */ new Object()).build())) + .setIsLoading(true) .build(); // Additionally set the repeat mode to see a difference between the placeholder and new state. State updatedState = @@ -2102,6 +2103,7 @@ public class SimpleBasePlayerTest { .buildUpon() .setPlaybackState(Player.STATE_IDLE) .setRepeatMode(Player.REPEAT_MODE_ALL) + .setIsLoading(false) .build(); SettableFuture future = SettableFuture.create(); SimpleBasePlayer player = @@ -2124,9 +2126,12 @@ public class SimpleBasePlayerTest { // Verify placeholder state and listener calls. assertThat(player.getPlaybackState()).isEqualTo(Player.STATE_IDLE); assertThat(player.getRepeatMode()).isEqualTo(Player.REPEAT_MODE_OFF); + assertThat(player.isLoading()).isFalse(); verify(listener).onPlaybackStateChanged(Player.STATE_IDLE); verify(listener) .onPlayerStateChanged(/* playWhenReady= */ false, /* playbackState= */ Player.STATE_IDLE); + verify(listener).onIsLoadingChanged(false); + verify(listener).onLoadingChanged(false); verifyNoMoreInteractions(listener); future.set(null); @@ -2211,6 +2216,7 @@ public class SimpleBasePlayerTest { .setPlaylist( ImmutableList.of( new SimpleBasePlayer.MediaItemData.Builder(/* uid= */ new Object()).build())) + .setIsLoading(true) .build(); // Additionally set the repeat mode to see a difference between the placeholder and new state. State updatedState = state.buildUpon().setRepeatMode(Player.REPEAT_MODE_ALL).build(); @@ -2232,8 +2238,9 @@ public class SimpleBasePlayerTest { player.release(); - // Verify initial change to IDLE without listener call. + // Verify initial change to IDLE and !isLoading without listener call. assertThat(player.getPlaybackState()).isEqualTo(Player.STATE_IDLE); + assertThat(player.isLoading()).isFalse(); verifyNoMoreInteractions(listener); future.set(null);