From fb8e99c7786647cd694c19f6a918693933938b52 Mon Sep 17 00:00:00 2001 From: tonihei Date: Thu, 27 Jan 2022 14:18:02 +0000 Subject: [PATCH] Remove unneccessary nullability. AnalyticsCollector can't be null when passed into ExoPlayerImplInternal, so there is no need to pass it around as nullable. PiperOrigin-RevId: 424594031 --- .../exoplayer/ExoPlayerImplInternal.java | 2 +- .../media3/exoplayer/MediaPeriodQueue.java | 25 ++++++++----------- .../media3/exoplayer/MediaSourceList.java | 12 ++++----- .../exoplayer/MediaPeriodQueueTest.java | 11 ++++++-- .../media3/exoplayer/MediaSourceListTest.java | 10 +++++++- 5 files changed, 35 insertions(+), 25 deletions(-) diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/ExoPlayerImplInternal.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/ExoPlayerImplInternal.java index 63044aa504..6096159fbc 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/ExoPlayerImplInternal.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/ExoPlayerImplInternal.java @@ -238,7 +238,7 @@ import java.util.concurrent.atomic.AtomicBoolean; BandwidthMeter bandwidthMeter, @Player.RepeatMode int repeatMode, boolean shuffleModeEnabled, - @Nullable AnalyticsCollector analyticsCollector, + AnalyticsCollector analyticsCollector, SeekParameters seekParameters, LivePlaybackSpeedControl livePlaybackSpeedControl, long releaseTimeoutMs, diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/MediaPeriodQueue.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/MediaPeriodQueue.java index 58723c572b..774ff9d4cc 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/MediaPeriodQueue.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/MediaPeriodQueue.java @@ -68,7 +68,7 @@ import com.google.common.collect.ImmutableList; private final Timeline.Period period; private final Timeline.Window window; - @Nullable private final AnalyticsCollector analyticsCollector; + private final AnalyticsCollector analyticsCollector; private final Handler analyticsCollectorHandler; private long nextWindowSequenceNumber; @@ -84,13 +84,12 @@ import com.google.common.collect.ImmutableList; /** * Creates a new media period queue. * - * @param analyticsCollector An optional {@link AnalyticsCollector} to be informed of queue - * changes. + * @param analyticsCollector An {@link AnalyticsCollector} to be informed of queue changes. * @param analyticsCollectorHandler The {@link Handler} to call {@link AnalyticsCollector} methods * on. */ public MediaPeriodQueue( - @Nullable AnalyticsCollector analyticsCollector, Handler analyticsCollectorHandler) { + AnalyticsCollector analyticsCollector, Handler analyticsCollectorHandler) { this.analyticsCollector = analyticsCollector; this.analyticsCollectorHandler = analyticsCollectorHandler; period = new Timeline.Period(); @@ -453,17 +452,15 @@ import com.google.common.collect.ImmutableList; // Internal methods. private void notifyQueueUpdate() { - if (analyticsCollector != null) { - ImmutableList.Builder builder = ImmutableList.builder(); - @Nullable MediaPeriodHolder period = playing; - while (period != null) { - builder.add(period.info.id); - period = period.getNext(); - } - @Nullable MediaPeriodId readingPeriodId = reading == null ? null : reading.info.id; - analyticsCollectorHandler.post( - () -> analyticsCollector.updateMediaPeriodQueueInfo(builder.build(), readingPeriodId)); + ImmutableList.Builder builder = ImmutableList.builder(); + @Nullable MediaPeriodHolder period = playing; + while (period != null) { + builder.add(period.info.id); + period = period.getNext(); } + @Nullable MediaPeriodId readingPeriodId = reading == null ? null : reading.info.id; + analyticsCollectorHandler.post( + () -> analyticsCollector.updateMediaPeriodQueueInfo(builder.build(), readingPeriodId)); } /** diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/MediaSourceList.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/MediaSourceList.java index 21375f276f..5bc6e1026a 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/MediaSourceList.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/MediaSourceList.java @@ -92,15 +92,15 @@ import java.util.Set; * * @param listener The {@link MediaSourceListInfoRefreshListener} to be informed of timeline * changes. - * @param analyticsCollector An optional {@link AnalyticsCollector} to be registered for media - * source events. + * @param analyticsCollector An {@link AnalyticsCollector} to be registered for media source + * events. * @param analyticsCollectorHandler The {@link Handler} to call {@link AnalyticsCollector} methods * on. * @param playerId The {@link PlayerId} of the player using this list. */ public MediaSourceList( MediaSourceListInfoRefreshListener listener, - @Nullable AnalyticsCollector analyticsCollector, + AnalyticsCollector analyticsCollector, Handler analyticsCollectorHandler, PlayerId playerId) { this.playerId = playerId; @@ -113,10 +113,8 @@ import java.util.Set; drmEventDispatcher = new DrmSessionEventListener.EventDispatcher(); childSources = new HashMap<>(); enabledMediaSourceHolders = new HashSet<>(); - if (analyticsCollector != null) { - mediaSourceEventDispatcher.addEventListener(analyticsCollectorHandler, analyticsCollector); - drmEventDispatcher.addEventListener(analyticsCollectorHandler, analyticsCollector); - } + mediaSourceEventDispatcher.addEventListener(analyticsCollectorHandler, analyticsCollector); + drmEventDispatcher.addEventListener(analyticsCollectorHandler, analyticsCollector); } /** diff --git a/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/MediaPeriodQueueTest.java b/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/MediaPeriodQueueTest.java index f4725acce5..bf5f152a6f 100644 --- a/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/MediaPeriodQueueTest.java +++ b/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/MediaPeriodQueueTest.java @@ -29,6 +29,8 @@ import androidx.media3.common.PlaybackParameters; import androidx.media3.common.Player; import androidx.media3.common.Timeline; import androidx.media3.common.TracksInfo; +import androidx.media3.common.util.Clock; +import androidx.media3.exoplayer.analytics.AnalyticsCollector; import androidx.media3.exoplayer.analytics.PlayerId; import androidx.media3.exoplayer.source.MediaSource.MediaPeriodId; import androidx.media3.exoplayer.source.MediaSource.MediaSourceCaller; @@ -42,6 +44,7 @@ import androidx.media3.test.utils.FakeMediaSource; import androidx.media3.test.utils.FakeShuffleOrder; import androidx.media3.test.utils.FakeTimeline; import androidx.media3.test.utils.FakeTimeline.TimelineWindowDefinition; +import androidx.test.core.app.ApplicationProvider; import androidx.test.ext.junit.runners.AndroidJUnit4; import com.google.common.collect.ImmutableList; import org.junit.Before; @@ -80,12 +83,16 @@ public final class MediaPeriodQueueTest { @Before public void setUp() { + AnalyticsCollector analyticsCollector = new AnalyticsCollector(Clock.DEFAULT); + analyticsCollector.setPlayer( + new ExoPlayer.Builder(ApplicationProvider.getApplicationContext()).build(), + Looper.getMainLooper()); mediaPeriodQueue = - new MediaPeriodQueue(/* analyticsCollector= */ null, new Handler(Looper.getMainLooper())); + new MediaPeriodQueue(analyticsCollector, new Handler(Looper.getMainLooper())); mediaSourceList = new MediaSourceList( mock(MediaSourceList.MediaSourceListInfoRefreshListener.class), - /* analyticsCollector= */ null, + analyticsCollector, new Handler(Looper.getMainLooper()), PlayerId.UNSET); rendererCapabilities = new RendererCapabilities[0]; diff --git a/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/MediaSourceListTest.java b/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/MediaSourceListTest.java index 3ef8f535a4..32052e2228 100644 --- a/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/MediaSourceListTest.java +++ b/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/MediaSourceListTest.java @@ -25,15 +25,19 @@ import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; +import android.os.Looper; import androidx.media3.common.MediaItem; import androidx.media3.common.Player; import androidx.media3.common.Timeline; +import androidx.media3.common.util.Clock; import androidx.media3.common.util.Util; +import androidx.media3.exoplayer.analytics.AnalyticsCollector; import androidx.media3.exoplayer.analytics.PlayerId; import androidx.media3.exoplayer.source.MediaSource; import androidx.media3.exoplayer.source.ShuffleOrder; import androidx.media3.test.utils.FakeMediaSource; import androidx.media3.test.utils.FakeShuffleOrder; +import androidx.test.core.app.ApplicationProvider; import androidx.test.ext.junit.runners.AndroidJUnit4; import java.util.ArrayList; import java.util.Collections; @@ -54,10 +58,14 @@ public class MediaSourceListTest { @Before public void setUp() { + AnalyticsCollector analyticsCollector = new AnalyticsCollector(Clock.DEFAULT); + analyticsCollector.setPlayer( + new ExoPlayer.Builder(ApplicationProvider.getApplicationContext()).build(), + Looper.getMainLooper()); mediaSourceList = new MediaSourceList( mock(MediaSourceList.MediaSourceListInfoRefreshListener.class), - /* analyticsCollector= */ null, + analyticsCollector, Util.createHandlerForCurrentOrMainLooper(), PlayerId.UNSET); }