From ed210bca4ed86570f1f2d29de92ebd470775a3b2 Mon Sep 17 00:00:00 2001 From: olly Date: Sun, 16 Feb 2020 10:19:46 +0000 Subject: [PATCH] Source package: Add some missing nullness annotations Plus a bit of misc warning cleanup whilst I was there PiperOrigin-RevId: 295415657 --- .../exoplayer2/source/BaseMediaSource.java | 4 ++-- .../source/ClippingMediaPeriod.java | 2 +- .../source/CompositeMediaSource.java | 2 +- .../source/ConcatenatingMediaSource.java | 22 +++++++++---------- .../exoplayer2/source/EmptySampleStream.java | 4 +--- .../exoplayer2/source/IcyDataSource.java | 4 ++-- .../exoplayer2/source/LoopingMediaSource.java | 4 +++- .../exoplayer2/source/MaskingMediaSource.java | 5 ++--- .../source/MediaSourceEventListener.java | 3 ++- .../source/ProgressiveMediaSource.java | 3 +-- .../exoplayer2/source/SampleDataQueue.java | 7 +++--- .../source/SingleSampleMediaPeriod.java | 6 ++--- .../source/SingleSampleMediaSource.java | 6 ++--- 13 files changed, 35 insertions(+), 37 deletions(-) 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 86e00e0a37..a9e4041ba4 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 @@ -106,7 +106,7 @@ public abstract class BaseMediaSource implements MediaSource { */ protected final MediaSourceEventListener.EventDispatcher createEventDispatcher( MediaPeriodId mediaPeriodId, long mediaTimeOffsetMs) { - Assertions.checkArgument(mediaPeriodId != null); + Assertions.checkNotNull(mediaPeriodId); return eventDispatcher.withParameters(/* windowIndex= */ 0, mediaPeriodId, mediaTimeOffsetMs); } @@ -145,7 +145,7 @@ public abstract class BaseMediaSource implements MediaSource { MediaSourceCaller caller, @Nullable TransferListener mediaTransferListener) { Looper looper = Looper.myLooper(); Assertions.checkArgument(this.looper == null || this.looper == looper); - Timeline timeline = this.timeline; + @Nullable Timeline timeline = this.timeline; mediaSourceCallers.add(caller); if (this.looper == null) { this.looper = looper; diff --git a/library/core/src/main/java/com/google/android/exoplayer2/source/ClippingMediaPeriod.java b/library/core/src/main/java/com/google/android/exoplayer2/source/ClippingMediaPeriod.java index 8aafb9a0e5..0df3564174 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/source/ClippingMediaPeriod.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/source/ClippingMediaPeriod.java @@ -174,7 +174,7 @@ public final class ClippingMediaPeriod implements MediaPeriod, MediaPeriod.Callb @Override public long seekToUs(long positionUs) { pendingInitialDiscontinuityPositionUs = C.TIME_UNSET; - for (ClippingSampleStream sampleStream : sampleStreams) { + for (@Nullable ClippingSampleStream sampleStream : sampleStreams) { if (sampleStream != null) { sampleStream.clearSentEos(); } diff --git a/library/core/src/main/java/com/google/android/exoplayer2/source/CompositeMediaSource.java b/library/core/src/main/java/com/google/android/exoplayer2/source/CompositeMediaSource.java index 424ee6299d..356fdb98ec 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/source/CompositeMediaSource.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/source/CompositeMediaSource.java @@ -317,7 +317,7 @@ public abstract class CompositeMediaSource extends BaseMediaSource { /** Updates the event dispatcher and returns whether the event should be dispatched. */ private boolean maybeUpdateEventDispatcher( int childWindowIndex, @Nullable MediaPeriodId childMediaPeriodId) { - MediaPeriodId mediaPeriodId = null; + @Nullable MediaPeriodId mediaPeriodId = null; if (childMediaPeriodId != null) { mediaPeriodId = getMediaPeriodIdForChildMediaPeriodId(id, childMediaPeriodId); if (mediaPeriodId == null) { diff --git a/library/core/src/main/java/com/google/android/exoplayer2/source/ConcatenatingMediaSource.java b/library/core/src/main/java/com/google/android/exoplayer2/source/ConcatenatingMediaSource.java index c1ab78a9bc..8664c4367b 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/source/ConcatenatingMediaSource.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/source/ConcatenatingMediaSource.java @@ -28,7 +28,6 @@ import com.google.android.exoplayer2.upstream.Allocator; import com.google.android.exoplayer2.upstream.TransferListener; import com.google.android.exoplayer2.util.Assertions; import com.google.android.exoplayer2.util.Util; -import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; @@ -468,7 +467,7 @@ public final class ConcatenatingMediaSource extends CompositeMediaSource(index, mediaSourceHolders, callbackAction)) @@ -581,9 +581,10 @@ public final class ConcatenatingMediaSource extends CompositeMediaSource(fromIndex, toIndex, callbackAction)) @@ -600,9 +601,10 @@ public final class ConcatenatingMediaSource extends CompositeMediaSource(currentIndex, newIndex, callbackAction)) @@ -616,7 +618,7 @@ public final class ConcatenatingMediaSource extends CompositeMediaSource { @Override public void releasePeriod(MediaPeriod mediaPeriod) { maskingMediaSource.releasePeriod(mediaPeriod); + @Nullable MediaPeriodId childMediaPeriodId = mediaPeriodToChildMediaPeriodId.remove(mediaPeriod); if (childMediaPeriodId != null) { childMediaPeriodIdToMediaPeriodId.remove(childMediaPeriodId); @@ -123,7 +124,8 @@ public final class LoopingMediaSource extends CompositeMediaSource { } @Override - protected @Nullable MediaPeriodId getMediaPeriodIdForChildMediaPeriodId( + @Nullable + protected MediaPeriodId getMediaPeriodIdForChildMediaPeriodId( Void id, MediaPeriodId mediaPeriodId) { return loopCount != Integer.MAX_VALUE ? childMediaPeriodIdToMediaPeriodId.get(mediaPeriodId) diff --git a/library/core/src/main/java/com/google/android/exoplayer2/source/MaskingMediaSource.java b/library/core/src/main/java/com/google/android/exoplayer2/source/MaskingMediaSource.java index e28c1652f2..9de8a0f26d 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/source/MaskingMediaSource.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/source/MaskingMediaSource.java @@ -26,7 +26,6 @@ import com.google.android.exoplayer2.upstream.Allocator; import com.google.android.exoplayer2.upstream.TransferListener; import com.google.android.exoplayer2.util.Assertions; import com.google.android.exoplayer2.util.Util; -import java.io.IOException; /** * A {@link MediaSource} that masks the {@link Timeline} with a placeholder until the actual media @@ -59,7 +58,7 @@ public final class MaskingMediaSource extends CompositeMediaSource { this.useLazyPreparation = useLazyPreparation && mediaSource.isSingleWindow(); window = new Timeline.Window(); period = new Timeline.Period(); - Timeline initialTimeline = mediaSource.getInitialTimeline(); + @Nullable Timeline initialTimeline = mediaSource.getInitialTimeline(); if (initialTimeline != null) { timeline = MaskingTimeline.createWithRealTimeline( @@ -92,7 +91,7 @@ public final class MaskingMediaSource extends CompositeMediaSource { @Override @SuppressWarnings("MissingSuperCall") - public void maybeThrowSourceInfoRefreshError() throws IOException { + public void maybeThrowSourceInfoRefreshError() { // Do nothing. Source info refresh errors will be thrown when calling // MaskingMediaPeriod.maybeThrowPrepareError. } diff --git a/library/core/src/main/java/com/google/android/exoplayer2/source/MediaSourceEventListener.java b/library/core/src/main/java/com/google/android/exoplayer2/source/MediaSourceEventListener.java index 8123245024..e0af59f7bc 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/source/MediaSourceEventListener.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/source/MediaSourceEventListener.java @@ -221,7 +221,8 @@ public interface MediaSourceEventListener { * @param eventListener The listener to be added. */ public void addEventListener(Handler handler, MediaSourceEventListener eventListener) { - Assertions.checkArgument(handler != null && eventListener != null); + Assertions.checkNotNull(handler); + Assertions.checkNotNull(eventListener); listenerAndHandlers.add(new ListenerAndHandler(handler, eventListener)); } diff --git a/library/core/src/main/java/com/google/android/exoplayer2/source/ProgressiveMediaSource.java b/library/core/src/main/java/com/google/android/exoplayer2/source/ProgressiveMediaSource.java index 3c1193c6da..16c4cc22c6 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/source/ProgressiveMediaSource.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/source/ProgressiveMediaSource.java @@ -28,7 +28,6 @@ import com.google.android.exoplayer2.upstream.DataSource; import com.google.android.exoplayer2.upstream.DefaultLoadErrorHandlingPolicy; import com.google.android.exoplayer2.upstream.LoadErrorHandlingPolicy; import com.google.android.exoplayer2.upstream.TransferListener; -import java.io.IOException; /** * Provides one period that loads data from a {@link Uri} and extracted using an {@link Extractor}. @@ -245,7 +244,7 @@ public final class ProgressiveMediaSource extends BaseMediaSource } @Override - public void maybeThrowSourceInfoRefreshError() throws IOException { + public void maybeThrowSourceInfoRefreshError() { // Do nothing. } diff --git a/library/core/src/main/java/com/google/android/exoplayer2/source/SampleDataQueue.java b/library/core/src/main/java/com/google/android/exoplayer2/source/SampleDataQueue.java index ade6c5c808..fbe48ea6c4 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/source/SampleDataQueue.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/source/SampleDataQueue.java @@ -24,6 +24,7 @@ import com.google.android.exoplayer2.source.SampleQueue.SampleExtrasHolder; import com.google.android.exoplayer2.upstream.Allocation; import com.google.android.exoplayer2.upstream.Allocator; import com.google.android.exoplayer2.util.ParsableByteArray; +import com.google.android.exoplayer2.util.Util; import java.io.EOFException; import java.io.IOException; import java.nio.ByteBuffer; @@ -246,11 +247,11 @@ import java.nio.ByteBuffer; } // Write the clear and encrypted subsample sizes. - int[] clearDataSizes = buffer.cryptoInfo.numBytesOfClearData; + @Nullable int[] clearDataSizes = buffer.cryptoInfo.numBytesOfClearData; if (clearDataSizes == null || clearDataSizes.length < subsampleCount) { clearDataSizes = new int[subsampleCount]; } - int[] encryptedDataSizes = buffer.cryptoInfo.numBytesOfEncryptedData; + @Nullable int[] encryptedDataSizes = buffer.cryptoInfo.numBytesOfEncryptedData; if (encryptedDataSizes == null || encryptedDataSizes.length < subsampleCount) { encryptedDataSizes = new int[subsampleCount]; } @@ -270,7 +271,7 @@ import java.nio.ByteBuffer; } // Populate the cryptoInfo. - CryptoData cryptoData = extrasHolder.cryptoData; + CryptoData cryptoData = Util.castNonNull(extrasHolder.cryptoData); buffer.cryptoInfo.set( subsampleCount, clearDataSizes, diff --git a/library/core/src/main/java/com/google/android/exoplayer2/source/SingleSampleMediaPeriod.java b/library/core/src/main/java/com/google/android/exoplayer2/source/SingleSampleMediaPeriod.java index a5d8266ef6..3e8ad19548 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/source/SingleSampleMediaPeriod.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/source/SingleSampleMediaPeriod.java @@ -104,7 +104,7 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; } @Override - public void maybeThrowPrepareError() throws IOException { + public void maybeThrowPrepareError() { // Do nothing. } @@ -394,7 +394,7 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; } @Override - public void load() throws IOException, InterruptedException { + public void load() throws IOException { // We always load from the beginning, so reset bytesRead to 0. dataSource.resetBytesRead(); try { @@ -415,7 +415,5 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; Util.closeQuietly(dataSource); } } - } - } diff --git a/library/core/src/main/java/com/google/android/exoplayer2/source/SingleSampleMediaSource.java b/library/core/src/main/java/com/google/android/exoplayer2/source/SingleSampleMediaSource.java index 455b9cf417..4365c8fda5 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/source/SingleSampleMediaSource.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/source/SingleSampleMediaSource.java @@ -256,8 +256,8 @@ public final class SingleSampleMediaSource extends BaseMediaSource { Format format, long durationUs, int minLoadableRetryCount, - Handler eventHandler, - EventListener eventListener, + @Nullable Handler eventHandler, + @Nullable EventListener eventListener, int eventSourceId, boolean treatLoadErrorsAsEndOfStream) { this( @@ -313,7 +313,7 @@ public final class SingleSampleMediaSource extends BaseMediaSource { } @Override - public void maybeThrowSourceInfoRefreshError() throws IOException { + public void maybeThrowSourceInfoRefreshError() { // Do nothing. }