Commit b5bf1e07 by olly Committed by Ian Baker

Revert of cf1dcede

PiperOrigin-RevId: 426994820
parent 1103fee0
...@@ -150,7 +150,6 @@ ...@@ -150,7 +150,6 @@
`DefaultMediaItemConverter` `DefaultMediaItemConverter`
([#9663](https://github.com/google/ExoPlayer/issues/9663)). ([#9663](https://github.com/google/ExoPlayer/issues/9663)).
* Remove deprecated symbols: * Remove deprecated symbols:
* Remove `Player.EventLister`. Use `Player.Listener` instead.
* Remove `MediaSourceFactory#setDrmSessionManager`, * Remove `MediaSourceFactory#setDrmSessionManager`,
`MediaSourceFactory#setDrmHttpDataSourceFactory`, and `MediaSourceFactory#setDrmHttpDataSourceFactory`, and
`MediaSourceFactory#setDrmUserAgent`. Use `MediaSourceFactory#setDrmUserAgent`. Use
......
...@@ -135,7 +135,7 @@ public final class CastPlayer extends BasePlayer { ...@@ -135,7 +135,7 @@ public final class CastPlayer extends BasePlayer {
private final SeekResultCallback seekResultCallback; private final SeekResultCallback seekResultCallback;
// Listeners and notification. // Listeners and notification.
private final ListenerSet<Listener> listeners; private final ListenerSet<Player.EventListener> listeners;
@Nullable private SessionAvailabilityListener sessionAvailabilityListener; @Nullable private SessionAvailabilityListener sessionAvailabilityListener;
// Internal state. // Internal state.
...@@ -278,11 +278,41 @@ public final class CastPlayer extends BasePlayer { ...@@ -278,11 +278,41 @@ public final class CastPlayer extends BasePlayer {
@Override @Override
public void addListener(Listener listener) { public void addListener(Listener listener) {
EventListener eventListener = listener;
addListener(eventListener);
}
/**
* Registers a listener to receive events from the player.
*
* <p>The listener's methods will be called on the thread associated with {@link
* #getApplicationLooper()}.
*
* @param listener The listener to register.
* @deprecated Use {@link #addListener(Listener)} and {@link #removeListener(Listener)} instead.
*/
@Deprecated
@SuppressWarnings("deprecation")
public void addListener(EventListener listener) {
listeners.add(listener); listeners.add(listener);
} }
@Override @Override
public void removeListener(Listener listener) { public void removeListener(Listener listener) {
EventListener eventListener = listener;
removeListener(eventListener);
}
/**
* Unregister a listener registered through {@link #addListener(EventListener)}. The listener will
* no longer receive events from the player.
*
* @param listener The listener to unregister.
* @deprecated Use {@link #addListener(Listener)} and {@link #removeListener(Listener)} instead.
*/
@Deprecated
@SuppressWarnings("deprecation")
public void removeListener(EventListener listener) {
listeners.remove(listener); listeners.remove(listener);
} }
...@@ -441,7 +471,7 @@ public final class CastPlayer extends BasePlayer { ...@@ -441,7 +471,7 @@ public final class CastPlayer extends BasePlayer {
} }
updateAvailableCommandsAndNotifyIfChanged(); updateAvailableCommandsAndNotifyIfChanged();
} else if (pendingSeekCount == 0) { } else if (pendingSeekCount == 0) {
listeners.queueEvent(/* eventFlag= */ C.INDEX_UNSET, Listener::onSeekProcessed); listeners.queueEvent(/* eventFlag= */ C.INDEX_UNSET, EventListener::onSeekProcessed);
} }
listeners.flushEvents(); listeners.flushEvents();
} }
...@@ -1445,7 +1475,7 @@ public final class CastPlayer extends BasePlayer { ...@@ -1445,7 +1475,7 @@ public final class CastPlayer extends BasePlayer {
currentWindowIndex = pendingSeekWindowIndex; currentWindowIndex = pendingSeekWindowIndex;
pendingSeekWindowIndex = C.INDEX_UNSET; pendingSeekWindowIndex = C.INDEX_UNSET;
pendingSeekPositionMs = C.TIME_UNSET; pendingSeekPositionMs = C.TIME_UNSET;
listeners.sendEvent(/* eventFlag= */ C.INDEX_UNSET, Listener::onSeekProcessed); listeners.sendEvent(/* eventFlag= */ C.INDEX_UNSET, EventListener::onSeekProcessed);
} }
} }
} }
......
...@@ -823,159 +823,191 @@ public class ForwardingPlayer implements Player { ...@@ -823,159 +823,191 @@ public class ForwardingPlayer implements Player {
return player; return player;
} }
private static final class ForwardingListener implements Listener { @SuppressWarnings("deprecation") // Use of deprecated type for backwards compatibility.
private static class ForwardingEventListener implements EventListener {
private final ForwardingPlayer forwardingPlayer; private final ForwardingPlayer forwardingPlayer;
private final Listener listener; private final EventListener eventListener;
public ForwardingListener(ForwardingPlayer forwardingPlayer, Listener listener) { private ForwardingEventListener(
ForwardingPlayer forwardingPlayer, EventListener eventListener) {
this.forwardingPlayer = forwardingPlayer; this.forwardingPlayer = forwardingPlayer;
this.listener = listener; this.eventListener = eventListener;
}
@Override
public void onEvents(Player player, Events events) {
// Replace player with forwarding player.
listener.onEvents(forwardingPlayer, events);
} }
@Override @Override
public void onTimelineChanged(Timeline timeline, @TimelineChangeReason int reason) { public void onTimelineChanged(Timeline timeline, @TimelineChangeReason int reason) {
listener.onTimelineChanged(timeline, reason); eventListener.onTimelineChanged(timeline, reason);
} }
@Override @Override
public void onMediaItemTransition( public void onMediaItemTransition(
@Nullable MediaItem mediaItem, @MediaItemTransitionReason int reason) { @Nullable MediaItem mediaItem, @MediaItemTransitionReason int reason) {
listener.onMediaItemTransition(mediaItem, reason); eventListener.onMediaItemTransition(mediaItem, reason);
} }
@Override @Override
@SuppressWarnings("deprecation")
public void onTracksChanged(TrackGroupArray trackGroups, TrackSelectionArray trackSelections) { public void onTracksChanged(TrackGroupArray trackGroups, TrackSelectionArray trackSelections) {
listener.onTracksChanged(trackGroups, trackSelections); eventListener.onTracksChanged(trackGroups, trackSelections);
} }
@Override @Override
public void onTracksInfoChanged(TracksInfo tracksInfo) { public void onTracksInfoChanged(TracksInfo tracksInfo) {
listener.onTracksInfoChanged(tracksInfo); eventListener.onTracksInfoChanged(tracksInfo);
} }
@Override @Override
public void onMediaMetadataChanged(MediaMetadata mediaMetadata) { public void onMediaMetadataChanged(MediaMetadata mediaMetadata) {
listener.onMediaMetadataChanged(mediaMetadata); eventListener.onMediaMetadataChanged(mediaMetadata);
} }
@Override @Override
public void onPlaylistMetadataChanged(MediaMetadata mediaMetadata) { public void onPlaylistMetadataChanged(MediaMetadata mediaMetadata) {
listener.onPlaylistMetadataChanged(mediaMetadata); eventListener.onPlaylistMetadataChanged(mediaMetadata);
} }
@Override @Override
public void onIsLoadingChanged(boolean isLoading) { public void onIsLoadingChanged(boolean isLoading) {
listener.onIsLoadingChanged(isLoading); eventListener.onIsLoadingChanged(isLoading);
} }
@Override @Override
@SuppressWarnings("deprecation")
public void onLoadingChanged(boolean isLoading) { public void onLoadingChanged(boolean isLoading) {
listener.onIsLoadingChanged(isLoading); eventListener.onIsLoadingChanged(isLoading);
} }
@Override @Override
public void onAvailableCommandsChanged(Commands availableCommands) { public void onAvailableCommandsChanged(Commands availableCommands) {
listener.onAvailableCommandsChanged(availableCommands); eventListener.onAvailableCommandsChanged(availableCommands);
} }
@Override @Override
public void onTrackSelectionParametersChanged(TrackSelectionParameters parameters) { public void onTrackSelectionParametersChanged(TrackSelectionParameters parameters) {
listener.onTrackSelectionParametersChanged(parameters); eventListener.onTrackSelectionParametersChanged(parameters);
} }
@Override @Override
@SuppressWarnings("deprecation")
public void onPlayerStateChanged(boolean playWhenReady, @State int playbackState) { public void onPlayerStateChanged(boolean playWhenReady, @State int playbackState) {
listener.onPlayerStateChanged(playWhenReady, playbackState); eventListener.onPlayerStateChanged(playWhenReady, playbackState);
} }
@Override @Override
public void onPlaybackStateChanged(@State int playbackState) { public void onPlaybackStateChanged(@State int playbackState) {
listener.onPlaybackStateChanged(playbackState); eventListener.onPlaybackStateChanged(playbackState);
} }
@Override @Override
public void onPlayWhenReadyChanged( public void onPlayWhenReadyChanged(
boolean playWhenReady, @PlayWhenReadyChangeReason int reason) { boolean playWhenReady, @PlayWhenReadyChangeReason int reason) {
listener.onPlayWhenReadyChanged(playWhenReady, reason); eventListener.onPlayWhenReadyChanged(playWhenReady, reason);
} }
@Override @Override
public void onPlaybackSuppressionReasonChanged( public void onPlaybackSuppressionReasonChanged(
@PlayWhenReadyChangeReason int playbackSuppressionReason) { @PlayWhenReadyChangeReason int playbackSuppressionReason) {
listener.onPlaybackSuppressionReasonChanged(playbackSuppressionReason); eventListener.onPlaybackSuppressionReasonChanged(playbackSuppressionReason);
} }
@Override @Override
public void onIsPlayingChanged(boolean isPlaying) { public void onIsPlayingChanged(boolean isPlaying) {
listener.onIsPlayingChanged(isPlaying); eventListener.onIsPlayingChanged(isPlaying);
} }
@Override @Override
public void onRepeatModeChanged(@RepeatMode int repeatMode) { public void onRepeatModeChanged(@RepeatMode int repeatMode) {
listener.onRepeatModeChanged(repeatMode); eventListener.onRepeatModeChanged(repeatMode);
} }
@Override @Override
public void onShuffleModeEnabledChanged(boolean shuffleModeEnabled) { public void onShuffleModeEnabledChanged(boolean shuffleModeEnabled) {
listener.onShuffleModeEnabledChanged(shuffleModeEnabled); eventListener.onShuffleModeEnabledChanged(shuffleModeEnabled);
} }
@Override @Override
public void onPlayerError(PlaybackException error) { public void onPlayerError(PlaybackException error) {
listener.onPlayerError(error); eventListener.onPlayerError(error);
} }
@Override @Override
public void onPlayerErrorChanged(@Nullable PlaybackException error) { public void onPlayerErrorChanged(@Nullable PlaybackException error) {
listener.onPlayerErrorChanged(error); eventListener.onPlayerErrorChanged(error);
} }
@Override @Override
@SuppressWarnings("deprecation")
public void onPositionDiscontinuity(@DiscontinuityReason int reason) { public void onPositionDiscontinuity(@DiscontinuityReason int reason) {
listener.onPositionDiscontinuity(reason); eventListener.onPositionDiscontinuity(reason);
} }
@Override @Override
public void onPositionDiscontinuity( public void onPositionDiscontinuity(
PositionInfo oldPosition, PositionInfo newPosition, @DiscontinuityReason int reason) { PositionInfo oldPosition, PositionInfo newPosition, @DiscontinuityReason int reason) {
listener.onPositionDiscontinuity(oldPosition, newPosition, reason); eventListener.onPositionDiscontinuity(oldPosition, newPosition, reason);
} }
@Override @Override
public void onPlaybackParametersChanged(PlaybackParameters playbackParameters) { public void onPlaybackParametersChanged(PlaybackParameters playbackParameters) {
listener.onPlaybackParametersChanged(playbackParameters); eventListener.onPlaybackParametersChanged(playbackParameters);
} }
@Override @Override
public void onSeekBackIncrementChanged(long seekBackIncrementMs) { public void onSeekBackIncrementChanged(long seekBackIncrementMs) {
listener.onSeekBackIncrementChanged(seekBackIncrementMs); eventListener.onSeekBackIncrementChanged(seekBackIncrementMs);
} }
@Override @Override
public void onSeekForwardIncrementChanged(long seekForwardIncrementMs) { public void onSeekForwardIncrementChanged(long seekForwardIncrementMs) {
listener.onSeekForwardIncrementChanged(seekForwardIncrementMs); eventListener.onSeekForwardIncrementChanged(seekForwardIncrementMs);
} }
@Override @Override
public void onMaxSeekToPreviousPositionChanged(long maxSeekToPreviousPositionMs) { public void onMaxSeekToPreviousPositionChanged(long maxSeekToPreviousPositionMs) {
listener.onMaxSeekToPreviousPositionChanged(maxSeekToPreviousPositionMs); eventListener.onMaxSeekToPreviousPositionChanged(maxSeekToPreviousPositionMs);
} }
@Override @Override
@SuppressWarnings("deprecation")
public void onSeekProcessed() { public void onSeekProcessed() {
listener.onSeekProcessed(); eventListener.onSeekProcessed();
}
@Override
public void onEvents(Player player, Events events) {
// Replace player with forwarding player.
eventListener.onEvents(forwardingPlayer, events);
}
@Override
public boolean equals(@Nullable Object o) {
if (this == o) {
return true;
}
if (!(o instanceof ForwardingEventListener)) {
return false;
}
ForwardingEventListener that = (ForwardingEventListener) o;
if (!forwardingPlayer.equals(that.forwardingPlayer)) {
return false;
}
return eventListener.equals(that.eventListener);
}
@Override
public int hashCode() {
int result = forwardingPlayer.hashCode();
result = 31 * result + eventListener.hashCode();
return result;
}
}
private static final class ForwardingListener extends ForwardingEventListener
implements Listener {
private final Listener listener;
public ForwardingListener(ForwardingPlayer forwardingPlayer, Listener listener) {
super(forwardingPlayer, listener);
this.listener = listener;
} }
@Override @Override
...@@ -1032,27 +1064,5 @@ public class ForwardingPlayer implements Player { ...@@ -1032,27 +1064,5 @@ public class ForwardingPlayer implements Player {
public void onDeviceVolumeChanged(int volume, boolean muted) { public void onDeviceVolumeChanged(int volume, boolean muted) {
listener.onDeviceVolumeChanged(volume, muted); listener.onDeviceVolumeChanged(volume, muted);
} }
@Override
public boolean equals(@Nullable Object o) {
if (this == o) {
return true;
}
if (!(o instanceof ForwardingListener)) {
return false;
}
ForwardingListener that = (ForwardingListener) o;
if (!forwardingPlayer.equals(that.forwardingPlayer)) {
return false;
}
return listener.equals(that.listener);
}
@Override
public int hashCode() {
int result = forwardingPlayer.hashCode();
result = 31 * result + listener.hashCode();
return result;
}
} }
} }
...@@ -117,6 +117,21 @@ public class ForwardingPlayerTest { ...@@ -117,6 +117,21 @@ public class ForwardingPlayerTest {
} }
@Test @Test
@SuppressWarnings("deprecation") // Testing backwards compatibility with deprecated type.
public void forwardingEventListener_overridesAllEventListenerMethods() throws Exception {
// Check with reflection that ForwardingListener overrides all Listener methods.
Class<?> forwardingListenerClass = getInnerClass("ForwardingEventListener");
List<Method> methods = getPublicMethods(Player.EventListener.class);
for (int i = 0; i < methods.size(); i++) {
Method method = methods.get(i);
assertThat(
forwardingListenerClass.getDeclaredMethod(
method.getName(), method.getParameterTypes()))
.isNotNull();
}
}
@Test
public void forwardingListener_overridesAllListenerMethods() throws Exception { public void forwardingListener_overridesAllListenerMethods() throws Exception {
// Check with reflection that ForwardingListener overrides all Listener methods. // Check with reflection that ForwardingListener overrides all Listener methods.
Class<?> forwardingListenerClass = getInnerClass("ForwardingListener"); Class<?> forwardingListenerClass = getInnerClass("ForwardingListener");
......
...@@ -1018,6 +1018,30 @@ public interface ExoPlayer extends Player { ...@@ -1018,6 +1018,30 @@ public interface ExoPlayer extends Player {
DeviceComponent getDeviceComponent(); DeviceComponent getDeviceComponent();
/** /**
* Registers a listener to receive events from the player.
*
* <p>The listener's methods will be called on the thread associated with {@link
* #getApplicationLooper()}.
*
* @param listener The listener to register.
* @deprecated Use {@link #addListener(Listener)} and {@link #removeListener(Listener)} instead.
*/
@Deprecated
@SuppressWarnings("deprecation")
void addListener(EventListener listener);
/**
* Unregister a listener registered through {@link #addListener(EventListener)}. The listener will
* no longer receive events from the player.
*
* @param listener The listener to unregister.
* @deprecated Use {@link #addListener(Listener)} and {@link #removeListener(Listener)} instead.
*/
@Deprecated
@SuppressWarnings("deprecation")
void removeListener(EventListener listener);
/**
* Adds a listener to receive audio offload events. * Adds a listener to receive audio offload events.
* *
* @param listener The listener to register. * @param listener The listener to register.
......
...@@ -608,11 +608,23 @@ public class SimpleExoPlayer extends BasePlayer ...@@ -608,11 +608,23 @@ public class SimpleExoPlayer extends BasePlayer
player.addListener(listener); player.addListener(listener);
} }
@Deprecated
@Override
public void addListener(Player.EventListener listener) {
player.addEventListener(listener);
}
@Override @Override
public void removeListener(Listener listener) { public void removeListener(Listener listener) {
player.removeListener(listener); player.removeListener(listener);
} }
@Deprecated
@Override
public void removeListener(Player.EventListener listener) {
player.removeEventListener(listener);
}
@Override @Override
public @State int getPlaybackState() { public @State int getPlaybackState() {
return player.getPlaybackState(); return player.getPlaybackState();
......
...@@ -20,6 +20,7 @@ import androidx.annotation.Nullable; ...@@ -20,6 +20,7 @@ import androidx.annotation.Nullable;
import com.google.android.exoplayer2.ExoPlaybackException; import com.google.android.exoplayer2.ExoPlaybackException;
import com.google.android.exoplayer2.ExoPlayer; import com.google.android.exoplayer2.ExoPlayer;
import com.google.android.exoplayer2.Format; import com.google.android.exoplayer2.Format;
import com.google.android.exoplayer2.Player;
import com.google.android.exoplayer2.PlayerMessage; import com.google.android.exoplayer2.PlayerMessage;
import com.google.android.exoplayer2.Renderer; import com.google.android.exoplayer2.Renderer;
import com.google.android.exoplayer2.SeekParameters; import com.google.android.exoplayer2.SeekParameters;
...@@ -78,6 +79,16 @@ public class StubExoPlayer extends StubPlayer implements ExoPlayer { ...@@ -78,6 +79,16 @@ public class StubExoPlayer extends StubPlayer implements ExoPlayer {
} }
@Override @Override
public void addListener(Player.EventListener listener) {
throw new UnsupportedOperationException();
}
@Override
public void removeListener(Player.EventListener listener) {
throw new UnsupportedOperationException();
}
@Override
public void addAudioOffloadListener(AudioOffloadListener listener) { public void addAudioOffloadListener(AudioOffloadListener listener) {
throw new UnsupportedOperationException(); throw new UnsupportedOperationException();
} }
......
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