diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index 4050d81..dc23c3d 100755
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -425,6 +425,7 @@
     <dimen name="output_switcher_slice_padding_top">11dp</dimen>
     <dimen name="output_switcher_slice_max_height">458dp</dimen>
     <dimen name="output_switcher_panel_icon_size">52dp</dimen>
+    <dimen name="output_switcher_panel_icon_corner_radius">16dp</dimen>
 
     <!-- Text padding for EmptyTextSettings -->
     <dimen name="empty_text_padding">24dp</dimen>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 9a56264..d814ebb 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -11322,7 +11322,7 @@
     <string name="platform_compat_default_disabled_title">Default disabled changes</string>
     <!-- Title for target SDK gated app compat changes category (do not translate 'targetSdkVersion') [CHAR LIMIT=50] -->
     <string name="platform_compat_target_sdk_title">Enabled for targetSdkVersion &gt; <xliff:g id="number" example="29">%d</xliff:g></string>
-    <!-- Title for the dialog shown when no debuggable apps are available [CHAR LIMIT=20] -->
+    <!-- Title for the dialog shown when no debuggable apps are available [CHAR LIMIT=30] -->
     <string name="platform_compat_dialog_title_no_apps">No apps available</string>
     <!-- Explanatory text shown when no debuggable apps are available [CHAR LIMIT=NONE] -->
     <string name="platform_compat_dialog_text_no_apps">App compatibility changes can only be modified for debuggable apps. Install a debuggable app and try again.</string>
diff --git a/src/com/android/settings/Utils.java b/src/com/android/settings/Utils.java
index e5fd340..64919d9 100644
--- a/src/com/android/settings/Utils.java
+++ b/src/com/android/settings/Utils.java
@@ -92,8 +92,11 @@
 import android.widget.ListView;
 import android.widget.TabWidget;
 
+import androidx.annotation.NonNull;
 import androidx.annotation.StringRes;
 import androidx.core.graphics.drawable.IconCompat;
+import androidx.core.graphics.drawable.RoundedBitmapDrawable;
+import androidx.core.graphics.drawable.RoundedBitmapDrawableFactory;
 import androidx.fragment.app.Fragment;
 import androidx.lifecycle.Lifecycle;
 import androidx.preference.Preference;
@@ -1113,4 +1116,25 @@
                 context.getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK;
         return currentNightMode == Configuration.UI_MODE_NIGHT_YES;
     }
+
+    /**
+     * Returns a bitmap with rounded corner.
+     *
+     * @param context application context.
+     * @param source bitmap to apply round corner.
+     * @param cornerRadius corner radius value.
+     */
+    public static Bitmap convertCornerRadiusBitmap(@NonNull Context context,
+            @NonNull Bitmap source, @NonNull float cornerRadius) {
+        final Bitmap roundedBitmap = Bitmap.createBitmap(source.getWidth(), source.getHeight(),
+                Bitmap.Config.ARGB_8888);
+        final RoundedBitmapDrawable drawable =
+                RoundedBitmapDrawableFactory.create(context.getResources(), source);
+        drawable.setAntiAlias(true);
+        drawable.setCornerRadius(cornerRadius);
+        final Canvas canvas = new Canvas(roundedBitmap);
+        drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
+        drawable.draw(canvas);
+        return roundedBitmap;
+    }
 }
