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

Commit 44a8768f authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Pass in context when loading icons from Tile"

parents 02e4a027 1c61a58f
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -315,7 +315,7 @@ public class DashboardAdapter extends RecyclerView.Adapter<DashboardAdapter.Dash

    @VisibleForTesting
    void onBindTile(DashboardItemHolder holder, Tile tile) {
        Icon tileIcon = tile.getIcon();
        Icon tileIcon = tile.getIcon(mContext);
        Drawable icon = mCache.getIcon(tileIcon);
        if (!TextUtils.equals(tileIcon.getResPackage(), mContext.getPackageName())
                && !(icon instanceof RoundedHomepageIcon)) {
+4 −4
Original line number Diff line number Diff line
@@ -34,6 +34,9 @@ import android.util.ArrayMap;
import android.util.Log;
import android.util.Pair;

import androidx.annotation.VisibleForTesting;
import androidx.preference.Preference;

import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.settings.R;
import com.android.settings.SettingsActivity;
@@ -50,9 +53,6 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import androidx.annotation.VisibleForTesting;
import androidx.preference.Preference;

/**
 * Impl for {@code DashboardFeatureProvider}.
 */
@@ -238,7 +238,7 @@ public class DashboardFeatureProviderImpl implements DashboardFeatureProvider {

    @VisibleForTesting
    void bindIcon(Preference preference, Tile tile) {
        final Icon tileIcon = tile.getIcon();
        final Icon tileIcon = tile.getIcon(mContext);
        if (tileIcon != null) {
            preference.setIcon(tileIcon.loadDrawable(preference.getContext()));
        } else if (tile.metaData != null
+9 −8
Original line number Diff line number Diff line
@@ -24,6 +24,11 @@ import android.util.ArrayMap;
import android.util.ArraySet;
import android.util.Log;

import androidx.annotation.VisibleForTesting;
import androidx.preference.Preference;
import androidx.preference.PreferenceManager;
import androidx.preference.PreferenceScreen;

import com.android.settings.SettingsPreferenceFragment;
import com.android.settings.core.BasePreferenceController;
import com.android.settings.core.PreferenceControllerListHelper;
@@ -43,11 +48,6 @@ import java.util.List;
import java.util.Map;
import java.util.Set;

import androidx.annotation.VisibleForTesting;
import androidx.preference.Preference;
import androidx.preference.PreferenceManager;
import androidx.preference.PreferenceScreen;

/**
 * Base fragment for dashboard style UI containing a list of static and dynamic setting items.
 */
@@ -256,7 +256,8 @@ public abstract class DashboardFragment extends SettingsPreferenceFragment

    @VisibleForTesting
    boolean tintTileIcon(Tile tile) {
        if (tile.getIcon() == null) {
        final Context context = getContext();
        if (tile.getIcon(context) == null) {
            return false;
        }
        // First check if the tile has set the icon tintable metadata.
@@ -265,7 +266,7 @@ public abstract class DashboardFragment extends SettingsPreferenceFragment
                && metadata.containsKey(TileUtils.META_DATA_PREFERENCE_ICON_TINTABLE)) {
            return metadata.getBoolean(TileUtils.META_DATA_PREFERENCE_ICON_TINTABLE);
        }
        final String pkgName = getContext().getPackageName();
        final String pkgName = context.getPackageName();
        // If this drawable is coming from outside Settings, tint it to match the color.
        return pkgName != null && tile.intent != null
                && !pkgName.equals(tile.intent.getComponent().getPackageName());
@@ -370,7 +371,7 @@ public abstract class DashboardFragment extends SettingsPreferenceFragment
                continue;
            }
            if (tintTileIcon(tile)) {
                tile.getIcon().setTint(tintColor);
                tile.getIcon(context).setTint(tintColor);
            }
            if (mDashboardTilePrefKeys.contains(key)) {
                // Have the key already, will rebind.
+12 −10
Original line number Diff line number Diff line
@@ -203,9 +203,9 @@ public class DashboardAdapterTest {
                new DashboardAdapter.DashboardItemHolder(view);
        final Tile tile = spy(new Tile(mActivityInfo));
        doReturn(Icon.createWithResource(context, R.drawable.ic_settings))
                .when(tile).getIcon();
                .when(tile).getIcon(context);
        final IconCache iconCache = mock(IconCache.class);
        when(iconCache.getIcon(tile.getIcon()))
        when(iconCache.getIcon(tile.getIcon(context)))
                .thenReturn(context.getDrawable(R.drawable.ic_settings));

        mDashboardAdapter = new DashboardAdapter(context, null /* savedInstanceState */,
@@ -224,7 +224,7 @@ public class DashboardAdapterTest {
                new DashboardAdapter.DashboardItemHolder(view);
        final Tile tile = spy(new Tile(mActivityInfo));
        final Icon icon = Icon.createWithResource(context, R.drawable.ic_settings);
        doReturn(icon).when(tile).getIcon();
        doReturn(icon).when(tile).getIcon(context);

        final IconCache iconCache = new IconCache(context);

@@ -235,7 +235,8 @@ public class DashboardAdapterTest {
        doReturn("another.package").when(context).getPackageName();
        mDashboardAdapter.onBindTile(holder, tile);

        assertThat(iconCache.getIcon(tile.getIcon())).isInstanceOf(RoundedHomepageIcon.class);
        assertThat(iconCache.getIcon(tile.getIcon(context)))
                .isInstanceOf(RoundedHomepageIcon.class);
    }

    @Test
@@ -249,7 +250,7 @@ public class DashboardAdapterTest {
        tile.metaData.putInt(TileUtils.META_DATA_PREFERENCE_ICON_BACKGROUND_HINT,
                R.color.memory_critical);
        doReturn(Icon.createWithResource(context, R.drawable.ic_settings))
                .when(tile).getIcon();
                .when(tile).getIcon(context);
        final IconCache iconCache = new IconCache(context);
        mDashboardAdapter = new DashboardAdapter(context, null /* savedInstanceState */,
                null /* conditions */, null /* suggestionControllerMixin */, null /* lifecycle */);
@@ -259,7 +260,7 @@ public class DashboardAdapterTest {
        mDashboardAdapter.onBindTile(holder, tile);

        final RoundedHomepageIcon homepageIcon = (RoundedHomepageIcon) iconCache.getIcon(
                tile.getIcon());
                tile.getIcon(context));
        assertThat(homepageIcon.mBackgroundColor)
                .isEqualTo(RuntimeEnvironment.application.getColor(R.color.memory_critical));
    }
@@ -271,11 +272,11 @@ public class DashboardAdapterTest {
        final DashboardAdapter.DashboardItemHolder holder =
                new DashboardAdapter.DashboardItemHolder(view);
        final Tile tile = spy(new Tile(mActivityInfo));
        doReturn(mock(Icon.class)).when(tile).getIcon();
        when(tile.getIcon().getResPackage()).thenReturn("another.package");
        doReturn(mock(Icon.class)).when(tile).getIcon(context);
        when(tile.getIcon(context).getResPackage()).thenReturn("another.package");

        final IconCache iconCache = mock(IconCache.class);
        when(iconCache.getIcon(tile.getIcon())).thenReturn(mock(RoundedHomepageIcon.class));
        when(iconCache.getIcon(tile.getIcon(context))).thenReturn(mock(RoundedHomepageIcon.class));

        mDashboardAdapter = new DashboardAdapter(context, null /* savedInstanceState */,
                null /* conditions */, null /* suggestionControllerMixin */, null /* lifecycle */);
@@ -283,7 +284,8 @@ public class DashboardAdapterTest {

        mDashboardAdapter.onBindTile(holder, tile);

        verify(iconCache, never()).updateIcon(eq(tile.getIcon()), any(RoundedHomepageIcon.class));
        verify(iconCache, never()).updateIcon(eq(tile.getIcon(context)),
                any(RoundedHomepageIcon.class));
    }

    private List<Suggestion> makeSuggestionsV2(String... pkgNames) {
+1 −1
Original line number Diff line number Diff line
@@ -120,7 +120,7 @@ public class DashboardFeatureProviderImplTest {
        tile.title = "title";
        tile.summary = "summary";
        doReturn(Icon.createWithBitmap(Bitmap.createBitmap(1, 1, Bitmap.Config.RGB_565)))
                .when(tile).getIcon();
                .when(tile).getIcon(any(Context.class));
        tile.metaData = new Bundle();
        tile.metaData.putString(SettingsActivity.META_DATA_KEY_FRAGMENT_CLASS, "HI");
        tile.priority = 10;
Loading