Proactively check listener arguments are non-null

PiperOrigin-RevId: 322143359
This commit is contained in:
olly 2020-07-20 15:50:29 +01:00 committed by Oliver Woodman
parent 953db7898e
commit 0cd15d9158
25 changed files with 49 additions and 6 deletions

View File

@ -76,6 +76,7 @@ public class DownloadTracker {
} }
public void addListener(Listener listener) { public void addListener(Listener listener) {
checkNotNull(listener);
listeners.add(listener); listeners.add(listener);
} }

View File

@ -291,6 +291,7 @@ public final class CastPlayer extends BasePlayer {
@Override @Override
public void addListener(EventListener listener) { public void addListener(EventListener listener) {
Assertions.checkNotNull(listener);
listeners.addIfAbsent(new ListenerHolder(listener)); listeners.addIfAbsent(new ListenerHolder(listener));
} }

View File

@ -51,6 +51,8 @@ import java.util.concurrent.atomic.AtomicReference;
@Override @Override
public void addListener(Runnable listener, Executor executor) { public void addListener(Runnable listener, Executor executor) {
Assertions.checkNotNull(listener);
Assertions.checkNotNull(executor);
future.addListener(listener, executor); future.addListener(listener, executor);
} }

View File

@ -254,6 +254,7 @@ import java.util.concurrent.TimeoutException;
@Override @Override
public void addListener(Player.EventListener listener) { public void addListener(Player.EventListener listener) {
Assertions.checkNotNull(listener);
listeners.addIfAbsent(new ListenerHolder(listener)); listeners.addIfAbsent(new ListenerHolder(listener));
} }

View File

@ -820,6 +820,7 @@ public class SimpleExoPlayer extends BasePlayer
@Override @Override
public void addAudioListener(AudioListener listener) { public void addAudioListener(AudioListener listener) {
// Don't verify application thread. We allow calls to this method from any thread. // Don't verify application thread. We allow calls to this method from any thread.
Assertions.checkNotNull(listener);
audioListeners.add(listener); audioListeners.add(listener);
} }
@ -970,6 +971,7 @@ public class SimpleExoPlayer extends BasePlayer
*/ */
public void addAnalyticsListener(AnalyticsListener listener) { public void addAnalyticsListener(AnalyticsListener listener) {
// Don't verify application thread. We allow calls to this method from any thread. // Don't verify application thread. We allow calls to this method from any thread.
Assertions.checkNotNull(listener);
analyticsCollector.addListener(listener); analyticsCollector.addListener(listener);
} }
@ -1068,6 +1070,7 @@ public class SimpleExoPlayer extends BasePlayer
@Override @Override
public void addVideoListener(com.google.android.exoplayer2.video.VideoListener listener) { public void addVideoListener(com.google.android.exoplayer2.video.VideoListener listener) {
// Don't verify application thread. We allow calls to this method from any thread. // Don't verify application thread. We allow calls to this method from any thread.
Assertions.checkNotNull(listener);
videoListeners.add(listener); videoListeners.add(listener);
} }
@ -1121,7 +1124,7 @@ public class SimpleExoPlayer extends BasePlayer
*/ */
@Deprecated @Deprecated
@SuppressWarnings("deprecation") @SuppressWarnings("deprecation")
public void setVideoListener(VideoListener listener) { public void setVideoListener(@Nullable VideoListener listener) {
videoListeners.clear(); videoListeners.clear();
if (listener != null) { if (listener != null) {
addVideoListener(listener); addVideoListener(listener);
@ -1144,6 +1147,7 @@ public class SimpleExoPlayer extends BasePlayer
@Override @Override
public void addTextOutput(TextOutput listener) { public void addTextOutput(TextOutput listener) {
// Don't verify application thread. We allow calls to this method from any thread. // Don't verify application thread. We allow calls to this method from any thread.
Assertions.checkNotNull(listener);
textOutputs.add(listener); textOutputs.add(listener);
} }
@ -1187,6 +1191,7 @@ public class SimpleExoPlayer extends BasePlayer
@Override @Override
public void addMetadataOutput(MetadataOutput listener) { public void addMetadataOutput(MetadataOutput listener) {
// Don't verify application thread. We allow calls to this method from any thread. // Don't verify application thread. We allow calls to this method from any thread.
Assertions.checkNotNull(listener);
metadataOutputs.add(listener); metadataOutputs.add(listener);
} }
@ -1227,7 +1232,7 @@ public class SimpleExoPlayer extends BasePlayer
*/ */
@Deprecated @Deprecated
@SuppressWarnings("deprecation") @SuppressWarnings("deprecation")
public void setVideoDebugListener(VideoRendererEventListener listener) { public void setVideoDebugListener(@Nullable VideoRendererEventListener listener) {
videoDebugListeners.retainAll(Collections.singleton(analyticsCollector)); videoDebugListeners.retainAll(Collections.singleton(analyticsCollector));
if (listener != null) { if (listener != null) {
addVideoDebugListener(listener); addVideoDebugListener(listener);
@ -1240,6 +1245,7 @@ public class SimpleExoPlayer extends BasePlayer
*/ */
@Deprecated @Deprecated
public void addVideoDebugListener(VideoRendererEventListener listener) { public void addVideoDebugListener(VideoRendererEventListener listener) {
Assertions.checkNotNull(listener);
videoDebugListeners.add(listener); videoDebugListeners.add(listener);
} }
@ -1258,7 +1264,7 @@ public class SimpleExoPlayer extends BasePlayer
*/ */
@Deprecated @Deprecated
@SuppressWarnings("deprecation") @SuppressWarnings("deprecation")
public void setAudioDebugListener(AudioRendererEventListener listener) { public void setAudioDebugListener(@Nullable AudioRendererEventListener listener) {
audioDebugListeners.retainAll(Collections.singleton(analyticsCollector)); audioDebugListeners.retainAll(Collections.singleton(analyticsCollector));
if (listener != null) { if (listener != null) {
addAudioDebugListener(listener); addAudioDebugListener(listener);
@ -1271,6 +1277,7 @@ public class SimpleExoPlayer extends BasePlayer
*/ */
@Deprecated @Deprecated
public void addAudioDebugListener(AudioRendererEventListener listener) { public void addAudioDebugListener(AudioRendererEventListener listener) {
Assertions.checkNotNull(listener);
audioDebugListeners.add(listener); audioDebugListeners.add(listener);
} }
@ -1298,6 +1305,7 @@ public class SimpleExoPlayer extends BasePlayer
@Override @Override
public void addListener(Player.EventListener listener) { public void addListener(Player.EventListener listener) {
// Don't verify application thread. We allow calls to this method from any thread. // Don't verify application thread. We allow calls to this method from any thread.
Assertions.checkNotNull(listener);
player.addListener(listener); player.addListener(listener);
} }
@ -1866,6 +1874,7 @@ public class SimpleExoPlayer extends BasePlayer
@Override @Override
public void addDeviceListener(DeviceListener listener) { public void addDeviceListener(DeviceListener listener) {
// Don't verify application thread. We allow calls to this method from any thread. // Don't verify application thread. We allow calls to this method from any thread.
Assertions.checkNotNull(listener);
deviceListeners.add(listener); deviceListeners.add(listener);
} }

View File

@ -101,6 +101,7 @@ public class AnalyticsCollector
* @param listener The listener to add. * @param listener The listener to add.
*/ */
public void addListener(AnalyticsListener listener) { public void addListener(AnalyticsListener listener) {
Assertions.checkNotNull(listener);
listeners.add(listener); listeners.add(listener);
} }

View File

@ -324,6 +324,7 @@ public final class DownloadManager {
* @param listener The listener to be added. * @param listener The listener to be added.
*/ */
public void addListener(Listener listener) { public void addListener(Listener listener) {
Assertions.checkNotNull(listener);
listeners.add(listener); listeners.add(listener);
} }

View File

@ -162,6 +162,8 @@ public abstract class BaseMediaSource implements MediaSource {
@Override @Override
public final void addEventListener(Handler handler, MediaSourceEventListener eventListener) { public final void addEventListener(Handler handler, MediaSourceEventListener eventListener) {
Assertions.checkNotNull(handler);
Assertions.checkNotNull(eventListener);
eventDispatcher.addEventListener(handler, eventListener); eventDispatcher.addEventListener(handler, eventListener);
} }
@ -172,6 +174,8 @@ public abstract class BaseMediaSource implements MediaSource {
@Override @Override
public final void addDrmEventListener(Handler handler, DrmSessionEventListener eventListener) { public final void addDrmEventListener(Handler handler, DrmSessionEventListener eventListener) {
Assertions.checkNotNull(handler);
Assertions.checkNotNull(eventListener);
drmEventDispatcher.addEventListener(handler, eventListener); drmEventDispatcher.addEventListener(handler, eventListener);
} }

View File

@ -67,6 +67,7 @@ import java.util.Map;
@Override @Override
public void addTransferListener(TransferListener transferListener) { public void addTransferListener(TransferListener transferListener) {
Assertions.checkNotNull(transferListener);
upstream.addTransferListener(transferListener); upstream.addTransferListener(transferListener);
} }

View File

@ -56,10 +56,11 @@ public interface BandwidthMeter {
} }
/** Adds a listener to the event dispatcher. */ /** Adds a listener to the event dispatcher. */
public void addListener(Handler handler, BandwidthMeter.EventListener eventListener) { public void addListener(Handler eventHandler, BandwidthMeter.EventListener eventListener) {
Assertions.checkArgument(handler != null && eventListener != null); Assertions.checkNotNull(eventHandler);
Assertions.checkNotNull(eventListener);
removeListener(eventListener); removeListener(eventListener);
listeners.add(new HandlerAndListener(handler, eventListener)); listeners.add(new HandlerAndListener(eventHandler, eventListener));
} }
/** Removes a listener from the event dispatcher. */ /** Removes a listener from the event dispatcher. */

View File

@ -15,6 +15,7 @@
*/ */
package com.google.android.exoplayer2.upstream; package com.google.android.exoplayer2.upstream;
import static com.google.android.exoplayer2.util.Assertions.checkNotNull;
import static com.google.android.exoplayer2.util.Util.castNonNull; import static com.google.android.exoplayer2.util.Util.castNonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
@ -47,6 +48,7 @@ public abstract class BaseDataSource implements DataSource {
@Override @Override
public final void addTransferListener(TransferListener transferListener) { public final void addTransferListener(TransferListener transferListener) {
checkNotNull(transferListener);
if (!listeners.contains(transferListener)) { if (!listeners.contains(transferListener)) {
listeners.add(transferListener); listeners.add(transferListener);
listenerCount++; listenerCount++;

View File

@ -332,6 +332,8 @@ public final class DefaultBandwidthMeter implements BandwidthMeter, TransferList
@Override @Override
public void addEventListener(Handler eventHandler, EventListener eventListener) { public void addEventListener(Handler eventHandler, EventListener eventListener) {
Assertions.checkNotNull(eventHandler);
Assertions.checkNotNull(eventListener);
eventDispatcher.addListener(eventHandler, eventListener); eventDispatcher.addListener(eventHandler, eventListener);
} }

View File

@ -135,6 +135,7 @@ public final class DefaultDataSource implements DataSource {
@Override @Override
public void addTransferListener(TransferListener transferListener) { public void addTransferListener(TransferListener transferListener) {
Assertions.checkNotNull(transferListener);
baseDataSource.addTransferListener(transferListener); baseDataSource.addTransferListener(transferListener);
transferListeners.add(transferListener); transferListeners.add(transferListener);
maybeAddListenerToDataSource(fileDataSource, transferListener); maybeAddListenerToDataSource(fileDataSource, transferListener);

View File

@ -55,6 +55,7 @@ public final class PriorityDataSource implements DataSource {
@Override @Override
public void addTransferListener(TransferListener transferListener) { public void addTransferListener(TransferListener transferListener) {
Assertions.checkNotNull(transferListener);
upstream.addTransferListener(transferListener); upstream.addTransferListener(transferListener);
} }

View File

@ -15,6 +15,8 @@
*/ */
package com.google.android.exoplayer2.upstream; package com.google.android.exoplayer2.upstream;
import static com.google.android.exoplayer2.util.Assertions.checkNotNull;
import android.net.Uri; import android.net.Uri;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import java.io.IOException; import java.io.IOException;
@ -95,6 +97,7 @@ public final class ResolvingDataSource implements DataSource {
@Override @Override
public void addTransferListener(TransferListener transferListener) { public void addTransferListener(TransferListener transferListener) {
checkNotNull(transferListener);
upstreamDataSource.addTransferListener(transferListener); upstreamDataSource.addTransferListener(transferListener);
} }

View File

@ -72,6 +72,7 @@ public final class StatsDataSource implements DataSource {
@Override @Override
public void addTransferListener(TransferListener transferListener) { public void addTransferListener(TransferListener transferListener) {
Assertions.checkNotNull(transferListener);
dataSource.addTransferListener(transferListener); dataSource.addTransferListener(transferListener);
} }

View File

@ -45,6 +45,7 @@ public final class TeeDataSource implements DataSource {
@Override @Override
public void addTransferListener(TransferListener transferListener) { public void addTransferListener(TransferListener transferListener) {
Assertions.checkNotNull(transferListener);
upstream.addTransferListener(transferListener); upstream.addTransferListener(transferListener);
} }

View File

@ -541,6 +541,7 @@ public final class CacheDataSource implements DataSource {
@Override @Override
public void addTransferListener(TransferListener transferListener) { public void addTransferListener(TransferListener transferListener) {
Assertions.checkNotNull(transferListener);
cacheReadDataSource.addTransferListener(transferListener); cacheReadDataSource.addTransferListener(transferListener);
upstreamDataSource.addTransferListener(transferListener); upstreamDataSource.addTransferListener(transferListener);
} }

View File

@ -309,6 +309,8 @@ public final class SimpleCache implements Cache {
@Override @Override
public synchronized NavigableSet<CacheSpan> addListener(String key, Listener listener) { public synchronized NavigableSet<CacheSpan> addListener(String key, Listener listener) {
Assertions.checkState(!released); Assertions.checkState(!released);
Assertions.checkNotNull(key);
Assertions.checkNotNull(listener);
ArrayList<Listener> listenersForKey = listeners.get(key); ArrayList<Listener> listenersForKey = listeners.get(key);
if (listenersForKey == null) { if (listenersForKey == null) {
listenersForKey = new ArrayList<>(); listenersForKey = new ArrayList<>();

View File

@ -15,6 +15,7 @@
*/ */
package com.google.android.exoplayer2.upstream.crypto; package com.google.android.exoplayer2.upstream.crypto;
import static com.google.android.exoplayer2.util.Assertions.checkNotNull;
import static com.google.android.exoplayer2.util.Util.castNonNull; import static com.google.android.exoplayer2.util.Util.castNonNull;
import android.net.Uri; import android.net.Uri;
@ -45,6 +46,7 @@ public final class AesCipherDataSource implements DataSource {
@Override @Override
public void addTransferListener(TransferListener transferListener) { public void addTransferListener(TransferListener transferListener) {
checkNotNull(transferListener);
upstream.addTransferListener(transferListener); upstream.addTransferListener(transferListener);
} }

View File

@ -66,6 +66,7 @@ import javax.crypto.spec.SecretKeySpec;
@Override @Override
public final void addTransferListener(TransferListener transferListener) { public final void addTransferListener(TransferListener transferListener) {
Assertions.checkNotNull(transferListener);
upstream.addTransferListener(transferListener); upstream.addTransferListener(transferListener);
} }

View File

@ -161,6 +161,7 @@ public final class DefaultHlsPlaylistTracker
@Override @Override
public void addListener(PlaylistEventListener listener) { public void addListener(PlaylistEventListener listener) {
Assertions.checkNotNull(listener);
listeners.add(listener); listeners.add(listener);
} }

View File

@ -450,6 +450,7 @@ public class DefaultTimeBar extends View implements TimeBar {
@Override @Override
public void addListener(OnScrubListener listener) { public void addListener(OnScrubListener listener) {
Assertions.checkNotNull(listener);
listeners.add(listener); listeners.add(listener);
} }

View File

@ -586,6 +586,7 @@ public class PlayerControlView extends FrameLayout {
* @param listener The listener to be notified about visibility changes. * @param listener The listener to be notified about visibility changes.
*/ */
public void addVisibilityListener(VisibilityListener listener) { public void addVisibilityListener(VisibilityListener listener) {
Assertions.checkNotNull(listener);
visibilityListeners.add(listener); visibilityListeners.add(listener);
} }

View File

@ -790,6 +790,7 @@ public class StyledPlayerControlView extends FrameLayout {
* @param listener The listener to be notified about visibility changes. * @param listener The listener to be notified about visibility changes.
*/ */
public void addVisibilityListener(VisibilityListener listener) { public void addVisibilityListener(VisibilityListener listener) {
Assertions.checkNotNull(listener);
visibilityListeners.add(listener); visibilityListeners.add(listener);
} }