diff --git a/src/com/android/settings/homepage/contextualcards/ContextualCardLoader.java b/src/com/android/settings/homepage/contextualcards/ContextualCardLoader.java
index d30fe59..e4a644c 100644
--- a/src/com/android/settings/homepage/contextualcards/ContextualCardLoader.java
+++ b/src/com/android/settings/homepage/contextualcards/ContextualCardLoader.java
@@ -184,6 +184,10 @@
 
     @VisibleForTesting
     List<ContextualCard> filterEligibleCards(List<ContextualCard> candidates) {
+        if (candidates.isEmpty()) {
+            return candidates;
+        }
+
         final ExecutorService executor = Executors.newFixedThreadPool(candidates.size());
         final List<ContextualCard> cards = new ArrayList<>();
         List<Future<ContextualCard>> eligibleCards = new ArrayList<>();
diff --git a/src/com/android/settings/panel/MediaOutputPanel.java b/src/com/android/settings/panel/MediaOutputPanel.java
index d8dbb34..6a296b7 100644
--- a/src/com/android/settings/panel/MediaOutputPanel.java
+++ b/src/com/android/settings/panel/MediaOutputPanel.java
@@ -116,7 +116,11 @@
         if (metadata != null) {
             final Bitmap bitmap = metadata.getDescription().getIconBitmap();
             if (bitmap != null) {
-                return IconCompat.createWithBitmap(bitmap);
+                final Bitmap roundBitmap = Utils.convertCornerRadiusBitmap(mContext, bitmap,
+                        (float) mContext.getResources().getDimensionPixelSize(
+                                R.dimen.output_switcher_panel_icon_corner_radius));
+
+                return IconCompat.createWithBitmap(roundBitmap);
             }
         }
         Log.d(TAG, "Media meta data does not contain icon information");
diff --git a/tests/robotests/src/com/android/settings/media/MediaDeviceUpdateWorkerTest.java b/tests/robotests/src/com/android/settings/media/MediaDeviceUpdateWorkerTest.java
index be86b6e..7a3243b 100644
--- a/tests/robotests/src/com/android/settings/media/MediaDeviceUpdateWorkerTest.java
+++ b/tests/robotests/src/com/android/settings/media/MediaDeviceUpdateWorkerTest.java
@@ -232,13 +232,20 @@
     public void onSlicePinned_packageUpdated_checkPackageName() {
         ShadowBluetoothUtils.sLocalBluetoothManager = mLocalBluetoothManager;
         when(mLocalBluetoothManager.getEventManager()).thenReturn(mBluetoothEventManager);
+
         mMediaDeviceUpdateWorker = new MediaDeviceUpdateWorker(mContext, URI1);
+        mMediaDeviceUpdateWorker.mLocalMediaManager = mock(LocalMediaManager.class);
+        when(mMediaDeviceUpdateWorker.mLocalMediaManager.getPackageName())
+                .thenReturn(TEST_DEVICE_PACKAGE_NAME1);
         mMediaDeviceUpdateWorker.onSlicePinned();
 
         assertThat(mMediaDeviceUpdateWorker.mLocalMediaManager.getPackageName()).matches(
                 TEST_DEVICE_PACKAGE_NAME1);
 
         mMediaDeviceUpdateWorker = new MediaDeviceUpdateWorker(mContext, URI2);
+        mMediaDeviceUpdateWorker.mLocalMediaManager = mock(LocalMediaManager.class);
+        when(mMediaDeviceUpdateWorker.mLocalMediaManager.getPackageName())
+                .thenReturn(TEST_DEVICE_PACKAGE_NAME2);
         mMediaDeviceUpdateWorker.onSlicePinned();
 
         assertThat(mMediaDeviceUpdateWorker.mLocalMediaManager.getPackageName()).matches(
diff --git a/tests/robotests/src/com/android/settings/media/MediaOutputIndicatorWorkerTest.java b/tests/robotests/src/com/android/settings/media/MediaOutputIndicatorWorkerTest.java
index 423c7ac..d9b2247 100644
--- a/tests/robotests/src/com/android/settings/media/MediaOutputIndicatorWorkerTest.java
+++ b/tests/robotests/src/com/android/settings/media/MediaOutputIndicatorWorkerTest.java
@@ -121,10 +121,12 @@
 
     @Test
     public void onSlicePinned_packageUpdated_checkPackageName() {
+        mMediaOutputIndicatorWorker.mLocalMediaManager = mLocalMediaManager;
         initPlayback();
         when(mMediaController.getPlaybackInfo()).thenReturn(mPlaybackInfo);
         when(mMediaController.getPlaybackState()).thenReturn(mPlaybackState);
         when(mMediaController.getPackageName()).thenReturn(TEST_PACKAGE_NAME);
+        when(mLocalMediaManager.getPackageName()).thenReturn(TEST_PACKAGE_NAME);
 
         mMediaOutputIndicatorWorker.onSlicePinned();
         waitForLocalMediaManagerInit();
@@ -132,7 +134,7 @@
                 TEST_PACKAGE_NAME);
 
         when(mMediaController.getPackageName()).thenReturn(TEST_PACKAGE_NAME2);
-        mMediaOutputIndicatorWorker.mLocalMediaManager = null;
+        when(mLocalMediaManager.getPackageName()).thenReturn(TEST_PACKAGE_NAME2);
         mMediaOutputIndicatorWorker.onSlicePinned();
         waitForLocalMediaManagerInit();
 
diff --git a/tests/robotests/src/com/android/settings/slices/SettingsSliceProviderTest.java b/tests/robotests/src/com/android/settings/slices/SettingsSliceProviderTest.java
index 0fa249d..2f0d60a 100644
--- a/tests/robotests/src/com/android/settings/slices/SettingsSliceProviderTest.java
+++ b/tests/robotests/src/com/android/settings/slices/SettingsSliceProviderTest.java
@@ -270,23 +270,27 @@
 
     @Test
     public void onBindSlice_nightModeChanged_shouldReloadTheme() {
-        mContext.getResources().getConfiguration().uiMode = UI_MODE_NIGHT_YES;
-
+        mContext.getResources().getConfiguration().uiMode = UI_MODE_NIGHT_NO;
         final SliceData data = getDummyData();
         mProvider.mSliceWeakDataCache.put(data.getUri(), data);
         mProvider.onBindSlice(data.getUri());
 
+        mContext.getResources().getConfiguration().uiMode = UI_MODE_NIGHT_YES;
+        mProvider.onBindSlice(data.getUri());
+
         assertThat(ShadowTheme.isThemeRebased()).isTrue();
     }
 
     @Test
     public void onBindSlice_nightModeNotChanged_shouldNotReloadTheme() {
         mContext.getResources().getConfiguration().uiMode = UI_MODE_NIGHT_NO;
-
         SliceData data = getDummyData();
         mProvider.mSliceWeakDataCache.put(data.getUri(), data);
         mProvider.onBindSlice(data.getUri());
 
+        mContext.getResources().getConfiguration().uiMode = UI_MODE_NIGHT_NO;
+        mProvider.onBindSlice(data.getUri());
+
         assertThat(ShadowTheme.isThemeRebased()).isFalse();
     }
 
