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 19376fe793..0cc3f5f2e6 100644 --- a/libraries/exoplayer/src/androidTest/java/androidx/media3/exoplayer/ClippedPlaybackTest.java +++ b/libraries/exoplayer/src/androidTest/java/androidx/media3/exoplayer/ClippedPlaybackTest.java @@ -24,6 +24,7 @@ import androidx.media3.common.C; import androidx.media3.common.MediaItem; import androidx.media3.common.MediaItem.SubtitleConfiguration; import androidx.media3.common.MimeTypes; +import androidx.media3.common.PlaybackException; import androidx.media3.common.Player; import androidx.media3.common.text.Cue; import androidx.media3.common.text.CueGroup; @@ -33,6 +34,7 @@ import androidx.media3.exoplayer.source.DefaultMediaSourceFactory; import com.google.common.collect.ImmutableList; import com.google.common.collect.Iterables; import java.util.ArrayList; +import java.util.Collections; import java.util.List; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicReference; @@ -180,10 +182,12 @@ public final class ClippedPlaybackTest { private final ConditionVariable playbackEnded; private final List> cues; + private final AtomicReference playerError; private TextCapturingPlaybackListener() { playbackEnded = new ConditionVariable(); - cues = new ArrayList<>(); + cues = Collections.synchronizedList(new ArrayList<>()); + playerError = new AtomicReference<>(); } @Override @@ -198,8 +202,18 @@ public final class ClippedPlaybackTest { } } - public void block() throws InterruptedException { + @Override + public void onPlayerError(PlaybackException error) { + playerError.set(error); + playbackEnded.open(); + } + + public void block() throws InterruptedException, PlaybackException { playbackEnded.block(); + PlaybackException playerError = this.playerError.get(); + if (playerError != null) { + throw playerError; + } } } }