From 1ca6b253215949df1d561a1c9bcc1e265aa7c295 Mon Sep 17 00:00:00 2001 From: Fan Zhang Date: Thu, 7 Sep 2017 16:06:24 -0700 Subject: [PATCH] Don't attempt to tint icon if icon is not available Change-Id: I0aa2a17d51d966dce182381c7bba8913ad997738 Fixes: 65460834 Test: robotests --- .../android/settings/dashboard/DashboardFragment.java | 3 +++ .../settings/dashboard/DashboardFragmentTest.java | 11 +++++++++++ 2 files changed, 14 insertions(+) diff --git a/src/com/android/settings/dashboard/DashboardFragment.java b/src/com/android/settings/dashboard/DashboardFragment.java index e8970ecd697..8c3ac0d0267 100644 --- a/src/com/android/settings/dashboard/DashboardFragment.java +++ b/src/com/android/settings/dashboard/DashboardFragment.java @@ -230,6 +230,9 @@ public abstract class DashboardFragment extends SettingsPreferenceFragment @VisibleForTesting boolean tintTileIcon(Tile tile) { + if (tile.icon == null) { + return false; + } // First check if the tile has set the icon tintable metadata. final Bundle metadata = tile.metaData; if (metadata != null diff --git a/tests/robotests/src/com/android/settings/dashboard/DashboardFragmentTest.java b/tests/robotests/src/com/android/settings/dashboard/DashboardFragmentTest.java index 2687714a959..ea160dd355f 100644 --- a/tests/robotests/src/com/android/settings/dashboard/DashboardFragmentTest.java +++ b/tests/robotests/src/com/android/settings/dashboard/DashboardFragmentTest.java @@ -27,6 +27,7 @@ import static org.mockito.Mockito.when; import android.content.ComponentName; import android.content.Context; import android.content.Intent; +import android.graphics.drawable.Icon; import android.os.Bundle; import android.support.v7.preference.Preference; import android.support.v7.preference.PreferenceManager; @@ -158,6 +159,7 @@ public class DashboardFragmentTest { @Test public void tintTileIcon_hasMetadata_shouldReturnIconTintableMetadata() { final Tile tile = new Tile(); + tile.icon = mock(Icon.class); final Bundle metaData = new Bundle(); tile.metaData = metaData; @@ -168,10 +170,19 @@ public class DashboardFragmentTest { assertThat(mTestFragment.tintTileIcon(tile)).isTrue(); } + @Test + public void tintTileIcon_noIcon_shouldReturnFalse() { + final Tile tile = new Tile(); + final Bundle metaData = new Bundle(); + tile.metaData = metaData; + + assertThat(mTestFragment.tintTileIcon(tile)).isFalse(); + } @Test public void tintTileIcon_noMetadata_shouldReturnPackageNameCheck() { final Tile tile = new Tile(); + tile.icon = mock(Icon.class); final Intent intent = new Intent(); tile.intent = intent;