From 8f76b44410d27e96f4c1a3a780212e49b2d5df48 Mon Sep 17 00:00:00 2001 From: hughchen Date: Thu, 14 Mar 2019 11:29:32 +0800 Subject: [PATCH] Add null check for worker Add null check to avoid crash when worker cannot get through uri. Bug: 128492874 Test: make -j42 RunSettingsRoboTests Change-Id: I789ce0bfa98c0b0b145a8605c58c88a77eeb76a9 --- src/com/android/settings/media/MediaOutputSlice.java | 11 +++++++++-- .../android/settings/media/MediaOutputSliceTest.java | 7 +++++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/com/android/settings/media/MediaOutputSlice.java b/src/com/android/settings/media/MediaOutputSlice.java index 232986c45e0..e76bc88ae39 100644 --- a/src/com/android/settings/media/MediaOutputSlice.java +++ b/src/com/android/settings/media/MediaOutputSlice.java @@ -76,6 +76,11 @@ public class MediaOutputSlice implements CustomSliceable { return null; } + if (getWorker() == null) { + Log.d(TAG, "getSlice() Can not get worker through uri!"); + return null; + } + final List devices = getMediaDevices(); @ColorInt final int color = Utils.getColorAccentDefaultColor(mContext); @@ -115,13 +120,15 @@ public class MediaOutputSlice implements CustomSliceable { private MediaDeviceUpdateWorker getWorker() { if (mWorker == null) { mWorker = (MediaDeviceUpdateWorker) SliceBackgroundWorker.getInstance(getUri()); - mWorker.setPackageName(mPackageName); + if (mWorker != null) { + mWorker.setPackageName(mPackageName); + } } return mWorker; } private List getMediaDevices() { - List devices = getWorker().getMediaDevices(); + final List devices = getWorker().getMediaDevices(); return devices; } diff --git a/tests/robotests/src/com/android/settings/media/MediaOutputSliceTest.java b/tests/robotests/src/com/android/settings/media/MediaOutputSliceTest.java index da0d85b5472..d26a458011a 100644 --- a/tests/robotests/src/com/android/settings/media/MediaOutputSliceTest.java +++ b/tests/robotests/src/com/android/settings/media/MediaOutputSliceTest.java @@ -93,6 +93,13 @@ public class MediaOutputSliceTest { mMediaOutputSlice.init(TEST_PACKAGE_NAME, mMediaDeviceUpdateWorker); } + @Test + public void getSlice_workerIsNull_shouldNotCrash() { + mMediaOutputSlice.init(TEST_PACKAGE_NAME, null); + + mMediaOutputSlice.getSlice(); + } + @Test public void getSlice_shouldHaveActiveDeviceName() { mDevices.clear();