Commit 113a2df7 by tonihei Committed by Ian Baker

Add some missing nullness assertions.

They are all for Context.getSystemService that is allowed to return
null. In most cases where we need to service, we make an assertion that
it is available.

PiperOrigin-RevId: 319503557
parent 968a0baa
...@@ -22,6 +22,7 @@ import android.media.AudioManager; ...@@ -22,6 +22,7 @@ import android.media.AudioManager;
import android.media.MediaCodec; import android.media.MediaCodec;
import android.media.MediaFormat; import android.media.MediaFormat;
import androidx.annotation.IntDef; import androidx.annotation.IntDef;
import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi; import androidx.annotation.RequiresApi;
import com.google.android.exoplayer2.util.Util; import com.google.android.exoplayer2.util.Util;
import java.lang.annotation.Documented; import java.lang.annotation.Documented;
...@@ -1110,8 +1111,9 @@ public final class C { ...@@ -1110,8 +1111,9 @@ public final class C {
*/ */
@RequiresApi(21) @RequiresApi(21)
public static int generateAudioSessionIdV21(Context context) { public static int generateAudioSessionIdV21(Context context) {
return ((AudioManager) context.getSystemService(Context.AUDIO_SERVICE)) @Nullable
.generateAudioSessionId(); AudioManager audioManager = ((AudioManager) context.getSystemService(Context.AUDIO_SERVICE));
return audioManager == null ? AudioManager.ERROR : audioManager.generateAudioSessionId();
} }
} }
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
package com.google.android.exoplayer2.util; package com.google.android.exoplayer2.util;
import static android.content.Context.UI_MODE_SERVICE; import static android.content.Context.UI_MODE_SERVICE;
import static com.google.android.exoplayer2.util.Assertions.checkNotNull;
import android.Manifest.permission; import android.Manifest.permission;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
...@@ -1829,8 +1830,7 @@ public final class Util { ...@@ -1829,8 +1830,7 @@ public final class Util {
Matcher matcher = ESCAPED_CHARACTER_PATTERN.matcher(fileName); Matcher matcher = ESCAPED_CHARACTER_PATTERN.matcher(fileName);
int startOfNotEscaped = 0; int startOfNotEscaped = 0;
while (percentCharacterCount > 0 && matcher.find()) { while (percentCharacterCount > 0 && matcher.find()) {
char unescapedCharacter = char unescapedCharacter = (char) Integer.parseInt(checkNotNull(matcher.group(1)), 16);
(char) Integer.parseInt(Assertions.checkNotNull(matcher.group(1)), 16);
builder.append(fileName, startOfNotEscaped, matcher.start()).append(unescapedCharacter); builder.append(fileName, startOfNotEscaped, matcher.start()).append(unescapedCharacter);
startOfNotEscaped = matcher.end(); startOfNotEscaped = matcher.end();
percentCharacterCount--; percentCharacterCount--;
...@@ -2086,7 +2086,8 @@ public final class Util { ...@@ -2086,7 +2086,8 @@ public final class Util {
* @return The size of the current mode, in pixels. * @return The size of the current mode, in pixels.
*/ */
public static Point getCurrentDisplayModeSize(Context context) { public static Point getCurrentDisplayModeSize(Context context) {
WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); WindowManager windowManager =
checkNotNull((WindowManager) context.getSystemService(Context.WINDOW_SERVICE));
return getCurrentDisplayModeSize(context, windowManager.getDefaultDisplay()); return getCurrentDisplayModeSize(context, windowManager.getDefaultDisplay());
} }
...@@ -2327,7 +2328,7 @@ public final class Util { ...@@ -2327,7 +2328,7 @@ public final class Util {
private static boolean isTrafficRestricted(Uri uri) { private static boolean isTrafficRestricted(Uri uri) {
return "http".equals(uri.getScheme()) return "http".equals(uri.getScheme())
&& !NetworkSecurityPolicy.getInstance() && !NetworkSecurityPolicy.getInstance()
.isCleartextTrafficPermitted(Assertions.checkNotNull(uri.getHost())); .isCleartextTrafficPermitted(checkNotNull(uri.getHost()));
} }
private static String maybeReplaceGrandfatheredLanguageTags(String languageTag) { private static String maybeReplaceGrandfatheredLanguageTags(String languageTag) {
......
...@@ -15,6 +15,8 @@ ...@@ -15,6 +15,8 @@
*/ */
package com.google.android.exoplayer2; package com.google.android.exoplayer2;
import static com.google.android.exoplayer2.util.Assertions.checkNotNull;
import android.content.Context; import android.content.Context;
import android.media.AudioFocusRequest; import android.media.AudioFocusRequest;
import android.media.AudioManager; import android.media.AudioManager;
...@@ -116,7 +118,8 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; ...@@ -116,7 +118,8 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
*/ */
public AudioFocusManager(Context context, Handler eventHandler, PlayerControl playerControl) { public AudioFocusManager(Context context, Handler eventHandler, PlayerControl playerControl) {
this.audioManager = this.audioManager =
(AudioManager) context.getApplicationContext().getSystemService(Context.AUDIO_SERVICE); checkNotNull(
(AudioManager) context.getApplicationContext().getSystemService(Context.AUDIO_SERVICE));
this.playerControl = playerControl; this.playerControl = playerControl;
this.focusListener = new AudioFocusListener(eventHandler); this.focusListener = new AudioFocusListener(eventHandler);
this.audioFocusState = AUDIO_FOCUS_STATE_NO_FOCUS; this.audioFocusState = AUDIO_FOCUS_STATE_NO_FOCUS;
...@@ -212,7 +215,7 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; ...@@ -212,7 +215,7 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
private int requestAudioFocusDefault() { private int requestAudioFocusDefault() {
return audioManager.requestAudioFocus( return audioManager.requestAudioFocus(
focusListener, focusListener,
Util.getStreamTypeForAudioUsage(Assertions.checkNotNull(audioAttributes).usage), Util.getStreamTypeForAudioUsage(checkNotNull(audioAttributes).usage),
focusGain); focusGain);
} }
...@@ -227,7 +230,7 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull; ...@@ -227,7 +230,7 @@ import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
boolean willPauseWhenDucked = willPauseWhenDucked(); boolean willPauseWhenDucked = willPauseWhenDucked();
audioFocusRequest = audioFocusRequest =
builder builder
.setAudioAttributes(Assertions.checkNotNull(audioAttributes).getAudioAttributesV21()) .setAudioAttributes(checkNotNull(audioAttributes).getAudioAttributesV21())
.setWillPauseWhenDucked(willPauseWhenDucked) .setWillPauseWhenDucked(willPauseWhenDucked)
.setOnAudioFocusChangeListener(focusListener) .setOnAudioFocusChangeListener(focusListener)
.build(); .build();
......
...@@ -15,6 +15,8 @@ ...@@ -15,6 +15,8 @@
*/ */
package com.google.android.exoplayer2.scheduler; package com.google.android.exoplayer2.scheduler;
import static com.google.android.exoplayer2.util.Assertions.checkNotNull;
import android.app.job.JobInfo; import android.app.job.JobInfo;
import android.app.job.JobParameters; import android.app.job.JobParameters;
import android.app.job.JobScheduler; import android.app.job.JobScheduler;
...@@ -25,7 +27,6 @@ import android.content.Intent; ...@@ -25,7 +27,6 @@ import android.content.Intent;
import android.os.PersistableBundle; import android.os.PersistableBundle;
import androidx.annotation.RequiresApi; import androidx.annotation.RequiresApi;
import androidx.annotation.RequiresPermission; import androidx.annotation.RequiresPermission;
import com.google.android.exoplayer2.util.Assertions;
import com.google.android.exoplayer2.util.Log; import com.google.android.exoplayer2.util.Log;
import com.google.android.exoplayer2.util.Util; import com.google.android.exoplayer2.util.Util;
...@@ -72,7 +73,8 @@ public final class PlatformScheduler implements Scheduler { ...@@ -72,7 +73,8 @@ public final class PlatformScheduler implements Scheduler {
context = context.getApplicationContext(); context = context.getApplicationContext();
this.jobId = jobId; this.jobId = jobId;
jobServiceComponentName = new ComponentName(context, PlatformSchedulerService.class); jobServiceComponentName = new ComponentName(context, PlatformSchedulerService.class);
jobScheduler = (JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE); jobScheduler =
checkNotNull((JobScheduler) context.getSystemService(Context.JOB_SCHEDULER_SERVICE));
} }
@Override @Override
...@@ -140,8 +142,8 @@ public final class PlatformScheduler implements Scheduler { ...@@ -140,8 +142,8 @@ public final class PlatformScheduler implements Scheduler {
Requirements requirements = new Requirements(extras.getInt(KEY_REQUIREMENTS)); Requirements requirements = new Requirements(extras.getInt(KEY_REQUIREMENTS));
int notMetRequirements = requirements.getNotMetRequirements(this); int notMetRequirements = requirements.getNotMetRequirements(this);
if (notMetRequirements == 0) { if (notMetRequirements == 0) {
String serviceAction = Assertions.checkNotNull(extras.getString(KEY_SERVICE_ACTION)); String serviceAction = checkNotNull(extras.getString(KEY_SERVICE_ACTION));
String servicePackage = Assertions.checkNotNull(extras.getString(KEY_SERVICE_PACKAGE)); String servicePackage = checkNotNull(extras.getString(KEY_SERVICE_PACKAGE));
Intent intent = new Intent(serviceAction).setPackage(servicePackage); Intent intent = new Intent(serviceAction).setPackage(servicePackage);
Util.startForegroundService(this, intent); Util.startForegroundService(this, intent);
} else { } else {
......
...@@ -15,6 +15,8 @@ ...@@ -15,6 +15,8 @@
*/ */
package com.google.android.exoplayer2.scheduler; package com.google.android.exoplayer2.scheduler;
import static com.google.android.exoplayer2.util.Assertions.checkNotNull;
import android.content.BroadcastReceiver; import android.content.BroadcastReceiver;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
...@@ -27,7 +29,6 @@ import android.os.Looper; ...@@ -27,7 +29,6 @@ import android.os.Looper;
import android.os.PowerManager; import android.os.PowerManager;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi; import androidx.annotation.RequiresApi;
import com.google.android.exoplayer2.util.Assertions;
import com.google.android.exoplayer2.util.Util; import com.google.android.exoplayer2.util.Util;
/** /**
...@@ -115,7 +116,7 @@ public final class RequirementsWatcher { ...@@ -115,7 +116,7 @@ public final class RequirementsWatcher {
/** Stops watching for changes. */ /** Stops watching for changes. */
public void stop() { public void stop() {
context.unregisterReceiver(Assertions.checkNotNull(receiver)); context.unregisterReceiver(checkNotNull(receiver));
receiver = null; receiver = null;
if (Util.SDK_INT >= 24 && networkCallback != null) { if (Util.SDK_INT >= 24 && networkCallback != null) {
unregisterNetworkCallbackV24(); unregisterNetworkCallbackV24();
...@@ -130,8 +131,7 @@ public final class RequirementsWatcher { ...@@ -130,8 +131,7 @@ public final class RequirementsWatcher {
@RequiresApi(24) @RequiresApi(24)
private void registerNetworkCallbackV24() { private void registerNetworkCallbackV24() {
ConnectivityManager connectivityManager = ConnectivityManager connectivityManager =
Assertions.checkNotNull( checkNotNull((ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE));
(ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE));
networkCallback = new NetworkCallback(); networkCallback = new NetworkCallback();
connectivityManager.registerDefaultNetworkCallback(networkCallback); connectivityManager.registerDefaultNetworkCallback(networkCallback);
} }
...@@ -139,8 +139,8 @@ public final class RequirementsWatcher { ...@@ -139,8 +139,8 @@ public final class RequirementsWatcher {
@RequiresApi(24) @RequiresApi(24)
private void unregisterNetworkCallbackV24() { private void unregisterNetworkCallbackV24() {
ConnectivityManager connectivityManager = ConnectivityManager connectivityManager =
(ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); checkNotNull((ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE));
connectivityManager.unregisterNetworkCallback(Assertions.checkNotNull(networkCallback)); connectivityManager.unregisterNetworkCallback(checkNotNull(networkCallback));
networkCallback = null; networkCallback = null;
} }
......
...@@ -15,6 +15,8 @@ ...@@ -15,6 +15,8 @@
*/ */
package com.google.android.exoplayer2.util; package com.google.android.exoplayer2.util;
import static com.google.android.exoplayer2.util.Assertions.checkNotNull;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
import android.app.Notification; import android.app.Notification;
import android.app.NotificationChannel; import android.app.NotificationChannel;
...@@ -99,7 +101,8 @@ public final class NotificationUtil { ...@@ -99,7 +101,8 @@ public final class NotificationUtil {
@Importance int importance) { @Importance int importance) {
if (Util.SDK_INT >= 26) { if (Util.SDK_INT >= 26) {
NotificationManager notificationManager = NotificationManager notificationManager =
(NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); checkNotNull(
(NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE));
NotificationChannel channel = NotificationChannel channel =
new NotificationChannel(id, context.getString(nameResourceId), importance); new NotificationChannel(id, context.getString(nameResourceId), importance);
if (descriptionResourceId != 0) { if (descriptionResourceId != 0) {
...@@ -122,7 +125,7 @@ public final class NotificationUtil { ...@@ -122,7 +125,7 @@ public final class NotificationUtil {
*/ */
public static void setNotification(Context context, int id, @Nullable Notification notification) { public static void setNotification(Context context, int id, @Nullable Notification notification) {
NotificationManager notificationManager = NotificationManager notificationManager =
(NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); checkNotNull((NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE));
if (notification != null) { if (notification != null) {
notificationManager.notify(id, notification); notificationManager.notify(id, notification);
} else { } else {
......
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