Remove more classes from nullness blacklist

PiperOrigin-RevId: 249431027
This commit is contained in:
olly 2019-05-22 13:40:12 +01:00 committed by Toni
parent d836957138
commit 10ee7d8e86
7 changed files with 71 additions and 42 deletions

View file

@ -27,6 +27,7 @@ import android.os.Parcel;
import android.os.Parcelable;
import android.os.PowerManager;
import androidx.annotation.IntDef;
import androidx.annotation.Nullable;
import com.google.android.exoplayer2.util.Util;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
@ -179,7 +180,7 @@ public final class Requirements implements Parcelable {
}
@Override
public boolean equals(Object o) {
public boolean equals(@Nullable Object o) {
if (this == o) {
return true;
}

View file

@ -27,7 +27,9 @@ import android.net.NetworkRequest;
import android.os.Handler;
import android.os.Looper;
import android.os.PowerManager;
import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi;
import com.google.android.exoplayer2.util.Assertions;
import com.google.android.exoplayer2.util.Util;
/**
@ -57,10 +59,10 @@ public final class RequirementsWatcher {
private final Requirements requirements;
private final Handler handler;
private DeviceStatusChangeReceiver receiver;
@Nullable private DeviceStatusChangeReceiver receiver;
@Requirements.RequirementFlags private int notMetRequirements;
private CapabilityValidatedCallback networkCallback;
@Nullable private CapabilityValidatedCallback networkCallback;
/**
* @param context Any context.
@ -111,7 +113,7 @@ public final class RequirementsWatcher {
/** Stops watching for changes. */
public void stop() {
context.unregisterReceiver(receiver);
context.unregisterReceiver(Assertions.checkNotNull(receiver));
receiver = null;
if (networkCallback != null) {
unregisterNetworkCallback();
@ -139,7 +141,7 @@ public final class RequirementsWatcher {
if (Util.SDK_INT >= 21) {
ConnectivityManager connectivityManager =
(ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
connectivityManager.unregisterNetworkCallback(networkCallback);
connectivityManager.unregisterNetworkCallback(Assertions.checkNotNull(networkCallback));
networkCallback = null;
}
}

View file

@ -19,6 +19,7 @@ import android.annotation.TargetApi;
import android.graphics.Color;
import android.graphics.Typeface;
import androidx.annotation.IntDef;
import androidx.annotation.Nullable;
import android.view.accessibility.CaptioningManager;
import android.view.accessibility.CaptioningManager.CaptionStyle;
import com.google.android.exoplayer2.util.Util;
@ -72,11 +73,15 @@ public final class CaptionStyleCompat {
*/
public static final int USE_TRACK_COLOR_SETTINGS = 1;
/**
* Default caption style.
*/
public static final CaptionStyleCompat DEFAULT = new CaptionStyleCompat(
Color.WHITE, Color.BLACK, Color.TRANSPARENT, EDGE_TYPE_NONE, Color.WHITE, null);
/** Default caption style. */
public static final CaptionStyleCompat DEFAULT =
new CaptionStyleCompat(
Color.WHITE,
Color.BLACK,
Color.TRANSPARENT,
EDGE_TYPE_NONE,
Color.WHITE,
/* typeface= */ null);
/**
* The preferred foreground color.
@ -110,10 +115,8 @@ public final class CaptionStyleCompat {
*/
public final int edgeColor;
/**
* The preferred typeface.
*/
public final Typeface typeface;
/** The preferred typeface, or {@code null} if unspecified. */
@Nullable public final Typeface typeface;
/**
* Creates a {@link CaptionStyleCompat} equivalent to a provided {@link CaptionStyle}.
@ -141,8 +144,13 @@ public final class CaptionStyleCompat {
* @param edgeColor See {@link #edgeColor}.
* @param typeface See {@link #typeface}.
*/
public CaptionStyleCompat(int foregroundColor, int backgroundColor, int windowColor,
@EdgeType int edgeType, int edgeColor, Typeface typeface) {
public CaptionStyleCompat(
int foregroundColor,
int backgroundColor,
int windowColor,
@EdgeType int edgeType,
int edgeColor,
@Nullable Typeface typeface) {
this.foregroundColor = foregroundColor;
this.backgroundColor = backgroundColor;
this.windowColor = windowColor;

View file

@ -18,6 +18,7 @@ package com.google.android.exoplayer2.text;
import android.graphics.Bitmap;
import android.graphics.Color;
import androidx.annotation.IntDef;
import androidx.annotation.Nullable;
import android.text.Layout.Alignment;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
@ -111,17 +112,13 @@ public class Cue {
* The cue text, or null if this is an image cue. Note the {@link CharSequence} may be decorated
* with styling spans.
*/
public final CharSequence text;
@Nullable public final CharSequence text;
/**
* The alignment of the cue text within the cue box, or null if the alignment is undefined.
*/
public final Alignment textAlignment;
/** The alignment of the cue text within the cue box, or null if the alignment is undefined. */
@Nullable public final Alignment textAlignment;
/**
* The cue image, or null if this is a text cue.
*/
public final Bitmap bitmap;
/** The cue image, or null if this is a text cue. */
@Nullable public final Bitmap bitmap;
/**
* The position of the {@link #lineAnchor} of the cue box within the viewport in the direction
@ -298,7 +295,7 @@ public class Cue {
*/
public Cue(
CharSequence text,
Alignment textAlignment,
@Nullable Alignment textAlignment,
float line,
@LineType int lineType,
@AnchorType int lineAnchor,
@ -376,7 +373,7 @@ public class Cue {
*/
public Cue(
CharSequence text,
Alignment textAlignment,
@Nullable Alignment textAlignment,
float line,
@LineType int lineType,
@AnchorType int lineAnchor,
@ -403,9 +400,9 @@ public class Cue {
}
private Cue(
CharSequence text,
Alignment textAlignment,
Bitmap bitmap,
@Nullable CharSequence text,
@Nullable Alignment textAlignment,
@Nullable Bitmap bitmap,
float line,
@LineType int lineType,
@AnchorType int lineAnchor,

View file

@ -15,6 +15,7 @@
*/
package com.google.android.exoplayer2.text;
import androidx.annotation.Nullable;
import com.google.android.exoplayer2.Format;
import com.google.android.exoplayer2.decoder.OutputBuffer;
import java.util.List;
@ -24,7 +25,7 @@ import java.util.List;
*/
public abstract class SubtitleOutputBuffer extends OutputBuffer implements Subtitle {
private Subtitle subtitle;
@Nullable private Subtitle subtitle;
private long subsampleOffsetUs;
/**

View file

@ -15,11 +15,11 @@
*/
package com.google.android.exoplayer2.text.webvtt;
import androidx.annotation.Nullable;
import android.text.TextUtils;
import com.google.android.exoplayer2.util.ColorParser;
import com.google.android.exoplayer2.util.ParsableByteArray;
import com.google.android.exoplayer2.util.Util;
import java.util.Arrays;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@ -52,13 +52,15 @@ import java.util.regex.Pattern;
}
/**
* Takes a CSS style block and consumes up to the first empty line found. Attempts to parse the
* contents of the style block and returns a {@link WebvttCssStyle} instance if successful, or
* {@code null} otherwise.
* Takes a CSS style block and consumes up to the first empty line. Attempts to parse the contents
* of the style block and returns a {@link WebvttCssStyle} instance if successful, or {@code null}
* otherwise.
*
* @param input The input from which the style block should be read.
* @return A {@link WebvttCssStyle} that represents the parsed block.
* @return A {@link WebvttCssStyle} that represents the parsed block, or {@code null} if parsing
* failed.
*/
@Nullable
public WebvttCssStyle parseBlock(ParsableByteArray input) {
stringBuilder.setLength(0);
int initialInputPosition = input.getPosition();
@ -86,13 +88,14 @@ import java.util.regex.Pattern;
}
/**
* Returns a string containing the selector. The input is expected to have the form
* {@code ::cue(tag#id.class1.class2[voice="someone"]}, where every element is optional.
* Returns a string containing the selector. The input is expected to have the form {@code
* ::cue(tag#id.class1.class2[voice="someone"]}, where every element is optional.
*
* @param input From which the selector is obtained.
* @return A string containing the target, empty string if the selector is universal
* (targets all cues) or null if an error was encountered.
* @return A string containing the target, empty string if the selector is universal (targets all
* cues) or null if an error was encountered.
*/
@Nullable
private static String parseSelector(ParsableByteArray input, StringBuilder stringBuilder) {
skipWhitespaceAndComments(input);
if (input.bytesLeft() < 5) {
@ -116,7 +119,7 @@ import java.util.regex.Pattern;
target = readCueTarget(input);
}
token = parseNextToken(input, stringBuilder);
if (!")".equals(token) || token == null) {
if (!")".equals(token)) {
return null;
}
return target;
@ -196,6 +199,7 @@ import java.util.regex.Pattern;
}
// Visible for testing.
@Nullable
/* package */ static String parseNextToken(ParsableByteArray input, StringBuilder stringBuilder) {
skipWhitespaceAndComments(input);
if (input.bytesLeft() == 0) {
@ -237,6 +241,7 @@ import java.util.regex.Pattern;
return (char) input.data[position];
}
@Nullable
private static String parsePropertyValue(ParsableByteArray input, StringBuilder stringBuilder) {
StringBuilder expressionBuilder = new StringBuilder();
String token;
@ -325,7 +330,7 @@ import java.util.regex.Pattern;
style.setTargetTagName(tagAndIdDivision);
}
if (classDivision.length > 1) {
style.setTargetClasses(Arrays.copyOfRange(classDivision, 1, classDivision.length));
style.setTargetClasses(Util.nullSafeArrayCopyOfRange(classDivision, 1, classDivision.length));
}
}

View file

@ -315,6 +315,21 @@ public final class Util {
return Arrays.copyOf(input, length);
}
/**
* Copies a subset of an array.
*
* @param input The input array.
* @param from The start the range to be copied, inclusive
* @param to The end of the range to be copied, exclusive.
* @return The copied array.
*/
@SuppressWarnings({"nullness:argument.type.incompatible", "nullness:return.type.incompatible"})
public static <T> T[] nullSafeArrayCopyOfRange(T[] input, int from, int to) {
Assertions.checkArgument(0 <= from);
Assertions.checkArgument(to <= input.length);
return Arrays.copyOfRange(input, from, to);
}
/**
* Concatenates two non-null type arrays.
*