Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c4e8369a authored by Zhizhi Liu's avatar Zhizhi Liu
Browse files

Move IconCache to SettingsLib(II).

Remove IconCache from Settings.

Test: Setting tests passed.
Change-Id: If4d256c5baec2fae8a1cba3cc3a62d4612a2d417
parent 8443e8f7
Loading
Loading
Loading
Loading
+1 −25
Original line number Diff line number Diff line
@@ -51,6 +51,7 @@ import com.android.settingslib.core.lifecycle.events.OnSaveInstanceState;
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 @@ public class DashboardAdapter extends RecyclerView.Adapter<DashboardAdapter.Dash
        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;
+1 −1
Original line number Diff line number Diff line
@@ -38,7 +38,6 @@ import android.widget.LinearLayout;
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.Lifecycle;
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;
+3 −2
Original line number Diff line number Diff line
@@ -47,6 +47,7 @@ import com.android.settings.testutils.FakeFeatureFactory;
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 @@ public class DashboardAdapterTest {
            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 @@ public class DashboardAdapterTest {
        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 */,
+3 −2
Original line number Diff line number Diff line
@@ -48,6 +48,7 @@ import com.android.settings.dashboard.DashboardAdapter;
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 @@ public class SuggestionAdapterTest {
        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 @@ public class SuggestionAdapterTest {
        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);