From 6a491e129444d5988d1d82c993cda70ba149ebb2 Mon Sep 17 00:00:00 2001 From: tonihei Date: Tue, 14 Apr 2020 14:19:36 +0100 Subject: [PATCH] Verify MediaSources passed to set/addMediaSources are non-null. Even though they are annotated as non-null, Java users can pass in null values. So we should verify the input to fail fast. PiperOrigin-RevId: 306425487 --- .../com/google/android/exoplayer2/ExoPlayerImpl.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/library/core/src/main/java/com/google/android/exoplayer2/ExoPlayerImpl.java b/library/core/src/main/java/com/google/android/exoplayer2/ExoPlayerImpl.java index 2242ebf53d..0344b09707 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/ExoPlayerImpl.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/ExoPlayerImpl.java @@ -397,6 +397,9 @@ import java.util.concurrent.TimeoutException; @Override public void addMediaSources(int index, List mediaSources) { Assertions.checkArgument(index >= 0); + for (int i = 0; i < mediaSources.size(); i++) { + Assertions.checkArgument(mediaSources.get(i) != null); + } int currentWindowIndex = getCurrentWindowIndex(); long currentPositionMs = getCurrentPosition(); Timeline oldTimeline = getCurrentTimeline(); @@ -966,10 +969,13 @@ import java.util.concurrent.TimeoutException; } private void setMediaSourcesInternal( - List mediaItems, + List mediaSources, int startWindowIndex, long startPositionMs, boolean resetToDefaultPosition) { + for (int i = 0; i < mediaSources.size(); i++) { + Assertions.checkArgument(mediaSources.get(i) != null); + } int currentWindowIndex = getCurrentWindowIndexInternal(); long currentPositionMs = getCurrentPosition(); pendingOperationAcks++; @@ -978,7 +984,7 @@ import java.util.concurrent.TimeoutException; /* fromIndex= */ 0, /* toIndexExclusive= */ mediaSourceHolders.size()); } List holders = - addMediaSourceHolders(/* index= */ 0, mediaItems); + addMediaSourceHolders(/* index= */ 0, mediaSources); PlaybackInfo playbackInfo = maskTimeline(); Timeline timeline = playbackInfo.timeline; if (!timeline.isEmpty() && startWindowIndex >= timeline.getWindowCount()) {