Commit 0cd15d91 by olly Committed by Oliver Woodman

Proactively check listener arguments are non-null

PiperOrigin-RevId: 322143359
parent 953db789
Showing with 49 additions and 6 deletions
......@@ -76,6 +76,7 @@ public class DownloadTracker {
}
public void addListener(Listener listener) {
checkNotNull(listener);
listeners.add(listener);
}
......
......@@ -291,6 +291,7 @@ public final class CastPlayer extends BasePlayer {
@Override
public void addListener(EventListener listener) {
Assertions.checkNotNull(listener);
listeners.addIfAbsent(new ListenerHolder(listener));
}
......
......@@ -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);
}
......
......@@ -254,6 +254,7 @@ import java.util.concurrent.TimeoutException;
@Override
public void addListener(Player.EventListener listener) {
Assertions.checkNotNull(listener);
listeners.addIfAbsent(new ListenerHolder(listener));
}
......
......@@ -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);
}
......
......@@ -101,6 +101,7 @@ public class AnalyticsCollector
* @param listener The listener to add.
*/
public void addListener(AnalyticsListener listener) {
Assertions.checkNotNull(listener);
listeners.add(listener);
}
......
......@@ -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);
}
......
......@@ -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);
}
......
......@@ -67,6 +67,7 @@ import java.util.Map;
@Override
public void addTransferListener(TransferListener transferListener) {
Assertions.checkNotNull(transferListener);
upstream.addTransferListener(transferListener);
}
......
......@@ -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. */
......
......@@ -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++;
......
......@@ -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);
}
......
......@@ -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);
......
......@@ -55,6 +55,7 @@ public final class PriorityDataSource implements DataSource {
@Override
public void addTransferListener(TransferListener transferListener) {
Assertions.checkNotNull(transferListener);
upstream.addTransferListener(transferListener);
}
......
......@@ -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);
}
......
......@@ -72,6 +72,7 @@ public final class StatsDataSource implements DataSource {
@Override
public void addTransferListener(TransferListener transferListener) {
Assertions.checkNotNull(transferListener);
dataSource.addTransferListener(transferListener);
}
......
......@@ -45,6 +45,7 @@ public final class TeeDataSource implements DataSource {
@Override
public void addTransferListener(TransferListener transferListener) {
Assertions.checkNotNull(transferListener);
upstream.addTransferListener(transferListener);
}
......
......@@ -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);
}
......
......@@ -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<>();
......
......@@ -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);
}
......
......@@ -66,6 +66,7 @@ import javax.crypto.spec.SecretKeySpec;
@Override
public final void addTransferListener(TransferListener transferListener) {
Assertions.checkNotNull(transferListener);
upstream.addTransferListener(transferListener);
}
......
......@@ -161,6 +161,7 @@ public final class DefaultHlsPlaylistTracker
@Override
public void addListener(PlaylistEventListener listener) {
Assertions.checkNotNull(listener);
listeners.add(listener);
}
......
......@@ -450,6 +450,7 @@ public class DefaultTimeBar extends View implements TimeBar {
@Override
public void addListener(OnScrubListener listener) {
Assertions.checkNotNull(listener);
listeners.add(listener);
}
......
......@@ -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);
}
......
......@@ -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);
}
......
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