mirror of
https://github.com/androidx/media.git
synced 2025-05-04 06:00:37 +08:00
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
This commit is contained in:
parent
ea597a8002
commit
1dfda7ab6e
@ -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;
|
||||||
@ -122,6 +122,11 @@ public class ForwardingPlayer extends BasePlayer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setMediaItems(List<MediaItem> mediaItems) {
|
||||||
|
player.setMediaItems(mediaItems);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@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);
|
||||||
@ -133,21 +138,71 @@ public class ForwardingPlayer extends BasePlayer {
|
|||||||
player.setMediaItems(mediaItems, startWindowIndex, startPositionMs);
|
player.setMediaItems(mediaItems, startWindowIndex, startPositionMs);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@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
|
@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
|
||||||
|
public void moveMediaItem(int currentIndex, int newIndex) {
|
||||||
|
player.moveMediaItem(currentIndex, newIndex);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@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
|
||||||
|
public void removeMediaItem(int index) {
|
||||||
|
player.removeMediaItem(index);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void removeMediaItems(int fromIndex, int toIndex) {
|
public void removeMediaItems(int fromIndex, int toIndex) {
|
||||||
player.removeMediaItems(fromIndex, toIndex);
|
player.removeMediaItems(fromIndex, toIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void clearMediaItems() {
|
||||||
|
player.clearMediaItems();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isCommandAvailable(@Command int command) {
|
||||||
|
return !disabledCommands.contains(command) && player.isCommandAvailable(command);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Commands getAvailableCommands() {
|
public Commands getAvailableCommands() {
|
||||||
Commands commands = player.getAvailableCommands();
|
Commands commands = player.getAvailableCommands();
|
||||||
@ -173,12 +228,27 @@ 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() {
|
||||||
return player.getPlayerError();
|
return player.getPlayerError();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void play() {
|
||||||
|
player.play();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void pause() {
|
||||||
|
player.pause();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setPlayWhenReady(boolean playWhenReady) {
|
public void setPlayWhenReady(boolean playWhenReady) {
|
||||||
player.setPlayWhenReady(playWhenReady);
|
player.setPlayWhenReady(playWhenReady);
|
||||||
@ -214,21 +284,66 @@ public class ForwardingPlayer extends BasePlayer {
|
|||||||
return player.isLoading();
|
return player.isLoading();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@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
|
@Override
|
||||||
public void seekTo(int windowIndex, long positionMs) {
|
public void seekTo(int windowIndex, long positionMs) {
|
||||||
player.seekTo(windowIndex, positionMs);
|
player.seekTo(windowIndex, positionMs);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@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
|
@Override
|
||||||
public void setPlaybackParameters(PlaybackParameters playbackParameters) {
|
public void setPlaybackParameters(PlaybackParameters playbackParameters) {
|
||||||
player.setPlaybackParameters(playbackParameters);
|
player.setPlaybackParameters(playbackParameters);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setPlaybackSpeed(float speed) {
|
||||||
|
player.setPlaybackSpeed(speed);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PlaybackParameters getPlaybackParameters() {
|
public PlaybackParameters getPlaybackParameters() {
|
||||||
return player.getPlaybackParameters();
|
return player.getPlaybackParameters();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void stop() {
|
||||||
|
player.stop();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@SuppressWarnings("deprecation") // Forwarding to deprecated method.
|
@SuppressWarnings("deprecation") // Forwarding to deprecated method.
|
||||||
public void stop(boolean reset) {
|
public void stop(boolean reset) {
|
||||||
@ -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();
|
||||||
@ -275,6 +396,32 @@ public class ForwardingPlayer extends BasePlayer {
|
|||||||
return player.getCurrentWindowIndex();
|
return player.getCurrentWindowIndex();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@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
|
@Override
|
||||||
public long getDuration() {
|
public long getDuration() {
|
||||||
return player.getDuration();
|
return player.getDuration();
|
||||||
@ -290,11 +437,36 @@ public class ForwardingPlayer extends BasePlayer {
|
|||||||
return player.getBufferedPosition();
|
return player.getBufferedPosition();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getBufferedPercentage() {
|
||||||
|
return player.getBufferedPercentage();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public long getTotalBufferedDuration() {
|
public long getTotalBufferedDuration() {
|
||||||
return player.getTotalBufferedDuration();
|
return player.getTotalBufferedDuration();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@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
|
@Override
|
||||||
public boolean isPlayingAd() {
|
public boolean isPlayingAd() {
|
||||||
return player.isPlayingAd();
|
return player.isPlayingAd();
|
||||||
@ -310,6 +482,11 @@ public class ForwardingPlayer extends BasePlayer {
|
|||||||
return player.getCurrentAdIndexInAdGroup();
|
return player.getCurrentAdIndexInAdGroup();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public long getContentDuration() {
|
||||||
|
return player.getContentDuration();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public long getContentPosition() {
|
public long getContentPosition() {
|
||||||
return player.getContentPosition();
|
return player.getContentPosition();
|
||||||
|
@ -254,13 +254,27 @@ public class ForwardingPlayerTest {
|
|||||||
inOrder.verifyNoMoreInteractions();
|
inOrder.verifyNoMoreInteractions();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@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
|
@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 {
|
|||||||
// 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();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user