Add ExoPlayer.isScrubbingModeEnabled

This helps integration with `PlayerControlView` in a follow-up change,
where we need to reliably know if scrubbing mode is still enabled (in
case someone else disables it after we enable it).

PiperOrigin-RevId: 750913644
This commit is contained in:
ibaker 2025-04-24 02:33:32 -07:00 committed by Copybara-Service
parent d9a92e2586
commit 4189a7c8bd
5 changed files with 40 additions and 0 deletions

View File

@ -1485,6 +1485,14 @@ public interface ExoPlayer extends Player {
@UnstableApi
void setScrubbingModeEnabled(boolean scrubbingModeEnabled);
/**
* Returns whether the player is optimized for scrubbing (many frequent seeks).
*
* <p>See {@link #setScrubbingModeEnabled(boolean)}.
*/
@UnstableApi
boolean isScrubbingModeEnabled();
/**
* Sets the parameters that control behavior in {@linkplain #setScrubbingModeEnabled scrubbing
* mode}.

View File

@ -1611,6 +1611,12 @@ import java.util.concurrent.CopyOnWriteArraySet;
maybeUpdatePlaybackSuppressionReason();
}
@Override
public boolean isScrubbingModeEnabled() {
verifyApplicationThread();
return scrubbingModeEnabled;
}
@Override
public void setScrubbingModeParameters(ScrubbingModeParameters scrubbingModeParameters) {
verifyApplicationThread();

View File

@ -628,6 +628,12 @@ public class SimpleExoPlayer extends BasePlayer implements ExoPlayer {
player.setScrubbingModeEnabled(scrubbingModeEnabled);
}
@Override
public boolean isScrubbingModeEnabled() {
blockUntilConstructorFinished();
return player.isScrubbingModeEnabled();
}
@Override
public void setScrubbingModeParameters(ScrubbingModeParameters scrubbingModeParameters) {
blockUntilConstructorFinished();

View File

@ -63,6 +63,21 @@ import org.mockito.InOrder;
@RunWith(AndroidJUnit4.class)
public final class ExoPlayerScrubbingTest {
@Test
public void scrubbingMode_getterWorks() throws Exception {
ExoPlayer player =
new TestExoPlayerBuilder(ApplicationProvider.getApplicationContext()).build();
player.setMediaSource(new FakeMediaSource());
player.prepare();
assertThat(player.isScrubbingModeEnabled()).isFalse();
player.setScrubbingModeEnabled(true);
assertThat(player.isScrubbingModeEnabled()).isTrue();
player.setScrubbingModeEnabled(false);
assertThat(player.isScrubbingModeEnabled()).isFalse();
player.release();
}
@Test
public void scrubbingMode_suppressesPlayback() throws Exception {
ExoPlayer player =

View File

@ -221,6 +221,11 @@ public class StubExoPlayer extends StubPlayer implements ExoPlayer {
throw new UnsupportedOperationException();
}
@Override
public boolean isScrubbingModeEnabled() {
throw new UnsupportedOperationException();
}
@Override
public void setScrubbingModeParameters(ScrubbingModeParameters scrubbingModeParameters) {
throw new UnsupportedOperationException();