Loading src/com/android/settings/dashboard/DashboardFeatureProviderImpl.java +36 −2 Original line number Diff line number Diff line Loading @@ -80,6 +80,7 @@ import com.android.settingslib.utils.ThreadUtils; import com.android.settingslib.widget.AdaptiveIcon; import com.android.settingslib.widget.SettingsThemeHelper; import com.google.common.collect.ImmutableMap; import com.google.common.collect.Iterables; import java.util.ArrayList; Loading @@ -96,6 +97,20 @@ public class DashboardFeatureProviderImpl implements DashboardFeatureProvider { private static final String META_DATA_KEY_INTENT_ACTION = "com.android.settings.intent.action"; private static final String TOP_LEVEL_ACCOUNT_CATEGORY = "top_level_account_category"; private static final Map<String, Pair<Integer, Integer>> COLOR_SCHEMES = ImmutableMap.of( "blue_variant", new Pair<>( R.color.homepage_blue_variant_fg, R.color.homepage_blue_variant_bg), "blue", new Pair<>(R.color.homepage_blue_fg, R.color.homepage_blue_bg), "pink", new Pair<>(R.color.homepage_pink_fg, R.color.homepage_pink_bg), "orange", new Pair<>(R.color.homepage_orange_fg, R.color.homepage_orange_bg), "yellow", new Pair<>(R.color.homepage_yellow_fg, R.color.homepage_yellow_bg), "green", new Pair<>(R.color.homepage_green_fg, R.color.homepage_green_bg), "grey", new Pair<>(R.color.homepage_grey_fg, R.color.homepage_grey_bg), "cyan", new Pair<>(R.color.homepage_cyan_fg, R.color.homepage_cyan_bg), "red", new Pair<>(R.color.homepage_red_fg, R.color.homepage_red_bg), "purple", new Pair<>(R.color.homepage_purple_fg, R.color.homepage_purple_bg) ); protected final Context mContext; private final MetricsFeatureProvider mMetricsFeatureProvider; Loading Loading @@ -486,7 +501,7 @@ public class DashboardFeatureProviderImpl implements DashboardFeatureProvider { @Nullable String iconPackage) { if (TextUtils.equals(tile.getGroupKey(), TOP_LEVEL_ACCOUNT_CATEGORY) && iconPackage == null) { // Normalize size for homepage account type raw icons // Normalize size for homepage account type raw image LayerDrawable drawable = new LayerDrawable(new Drawable[] {iconDrawable}); int size = mContext.getResources().getDimensionPixelSize( R.dimen.dashboard_tile_image_size); Loading @@ -497,7 +512,11 @@ public class DashboardFeatureProviderImpl implements DashboardFeatureProvider { return getRoundedIcon(iconDrawable, R.color.homepage_wellbeing_foreground, R.color.homepage_wellbeing_background); } // For future injections, please add the package name and color resources here. Pair<Integer, Integer> colors = getSchemedColors(tile); if (colors != null) { return getRoundedIcon(iconDrawable, colors.first, colors.second); } iconDrawable.setTint(Utils.getHomepageIconColor(mContext)); return iconDrawable; Loading @@ -510,6 +529,21 @@ public class DashboardFeatureProviderImpl implements DashboardFeatureProvider { return roundedIcon; } @VisibleForTesting @Nullable Pair<Integer, Integer> getSchemedColors(Tile tile) { String scheme = tile.getIconColorScheme(mContext); if (TextUtils.isEmpty(scheme)) { return null; } Pair<Integer, Integer> colors = COLOR_SCHEMES.get(scheme); if (colors == null) { Log.w(TAG, "Invalid color scheme: " + scheme); } return colors; } private void launchPendingIntentOrSelectProfile(FragmentActivity activity, Tile tile, int sourceMetricCategory) { ProfileSelectDialog.updatePendingIntentsIfNeeded(mContext, tile); Loading tests/robotests/src/com/android/settings/dashboard/DashboardFeatureProviderImplTest.java +130 −0 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ import static com.android.settingslib.drawer.SwitchesProvider.EXTRA_SWITCH_SET_C import static com.android.settingslib.drawer.TileUtils.META_DATA_KEY_ORDER; import static com.android.settingslib.drawer.TileUtils.META_DATA_KEY_PROFILE; import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_ICON; import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_ICON_COLOR_SCHEME; import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_ICON_URI; import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_KEYHINT; import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_SUMMARY; Loading Loading @@ -822,6 +823,135 @@ public class DashboardFeatureProviderImplTest { verify(mActivity, never()).getSupportFragmentManager(); } @Test public void getSchemedColors_schemeNotSpecified_returnNull() { Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE); Pair<Integer, Integer> colors = mImpl.getSchemedColors(tile); assertThat(colors).isNull(); } @Test public void getSchemedColors_undefinedScheme_returnNull() { Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE); mActivityInfo.metaData.putString(META_DATA_PREFERENCE_ICON_COLOR_SCHEME, "abc"); Pair<Integer, Integer> colors = mImpl.getSchemedColors(tile); assertThat(colors).isNull(); } @Test public void getSchemedColors_blueVariantScheme_returnCorrectColors() { Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE); mActivityInfo.metaData.putString(META_DATA_PREFERENCE_ICON_COLOR_SCHEME, "blue_variant"); Pair<Integer, Integer> colors = mImpl.getSchemedColors(tile); assertThat(colors.first).isEqualTo(R.color.homepage_blue_variant_fg); assertThat(colors.second).isEqualTo(R.color.homepage_blue_variant_bg); } @Test public void getSchemedColors_blueScheme_returnCorrectColors() { Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE); mActivityInfo.metaData.putString(META_DATA_PREFERENCE_ICON_COLOR_SCHEME, "blue"); Pair<Integer, Integer> colors = mImpl.getSchemedColors(tile); assertThat(colors.first).isEqualTo(R.color.homepage_blue_fg); assertThat(colors.second).isEqualTo(R.color.homepage_blue_bg); } @Test public void getSchemedColors_pinkScheme_returnCorrectColors() { Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE); mActivityInfo.metaData.putString(META_DATA_PREFERENCE_ICON_COLOR_SCHEME, "pink"); Pair<Integer, Integer> colors = mImpl.getSchemedColors(tile); assertThat(colors.first).isEqualTo(R.color.homepage_pink_fg); assertThat(colors.second).isEqualTo(R.color.homepage_pink_bg); } @Test public void getSchemedColors_orangeScheme_returnCorrectColors() { Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE); mActivityInfo.metaData.putString(META_DATA_PREFERENCE_ICON_COLOR_SCHEME, "orange"); Pair<Integer, Integer> colors = mImpl.getSchemedColors(tile); assertThat(colors.first).isEqualTo(R.color.homepage_orange_fg); assertThat(colors.second).isEqualTo(R.color.homepage_orange_bg); } @Test public void getSchemedColors_yellowScheme_returnCorrectColors() { Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE); mActivityInfo.metaData.putString(META_DATA_PREFERENCE_ICON_COLOR_SCHEME, "yellow"); Pair<Integer, Integer> colors = mImpl.getSchemedColors(tile); assertThat(colors.first).isEqualTo(R.color.homepage_yellow_fg); assertThat(colors.second).isEqualTo(R.color.homepage_yellow_bg); } @Test public void getSchemedColors_greenScheme_returnCorrectColors() { Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE); mActivityInfo.metaData.putString(META_DATA_PREFERENCE_ICON_COLOR_SCHEME, "green"); Pair<Integer, Integer> colors = mImpl.getSchemedColors(tile); assertThat(colors.first).isEqualTo(R.color.homepage_green_fg); assertThat(colors.second).isEqualTo(R.color.homepage_green_bg); } @Test public void getSchemedColors_greyScheme_returnCorrectColors() { Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE); mActivityInfo.metaData.putString(META_DATA_PREFERENCE_ICON_COLOR_SCHEME, "grey"); Pair<Integer, Integer> colors = mImpl.getSchemedColors(tile); assertThat(colors.first).isEqualTo(R.color.homepage_grey_fg); assertThat(colors.second).isEqualTo(R.color.homepage_grey_bg); } @Test public void getSchemedColors_cyanScheme_returnCorrectColors() { Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE); mActivityInfo.metaData.putString(META_DATA_PREFERENCE_ICON_COLOR_SCHEME, "cyan"); Pair<Integer, Integer> colors = mImpl.getSchemedColors(tile); assertThat(colors.first).isEqualTo(R.color.homepage_cyan_fg); assertThat(colors.second).isEqualTo(R.color.homepage_cyan_bg); } @Test public void getSchemedColors_redScheme_returnCorrectColors() { Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE); mActivityInfo.metaData.putString(META_DATA_PREFERENCE_ICON_COLOR_SCHEME, "red"); Pair<Integer, Integer> colors = mImpl.getSchemedColors(tile); assertThat(colors.first).isEqualTo(R.color.homepage_red_fg); assertThat(colors.second).isEqualTo(R.color.homepage_red_bg); } @Test public void getSchemedColors_purpleScheme_returnCorrectColors() { Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE); mActivityInfo.metaData.putString(META_DATA_PREFERENCE_ICON_COLOR_SCHEME, "purple"); Pair<Integer, Integer> colors = mImpl.getSchemedColors(tile); assertThat(colors.first).isEqualTo(R.color.homepage_purple_fg); assertThat(colors.second).isEqualTo(R.color.homepage_purple_bg); } private static class TestFragment extends DashboardFragment { @Override Loading Loading
src/com/android/settings/dashboard/DashboardFeatureProviderImpl.java +36 −2 Original line number Diff line number Diff line Loading @@ -80,6 +80,7 @@ import com.android.settingslib.utils.ThreadUtils; import com.android.settingslib.widget.AdaptiveIcon; import com.android.settingslib.widget.SettingsThemeHelper; import com.google.common.collect.ImmutableMap; import com.google.common.collect.Iterables; import java.util.ArrayList; Loading @@ -96,6 +97,20 @@ public class DashboardFeatureProviderImpl implements DashboardFeatureProvider { private static final String META_DATA_KEY_INTENT_ACTION = "com.android.settings.intent.action"; private static final String TOP_LEVEL_ACCOUNT_CATEGORY = "top_level_account_category"; private static final Map<String, Pair<Integer, Integer>> COLOR_SCHEMES = ImmutableMap.of( "blue_variant", new Pair<>( R.color.homepage_blue_variant_fg, R.color.homepage_blue_variant_bg), "blue", new Pair<>(R.color.homepage_blue_fg, R.color.homepage_blue_bg), "pink", new Pair<>(R.color.homepage_pink_fg, R.color.homepage_pink_bg), "orange", new Pair<>(R.color.homepage_orange_fg, R.color.homepage_orange_bg), "yellow", new Pair<>(R.color.homepage_yellow_fg, R.color.homepage_yellow_bg), "green", new Pair<>(R.color.homepage_green_fg, R.color.homepage_green_bg), "grey", new Pair<>(R.color.homepage_grey_fg, R.color.homepage_grey_bg), "cyan", new Pair<>(R.color.homepage_cyan_fg, R.color.homepage_cyan_bg), "red", new Pair<>(R.color.homepage_red_fg, R.color.homepage_red_bg), "purple", new Pair<>(R.color.homepage_purple_fg, R.color.homepage_purple_bg) ); protected final Context mContext; private final MetricsFeatureProvider mMetricsFeatureProvider; Loading Loading @@ -486,7 +501,7 @@ public class DashboardFeatureProviderImpl implements DashboardFeatureProvider { @Nullable String iconPackage) { if (TextUtils.equals(tile.getGroupKey(), TOP_LEVEL_ACCOUNT_CATEGORY) && iconPackage == null) { // Normalize size for homepage account type raw icons // Normalize size for homepage account type raw image LayerDrawable drawable = new LayerDrawable(new Drawable[] {iconDrawable}); int size = mContext.getResources().getDimensionPixelSize( R.dimen.dashboard_tile_image_size); Loading @@ -497,7 +512,11 @@ public class DashboardFeatureProviderImpl implements DashboardFeatureProvider { return getRoundedIcon(iconDrawable, R.color.homepage_wellbeing_foreground, R.color.homepage_wellbeing_background); } // For future injections, please add the package name and color resources here. Pair<Integer, Integer> colors = getSchemedColors(tile); if (colors != null) { return getRoundedIcon(iconDrawable, colors.first, colors.second); } iconDrawable.setTint(Utils.getHomepageIconColor(mContext)); return iconDrawable; Loading @@ -510,6 +529,21 @@ public class DashboardFeatureProviderImpl implements DashboardFeatureProvider { return roundedIcon; } @VisibleForTesting @Nullable Pair<Integer, Integer> getSchemedColors(Tile tile) { String scheme = tile.getIconColorScheme(mContext); if (TextUtils.isEmpty(scheme)) { return null; } Pair<Integer, Integer> colors = COLOR_SCHEMES.get(scheme); if (colors == null) { Log.w(TAG, "Invalid color scheme: " + scheme); } return colors; } private void launchPendingIntentOrSelectProfile(FragmentActivity activity, Tile tile, int sourceMetricCategory) { ProfileSelectDialog.updatePendingIntentsIfNeeded(mContext, tile); Loading
tests/robotests/src/com/android/settings/dashboard/DashboardFeatureProviderImplTest.java +130 −0 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ import static com.android.settingslib.drawer.SwitchesProvider.EXTRA_SWITCH_SET_C import static com.android.settingslib.drawer.TileUtils.META_DATA_KEY_ORDER; import static com.android.settingslib.drawer.TileUtils.META_DATA_KEY_PROFILE; import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_ICON; import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_ICON_COLOR_SCHEME; import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_ICON_URI; import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_KEYHINT; import static com.android.settingslib.drawer.TileUtils.META_DATA_PREFERENCE_SUMMARY; Loading Loading @@ -822,6 +823,135 @@ public class DashboardFeatureProviderImplTest { verify(mActivity, never()).getSupportFragmentManager(); } @Test public void getSchemedColors_schemeNotSpecified_returnNull() { Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE); Pair<Integer, Integer> colors = mImpl.getSchemedColors(tile); assertThat(colors).isNull(); } @Test public void getSchemedColors_undefinedScheme_returnNull() { Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE); mActivityInfo.metaData.putString(META_DATA_PREFERENCE_ICON_COLOR_SCHEME, "abc"); Pair<Integer, Integer> colors = mImpl.getSchemedColors(tile); assertThat(colors).isNull(); } @Test public void getSchemedColors_blueVariantScheme_returnCorrectColors() { Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE); mActivityInfo.metaData.putString(META_DATA_PREFERENCE_ICON_COLOR_SCHEME, "blue_variant"); Pair<Integer, Integer> colors = mImpl.getSchemedColors(tile); assertThat(colors.first).isEqualTo(R.color.homepage_blue_variant_fg); assertThat(colors.second).isEqualTo(R.color.homepage_blue_variant_bg); } @Test public void getSchemedColors_blueScheme_returnCorrectColors() { Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE); mActivityInfo.metaData.putString(META_DATA_PREFERENCE_ICON_COLOR_SCHEME, "blue"); Pair<Integer, Integer> colors = mImpl.getSchemedColors(tile); assertThat(colors.first).isEqualTo(R.color.homepage_blue_fg); assertThat(colors.second).isEqualTo(R.color.homepage_blue_bg); } @Test public void getSchemedColors_pinkScheme_returnCorrectColors() { Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE); mActivityInfo.metaData.putString(META_DATA_PREFERENCE_ICON_COLOR_SCHEME, "pink"); Pair<Integer, Integer> colors = mImpl.getSchemedColors(tile); assertThat(colors.first).isEqualTo(R.color.homepage_pink_fg); assertThat(colors.second).isEqualTo(R.color.homepage_pink_bg); } @Test public void getSchemedColors_orangeScheme_returnCorrectColors() { Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE); mActivityInfo.metaData.putString(META_DATA_PREFERENCE_ICON_COLOR_SCHEME, "orange"); Pair<Integer, Integer> colors = mImpl.getSchemedColors(tile); assertThat(colors.first).isEqualTo(R.color.homepage_orange_fg); assertThat(colors.second).isEqualTo(R.color.homepage_orange_bg); } @Test public void getSchemedColors_yellowScheme_returnCorrectColors() { Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE); mActivityInfo.metaData.putString(META_DATA_PREFERENCE_ICON_COLOR_SCHEME, "yellow"); Pair<Integer, Integer> colors = mImpl.getSchemedColors(tile); assertThat(colors.first).isEqualTo(R.color.homepage_yellow_fg); assertThat(colors.second).isEqualTo(R.color.homepage_yellow_bg); } @Test public void getSchemedColors_greenScheme_returnCorrectColors() { Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE); mActivityInfo.metaData.putString(META_DATA_PREFERENCE_ICON_COLOR_SCHEME, "green"); Pair<Integer, Integer> colors = mImpl.getSchemedColors(tile); assertThat(colors.first).isEqualTo(R.color.homepage_green_fg); assertThat(colors.second).isEqualTo(R.color.homepage_green_bg); } @Test public void getSchemedColors_greyScheme_returnCorrectColors() { Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE); mActivityInfo.metaData.putString(META_DATA_PREFERENCE_ICON_COLOR_SCHEME, "grey"); Pair<Integer, Integer> colors = mImpl.getSchemedColors(tile); assertThat(colors.first).isEqualTo(R.color.homepage_grey_fg); assertThat(colors.second).isEqualTo(R.color.homepage_grey_bg); } @Test public void getSchemedColors_cyanScheme_returnCorrectColors() { Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE); mActivityInfo.metaData.putString(META_DATA_PREFERENCE_ICON_COLOR_SCHEME, "cyan"); Pair<Integer, Integer> colors = mImpl.getSchemedColors(tile); assertThat(colors.first).isEqualTo(R.color.homepage_cyan_fg); assertThat(colors.second).isEqualTo(R.color.homepage_cyan_bg); } @Test public void getSchemedColors_redScheme_returnCorrectColors() { Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE); mActivityInfo.metaData.putString(META_DATA_PREFERENCE_ICON_COLOR_SCHEME, "red"); Pair<Integer, Integer> colors = mImpl.getSchemedColors(tile); assertThat(colors.first).isEqualTo(R.color.homepage_red_fg); assertThat(colors.second).isEqualTo(R.color.homepage_red_bg); } @Test public void getSchemedColors_purpleScheme_returnCorrectColors() { Tile tile = new ActivityTile(mActivityInfo, CategoryKey.CATEGORY_HOMEPAGE); mActivityInfo.metaData.putString(META_DATA_PREFERENCE_ICON_COLOR_SCHEME, "purple"); Pair<Integer, Integer> colors = mImpl.getSchemedColors(tile); assertThat(colors.first).isEqualTo(R.color.homepage_purple_fg); assertThat(colors.second).isEqualTo(R.color.homepage_purple_bg); } private static class TestFragment extends DashboardFragment { @Override Loading