diff --git a/demos/main/src/main/java/com/google/android/exoplayer2/demo/DownloadTracker.java b/demos/main/src/main/java/com/google/android/exoplayer2/demo/DownloadTracker.java index 7522ba0499..a57d402d63 100644 --- a/demos/main/src/main/java/com/google/android/exoplayer2/demo/DownloadTracker.java +++ b/demos/main/src/main/java/com/google/android/exoplayer2/demo/DownloadTracker.java @@ -76,6 +76,7 @@ public class DownloadTracker { } public void addListener(Listener listener) { + checkNotNull(listener); listeners.add(listener); } diff --git a/extensions/cast/src/main/java/com/google/android/exoplayer2/ext/cast/CastPlayer.java b/extensions/cast/src/main/java/com/google/android/exoplayer2/ext/cast/CastPlayer.java index 957001fe74..6e74e8325f 100644 --- a/extensions/cast/src/main/java/com/google/android/exoplayer2/ext/cast/CastPlayer.java +++ b/extensions/cast/src/main/java/com/google/android/exoplayer2/ext/cast/CastPlayer.java @@ -291,6 +291,7 @@ public final class CastPlayer extends BasePlayer { @Override public void addListener(EventListener listener) { + Assertions.checkNotNull(listener); listeners.addIfAbsent(new ListenerHolder(listener)); } diff --git a/extensions/media2/src/main/java/com/google/android/exoplayer2/ext/media2/SettableFuture.java b/extensions/media2/src/main/java/com/google/android/exoplayer2/ext/media2/SettableFuture.java index 01a30682ae..d8a8c1f5a4 100644 --- a/extensions/media2/src/main/java/com/google/android/exoplayer2/ext/media2/SettableFuture.java +++ b/extensions/media2/src/main/java/com/google/android/exoplayer2/ext/media2/SettableFuture.java @@ -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); } diff --git a/library/core/src/main/java/com/google/android/exoplayer2/ExoPlayerImpl.java b/library/core/src/main/java/com/google/android/exoplayer2/ExoPlayerImpl.java index a7479d349b..2cc423be34 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/ExoPlayerImpl.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/ExoPlayerImpl.java @@ -254,6 +254,7 @@ import java.util.concurrent.TimeoutException; @Override public void addListener(Player.EventListener listener) { + Assertions.checkNotNull(listener); listeners.addIfAbsent(new ListenerHolder(listener)); } diff --git a/library/core/src/main/java/com/google/android/exoplayer2/SimpleExoPlayer.java b/library/core/src/main/java/com/google/android/exoplayer2/SimpleExoPlayer.java index b7fb3a89ea..9607c59a28 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/SimpleExoPlayer.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/SimpleExoPlayer.java @@ -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); } diff --git a/library/core/src/main/java/com/google/android/exoplayer2/analytics/AnalyticsCollector.java b/library/core/src/main/java/com/google/android/exoplayer2/analytics/AnalyticsCollector.java index 694f2bc8c1..743b415f09 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/analytics/AnalyticsCollector.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/analytics/AnalyticsCollector.java @@ -101,6 +101,7 @@ public class AnalyticsCollector * @param listener The listener to add. */ public void addListener(AnalyticsListener listener) { + Assertions.checkNotNull(listener); listeners.add(listener); } diff --git a/library/core/src/main/java/com/google/android/exoplayer2/offline/DownloadManager.java b/library/core/src/main/java/com/google/android/exoplayer2/offline/DownloadManager.java index 6b12ab3759..edb9995b60 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/offline/DownloadManager.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/offline/DownloadManager.java @@ -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); } diff --git a/library/core/src/main/java/com/google/android/exoplayer2/source/BaseMediaSource.java b/library/core/src/main/java/com/google/android/exoplayer2/source/BaseMediaSource.java index 04b8ad1f83..96ef4b0c6d 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/source/BaseMediaSource.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/source/BaseMediaSource.java @@ -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); } diff --git a/library/core/src/main/java/com/google/android/exoplayer2/source/IcyDataSource.java b/library/core/src/main/java/com/google/android/exoplayer2/source/IcyDataSource.java index 84d2902c53..04fe67b119 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/source/IcyDataSource.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/source/IcyDataSource.java @@ -67,6 +67,7 @@ import java.util.Map; @Override public void addTransferListener(TransferListener transferListener) { + Assertions.checkNotNull(transferListener); upstream.addTransferListener(transferListener); } diff --git a/library/core/src/main/java/com/google/android/exoplayer2/upstream/BandwidthMeter.java b/library/core/src/main/java/com/google/android/exoplayer2/upstream/BandwidthMeter.java index 8fefb50a96..d520fcfa60 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/upstream/BandwidthMeter.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/upstream/BandwidthMeter.java @@ -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. */ diff --git a/library/core/src/main/java/com/google/android/exoplayer2/upstream/BaseDataSource.java b/library/core/src/main/java/com/google/android/exoplayer2/upstream/BaseDataSource.java index 80687db31f..ce6243eda0 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/upstream/BaseDataSource.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/upstream/BaseDataSource.java @@ -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++; diff --git a/library/core/src/main/java/com/google/android/exoplayer2/upstream/DefaultBandwidthMeter.java b/library/core/src/main/java/com/google/android/exoplayer2/upstream/DefaultBandwidthMeter.java index 66aec96e89..2d62bdbf95 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/upstream/DefaultBandwidthMeter.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/upstream/DefaultBandwidthMeter.java @@ -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); } diff --git a/library/core/src/main/java/com/google/android/exoplayer2/upstream/DefaultDataSource.java b/library/core/src/main/java/com/google/android/exoplayer2/upstream/DefaultDataSource.java index 98026c4677..afef3e6761 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/upstream/DefaultDataSource.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/upstream/DefaultDataSource.java @@ -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); diff --git a/library/core/src/main/java/com/google/android/exoplayer2/upstream/PriorityDataSource.java b/library/core/src/main/java/com/google/android/exoplayer2/upstream/PriorityDataSource.java index 767b6d78a3..e52e1db376 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/upstream/PriorityDataSource.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/upstream/PriorityDataSource.java @@ -55,6 +55,7 @@ public final class PriorityDataSource implements DataSource { @Override public void addTransferListener(TransferListener transferListener) { + Assertions.checkNotNull(transferListener); upstream.addTransferListener(transferListener); } diff --git a/library/core/src/main/java/com/google/android/exoplayer2/upstream/ResolvingDataSource.java b/library/core/src/main/java/com/google/android/exoplayer2/upstream/ResolvingDataSource.java index f5fb67e40e..958780cbc3 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/upstream/ResolvingDataSource.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/upstream/ResolvingDataSource.java @@ -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); } diff --git a/library/core/src/main/java/com/google/android/exoplayer2/upstream/StatsDataSource.java b/library/core/src/main/java/com/google/android/exoplayer2/upstream/StatsDataSource.java index 6cdc381ba2..4340169f45 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/upstream/StatsDataSource.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/upstream/StatsDataSource.java @@ -72,6 +72,7 @@ public final class StatsDataSource implements DataSource { @Override public void addTransferListener(TransferListener transferListener) { + Assertions.checkNotNull(transferListener); dataSource.addTransferListener(transferListener); } diff --git a/library/core/src/main/java/com/google/android/exoplayer2/upstream/TeeDataSource.java b/library/core/src/main/java/com/google/android/exoplayer2/upstream/TeeDataSource.java index f56f19a6ca..689273d388 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/upstream/TeeDataSource.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/upstream/TeeDataSource.java @@ -45,6 +45,7 @@ public final class TeeDataSource implements DataSource { @Override public void addTransferListener(TransferListener transferListener) { + Assertions.checkNotNull(transferListener); upstream.addTransferListener(transferListener); } diff --git a/library/core/src/main/java/com/google/android/exoplayer2/upstream/cache/CacheDataSource.java b/library/core/src/main/java/com/google/android/exoplayer2/upstream/cache/CacheDataSource.java index 7398ff58a2..e1ec63161a 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/upstream/cache/CacheDataSource.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/upstream/cache/CacheDataSource.java @@ -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); } diff --git a/library/core/src/main/java/com/google/android/exoplayer2/upstream/cache/SimpleCache.java b/library/core/src/main/java/com/google/android/exoplayer2/upstream/cache/SimpleCache.java index 17655fa312..29c09ff486 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/upstream/cache/SimpleCache.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/upstream/cache/SimpleCache.java @@ -309,6 +309,8 @@ public final class SimpleCache implements Cache { @Override public synchronized NavigableSet addListener(String key, Listener listener) { Assertions.checkState(!released); + Assertions.checkNotNull(key); + Assertions.checkNotNull(listener); ArrayList listenersForKey = listeners.get(key); if (listenersForKey == null) { listenersForKey = new ArrayList<>(); diff --git a/library/core/src/main/java/com/google/android/exoplayer2/upstream/crypto/AesCipherDataSource.java b/library/core/src/main/java/com/google/android/exoplayer2/upstream/crypto/AesCipherDataSource.java index 665a47191e..5abe42b937 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/upstream/crypto/AesCipherDataSource.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/upstream/crypto/AesCipherDataSource.java @@ -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); } diff --git a/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/Aes128DataSource.java b/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/Aes128DataSource.java index fe70298dc8..11d68b1c08 100644 --- a/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/Aes128DataSource.java +++ b/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/Aes128DataSource.java @@ -66,6 +66,7 @@ import javax.crypto.spec.SecretKeySpec; @Override public final void addTransferListener(TransferListener transferListener) { + Assertions.checkNotNull(transferListener); upstream.addTransferListener(transferListener); } diff --git a/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/playlist/DefaultHlsPlaylistTracker.java b/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/playlist/DefaultHlsPlaylistTracker.java index 02d2718dec..1ad75dac1e 100644 --- a/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/playlist/DefaultHlsPlaylistTracker.java +++ b/library/hls/src/main/java/com/google/android/exoplayer2/source/hls/playlist/DefaultHlsPlaylistTracker.java @@ -161,6 +161,7 @@ public final class DefaultHlsPlaylistTracker @Override public void addListener(PlaylistEventListener listener) { + Assertions.checkNotNull(listener); listeners.add(listener); } diff --git a/library/ui/src/main/java/com/google/android/exoplayer2/ui/DefaultTimeBar.java b/library/ui/src/main/java/com/google/android/exoplayer2/ui/DefaultTimeBar.java index 44c0035278..24d890134a 100644 --- a/library/ui/src/main/java/com/google/android/exoplayer2/ui/DefaultTimeBar.java +++ b/library/ui/src/main/java/com/google/android/exoplayer2/ui/DefaultTimeBar.java @@ -450,6 +450,7 @@ public class DefaultTimeBar extends View implements TimeBar { @Override public void addListener(OnScrubListener listener) { + Assertions.checkNotNull(listener); listeners.add(listener); } diff --git a/library/ui/src/main/java/com/google/android/exoplayer2/ui/PlayerControlView.java b/library/ui/src/main/java/com/google/android/exoplayer2/ui/PlayerControlView.java index 4b9de374c3..62e9094cf0 100644 --- a/library/ui/src/main/java/com/google/android/exoplayer2/ui/PlayerControlView.java +++ b/library/ui/src/main/java/com/google/android/exoplayer2/ui/PlayerControlView.java @@ -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); } diff --git a/library/ui/src/main/java/com/google/android/exoplayer2/ui/StyledPlayerControlView.java b/library/ui/src/main/java/com/google/android/exoplayer2/ui/StyledPlayerControlView.java index a33a508d89..0d51f94661 100644 --- a/library/ui/src/main/java/com/google/android/exoplayer2/ui/StyledPlayerControlView.java +++ b/library/ui/src/main/java/com/google/android/exoplayer2/ui/StyledPlayerControlView.java @@ -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); }