From c1d7e5bf9d4efc6ef1f3d2814cfd8174052bad59 Mon Sep 17 00:00:00 2001 From: tonihei Date: Tue, 22 Aug 2017 03:49:50 -0700 Subject: [PATCH] Add set/getShuffleModeEnabled to Player interface. And implement a basic version of the methods in all implementations. ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=166041342 --- .../android/exoplayer2/ext/cast/CastPlayer.java | 11 +++++++++++ .../DynamicConcatenatingMediaSourceTest.java | 10 ++++++++++ .../google/android/exoplayer2/ExoPlayerImpl.java | 14 ++++++++++++++ .../java/com/google/android/exoplayer2/Player.java | 12 ++++++++++++ .../google/android/exoplayer2/SimpleExoPlayer.java | 10 ++++++++++ .../exoplayer2/testutil/FakeSimpleExoPlayer.java | 10 ++++++++++ 6 files changed, 67 insertions(+) diff --git a/extensions/cast/src/main/java/com/google/android/exoplayer2/ext/cast/CastPlayer.java b/extensions/cast/src/main/java/com/google/android/exoplayer2/ext/cast/CastPlayer.java index ef84c04c04..50ae7ea5ba 100644 --- a/extensions/cast/src/main/java/com/google/android/exoplayer2/ext/cast/CastPlayer.java +++ b/extensions/cast/src/main/java/com/google/android/exoplayer2/ext/cast/CastPlayer.java @@ -330,6 +330,17 @@ public final class CastPlayer implements Player { } } + @Override + public void setShuffleModeEnabled(boolean shuffleModeEnabled) { + // TODO: Support shuffle mode. + } + + @Override + public boolean getShuffleModeEnabled() { + // TODO: Support shuffle mode. + return false; + } + @Override public TrackSelectionArray getCurrentTrackSelections() { return currentTrackSelection; diff --git a/library/core/src/androidTest/java/com/google/android/exoplayer2/source/DynamicConcatenatingMediaSourceTest.java b/library/core/src/androidTest/java/com/google/android/exoplayer2/source/DynamicConcatenatingMediaSourceTest.java index f8636b9990..8d29a95d89 100644 --- a/library/core/src/androidTest/java/com/google/android/exoplayer2/source/DynamicConcatenatingMediaSourceTest.java +++ b/library/core/src/androidTest/java/com/google/android/exoplayer2/source/DynamicConcatenatingMediaSourceTest.java @@ -396,6 +396,16 @@ public final class DynamicConcatenatingMediaSourceTest extends TestCase { throw new UnsupportedOperationException(); } + @Override + public void setShuffleModeEnabled(boolean shuffleModeEnabled) { + throw new UnsupportedOperationException(); + } + + @Override + public boolean getShuffleModeEnabled() { + throw new UnsupportedOperationException(); + } + @Override public boolean isLoading() { throw new UnsupportedOperationException(); diff --git a/library/core/src/main/java/com/google/android/exoplayer2/ExoPlayerImpl.java b/library/core/src/main/java/com/google/android/exoplayer2/ExoPlayerImpl.java index f22c08f585..f112ee9473 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/ExoPlayerImpl.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/ExoPlayerImpl.java @@ -53,6 +53,7 @@ import java.util.concurrent.CopyOnWriteArraySet; private boolean tracksSelected; private boolean playWhenReady; private @RepeatMode int repeatMode; + private boolean shuffleModeEnabled; private int playbackState; private int pendingSeekAcks; private int pendingPrepareAcks; @@ -87,6 +88,7 @@ import java.util.concurrent.CopyOnWriteArraySet; this.trackSelector = Assertions.checkNotNull(trackSelector); this.playWhenReady = false; this.repeatMode = Player.REPEAT_MODE_OFF; + this.shuffleModeEnabled = false; this.playbackState = Player.STATE_IDLE; this.listeners = new CopyOnWriteArraySet<>(); emptyTrackSelections = new TrackSelectionArray(new TrackSelection[renderers.length]); @@ -189,6 +191,18 @@ import java.util.concurrent.CopyOnWriteArraySet; return repeatMode; } + @Override + public void setShuffleModeEnabled(boolean shuffleModeEnabled) { + if (this.shuffleModeEnabled != shuffleModeEnabled) { + this.shuffleModeEnabled = shuffleModeEnabled; + } + } + + @Override + public boolean getShuffleModeEnabled() { + return shuffleModeEnabled; + } + @Override public boolean isLoading() { return isLoading; diff --git a/library/core/src/main/java/com/google/android/exoplayer2/Player.java b/library/core/src/main/java/com/google/android/exoplayer2/Player.java index d2480c5b3a..f11b107f13 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/Player.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/Player.java @@ -219,6 +219,18 @@ public interface Player { */ @RepeatMode int getRepeatMode(); + /** + * Sets whether shuffling of windows is enabled. + * + * @param shuffleModeEnabled Whether shuffling is enabled. + */ + void setShuffleModeEnabled(boolean shuffleModeEnabled); + + /** + * Returns whether shuffling of windows is enabled. + */ + boolean getShuffleModeEnabled(); + /** * Whether the player is currently loading the source. * diff --git a/library/core/src/main/java/com/google/android/exoplayer2/SimpleExoPlayer.java b/library/core/src/main/java/com/google/android/exoplayer2/SimpleExoPlayer.java index d71c81f08f..9fcc4d2128 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/SimpleExoPlayer.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/SimpleExoPlayer.java @@ -642,6 +642,16 @@ public class SimpleExoPlayer implements ExoPlayer { player.setRepeatMode(repeatMode); } + @Override + public void setShuffleModeEnabled(boolean shuffleModeEnabled) { + player.setShuffleModeEnabled(shuffleModeEnabled); + } + + @Override + public boolean getShuffleModeEnabled() { + return player.getShuffleModeEnabled(); + } + @Override public boolean isLoading() { return player.isLoading(); diff --git a/testutils/src/main/java/com/google/android/exoplayer2/testutil/FakeSimpleExoPlayer.java b/testutils/src/main/java/com/google/android/exoplayer2/testutil/FakeSimpleExoPlayer.java index cf88d10bc8..7edaa6b13e 100644 --- a/testutils/src/main/java/com/google/android/exoplayer2/testutil/FakeSimpleExoPlayer.java +++ b/testutils/src/main/java/com/google/android/exoplayer2/testutil/FakeSimpleExoPlayer.java @@ -154,6 +154,16 @@ public class FakeSimpleExoPlayer extends SimpleExoPlayer { return Player.REPEAT_MODE_OFF; } + @Override + public void setShuffleModeEnabled(boolean shuffleModeEnabled) { + throw new UnsupportedOperationException(); + } + + @Override + public boolean getShuffleModeEnabled() { + return false; + } + @Override public boolean isLoading() { return isLoading;