diff --git a/src/com/android/settings/dashboard/DashboardAdapter.java b/src/com/android/settings/dashboard/DashboardAdapter.java index 99de73eb075..b2d816d6a62 100644 --- a/src/com/android/settings/dashboard/DashboardAdapter.java +++ b/src/com/android/settings/dashboard/DashboardAdapter.java @@ -17,7 +17,6 @@ package com.android.settings.dashboard; import android.app.Activity; import android.content.Context; -import android.graphics.Typeface; import android.graphics.drawable.Drawable; import android.graphics.drawable.Icon; import android.os.Bundle; @@ -27,7 +26,6 @@ import android.support.v7.util.DiffUtil; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.text.TextUtils; -import android.util.ArrayMap; import android.util.Log; import android.view.LayoutInflater; import android.view.View; @@ -56,8 +54,8 @@ import com.android.settingslib.utils.IconCache; import java.util.List; public class DashboardAdapter extends RecyclerView.Adapter - implements SummaryLoader.SummaryConsumer, SuggestionAdapter.Callback, LifecycleObserver, - OnSaveInstanceState { + implements SummaryLoader.SummaryConsumer, SuggestionAdapter.Callback, LifecycleObserver, + OnSaveInstanceState { public static final String TAG = "DashboardAdapter"; private static final String STATE_CATEGORY_LIST = "category_list"; @@ -84,8 +82,8 @@ public class DashboardAdapter extends RecyclerView.Adapter conditions, SuggestionControllerMixin suggestionControllerMixin, - Lifecycle lifecycle) { + List conditions, SuggestionControllerMixin suggestionControllerMixin, + Lifecycle lifecycle) { DashboardCategory category = null; boolean conditionExpanded = false; @@ -96,14 +94,14 @@ public class DashboardAdapter extends RecyclerView.Adapter data) { final DashboardData prevData = mDashboardData; mDashboardData = new DashboardData.Builder(prevData) - .setSuggestions(data) - .build(); + .setSuggestions(data) + .build(); notifyDashboardDataChanged(prevData); } @@ -130,8 +128,8 @@ public class DashboardAdapter extends RecyclerView.Adapter { mMetricsFeatureProvider.action(mContext, - MetricsEvent.ACTION_SETTINGS_CONDITION_EXPAND, false); + MetricsEvent.ACTION_SETTINGS_CONDITION_EXPAND, false); DashboardData prevData = mDashboardData; mDashboardData = new DashboardData.Builder(prevData). - setConditionExpanded(false).build(); + setConditionExpanded(false).build(); notifyDashboardDataChanged(prevData); scrollToTopOfConditions(); }); @@ -254,7 +252,7 @@ public class DashboardAdapter extends RecyclerView.Adapter { mMetricsFeatureProvider.action(mContext, - MetricsEvent.ACTION_SETTINGS_CONDITION_EXPAND, true); + MetricsEvent.ACTION_SETTINGS_CONDITION_EXPAND, true); final DashboardData prevData = mDashboardData; mDashboardData = new DashboardData.Builder(prevData) - .setConditionExpanded(true).build(); + .setConditionExpanded(true).build(); notifyDashboardDataChanged(prevData); scrollToTopOfConditions(); }); @@ -291,8 +289,8 @@ public class DashboardAdapter extends RecyclerView.Adapter) mDashboardData.getItemEntityByPosition(position), - mDashboardData.isConditionExpanded()); + (List) mDashboardData.getItemEntityByPosition(position), + mDashboardData.isConditionExpanded()); adapter.addDismissHandling(holder.data); holder.data.setAdapter(adapter); holder.data.setLayoutManager(new LinearLayoutManager(mContext)); @@ -303,7 +301,7 @@ public class DashboardAdapter extends RecyclerView.Adapter suggestions = - (List) mDashboardData.getItemEntityByPosition(position); + (List) mDashboardData.getItemEntityByPosition(position); if (suggestions != null && suggestions.size() > 0) { mSuggestionAdapter.setSuggestions(suggestions); holder.data.setAdapter(mSuggestionAdapter); @@ -316,7 +314,8 @@ public class DashboardAdapter extends RecyclerView.Adapter suggestions = makeSuggestionsV2("pkg1", "pkg2", "pkg3"); adapter.setSuggestions(suggestions); @@ -114,7 +115,7 @@ public class DashboardAdapterTest { when(itemView.findViewById(android.R.id.summary)).thenReturn(mock(TextView.class)); when(itemView.findViewById(android.R.id.title)).thenReturn(mock(TextView.class)); final DashboardAdapter.SuggestionContainerHolder holder = - new DashboardAdapter.SuggestionContainerHolder(itemView); + new DashboardAdapter.SuggestionContainerHolder(itemView); adapter.onBindSuggestion(holder, 0); @@ -133,8 +134,9 @@ public class DashboardAdapterTest { @Test public void testSuggestionDismissed_onlySuggestion_updateDashboardData() { DashboardAdapter adapter = - spy(new DashboardAdapter(mContext, null /* savedInstanceState */, - null /* conditions */, null /* suggestionControllerMixin */, null /* lifecycle */)); + spy(new DashboardAdapter(mContext, null /* savedInstanceState */, + null /* conditions */, null /* suggestionControllerMixin */, + null /* lifecycle */)); final List suggestions = makeSuggestionsV2("pkg1"); adapter.setSuggestions(suggestions); final DashboardData dashboardData = adapter.mDashboardData; @@ -149,7 +151,7 @@ public class DashboardAdapterTest { @Test public void testBindSuggestion_shouldSetSuggestionAdapterAndNoCrash() { mDashboardAdapter = new DashboardAdapter(mContext, null /* savedInstanceState */, - null /* conditions */, null /* suggestionControllerMixin */, null /* lifecycle */); + null /* conditions */, null /* suggestionControllerMixin */, null /* lifecycle */); final List suggestions = makeSuggestionsV2("pkg1"); mDashboardAdapter.setSuggestions(suggestions); @@ -163,7 +165,7 @@ public class DashboardAdapterTest { when(itemView.findViewById(android.R.id.summary)).thenReturn(mock(TextView.class)); when(itemView.findViewById(android.R.id.title)).thenReturn(mock(TextView.class)); final DashboardAdapter.SuggestionContainerHolder holder = - new DashboardAdapter.SuggestionContainerHolder(itemView); + new DashboardAdapter.SuggestionContainerHolder(itemView); mDashboardAdapter.onBindSuggestion(holder, 0); @@ -176,14 +178,14 @@ public class DashboardAdapterTest { final Context context = RuntimeEnvironment.application; final View view = LayoutInflater.from(context).inflate(R.layout.dashboard_tile, null); final DashboardAdapter.DashboardItemHolder holder = - new DashboardAdapter.DashboardItemHolder(view); + new DashboardAdapter.DashboardItemHolder(view); final Tile tile = new Tile(); tile.icon = Icon.createWithResource(context, R.drawable.ic_settings); final IconCache iconCache = mock(IconCache.class); when(iconCache.getIcon(tile.icon)).thenReturn(context.getDrawable(R.drawable.ic_settings)); mDashboardAdapter = new DashboardAdapter(context, null /* savedInstanceState */, - null /* conditions */, null /* suggestionControllerMixin */, null /* lifecycle */); + null /* conditions */, null /* suggestionControllerMixin */, null /* lifecycle */); ReflectionHelpers.setField(mDashboardAdapter, "mCache", iconCache); mDashboardAdapter.onBindTile(holder, tile); @@ -191,11 +193,11 @@ public class DashboardAdapterTest { } @Test - public void onBindTile_externalTile_shouldNotUseGenericBackgroundIcon() { + public void onBindTile_externalTile_shouldUpdateIcon() { final Context context = RuntimeEnvironment.application; final View view = LayoutInflater.from(context).inflate(R.layout.dashboard_tile, null); final DashboardAdapter.DashboardItemHolder holder = - new DashboardAdapter.DashboardItemHolder(view); + new DashboardAdapter.DashboardItemHolder(view); final Tile tile = new Tile(); tile.icon = mock(Icon.class); when(tile.icon.getResPackage()).thenReturn("another.package"); @@ -204,13 +206,36 @@ public class DashboardAdapterTest { when(iconCache.getIcon(tile.icon)).thenReturn(context.getDrawable(R.drawable.ic_settings)); mDashboardAdapter = new DashboardAdapter(context, null /* savedInstanceState */, - null /* conditions */, null /* suggestionControllerMixin */, null /* lifecycle */); + null /* conditions */, null /* suggestionControllerMixin */, null /* lifecycle */); ReflectionHelpers.setField(mDashboardAdapter, "mCache", iconCache); + mDashboardAdapter.onBindTile(holder, tile); verify(iconCache).updateIcon(eq(tile.icon), any(RoundedHomepageIcon.class)); } + @Test + public void onBindTile_externalTile_usingRoundedHomepageIcon_shouldNotUpdateIcon() { + final Context context = RuntimeEnvironment.application; + final View view = LayoutInflater.from(context).inflate(R.layout.dashboard_tile, null); + final DashboardAdapter.DashboardItemHolder holder = + new DashboardAdapter.DashboardItemHolder(view); + final Tile tile = new Tile(); + tile.icon = mock(Icon.class); + when(tile.icon.getResPackage()).thenReturn("another.package"); + + final IconCache iconCache = mock(IconCache.class); + when(iconCache.getIcon(tile.icon)).thenReturn(mock(RoundedHomepageIcon.class)); + + mDashboardAdapter = new DashboardAdapter(context, null /* savedInstanceState */, + null /* conditions */, null /* suggestionControllerMixin */, null /* lifecycle */); + ReflectionHelpers.setField(mDashboardAdapter, "mCache", iconCache); + + mDashboardAdapter.onBindTile(holder, tile); + + verify(iconCache, never()).updateIcon(eq(tile.icon), any(RoundedHomepageIcon.class)); + } + private List makeSuggestionsV2(String... pkgNames) { final List suggestions = new ArrayList<>(); for (String pkgName : pkgNames) {