diff --git a/src/com/android/settings/dashboard/DashboardFeatureProviderImpl.java b/src/com/android/settings/dashboard/DashboardFeatureProviderImpl.java index f403e056da0..6ea7fd7acfc 100644 --- a/src/com/android/settings/dashboard/DashboardFeatureProviderImpl.java +++ b/src/com/android/settings/dashboard/DashboardFeatureProviderImpl.java @@ -133,6 +133,9 @@ public class DashboardFeatureProviderImpl implements DashboardFeatureProvider { @Override public void bindPreferenceToTile(Activity activity, int sourceMetricsCategory, Preference pref, Tile tile, String key, int baseOrder) { + if (pref == null) { + return; + } pref.setTitle(tile.title); if (!TextUtils.isEmpty(key)) { pref.setKey(key); @@ -239,7 +242,7 @@ public class DashboardFeatureProviderImpl implements DashboardFeatureProvider { if (tile.icon != null) { preference.setIcon(tile.icon.loadDrawable(preference.getContext())); } else if (tile.metaData != null - && tile.metaData.containsKey(META_DATA_PREFERENCE_ICON_URI)) + && tile.metaData.containsKey(META_DATA_PREFERENCE_ICON_URI)) { ThreadUtils.postOnBackgroundThread(() -> { String packageName = null; if (tile.intent != null) { @@ -259,11 +262,11 @@ public class DashboardFeatureProviderImpl implements DashboardFeatureProvider { return; } final Icon icon = Icon.createWithResource(iconInfo.first, iconInfo.second); - ThreadUtils.postOnMainThread(() -> { - preference.setIcon(icon.loadDrawable(preference.getContext())); - } + ThreadUtils.postOnMainThread(() -> + preference.setIcon(icon.loadDrawable(preference.getContext())) ); }); + } } private void launchIntentOrSelectProfile(Activity activity, Tile tile, Intent intent, diff --git a/tests/robotests/src/com/android/settings/dashboard/DashboardFeatureProviderImplTest.java b/tests/robotests/src/com/android/settings/dashboard/DashboardFeatureProviderImplTest.java index a0e5ed873bb..41d8b18f47c 100644 --- a/tests/robotests/src/com/android/settings/dashboard/DashboardFeatureProviderImplTest.java +++ b/tests/robotests/src/com/android/settings/dashboard/DashboardFeatureProviderImplTest.java @@ -24,6 +24,7 @@ import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.verifyZeroInteractions; import static org.mockito.Mockito.when; import static org.robolectric.Shadows.shadowOf; @@ -214,6 +215,15 @@ public class DashboardFeatureProviderImplTest { .startActivityForResultAsUser(any(Intent.class), anyInt(), any(UserHandle.class)); } + @Test + public void bindPreference_nullPreference_shouldIgnore() { + final Tile tile = mock(Tile.class); + mImpl.bindPreferenceToTile(mActivity, MetricsProto.MetricsEvent.VIEW_UNKNOWN, + null, tile, "123", Preference.DEFAULT_ORDER); + + verifyZeroInteractions(tile); + } + @Test public void bindPreference_withNullKeyNullPriority_shouldGenerateKeyAndPriority() { final Preference preference = new Preference(RuntimeEnvironment.application);