Commit 777246d9 by tonihei Committed by Andrew Lewis

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
parent 145e923d
...@@ -230,7 +230,7 @@ import java.util.concurrent.atomic.AtomicBoolean; ...@@ -230,7 +230,7 @@ import java.util.concurrent.atomic.AtomicBoolean;
BandwidthMeter bandwidthMeter, BandwidthMeter bandwidthMeter,
@Player.RepeatMode int repeatMode, @Player.RepeatMode int repeatMode,
boolean shuffleModeEnabled, boolean shuffleModeEnabled,
@Nullable AnalyticsCollector analyticsCollector, AnalyticsCollector analyticsCollector,
SeekParameters seekParameters, SeekParameters seekParameters,
LivePlaybackSpeedControl livePlaybackSpeedControl, LivePlaybackSpeedControl livePlaybackSpeedControl,
long releaseTimeoutMs, long releaseTimeoutMs,
......
...@@ -66,7 +66,7 @@ import com.google.common.collect.ImmutableList; ...@@ -66,7 +66,7 @@ import com.google.common.collect.ImmutableList;
private final Timeline.Period period; private final Timeline.Period period;
private final Timeline.Window window; private final Timeline.Window window;
@Nullable private final AnalyticsCollector analyticsCollector; private final AnalyticsCollector analyticsCollector;
private final Handler analyticsCollectorHandler; private final Handler analyticsCollectorHandler;
private long nextWindowSequenceNumber; private long nextWindowSequenceNumber;
...@@ -82,13 +82,12 @@ import com.google.common.collect.ImmutableList; ...@@ -82,13 +82,12 @@ import com.google.common.collect.ImmutableList;
/** /**
* Creates a new media period queue. * Creates a new media period queue.
* *
* @param analyticsCollector An optional {@link AnalyticsCollector} to be informed of queue * @param analyticsCollector An {@link AnalyticsCollector} to be informed of queue changes.
* changes.
* @param analyticsCollectorHandler The {@link Handler} to call {@link AnalyticsCollector} methods * @param analyticsCollectorHandler The {@link Handler} to call {@link AnalyticsCollector} methods
* on. * on.
*/ */
public MediaPeriodQueue( public MediaPeriodQueue(
@Nullable AnalyticsCollector analyticsCollector, Handler analyticsCollectorHandler) { AnalyticsCollector analyticsCollector, Handler analyticsCollectorHandler) {
this.analyticsCollector = analyticsCollector; this.analyticsCollector = analyticsCollector;
this.analyticsCollectorHandler = analyticsCollectorHandler; this.analyticsCollectorHandler = analyticsCollectorHandler;
period = new Timeline.Period(); period = new Timeline.Period();
...@@ -451,17 +450,15 @@ import com.google.common.collect.ImmutableList; ...@@ -451,17 +450,15 @@ import com.google.common.collect.ImmutableList;
// Internal methods. // Internal methods.
private void notifyQueueUpdate() { private void notifyQueueUpdate() {
if (analyticsCollector != null) { ImmutableList.Builder<MediaPeriodId> builder = ImmutableList.builder();
ImmutableList.Builder<MediaPeriodId> builder = ImmutableList.builder(); @Nullable MediaPeriodHolder period = playing;
@Nullable MediaPeriodHolder period = playing; while (period != null) {
while (period != null) { builder.add(period.info.id);
builder.add(period.info.id); period = period.getNext();
period = period.getNext();
}
@Nullable MediaPeriodId readingPeriodId = reading == null ? null : reading.info.id;
analyticsCollectorHandler.post(
() -> analyticsCollector.updateMediaPeriodQueueInfo(builder.build(), readingPeriodId));
} }
@Nullable MediaPeriodId readingPeriodId = reading == null ? null : reading.info.id;
analyticsCollectorHandler.post(
() -> analyticsCollector.updateMediaPeriodQueueInfo(builder.build(), readingPeriodId));
} }
/** /**
......
...@@ -91,15 +91,15 @@ import java.util.Set; ...@@ -91,15 +91,15 @@ import java.util.Set;
* *
* @param listener The {@link MediaSourceListInfoRefreshListener} to be informed of timeline * @param listener The {@link MediaSourceListInfoRefreshListener} to be informed of timeline
* changes. * changes.
* @param analyticsCollector An optional {@link AnalyticsCollector} to be registered for media * @param analyticsCollector An {@link AnalyticsCollector} to be registered for media source
* source events. * events.
* @param analyticsCollectorHandler The {@link Handler} to call {@link AnalyticsCollector} methods * @param analyticsCollectorHandler The {@link Handler} to call {@link AnalyticsCollector} methods
* on. * on.
* @param playerId The {@link PlayerId} of the player using this list. * @param playerId The {@link PlayerId} of the player using this list.
*/ */
public MediaSourceList( public MediaSourceList(
MediaSourceListInfoRefreshListener listener, MediaSourceListInfoRefreshListener listener,
@Nullable AnalyticsCollector analyticsCollector, AnalyticsCollector analyticsCollector,
Handler analyticsCollectorHandler, Handler analyticsCollectorHandler,
PlayerId playerId) { PlayerId playerId) {
this.playerId = playerId; this.playerId = playerId;
...@@ -112,10 +112,8 @@ import java.util.Set; ...@@ -112,10 +112,8 @@ import java.util.Set;
drmEventDispatcher = new DrmSessionEventListener.EventDispatcher(); drmEventDispatcher = new DrmSessionEventListener.EventDispatcher();
childSources = new HashMap<>(); childSources = new HashMap<>();
enabledMediaSourceHolders = new HashSet<>(); enabledMediaSourceHolders = new HashSet<>();
if (analyticsCollector != null) { mediaSourceEventDispatcher.addEventListener(analyticsCollectorHandler, analyticsCollector);
mediaSourceEventDispatcher.addEventListener(analyticsCollectorHandler, analyticsCollector); drmEventDispatcher.addEventListener(analyticsCollectorHandler, analyticsCollector);
drmEventDispatcher.addEventListener(analyticsCollectorHandler, analyticsCollector);
}
} }
/** /**
......
...@@ -22,7 +22,9 @@ import static org.robolectric.Shadows.shadowOf; ...@@ -22,7 +22,9 @@ import static org.robolectric.Shadows.shadowOf;
import android.net.Uri; import android.net.Uri;
import android.os.Handler; import android.os.Handler;
import android.os.Looper; import android.os.Looper;
import androidx.test.core.app.ApplicationProvider;
import androidx.test.ext.junit.runners.AndroidJUnit4; import androidx.test.ext.junit.runners.AndroidJUnit4;
import com.google.android.exoplayer2.analytics.AnalyticsCollector;
import com.google.android.exoplayer2.analytics.PlayerId; import com.google.android.exoplayer2.analytics.PlayerId;
import com.google.android.exoplayer2.source.MediaSource.MediaPeriodId; import com.google.android.exoplayer2.source.MediaSource.MediaPeriodId;
import com.google.android.exoplayer2.source.MediaSource.MediaSourceCaller; import com.google.android.exoplayer2.source.MediaSource.MediaSourceCaller;
...@@ -37,6 +39,7 @@ import com.google.android.exoplayer2.trackselection.ExoTrackSelection; ...@@ -37,6 +39,7 @@ import com.google.android.exoplayer2.trackselection.ExoTrackSelection;
import com.google.android.exoplayer2.trackselection.TrackSelector; import com.google.android.exoplayer2.trackselection.TrackSelector;
import com.google.android.exoplayer2.trackselection.TrackSelectorResult; import com.google.android.exoplayer2.trackselection.TrackSelectorResult;
import com.google.android.exoplayer2.upstream.Allocator; import com.google.android.exoplayer2.upstream.Allocator;
import com.google.android.exoplayer2.util.Clock;
import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableList;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
...@@ -74,12 +77,16 @@ public final class MediaPeriodQueueTest { ...@@ -74,12 +77,16 @@ public final class MediaPeriodQueueTest {
@Before @Before
public void setUp() { public void setUp() {
AnalyticsCollector analyticsCollector = new AnalyticsCollector(Clock.DEFAULT);
analyticsCollector.setPlayer(
new ExoPlayer.Builder(ApplicationProvider.getApplicationContext()).build(),
Looper.getMainLooper());
mediaPeriodQueue = mediaPeriodQueue =
new MediaPeriodQueue(/* analyticsCollector= */ null, new Handler(Looper.getMainLooper())); new MediaPeriodQueue(analyticsCollector, new Handler(Looper.getMainLooper()));
mediaSourceList = mediaSourceList =
new MediaSourceList( new MediaSourceList(
mock(MediaSourceList.MediaSourceListInfoRefreshListener.class), mock(MediaSourceList.MediaSourceListInfoRefreshListener.class),
/* analyticsCollector= */ null, analyticsCollector,
new Handler(Looper.getMainLooper()), new Handler(Looper.getMainLooper()),
PlayerId.UNSET); PlayerId.UNSET);
rendererCapabilities = new RendererCapabilities[0]; rendererCapabilities = new RendererCapabilities[0];
......
...@@ -25,12 +25,16 @@ import static org.mockito.Mockito.times; ...@@ -25,12 +25,16 @@ import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when; import static org.mockito.Mockito.when;
import android.os.Looper;
import androidx.test.core.app.ApplicationProvider;
import androidx.test.ext.junit.runners.AndroidJUnit4; import androidx.test.ext.junit.runners.AndroidJUnit4;
import com.google.android.exoplayer2.analytics.AnalyticsCollector;
import com.google.android.exoplayer2.analytics.PlayerId; import com.google.android.exoplayer2.analytics.PlayerId;
import com.google.android.exoplayer2.source.MediaSource; import com.google.android.exoplayer2.source.MediaSource;
import com.google.android.exoplayer2.source.ShuffleOrder; import com.google.android.exoplayer2.source.ShuffleOrder;
import com.google.android.exoplayer2.testutil.FakeMediaSource; import com.google.android.exoplayer2.testutil.FakeMediaSource;
import com.google.android.exoplayer2.testutil.FakeShuffleOrder; import com.google.android.exoplayer2.testutil.FakeShuffleOrder;
import com.google.android.exoplayer2.util.Clock;
import com.google.android.exoplayer2.util.Util; import com.google.android.exoplayer2.util.Util;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
...@@ -51,10 +55,14 @@ public class MediaSourceListTest { ...@@ -51,10 +55,14 @@ public class MediaSourceListTest {
@Before @Before
public void setUp() { public void setUp() {
AnalyticsCollector analyticsCollector = new AnalyticsCollector(Clock.DEFAULT);
analyticsCollector.setPlayer(
new ExoPlayer.Builder(ApplicationProvider.getApplicationContext()).build(),
Looper.getMainLooper());
mediaSourceList = mediaSourceList =
new MediaSourceList( new MediaSourceList(
mock(MediaSourceList.MediaSourceListInfoRefreshListener.class), mock(MediaSourceList.MediaSourceListInfoRefreshListener.class),
/* analyticsCollector= */ null, analyticsCollector,
Util.createHandlerForCurrentOrMainLooper(), Util.createHandlerForCurrentOrMainLooper(),
PlayerId.UNSET); PlayerId.UNSET);
} }
......
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