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

Commit d5070970 authored by Hawkwood Glazier's avatar Hawkwood Glazier Committed by Android (Google) Code Review
Browse files

Merge "Add COLOR_FIDELITY flag" into udc-qpr-dev

parents 5d4c52c0 e9acc107
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -382,6 +382,9 @@ object Flags {
    // 804 - monochromatic themes
    @JvmField val MONOCHROMATIC_THEME = releasedFlag(804, "monochromatic")

    // TODO(b/293380347): Tracking Bug
    @JvmField val COLOR_FIDELITY = unreleasedFlag(805, "color_fidelity")

    // 900 - media
    // TODO(b/254512697): Tracking Bug
    val MEDIA_TAP_TO_TRANSFER = releasedFlag(900, "media_tap_to_transfer")
+66 −63
Original line number Diff line number Diff line
@@ -22,83 +22,86 @@ import com.google.ux.material.libmonet.dynamiccolor.MaterialDynamicColors

class DynamicColors {
    companion object {
        private val MDC = MaterialDynamicColors()
        @JvmField
        val ALL_DYNAMIC_COLORS_MAPPED: List<Pair<String, DynamicColor>> =
            arrayListOf(
                Pair.create("primary_container", MDC.primaryContainer()),
                Pair.create("on_primary_container", MDC.onPrimaryContainer()),
                Pair.create("primary", MDC.primary()),
                Pair.create("on_primary", MDC.onPrimary()),
                Pair.create("secondary_container", MDC.secondaryContainer()),
                Pair.create("on_secondary_container", MDC.onSecondaryContainer()),
                Pair.create("secondary", MDC.secondary()),
                Pair.create("on_secondary", MDC.onSecondary()),
                Pair.create("tertiary_container", MDC.tertiaryContainer()),
                Pair.create("on_tertiary_container", MDC.onTertiaryContainer()),
                Pair.create("tertiary", MDC.tertiary()),
                Pair.create("on_tertiary", MDC.onTertiary()),
                Pair.create("background", MDC.background()),
                Pair.create("on_background", MDC.onBackground()),
                Pair.create("surface", MDC.surface()),
                Pair.create("on_surface", MDC.onSurface()),
                Pair.create("surface_container_low", MDC.surfaceContainerLow()),
                Pair.create("surface_container_lowest", MDC.surfaceContainerLowest()),
                Pair.create("surface_container", MDC.surfaceContainer()),
                Pair.create("surface_container_high", MDC.surfaceContainerHigh()),
                Pair.create("surface_container_highest", MDC.surfaceContainerHighest()),
                Pair.create("surface_bright", MDC.surfaceBright()),
                Pair.create("surface_dim", MDC.surfaceDim()),
                Pair.create("surface_variant", MDC.surfaceVariant()),
                Pair.create("on_surface_variant", MDC.onSurfaceVariant()),
                Pair.create("outline", MDC.outline()),
                Pair.create("outline_variant", MDC.outlineVariant()),
                Pair.create("error", MDC.error()),
                Pair.create("on_error", MDC.onError()),
                Pair.create("error_container", MDC.errorContainer()),
                Pair.create("on_error_container", MDC.onErrorContainer()),
                Pair.create("control_activated", MDC.controlActivated()),
                Pair.create("control_normal", MDC.controlNormal()),
                Pair.create("control_highlight", MDC.controlHighlight()),
                Pair.create("text_primary_inverse", MDC.textPrimaryInverse()),
        @JvmStatic
        fun allDynamicColorsMapped(isExtendedFidelity: Boolean): List<Pair<String, DynamicColor>> {
            val mdc = MaterialDynamicColors(isExtendedFidelity)
            return arrayListOf(
                Pair.create("primary_container", mdc.primaryContainer()),
                Pair.create("on_primary_container", mdc.onPrimaryContainer()),
                Pair.create("primary", mdc.primary()),
                Pair.create("on_primary", mdc.onPrimary()),
                Pair.create("secondary_container", mdc.secondaryContainer()),
                Pair.create("on_secondary_container", mdc.onSecondaryContainer()),
                Pair.create("secondary", mdc.secondary()),
                Pair.create("on_secondary", mdc.onSecondary()),
                Pair.create("tertiary_container", mdc.tertiaryContainer()),
                Pair.create("on_tertiary_container", mdc.onTertiaryContainer()),
                Pair.create("tertiary", mdc.tertiary()),
                Pair.create("on_tertiary", mdc.onTertiary()),
                Pair.create("background", mdc.background()),
                Pair.create("on_background", mdc.onBackground()),
                Pair.create("surface", mdc.surface()),
                Pair.create("on_surface", mdc.onSurface()),
                Pair.create("surface_container_low", mdc.surfaceContainerLow()),
                Pair.create("surface_container_lowest", mdc.surfaceContainerLowest()),
                Pair.create("surface_container", mdc.surfaceContainer()),
                Pair.create("surface_container_high", mdc.surfaceContainerHigh()),
                Pair.create("surface_container_highest", mdc.surfaceContainerHighest()),
                Pair.create("surface_bright", mdc.surfaceBright()),
                Pair.create("surface_dim", mdc.surfaceDim()),
                Pair.create("surface_variant", mdc.surfaceVariant()),
                Pair.create("on_surface_variant", mdc.onSurfaceVariant()),
                Pair.create("outline", mdc.outline()),
                Pair.create("outline_variant", mdc.outlineVariant()),
                Pair.create("error", mdc.error()),
                Pair.create("on_error", mdc.onError()),
                Pair.create("error_container", mdc.errorContainer()),
                Pair.create("on_error_container", mdc.onErrorContainer()),
                Pair.create("control_activated", mdc.controlActivated()),
                Pair.create("control_normal", mdc.controlNormal()),
                Pair.create("control_highlight", mdc.controlHighlight()),
                Pair.create("text_primary_inverse", mdc.textPrimaryInverse()),
                Pair.create(
                    "text_secondary_and_tertiary_inverse",
                    MDC.textSecondaryAndTertiaryInverse()
                    mdc.textSecondaryAndTertiaryInverse()
                ),
                Pair.create(
                    "text_primary_inverse_disable_only",
                    MDC.textPrimaryInverseDisableOnly()
                    mdc.textPrimaryInverseDisableOnly()
                ),
                Pair.create(
                    "text_secondary_and_tertiary_inverse_disabled",
                    MDC.textSecondaryAndTertiaryInverseDisabled()
                    mdc.textSecondaryAndTertiaryInverseDisabled()
                ),
                Pair.create("text_hint_inverse", MDC.textHintInverse()),
                Pair.create("palette_key_color_primary", MDC.primaryPaletteKeyColor()),
                Pair.create("palette_key_color_secondary", MDC.secondaryPaletteKeyColor()),
                Pair.create("palette_key_color_tertiary", MDC.tertiaryPaletteKeyColor()),
                Pair.create("palette_key_color_neutral", MDC.neutralPaletteKeyColor()),
                Pair.create("text_hint_inverse", mdc.textHintInverse()),
                Pair.create("palette_key_color_primary", mdc.primaryPaletteKeyColor()),
                Pair.create("palette_key_color_secondary", mdc.secondaryPaletteKeyColor()),
                Pair.create("palette_key_color_tertiary", mdc.tertiaryPaletteKeyColor()),
                Pair.create("palette_key_color_neutral", mdc.neutralPaletteKeyColor()),
                Pair.create(
                    "palette_key_color_neutral_variant",
                    MDC.neutralVariantPaletteKeyColor()
                    mdc.neutralVariantPaletteKeyColor()
                ),
            )
        }

        @JvmField
        val FIXED_COLORS_MAPPED: List<Pair<String, DynamicColor>> =
            arrayListOf(
                Pair.create("primary_fixed", MDC.primaryFixed()),
                Pair.create("primary_fixed_dim", MDC.primaryFixedDim()),
                Pair.create("on_primary_fixed", MDC.onPrimaryFixed()),
                Pair.create("on_primary_fixed_variant", MDC.onPrimaryFixedVariant()),
                Pair.create("secondary_fixed", MDC.secondaryFixed()),
                Pair.create("secondary_fixed_dim", MDC.secondaryFixedDim()),
                Pair.create("on_secondary_fixed", MDC.onSecondaryFixed()),
                Pair.create("on_secondary_fixed_variant", MDC.onSecondaryFixedVariant()),
                Pair.create("tertiary_fixed", MDC.tertiaryFixed()),
                Pair.create("tertiary_fixed_dim", MDC.tertiaryFixedDim()),
                Pair.create("on_tertiary_fixed", MDC.onTertiaryFixed()),
                Pair.create("on_tertiary_fixed_variant", MDC.onTertiaryFixedVariant()),
        @JvmStatic
        fun getFixedColorsMapped(isExtendedFidelity: Boolean): List<Pair<String, DynamicColor>> {
            val mdc = MaterialDynamicColors(isExtendedFidelity)
            return arrayListOf(
                Pair.create("primary_fixed", mdc.primaryFixed()),
                Pair.create("primary_fixed_dim", mdc.primaryFixedDim()),
                Pair.create("on_primary_fixed", mdc.onPrimaryFixed()),
                Pair.create("on_primary_fixed_variant", mdc.onPrimaryFixedVariant()),
                Pair.create("secondary_fixed", mdc.secondaryFixed()),
                Pair.create("secondary_fixed_dim", mdc.secondaryFixedDim()),
                Pair.create("on_secondary_fixed", mdc.onSecondaryFixed()),
                Pair.create("on_secondary_fixed_variant", mdc.onSecondaryFixedVariant()),
                Pair.create("tertiary_fixed", mdc.tertiaryFixed()),
                Pair.create("tertiary_fixed_dim", mdc.tertiaryFixedDim()),
                Pair.create("on_tertiary_fixed", mdc.onTertiaryFixed()),
                Pair.create("on_tertiary_fixed_variant", mdc.onTertiaryFixedVariant()),
            )
        }
    }
}
+6 −3
Original line number Diff line number Diff line
@@ -130,6 +130,7 @@ public class ThemeOverlayController implements CoreStartable, Dumpable {
    private final boolean mIsMonochromaticEnabled;
    private final Context mContext;
    private final boolean mIsMonetEnabled;
    private final boolean mIsFidelityEnabled;
    private final UserTracker mUserTracker;
    private final DeviceProvisionedController mDeviceProvisionedController;
    private final Resources mResources;
@@ -398,6 +399,7 @@ public class ThemeOverlayController implements CoreStartable, Dumpable {
        mContext = context;
        mIsMonochromaticEnabled = featureFlags.isEnabled(Flags.MONOCHROMATIC_THEME);
        mIsMonetEnabled = featureFlags.isEnabled(Flags.MONET);
        mIsFidelityEnabled = featureFlags.isEnabled(Flags.COLOR_FIDELITY);
        mDeviceProvisionedController = deviceProvisionedController;
        mBroadcastDispatcher = broadcastDispatcher;
        mUserManager = userManager;
@@ -632,7 +634,7 @@ public class ThemeOverlayController implements CoreStartable, Dumpable {
    private void assignDynamicPaletteToOverlay(FabricatedOverlay overlay, boolean isDark) {
        String suffix = isDark ? "dark" : "light";
        DynamicScheme scheme = isDark ? mDynamicSchemeDark : mDynamicSchemeLight;
        DynamicColors.ALL_DYNAMIC_COLORS_MAPPED.forEach(p -> {
        DynamicColors.allDynamicColorsMapped(mIsFidelityEnabled).forEach(p -> {
            String resourceName = "android:color/system_" + p.first + "_" + suffix;
            int colorValue = p.second.getArgb(scheme);
            overlay.setResourceValue(resourceName, TYPE_INT_COLOR_ARGB8, colorValue,
@@ -641,7 +643,7 @@ public class ThemeOverlayController implements CoreStartable, Dumpable {
    }

    private void assignFixedColorsToOverlay(FabricatedOverlay overlay) {
        DynamicColors.FIXED_COLORS_MAPPED.forEach(p -> {
        DynamicColors.getFixedColorsMapped(mIsFidelityEnabled).forEach(p -> {
            String resourceName = "android:color/system_" + p.first;
            int colorValue = p.second.getArgb(mDynamicSchemeLight);
            overlay.setResourceValue(resourceName, TYPE_INT_COLOR_ARGB8, colorValue,
@@ -660,7 +662,7 @@ public class ThemeOverlayController implements CoreStartable, Dumpable {
            Resources res = userHandle.isSystem()
                    ? mResources : mContext.createContextAsUser(userHandle, 0).getResources();
            Resources.Theme theme = mContext.getTheme();
            MaterialDynamicColors dynamicColors = new MaterialDynamicColors();
            MaterialDynamicColors dynamicColors = new MaterialDynamicColors(mIsFidelityEnabled);
            if (!(res.getColor(android.R.color.system_accent1_500, theme)
                    == mColorScheme.getAccent1().getS500()
                    && res.getColor(android.R.color.system_accent2_500, theme)
@@ -819,6 +821,7 @@ public class ThemeOverlayController implements CoreStartable, Dumpable {
        pw.println("mNeutralOverlay=" + mNeutralOverlay);
        pw.println("mDynamicOverlay=" + mDynamicOverlay);
        pw.println("mIsMonetEnabled=" + mIsMonetEnabled);
        pw.println("mIsFidelityEnabled=" + mIsFidelityEnabled);
        pw.println("mColorScheme=" + mColorScheme);
        pw.println("mNeedsOverlayCreation=" + mNeedsOverlayCreation);
        pw.println("mAcceptColorEvents=" + mAcceptColorEvents);
+2 −2
Original line number Diff line number Diff line
@@ -959,8 +959,8 @@ public class ThemeOverlayControllerTest extends SysuiTestCase {
        // All dynamic colors were added twice: light and dark them
        // All fixed colors were added once
        verify(dynamic, times(
                DynamicColors.ALL_DYNAMIC_COLORS_MAPPED.size() * 2
                        + DynamicColors.FIXED_COLORS_MAPPED.size())
                DynamicColors.allDynamicColorsMapped(false).size() * 2
                        + DynamicColors.getFixedColorsMapped(false).size())
        ).setResourceValue(any(String.class), eq(TYPE_INT_COLOR_ARGB8), anyInt(), eq(null));
    }
}