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

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

Merge "Update metadata bundle every time we refresh tiles."

parents 973f55d0 83961e1b
Loading
Loading
Loading
Loading
+9 −6
Original line number Diff line number Diff line
@@ -58,17 +58,13 @@ public class Tile implements Parcelable {
     */
    public ArrayList<UserHandle> userHandle = new ArrayList<>();

    /**
     * The metaData from the activity that defines this tile.
     */
    private final Bundle mMetaData;

    private final String mActivityPackage;
    private final String mActivityName;
    private final Intent mIntent;

    private ActivityInfo mActivityInfo;
    private CharSequence mSummaryOverride;

    private Bundle mMetaData;
    private String mCategory;

    public Tile(ActivityInfo activityInfo, String category) {
@@ -234,6 +230,13 @@ public class Tile implements Parcelable {
        return summary;
    }

    public void setMetaData(Bundle metaData) {
        mMetaData = metaData;
    }

    /**
     * The metaData from the activity that defines this tile.
     */
    public Bundle getMetaData() {
        return mMetaData;
    }
+2 −0
Original line number Diff line number Diff line
@@ -289,6 +289,8 @@ public class TileUtils {
            if (tile == null) {
                tile = new Tile(activityInfo, categoryKey);
                addedCache.put(key, tile);
            } else {
                tile.setMetaData(metaData);
            }

            if (!tile.userHandle.contains(user)) {
+34 −1
Original line number Diff line number Diff line
@@ -28,7 +28,6 @@ import static com.google.common.truth.Truth.assertThat;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.ArgumentMatchers.argThat;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.ArgumentMatchers.isNull;
import static org.mockito.Mockito.atLeastOnce;
@@ -54,6 +53,7 @@ import android.provider.Settings.Global;
import android.util.ArrayMap;
import android.util.Pair;

import com.android.settingslib.R;
import com.android.settingslib.SettingsLibRobolectricTestRunner;

import org.junit.Before;
@@ -233,6 +233,39 @@ public class TileUtilsTest {
        assertThat(outTiles.get(0).isIconTintable(mContext)).isFalse();
    }

    @Test
    public void getTilesForIntent_tileAlreadyInCache_shouldUpdateMetaData() {
        final Map<Pair<String, String>, Tile> addedCache = new ArrayMap<>();
        final List<Tile> outTiles = new ArrayList<>();
        final List<ResolveInfo> info = new ArrayList<>();
        final ResolveInfo resolveInfo = newInfo(true, null /* category */, null, URI_GET_ICON,
                URI_GET_SUMMARY, null, 123);
        resolveInfo.activityInfo.packageName = "com.android.settings";
        resolveInfo.activityInfo.applicationInfo.packageName = "com.android.settings";
        info.add(resolveInfo);

        when(mPackageManager.queryIntentActivitiesAsUser(any(Intent.class), anyInt(), anyInt()))
                .thenReturn(info);

        TileUtils.getTilesForAction(mContext, UserHandle.CURRENT, IA_SETTINGS_ACTION, addedCache,
                null /* defaultCategory */, outTiles, false /* usePriority */);

        assertThat(outTiles).hasSize(1);
        final Bundle oldMetadata = outTiles.get(0).getMetaData();

        resolveInfo.activityInfo.metaData = new Bundle(oldMetadata);
        resolveInfo.activityInfo.metaData.putInt(META_DATA_PREFERENCE_ICON,
                R.drawable.ic_bt_cellphone);
        outTiles.clear();
        TileUtils.getTilesForAction(mContext, UserHandle.CURRENT, IA_SETTINGS_ACTION, addedCache,
                null /* defaultCategory */, outTiles, false /* usePriority */);

        assertThat(outTiles).hasSize(1);
        final Bundle newMetaData = outTiles.get(0).getMetaData();
        assertThat(newMetaData).isNotSameAs(oldMetadata);
    }


    @Test
    public void getTilesForIntent_shouldMarkIconTintableIfMetadataSet() {
        Map<Pair<String, String>, Tile> addedCache = new ArrayMap<>();