Catch error when we fail to get slice icon.
Change-Id: Ia8bdf1ef8a090d2f939abf27b2308eafde7d8928
Fixes: 120588243
Test: robotests
(cherry picked from commit 69a56b42a1ed4fb8162deebbe5f17278720267f6)
diff --git a/src/com/android/settings/slices/SliceBuilderUtils.java b/src/com/android/settings/slices/SliceBuilderUtils.java
index c16a8ba..d75eaa2 100644
--- a/src/com/android/settings/slices/SliceBuilderUtils.java
+++ b/src/com/android/settings/slices/SliceBuilderUtils.java
@@ -449,6 +449,12 @@
if (iconResource == 0) {
iconResource = R.drawable.ic_settings;
}
- return IconCompat.createWithResource(context, iconResource);
+ try {
+ return IconCompat.createWithResource(context, iconResource);
+ } catch (Exception e) {
+ Log.w(TAG, "Falling back to settings icon because there is an error getting slice icon "
+ + data.getUri(), e);
+ return IconCompat.createWithResource(context, R.drawable.ic_settings);
+ }
}
}
diff --git a/tests/robotests/src/com/android/settings/slices/SliceBuilderUtilsTest.java b/tests/robotests/src/com/android/settings/slices/SliceBuilderUtilsTest.java
index f9937f4..821d383 100644
--- a/tests/robotests/src/com/android/settings/slices/SliceBuilderUtilsTest.java
+++ b/tests/robotests/src/com/android/settings/slices/SliceBuilderUtilsTest.java
@@ -505,6 +505,19 @@
assertThat(actualIconResource).isEqualTo(settingsIcon);
}
+ @Test
+ public void getSafeIcon_invalidResource_shouldFallbackToSettingsIcon() {
+ final int settingsIcon = R.drawable.ic_settings;
+ final int badIcon = 0x12345678;
+ final SliceData data = getDummyData(TOGGLE_CONTROLLER, SliceData.SliceType.SWITCH,
+ badIcon);
+
+ final IconCompat actualIcon = SliceBuilderUtils.getSafeIcon(mContext, data);
+
+ final int actualIconResource = actualIcon.toIcon().getResId();
+ assertThat(actualIconResource).isEqualTo(settingsIcon);
+ }
+
private SliceData getDummyData() {
return getDummyData(TOGGLE_CONTROLLER, SUMMARY, SliceData.SliceType.SWITCH, SCREEN_TITLE,
ICON, IS_DYNAMIC_SUMMARY_ALLOWED);