Merge "Use safe icon when building unavailable slices."
diff --git a/res/mipmap-hdpi/ic_accessibility_generic.png b/res/drawable-hdpi/ic_accessibility_generic.png
similarity index 100%
rename from res/mipmap-hdpi/ic_accessibility_generic.png
rename to res/drawable-hdpi/ic_accessibility_generic.png
Binary files differ
diff --git a/res/mipmap-mdpi/ic_accessibility_generic.png b/res/drawable-mdpi/ic_accessibility_generic.png
similarity index 100%
rename from res/mipmap-mdpi/ic_accessibility_generic.png
rename to res/drawable-mdpi/ic_accessibility_generic.png
Binary files differ
diff --git a/res/mipmap-xhdpi/ic_accessibility_generic.png b/res/drawable-xhdpi/ic_accessibility_generic.png
similarity index 100%
rename from res/mipmap-xhdpi/ic_accessibility_generic.png
rename to res/drawable-xhdpi/ic_accessibility_generic.png
Binary files differ
diff --git a/res/mipmap-xxhdpi/ic_accessibility_generic.png b/res/drawable-xxhdpi/ic_accessibility_generic.png
similarity index 100%
rename from res/mipmap-xxhdpi/ic_accessibility_generic.png
rename to res/drawable-xxhdpi/ic_accessibility_generic.png
Binary files differ
diff --git a/res/mipmap-xxxhdpi/ic_accessibility_generic.png b/res/drawable-xxxhdpi/ic_accessibility_generic.png
similarity index 100%
rename from res/mipmap-xxxhdpi/ic_accessibility_generic.png
rename to res/drawable-xxxhdpi/ic_accessibility_generic.png
Binary files differ
diff --git a/src/com/android/settings/accessibility/AccessibilitySettings.java b/src/com/android/settings/accessibility/AccessibilitySettings.java
index 9a8ef54..65b0e86 100644
--- a/src/com/android/settings/accessibility/AccessibilitySettings.java
+++ b/src/com/android/settings/accessibility/AccessibilitySettings.java
@@ -550,7 +550,7 @@
 
             Drawable icon;
             if (resolveInfo.getIconResource() == 0) {
-                icon = ContextCompat.getDrawable(getContext(), R.mipmap.ic_accessibility_generic);
+                icon = ContextCompat.getDrawable(getContext(), R.drawable.ic_accessibility_generic);
             } else {
                 icon = resolveInfo.loadIcon(getPackageManager());
             }
diff --git a/src/com/android/settings/accessibility/ShortcutServicePickerFragment.java b/src/com/android/settings/accessibility/ShortcutServicePickerFragment.java
index aa5cd59..213bfbd 100644
--- a/src/com/android/settings/accessibility/ShortcutServicePickerFragment.java
+++ b/src/com/android/settings/accessibility/ShortcutServicePickerFragment.java
@@ -258,7 +258,7 @@
         public Drawable loadIcon() {
             final ResolveInfo resolveInfo = mServiceInfo.getResolveInfo();
             return (resolveInfo.getIconResource() == 0)
-                    ? getContext().getDrawable(R.mipmap.ic_accessibility_generic)
+                    ? getContext().getDrawable(R.drawable.ic_accessibility_generic)
                     : resolveInfo.loadIcon(getContext().getPackageManager());
         }
 
diff --git a/src/com/android/settings/homepage/contextualcards/SettingsContextualCardProvider.java b/src/com/android/settings/homepage/contextualcards/SettingsContextualCardProvider.java
index e394c03..6fe1204 100644
--- a/src/com/android/settings/homepage/contextualcards/SettingsContextualCardProvider.java
+++ b/src/com/android/settings/homepage/contextualcards/SettingsContextualCardProvider.java
@@ -43,7 +43,7 @@
                         .build();
         final ContextualCard batteryInfoCard =
                 ContextualCard.newBuilder()
-                        .setSliceUri(BatterySlice.BATTERY_CARD_URI.toSafeString())
+                        .setSliceUri(BatterySlice.BATTERY_CARD_URI.toString())
                         .setCardName(BatterySlice.PATH_BATTERY_INFO)
                         .build();
         final ContextualCard connectedDeviceCard =
diff --git a/src/com/android/settings/slices/SliceBuilderUtils.java b/src/com/android/settings/slices/SliceBuilderUtils.java
index a947fb2..2432cc6 100644
--- a/src/com/android/settings/slices/SliceBuilderUtils.java
+++ b/src/com/android/settings/slices/SliceBuilderUtils.java
@@ -385,7 +385,7 @@
         final Set<String> keywords = buildSliceKeywords(data);
         @ColorInt final int color = Utils.getColorAccentDefaultColor(context);
         final CharSequence summary = context.getText(R.string.disabled_dependent_setting_summary);
-        final IconCompat icon = IconCompat.createWithResource(context, data.getIconResource());
+        final IconCompat icon = getSafeIcon(context, data);
         final SliceAction primaryAction = new SliceAction(getContentPendingIntent(context, data),
                 icon, title);
 
diff --git a/src/com/android/settings/slices/SliceDataConverter.java b/src/com/android/settings/slices/SliceDataConverter.java
index 3d9cf45..cb2980d 100644
--- a/src/com/android/settings/slices/SliceDataConverter.java
+++ b/src/com/android/settings/slices/SliceDataConverter.java
@@ -277,7 +277,7 @@
             final String title = resolveInfo.loadLabel(packageManager).toString();
             int iconResource = resolveInfo.getIconResource();
             if (iconResource == 0) {
-                iconResource = R.mipmap.ic_accessibility_generic;
+                iconResource = R.drawable.ic_accessibility_generic;
             }
 
             sliceDataBuilder.setKey(flattenedName)
diff --git a/tests/robotests/src/com/android/settings/slices/SliceBuilderUtilsTest.java b/tests/robotests/src/com/android/settings/slices/SliceBuilderUtilsTest.java
index f9cc427..1055667 100644
--- a/tests/robotests/src/com/android/settings/slices/SliceBuilderUtilsTest.java
+++ b/tests/robotests/src/com/android/settings/slices/SliceBuilderUtilsTest.java
@@ -433,6 +433,25 @@
     }
 
     @Test
+    public void buildDisabledDependentSlice_noIconPassed_returnsSliceWithIcon() {
+        final int expectedIconResource = IconCompat.createWithResource(mContext,
+                R.drawable.ic_settings).toIcon().getResId();
+        final SliceData data = getDummyData(FakeUnavailablePreferenceController.class,
+                SUMMARY, SliceData.SliceType.SWITCH, SCREEN_TITLE, 0 /* icon */,
+                IS_DYNAMIC_SUMMARY_ALLOWED);
+        Settings.Global.putInt(mContext.getContentResolver(),
+                FakeUnavailablePreferenceController.AVAILABILITY_KEY,
+                BasePreferenceController.DISABLED_DEPENDENT_SETTING);
+
+        final Slice slice = SliceBuilderUtils.buildSlice(mContext, data);
+
+        final SliceMetadata metadata = SliceMetadata.from(mContext, slice);
+        final SliceAction primaryAction = metadata.getPrimaryAction();
+        final int actualIconResource = primaryAction.getIcon().toIcon().getResId();
+        assertThat(actualIconResource).isEqualTo(expectedIconResource);
+    }
+
+    @Test
     public void buildToggleSlice_noIconPassed_returnsSliceWithIcon() {
         final int expectedIconResource = IconCompat.createWithResource(mContext,
                 R.drawable.ic_settings).toIcon().getResId();