Merge "Move IconCache to SettingsLib(II)."
diff --git a/src/com/android/settings/dashboard/DashboardAdapter.java b/src/com/android/settings/dashboard/DashboardAdapter.java
index 007b66b..f04c3c9 100644
--- a/src/com/android/settings/dashboard/DashboardAdapter.java
+++ b/src/com/android/settings/dashboard/DashboardAdapter.java
@@ -51,6 +51,7 @@
 import com.android.settingslib.drawer.DashboardCategory;
 import com.android.settingslib.drawer.Tile;
 import com.android.settingslib.suggestions.SuggestionControllerMixin;
+import com.android.settingslib.utils.IconCache;
 
 import java.util.List;
 
@@ -365,31 +366,6 @@
         mRecyclerView.scrollToPosition(mDashboardData.hasSuggestion() ? 1 : 0);
     }
 
-    public static class IconCache {
-        private final Context mContext;
-        private final ArrayMap<Icon, Drawable> mMap = new ArrayMap<>();
-
-        public IconCache(Context context) {
-            mContext = context;
-        }
-
-        public Drawable getIcon(Icon icon) {
-            if (icon == null) {
-                return null;
-            }
-            Drawable drawable = mMap.get(icon);
-            if (drawable == null) {
-                drawable = icon.loadDrawable(mContext);
-                updateIcon(icon, drawable);
-            }
-            return drawable;
-        }
-
-        public void updateIcon(Icon icon, Drawable drawable) {
-            mMap.put(icon, drawable);
-        }
-    }
-
     public static class DashboardItemHolder extends RecyclerView.ViewHolder {
         public final ImageView icon;
         public final TextView title;
diff --git a/src/com/android/settings/dashboard/suggestions/SuggestionAdapter.java b/src/com/android/settings/dashboard/suggestions/SuggestionAdapter.java
index 11eb80c..87b3f4b 100644
--- a/src/com/android/settings/dashboard/suggestions/SuggestionAdapter.java
+++ b/src/com/android/settings/dashboard/suggestions/SuggestionAdapter.java
@@ -38,7 +38,6 @@
 import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
 import com.android.settings.R;
 import com.android.settings.dashboard.DashboardAdapter.DashboardItemHolder;
-import com.android.settings.dashboard.DashboardAdapter.IconCache;
 import com.android.settings.overlay.FeatureFactory;
 import com.android.settingslib.Utils;
 import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
@@ -46,6 +45,7 @@
 import com.android.settingslib.core.lifecycle.LifecycleObserver;
 import com.android.settingslib.core.lifecycle.events.OnSaveInstanceState;
 import com.android.settingslib.suggestions.SuggestionControllerMixin;
+import com.android.settingslib.utils.IconCache;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/tests/robotests/src/com/android/settings/dashboard/DashboardAdapterTest.java b/tests/robotests/src/com/android/settings/dashboard/DashboardAdapterTest.java
index cc25b5d..b85afaa 100644
--- a/tests/robotests/src/com/android/settings/dashboard/DashboardAdapterTest.java
+++ b/tests/robotests/src/com/android/settings/dashboard/DashboardAdapterTest.java
@@ -47,6 +47,7 @@
 import com.android.settings.testutils.SettingsRobolectricTestRunner;
 import com.android.settings.testutils.shadow.SettingsShadowResources;
 import com.android.settingslib.drawer.Tile;
+import com.android.settingslib.utils.IconCache;
 
 import org.junit.Before;
 import org.junit.Test;
@@ -244,7 +245,7 @@
             new DashboardAdapter.DashboardItemHolder(view);
         final Tile tile = new Tile();
         tile.icon = Icon.createWithResource(context, R.drawable.ic_settings);
-        final DashboardAdapter.IconCache iconCache = mock(DashboardAdapter.IconCache.class);
+        final IconCache iconCache = mock(IconCache.class);
         when(iconCache.getIcon(tile.icon)).thenReturn(context.getDrawable(R.drawable.ic_settings));
 
         mDashboardAdapter = new DashboardAdapter(context, null /* savedInstanceState */,
@@ -265,7 +266,7 @@
         tile.icon = mock(Icon.class);
         when(tile.icon.getResPackage()).thenReturn("another.package");
 
-        final DashboardAdapter.IconCache iconCache = mock(DashboardAdapter.IconCache.class);
+        final IconCache iconCache = mock(IconCache.class);
         when(iconCache.getIcon(tile.icon)).thenReturn(context.getDrawable(R.drawable.ic_settings));
 
         mDashboardAdapter = new DashboardAdapter(context, null /* savedInstanceState */,
diff --git a/tests/robotests/src/com/android/settings/dashboard/suggestions/SuggestionAdapterTest.java b/tests/robotests/src/com/android/settings/dashboard/suggestions/SuggestionAdapterTest.java
index 4ff09c1..512ac64 100644
--- a/tests/robotests/src/com/android/settings/dashboard/suggestions/SuggestionAdapterTest.java
+++ b/tests/robotests/src/com/android/settings/dashboard/suggestions/SuggestionAdapterTest.java
@@ -48,6 +48,7 @@
 import com.android.settings.testutils.FakeFeatureFactory;
 import com.android.settings.testutils.SettingsRobolectricTestRunner;
 import com.android.settingslib.suggestions.SuggestionControllerMixin;
+import com.android.settingslib.utils.IconCache;
 
 import org.junit.Before;
 import org.junit.Test;
@@ -252,7 +253,7 @@
         mSuggestionHolder = mSuggestionAdapter.onCreateViewHolder(
             new FrameLayout(RuntimeEnvironment.application),
             mSuggestionAdapter.getItemViewType(0));
-        DashboardAdapter.IconCache cache = mock(DashboardAdapter.IconCache.class);
+        IconCache cache = mock(IconCache.class);
         final Drawable drawable = mock(Drawable.class);
         when(cache.getIcon(icon)).thenReturn(drawable);
         ReflectionHelpers.setField(mSuggestionAdapter, "mCache", cache);
@@ -280,7 +281,7 @@
         mSuggestionHolder = mSuggestionAdapter.onCreateViewHolder(
             new FrameLayout(RuntimeEnvironment.application),
             mSuggestionAdapter.getItemViewType(0));
-        DashboardAdapter.IconCache cache = mock(DashboardAdapter.IconCache.class);
+        IconCache cache = mock(IconCache.class);
         final Drawable drawable = mock(Drawable.class);
         when(cache.getIcon(icon)).thenReturn(drawable);
         ReflectionHelpers.setField(mSuggestionAdapter, "mCache", cache);