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

Commit 4b01eebe authored by Zhizhi Liu's avatar Zhizhi Liu Committed by Android (Google) Code Review
Browse files

Merge "Move IconCache to SettingsLib(II)."

parents c98d67a0 c4e8369a
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);