Commit 1dfda7ab by christosts Committed by Oliver Woodman

ForwardingPlayer implements Player

Make ForwardingPlayer implement Player and not extend BasePlayer so that
ForwardingPlayer forwards each Player method directly to the wrapped
Player instance.

PiperOrigin-RevId: 374161084
parent ea597a80
...@@ -43,7 +43,7 @@ import java.util.List; ...@@ -43,7 +43,7 @@ import java.util.List;
* player advertises available commands, either with {@link Player#isCommandAvailable(int)} or with * player advertises available commands, either with {@link Player#isCommandAvailable(int)} or with
* {@link Listener#onAvailableCommandsChanged}, the disabled commands will be filtered out. * {@link Listener#onAvailableCommandsChanged}, the disabled commands will be filtered out.
*/ */
public class ForwardingPlayer extends BasePlayer { public class ForwardingPlayer implements Player {
private final Player player; private final Player player;
private final Clock clock; private final Clock clock;
@Nullable private ForwardingListener forwardingListener; @Nullable private ForwardingListener forwardingListener;
...@@ -123,6 +123,11 @@ public class ForwardingPlayer extends BasePlayer { ...@@ -123,6 +123,11 @@ public class ForwardingPlayer extends BasePlayer {
} }
@Override @Override
public void setMediaItems(List<MediaItem> mediaItems) {
player.setMediaItems(mediaItems);
}
@Override
public void setMediaItems(List<MediaItem> mediaItems, boolean resetPosition) { public void setMediaItems(List<MediaItem> mediaItems, boolean resetPosition) {
player.setMediaItems(mediaItems, resetPosition); player.setMediaItems(mediaItems, resetPosition);
} }
...@@ -134,21 +139,71 @@ public class ForwardingPlayer extends BasePlayer { ...@@ -134,21 +139,71 @@ public class ForwardingPlayer extends BasePlayer {
} }
@Override @Override
public void setMediaItem(MediaItem mediaItem) {
player.setMediaItem(mediaItem);
}
@Override
public void setMediaItem(MediaItem mediaItem, long startPositionMs) {
player.setMediaItem(mediaItem, startPositionMs);
}
@Override
public void setMediaItem(MediaItem mediaItem, boolean resetPosition) {
player.setMediaItem(mediaItem, resetPosition);
}
@Override
public void addMediaItem(MediaItem mediaItem) {
player.addMediaItem(mediaItem);
}
@Override
public void addMediaItem(int index, MediaItem mediaItem) {
player.addMediaItem(index, mediaItem);
}
@Override
public void addMediaItems(List<MediaItem> mediaItems) {
player.addMediaItems(mediaItems);
}
@Override
public void addMediaItems(int index, List<MediaItem> mediaItems) { public void addMediaItems(int index, List<MediaItem> mediaItems) {
player.addMediaItems(index, mediaItems); player.addMediaItems(index, mediaItems);
} }
@Override @Override
public void moveMediaItem(int currentIndex, int newIndex) {
player.moveMediaItem(currentIndex, newIndex);
}
@Override
public void moveMediaItems(int fromIndex, int toIndex, int newIndex) { public void moveMediaItems(int fromIndex, int toIndex, int newIndex) {
player.moveMediaItems(fromIndex, toIndex, newIndex); player.moveMediaItems(fromIndex, toIndex, newIndex);
} }
@Override @Override
public void removeMediaItem(int index) {
player.removeMediaItem(index);
}
@Override
public void removeMediaItems(int fromIndex, int toIndex) { public void removeMediaItems(int fromIndex, int toIndex) {
player.removeMediaItems(fromIndex, toIndex); player.removeMediaItems(fromIndex, toIndex);
} }
@Override @Override
public void clearMediaItems() {
player.clearMediaItems();
}
@Override
public boolean isCommandAvailable(@Command int command) {
return !disabledCommands.contains(command) && player.isCommandAvailable(command);
}
@Override
public Commands getAvailableCommands() { public Commands getAvailableCommands() {
Commands commands = player.getAvailableCommands(); Commands commands = player.getAvailableCommands();
if (filteredCommands == null || !commands.equals(unfilteredCommands)) { if (filteredCommands == null || !commands.equals(unfilteredCommands)) {
...@@ -173,6 +228,11 @@ public class ForwardingPlayer extends BasePlayer { ...@@ -173,6 +228,11 @@ public class ForwardingPlayer extends BasePlayer {
return player.getPlaybackSuppressionReason(); return player.getPlaybackSuppressionReason();
} }
@Override
public boolean isPlaying() {
return player.isPlaying();
}
@Nullable @Nullable
@Override @Override
public ExoPlaybackException getPlayerError() { public ExoPlaybackException getPlayerError() {
...@@ -180,6 +240,16 @@ public class ForwardingPlayer extends BasePlayer { ...@@ -180,6 +240,16 @@ public class ForwardingPlayer extends BasePlayer {
} }
@Override @Override
public void play() {
player.play();
}
@Override
public void pause() {
player.pause();
}
@Override
public void setPlayWhenReady(boolean playWhenReady) { public void setPlayWhenReady(boolean playWhenReady) {
player.setPlayWhenReady(playWhenReady); player.setPlayWhenReady(playWhenReady);
} }
...@@ -215,21 +285,66 @@ public class ForwardingPlayer extends BasePlayer { ...@@ -215,21 +285,66 @@ public class ForwardingPlayer extends BasePlayer {
} }
@Override @Override
public void seekToDefaultPosition() {
player.seekToDefaultPosition();
}
@Override
public void seekToDefaultPosition(int windowIndex) {
player.seekToDefaultPosition(windowIndex);
}
@Override
public void seekTo(long positionMs) {
player.seekTo(positionMs);
}
@Override
public void seekTo(int windowIndex, long positionMs) { public void seekTo(int windowIndex, long positionMs) {
player.seekTo(windowIndex, positionMs); player.seekTo(windowIndex, positionMs);
} }
@Override @Override
public boolean hasPrevious() {
return player.hasPrevious();
}
@Override
public void previous() {
player.previous();
}
@Override
public boolean hasNext() {
return player.hasNext();
}
@Override
public void next() {
player.next();
}
@Override
public void setPlaybackParameters(PlaybackParameters playbackParameters) { public void setPlaybackParameters(PlaybackParameters playbackParameters) {
player.setPlaybackParameters(playbackParameters); player.setPlaybackParameters(playbackParameters);
} }
@Override @Override
public void setPlaybackSpeed(float speed) {
player.setPlaybackSpeed(speed);
}
@Override
public PlaybackParameters getPlaybackParameters() { public PlaybackParameters getPlaybackParameters() {
return player.getPlaybackParameters(); return player.getPlaybackParameters();
} }
@Override @Override
public void stop() {
player.stop();
}
@Override
@SuppressWarnings("deprecation") // Forwarding to deprecated method. @SuppressWarnings("deprecation") // Forwarding to deprecated method.
public void stop(boolean reset) { public void stop(boolean reset) {
player.stop(reset); player.stop(reset);
...@@ -260,6 +375,12 @@ public class ForwardingPlayer extends BasePlayer { ...@@ -260,6 +375,12 @@ public class ForwardingPlayer extends BasePlayer {
return player.getMediaMetadata(); return player.getMediaMetadata();
} }
@Nullable
@Override
public Object getCurrentManifest() {
return player.getCurrentManifest();
}
@Override @Override
public Timeline getCurrentTimeline() { public Timeline getCurrentTimeline() {
return player.getCurrentTimeline(); return player.getCurrentTimeline();
...@@ -276,6 +397,32 @@ public class ForwardingPlayer extends BasePlayer { ...@@ -276,6 +397,32 @@ public class ForwardingPlayer extends BasePlayer {
} }
@Override @Override
public int getNextWindowIndex() {
return player.getNextWindowIndex();
}
@Override
public int getPreviousWindowIndex() {
return player.getPreviousWindowIndex();
}
@Nullable
@Override
public MediaItem getCurrentMediaItem() {
return player.getCurrentMediaItem();
}
@Override
public int getMediaItemCount() {
return player.getMediaItemCount();
}
@Override
public MediaItem getMediaItemAt(int index) {
return player.getMediaItemAt(index);
}
@Override
public long getDuration() { public long getDuration() {
return player.getDuration(); return player.getDuration();
} }
...@@ -291,11 +438,36 @@ public class ForwardingPlayer extends BasePlayer { ...@@ -291,11 +438,36 @@ public class ForwardingPlayer extends BasePlayer {
} }
@Override @Override
public int getBufferedPercentage() {
return player.getBufferedPercentage();
}
@Override
public long getTotalBufferedDuration() { public long getTotalBufferedDuration() {
return player.getTotalBufferedDuration(); return player.getTotalBufferedDuration();
} }
@Override @Override
public boolean isCurrentWindowDynamic() {
return player.isCurrentWindowDynamic();
}
@Override
public boolean isCurrentWindowLive() {
return player.isCurrentWindowLive();
}
@Override
public long getCurrentLiveOffset() {
return player.getCurrentLiveOffset();
}
@Override
public boolean isCurrentWindowSeekable() {
return player.isCurrentWindowSeekable();
}
@Override
public boolean isPlayingAd() { public boolean isPlayingAd() {
return player.isPlayingAd(); return player.isPlayingAd();
} }
...@@ -311,6 +483,11 @@ public class ForwardingPlayer extends BasePlayer { ...@@ -311,6 +483,11 @@ public class ForwardingPlayer extends BasePlayer {
} }
@Override @Override
public long getContentDuration() {
return player.getContentDuration();
}
@Override
public long getContentPosition() { public long getContentPosition() {
return player.getContentPosition(); return player.getContentPosition();
} }
......
...@@ -255,12 +255,26 @@ public class ForwardingPlayerTest { ...@@ -255,12 +255,26 @@ public class ForwardingPlayerTest {
} }
@Test @Test
public void forwardingPlayer_overridesAllPlayerMethods() throws Exception {
// Check with reflection that ForwardingPlayer overrides all Player methods.
List<Method> playerMethods = getPublicMethods(Player.class);
for (int i = 0; i < playerMethods.size(); i++) {
Method method = playerMethods.get(i);
assertThat(
ForwardingPlayer.class.getDeclaredMethod(
method.getName(), method.getParameterTypes()))
.isNotNull();
}
}
@Test
public void forwardingListener_overridesAllListenerMethods() throws Exception { public void forwardingListener_overridesAllListenerMethods() throws Exception {
// Check with reflection that ForwardingListener in ForwardingPlayer overrides all Listener // Check with reflection that ForwardingListener in ForwardingPlayer overrides all Listener
// methods. // methods.
Class<?> forwardingListenerClass = getNestedClass("ForwardingListener"); Class<?> forwardingListenerClass = getNestedClass("ForwardingListener");
List<Method> publicListenerMethods = getPublicMethods(Player.Listener.class); List<Method> publicListenerMethods = getPublicMethods(Player.Listener.class);
for (Method method : publicListenerMethods) { for (int i = 0; i < publicListenerMethods.size(); i++) {
Method method = publicListenerMethods.get(i);
assertThat( assertThat(
forwardingListenerClass.getDeclaredMethod( forwardingListenerClass.getDeclaredMethod(
method.getName(), method.getParameterTypes())) method.getName(), method.getParameterTypes()))
...@@ -274,7 +288,8 @@ public class ForwardingPlayerTest { ...@@ -274,7 +288,8 @@ public class ForwardingPlayerTest {
// EventListener methods. // EventListener methods.
Class<?> listenerWrapperClass = getNestedClass("EventListenerWrapper"); Class<?> listenerWrapperClass = getNestedClass("EventListenerWrapper");
List<Method> publicListenerMethods = getPublicMethods(Player.EventListener.class); List<Method> publicListenerMethods = getPublicMethods(Player.EventListener.class);
for (Method method : publicListenerMethods) { for (int i = 0; i < publicListenerMethods.size(); i++) {
Method method = publicListenerMethods.get(i);
assertThat( assertThat(
listenerWrapperClass.getDeclaredMethod(method.getName(), method.getParameterTypes())) listenerWrapperClass.getDeclaredMethod(method.getName(), method.getParameterTypes()))
.isNotNull(); .isNotNull();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment