From 2f87c336da6fc7774abda006417583b130b13e81 Mon Sep 17 00:00:00 2001 From: Tim Peng Date: Tue, 7 Apr 2020 14:16:58 +0800 Subject: [PATCH] Settings crashed by a null worker -Add worker checker -Add test case Bug: 153356562 Test: make -j42 RunSettingsRoboTests Change-Id: I129ff63a48b3785aacc846fe1dd67a926a8e5e1f --- .../settings/media/MediaOutputIndicatorSlice.java | 5 +++++ .../settings/media/MediaOutputIndicatorSliceTest.java | 10 ++++++++++ 2 files changed, 15 insertions(+) diff --git a/src/com/android/settings/media/MediaOutputIndicatorSlice.java b/src/com/android/settings/media/MediaOutputIndicatorSlice.java index 79d446e0f57..f336f279295 100644 --- a/src/com/android/settings/media/MediaOutputIndicatorSlice.java +++ b/src/com/android/settings/media/MediaOutputIndicatorSlice.java @@ -25,6 +25,7 @@ import android.content.Intent; import android.graphics.Bitmap; import android.media.session.MediaController; import android.net.Uri; +import android.util.Log; import androidx.core.graphics.drawable.IconCompat; import androidx.slice.Slice; @@ -104,6 +105,10 @@ public class MediaOutputIndicatorSlice implements CustomSliceable { @Override public void onNotifyChange(Intent i) { + if (getWorker() == null) { + Log.d(TAG, "onNotifyChange: Worker is null"); + return; + } final MediaController mediaController = getWorker().getActiveLocalMediaController(); final Intent intent = new Intent() .setPackage(Utils.SETTINGS_PACKAGE_NAME) diff --git a/tests/robotests/src/com/android/settings/media/MediaOutputIndicatorSliceTest.java b/tests/robotests/src/com/android/settings/media/MediaOutputIndicatorSliceTest.java index 8717b6f357e..55cc4cd57a3 100644 --- a/tests/robotests/src/com/android/settings/media/MediaOutputIndicatorSliceTest.java +++ b/tests/robotests/src/com/android/settings/media/MediaOutputIndicatorSliceTest.java @@ -21,7 +21,9 @@ import static com.android.settings.slices.CustomSliceRegistry.MEDIA_OUTPUT_INDIC import static com.google.common.truth.Truth.assertThat; +import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.never; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -190,6 +192,14 @@ public class MediaOutputIndicatorSliceTest { assertThat(metadata.isErrorSlice()).isTrue(); } + @Test + public void onNotifyChange_noWorker_doNothing() { + sMediaOutputIndicatorWorker = null; + mMediaOutputIndicatorSlice.onNotifyChange(new Intent()); + + verify(mContext, never()).startActivity(any()); + } + @Test public void onNotifyChange_withActiveLocalMedia_verifyIntentExtra() { when(mMediaController.getSessionToken()).thenReturn(mToken);