Loading packages/SettingsLib/src/com/android/settingslib/drawer/Tile.java +9 −6 Original line number Diff line number Diff line Loading @@ -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) { Loading Loading @@ -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; } Loading packages/SettingsLib/src/com/android/settingslib/drawer/TileUtils.java +2 −0 Original line number Diff line number Diff line Loading @@ -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)) { Loading packages/SettingsLib/tests/robotests/src/com/android/settingslib/drawer/TileUtilsTest.java +34 −1 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading Loading @@ -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<>(); Loading Loading
packages/SettingsLib/src/com/android/settingslib/drawer/Tile.java +9 −6 Original line number Diff line number Diff line Loading @@ -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) { Loading Loading @@ -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; } Loading
packages/SettingsLib/src/com/android/settingslib/drawer/TileUtils.java +2 −0 Original line number Diff line number Diff line Loading @@ -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)) { Loading
packages/SettingsLib/tests/robotests/src/com/android/settingslib/drawer/TileUtilsTest.java +34 −1 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading Loading @@ -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<>(); Loading