Settings crashed by a null worker

-Add worker checker
-Add test case

Bug: 153356562
Test: make -j42 RunSettingsRoboTests
Change-Id: I129ff63a48b3785aacc846fe1dd67a926a8e5e1f
This commit is contained in:
Tim Peng
2020-04-07 14:16:58 +08:00
committed by tim peng
parent c707a93d00
commit 2f87c336da
2 changed files with 15 additions and 0 deletions

View File

@@ -25,6 +25,7 @@ import android.content.Intent;
import android.graphics.Bitmap; import android.graphics.Bitmap;
import android.media.session.MediaController; import android.media.session.MediaController;
import android.net.Uri; import android.net.Uri;
import android.util.Log;
import androidx.core.graphics.drawable.IconCompat; import androidx.core.graphics.drawable.IconCompat;
import androidx.slice.Slice; import androidx.slice.Slice;
@@ -104,6 +105,10 @@ public class MediaOutputIndicatorSlice implements CustomSliceable {
@Override @Override
public void onNotifyChange(Intent i) { public void onNotifyChange(Intent i) {
if (getWorker() == null) {
Log.d(TAG, "onNotifyChange: Worker is null");
return;
}
final MediaController mediaController = getWorker().getActiveLocalMediaController(); final MediaController mediaController = getWorker().getActiveLocalMediaController();
final Intent intent = new Intent() final Intent intent = new Intent()
.setPackage(Utils.SETTINGS_PACKAGE_NAME) .setPackage(Utils.SETTINGS_PACKAGE_NAME)

View File

@@ -21,7 +21,9 @@ import static com.android.settings.slices.CustomSliceRegistry.MEDIA_OUTPUT_INDIC
import static com.google.common.truth.Truth.assertThat; 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.doReturn;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.spy; import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when; import static org.mockito.Mockito.when;
@@ -190,6 +192,14 @@ public class MediaOutputIndicatorSliceTest {
assertThat(metadata.isErrorSlice()).isTrue(); assertThat(metadata.isErrorSlice()).isTrue();
} }
@Test
public void onNotifyChange_noWorker_doNothing() {
sMediaOutputIndicatorWorker = null;
mMediaOutputIndicatorSlice.onNotifyChange(new Intent());
verify(mContext, never()).startActivity(any());
}
@Test @Test
public void onNotifyChange_withActiveLocalMedia_verifyIntentExtra() { public void onNotifyChange_withActiveLocalMedia_verifyIntentExtra() {
when(mMediaController.getSessionToken()).thenReturn(mToken); when(mMediaController.getSessionToken()).thenReturn(mToken);