From f535055e2e427396470a1be74a3899ae4395ef3d Mon Sep 17 00:00:00 2001 From: Fan Zhang Date: Tue, 30 Oct 2018 13:38:13 -0700 Subject: [PATCH] Use safe icon when building unavailable slices. And move ic_a11y_generic from mipmap to drawable. IconCompat doesn't support mipmap. Bug: 118691898 Test: robotests Change-Id: I6799f3d31d2c5654319e5a97bf8ca14992e785a7 --- .../ic_accessibility_generic.png | Bin .../ic_accessibility_generic.png | Bin .../ic_accessibility_generic.png | Bin .../ic_accessibility_generic.png | Bin .../ic_accessibility_generic.png | Bin .../accessibility/AccessibilitySettings.java | 2 +- .../ShortcutServicePickerFragment.java | 2 +- .../SettingsContextualCardProvider.java | 2 +- .../settings/slices/SliceBuilderUtils.java | 2 +- .../settings/slices/SliceDataConverter.java | 2 +- .../slices/SliceBuilderUtilsTest.java | 19 ++++++++++++++++++ 11 files changed, 24 insertions(+), 5 deletions(-) rename res/{mipmap-hdpi => drawable-hdpi}/ic_accessibility_generic.png (100%) rename res/{mipmap-mdpi => drawable-mdpi}/ic_accessibility_generic.png (100%) rename res/{mipmap-xhdpi => drawable-xhdpi}/ic_accessibility_generic.png (100%) rename res/{mipmap-xxhdpi => drawable-xxhdpi}/ic_accessibility_generic.png (100%) rename res/{mipmap-xxxhdpi => drawable-xxxhdpi}/ic_accessibility_generic.png (100%) 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 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 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 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 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 diff --git a/src/com/android/settings/accessibility/AccessibilitySettings.java b/src/com/android/settings/accessibility/AccessibilitySettings.java index 9a8ef5451ab..65b0e86b50d 100644 --- a/src/com/android/settings/accessibility/AccessibilitySettings.java +++ b/src/com/android/settings/accessibility/AccessibilitySettings.java @@ -550,7 +550,7 @@ public class AccessibilitySettings extends SettingsPreferenceFragment implements 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 aa5cd59271e..213bfbd62d6 100644 --- a/src/com/android/settings/accessibility/ShortcutServicePickerFragment.java +++ b/src/com/android/settings/accessibility/ShortcutServicePickerFragment.java @@ -258,7 +258,7 @@ public class ShortcutServicePickerFragment extends RadioButtonPickerFragment { 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 e394c03a03b..6fe120481b0 100644 --- a/src/com/android/settings/homepage/contextualcards/SettingsContextualCardProvider.java +++ b/src/com/android/settings/homepage/contextualcards/SettingsContextualCardProvider.java @@ -43,7 +43,7 @@ public class SettingsContextualCardProvider extends ContextualCardProvider { .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 a947fb2d25e..2432cc698a8 100644 --- a/src/com/android/settings/slices/SliceBuilderUtils.java +++ b/src/com/android/settings/slices/SliceBuilderUtils.java @@ -385,7 +385,7 @@ public class SliceBuilderUtils { final Set 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 29e3d6b453e..f10c67ac3e2 100644 --- a/src/com/android/settings/slices/SliceDataConverter.java +++ b/src/com/android/settings/slices/SliceDataConverter.java @@ -277,7 +277,7 @@ class SliceDataConverter { 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 f9cc427e6c8..1055667f3c0 100644 --- a/tests/robotests/src/com/android/settings/slices/SliceBuilderUtilsTest.java +++ b/tests/robotests/src/com/android/settings/slices/SliceBuilderUtilsTest.java @@ -432,6 +432,25 @@ public class SliceBuilderUtilsTest { assertThat(actualIconResource).isEqualTo(expectedIconResource); } + @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,