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) {
checkNotNull(listener);
listeners.add(listener);
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -15,6 +15,7 @@
*/
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 androidx.annotation.Nullable;
@ -47,6 +48,7 @@ public abstract class BaseDataSource implements DataSource {
@Override
public final void addTransferListener(TransferListener transferListener) {
checkNotNull(transferListener);
if (!listeners.contains(transferListener)) {
listeners.add(transferListener);
listenerCount++;

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -15,6 +15,7 @@
*/
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 android.net.Uri;
@ -45,6 +46,7 @@ public final class AesCipherDataSource implements DataSource {
@Override
public void addTransferListener(TransferListener transferListener) {
checkNotNull(transferListener);
upstream.addTransferListener(transferListener);
}

View File

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

View File

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

View File

@ -450,6 +450,7 @@ public class DefaultTimeBar extends View implements TimeBar {
@Override
public void addListener(OnScrubListener listener) {
Assertions.checkNotNull(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.
*/
public void addVisibilityListener(VisibilityListener listener) {
Assertions.checkNotNull(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.
*/
public void addVisibilityListener(VisibilityListener listener) {
Assertions.checkNotNull(listener);
visibilityListeners.add(listener);
}