From 001090cc43ca9b5cf2fce4ae753031a11fe04ad7 Mon Sep 17 00:00:00 2001 From: rohks Date: Wed, 18 May 2022 23:05:13 +0100 Subject: [PATCH] Migrate leaf listeners of `Player` to new `onCues` override PiperOrigin-RevId: 449587030 --- .../media3/exoplayer/ClippedPlaybackTest.java | 5 +++-- .../media3/exoplayer/text/TextOutput.java | 4 ++-- .../session/MediaControllerListenerTest.java | 12 ++++++------ .../utils/DefaultRenderersFactoryAsserts.java | 5 ++--- .../test/utils/robolectric/PlaybackOutput.java | 15 ++++++++++++++- .../main/java/androidx/media3/ui/PlayerView.java | 6 +++--- 6 files changed, 30 insertions(+), 17 deletions(-) diff --git a/libraries/exoplayer/src/androidTest/java/androidx/media3/exoplayer/ClippedPlaybackTest.java b/libraries/exoplayer/src/androidTest/java/androidx/media3/exoplayer/ClippedPlaybackTest.java index 25308b2bac..79fa086273 100644 --- a/libraries/exoplayer/src/androidTest/java/androidx/media3/exoplayer/ClippedPlaybackTest.java +++ b/libraries/exoplayer/src/androidTest/java/androidx/media3/exoplayer/ClippedPlaybackTest.java @@ -25,6 +25,7 @@ import androidx.media3.common.MediaItem.SubtitleConfiguration; import androidx.media3.common.MimeTypes; import androidx.media3.common.Player; import androidx.media3.common.text.Cue; +import androidx.media3.common.text.CueGroup; import androidx.media3.common.util.ConditionVariable; import androidx.media3.exoplayer.source.ClippingMediaSource; import androidx.test.ext.junit.runners.AndroidJUnit4; @@ -135,8 +136,8 @@ public final class ClippedPlaybackTest { } @Override - public void onCues(List cues) { - this.cues.add(cues); + public void onCues(CueGroup cueGroup) { + this.cues.add(cueGroup.cues); } @Override diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/text/TextOutput.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/text/TextOutput.java index 2201d519bf..5485452d96 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/text/TextOutput.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/text/TextOutput.java @@ -33,7 +33,7 @@ public interface TextOutput { * @deprecated Use {@link #onCues(CueGroup)} instead. */ @Deprecated - void onCues(List cues); + default void onCues(List cues) {} /** * Called when there is a change in the {@link CueGroup}. @@ -41,5 +41,5 @@ public interface TextOutput { *

Both {@link #onCues(List)} and {@link #onCues(CueGroup)} are called when there is a change * in the cues You should only implement one or the other. */ - default void onCues(CueGroup cueGroup) {} + void onCues(CueGroup cueGroup); } diff --git a/libraries/test_session_current/src/androidTest/java/androidx/media3/session/MediaControllerListenerTest.java b/libraries/test_session_current/src/androidTest/java/androidx/media3/session/MediaControllerListenerTest.java index 2ca7d1dc14..ebc4315467 100644 --- a/libraries/test_session_current/src/androidTest/java/androidx/media3/session/MediaControllerListenerTest.java +++ b/libraries/test_session_current/src/androidTest/java/androidx/media3/session/MediaControllerListenerTest.java @@ -1874,9 +1874,9 @@ public class MediaControllerListenerTest { Player.Listener listener = new Player.Listener() { @Override - public void onCues(List cues) { + public void onCues(CueGroup cueGroup) { cuesFromParam.clear(); - cuesFromParam.addAll(cues); + cuesFromParam.addAll(cueGroup.cues); cuesFromGetter.clear(); cuesFromGetter.addAll(controller.getCurrentCues().cues); latch.countDown(); @@ -1905,8 +1905,8 @@ public class MediaControllerListenerTest { Player.Listener listener = new Player.Listener() { @Override - public void onCues(List cues) { - cuesFromParam.addAll(cues); + public void onCues(CueGroup cueGroup) { + cuesFromParam.addAll(cueGroup.cues); cuesFromGetter.addAll(controller.getCurrentCues().cues); latch.countDown(); } @@ -1937,8 +1937,8 @@ public class MediaControllerListenerTest { Player.Listener listener = new Player.Listener() { @Override - public void onCues(List cues) { - cuesFromParam.addAll(cues); + public void onCues(CueGroup cueGroup) { + cuesFromParam.addAll(cueGroup.cues); cuesFromGetter.addAll(controller.getCurrentCues().cues); latch.countDown(); } diff --git a/libraries/test_utils/src/main/java/androidx/media3/test/utils/DefaultRenderersFactoryAsserts.java b/libraries/test_utils/src/main/java/androidx/media3/test/utils/DefaultRenderersFactoryAsserts.java index edd7d2c282..41b0a09ab4 100644 --- a/libraries/test_utils/src/main/java/androidx/media3/test/utils/DefaultRenderersFactoryAsserts.java +++ b/libraries/test_utils/src/main/java/androidx/media3/test/utils/DefaultRenderersFactoryAsserts.java @@ -24,14 +24,13 @@ import android.os.Handler; import android.os.Looper; import androidx.media3.common.C; import androidx.media3.common.Metadata; -import androidx.media3.common.text.Cue; +import androidx.media3.common.text.CueGroup; import androidx.media3.common.util.UnstableApi; import androidx.media3.exoplayer.DefaultRenderersFactory; import androidx.media3.exoplayer.Renderer; import androidx.media3.exoplayer.audio.AudioRendererEventListener; import androidx.media3.exoplayer.video.VideoRendererEventListener; import androidx.test.core.app.ApplicationProvider; -import java.util.List; /** Assertions for {@link DefaultRenderersFactory}. */ @UnstableApi @@ -96,7 +95,7 @@ public final class DefaultRenderersFactoryAsserts { new Handler(Looper.getMainLooper()), new VideoRendererEventListener() {}, new AudioRendererEventListener() {}, - (List cues) -> {}, + (CueGroup cueGroup) -> {}, (Metadata metadata) -> {}); } } diff --git a/libraries/test_utils_robolectric/src/main/java/androidx/media3/test/utils/robolectric/PlaybackOutput.java b/libraries/test_utils_robolectric/src/main/java/androidx/media3/test/utils/robolectric/PlaybackOutput.java index 86d49be956..947ab7d82c 100644 --- a/libraries/test_utils_robolectric/src/main/java/androidx/media3/test/utils/robolectric/PlaybackOutput.java +++ b/libraries/test_utils_robolectric/src/main/java/androidx/media3/test/utils/robolectric/PlaybackOutput.java @@ -20,6 +20,7 @@ import androidx.annotation.Nullable; import androidx.media3.common.Metadata; import androidx.media3.common.Player; import androidx.media3.common.text.Cue; +import androidx.media3.common.text.CueGroup; import androidx.media3.common.util.UnstableApi; import androidx.media3.common.util.Util; import androidx.media3.exoplayer.ExoPlayer; @@ -56,12 +57,14 @@ public final class PlaybackOutput implements Dumper.Dumpable { private final List metadatas; private final List> subtitles; + private final List> subtitlesFromDeprecatedTextOutput; private PlaybackOutput(ExoPlayer player, CapturingRenderersFactory capturingRenderersFactory) { this.capturingRenderersFactory = capturingRenderersFactory; metadatas = Collections.synchronizedList(new ArrayList<>()); subtitles = Collections.synchronizedList(new ArrayList<>()); + subtitlesFromDeprecatedTextOutput = Collections.synchronizedList(new ArrayList<>()); // TODO: Consider passing playback position into MetadataOutput and TextOutput. Calling // player.getCurrentPosition() inside onMetadata/Cues will likely be non-deterministic // because renderer-thread != playback-thread. @@ -74,7 +77,12 @@ public final class PlaybackOutput implements Dumper.Dumpable { @Override public void onCues(List cues) { - subtitles.add(cues); + subtitlesFromDeprecatedTextOutput.add(cues); + } + + @Override + public void onCues(CueGroup cueGroup) { + subtitles.add(cueGroup.cues); } }); } @@ -146,6 +154,11 @@ public final class PlaybackOutput implements Dumper.Dumpable { } private void dumpSubtitles(Dumper dumper) { + if (!subtitles.equals(subtitlesFromDeprecatedTextOutput)) { + throw new IllegalStateException( + "Expected subtitles to be equal from both implementations of onCues method."); + } + if (subtitles.isEmpty()) { return; } diff --git a/libraries/ui/src/main/java/androidx/media3/ui/PlayerView.java b/libraries/ui/src/main/java/androidx/media3/ui/PlayerView.java index 662d28e974..9d5e05c3c8 100644 --- a/libraries/ui/src/main/java/androidx/media3/ui/PlayerView.java +++ b/libraries/ui/src/main/java/androidx/media3/ui/PlayerView.java @@ -60,7 +60,7 @@ import androidx.media3.common.Timeline; import androidx.media3.common.Timeline.Period; import androidx.media3.common.Tracks; import androidx.media3.common.VideoSize; -import androidx.media3.common.text.Cue; +import androidx.media3.common.text.CueGroup; import androidx.media3.common.util.Assertions; import androidx.media3.common.util.RepeatModeUtil; import androidx.media3.common.util.UnstableApi; @@ -1522,9 +1522,9 @@ public class PlayerView extends FrameLayout implements AdViewProvider { // Player.Listener implementation @Override - public void onCues(List cues) { + public void onCues(CueGroup cueGroup) { if (subtitleView != null) { - subtitleView.setCues(cues); + subtitleView.setCues(cueGroup.cues); } }