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

Commit 5a024a35 authored by Lucas Dupin's avatar Lucas Dupin Committed by Android (Google) Code Review
Browse files

Merge "Do not add suffix to fixed colors" into udc-dev

parents 782fc415 866745da
Loading
Loading
Loading
Loading
+18 −13
Original line number Diff line number Diff line
@@ -56,18 +56,6 @@ class DynamicColors {
                Pair.create("on_error", MDC.onError()),
                Pair.create("error_container", MDC.errorContainer()),
                Pair.create("on_error_container", MDC.onErrorContainer()),
                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()),
                Pair.create("control_activated", MDC.controlActivated()),
                Pair.create("control_normal", MDC.controlNormal()),
                Pair.create("control_highlight", MDC.controlHighlight()),
@@ -92,7 +80,24 @@ class DynamicColors {
                Pair.create(
                    "palette_key_color_neutral_variant",
                    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()),
            )
    }
}
+13 −1
Original line number Diff line number Diff line
@@ -624,6 +624,7 @@ public class ThemeOverlayController implements CoreStartable, Dumpable {
        FabricatedOverlay overlay = newFabricatedOverlay("dynamic");
        assignDynamicPaletteToOverlay(overlay, true /* isDark */);
        assignDynamicPaletteToOverlay(overlay, false /* isDark */);
        assignFixedColorsToOverlay(overlay);
        return overlay;
    }

@@ -638,6 +639,15 @@ public class ThemeOverlayController implements CoreStartable, Dumpable {
        });
    }

    private void assignFixedColorsToOverlay(FabricatedOverlay overlay) {
        DynamicColors.FIXED_COLORS_MAPPED.forEach(p -> {
            String resourceName = "android:color/system_" + p.first;
            int colorValue = p.second.getArgb(mDynamicSchemeLight);
            overlay.setResourceValue(resourceName, TYPE_INT_COLOR_ARGB8, colorValue,
                    null /* configuration */);
        });
    }

    /**
     * Checks if the color scheme in mColorScheme matches the current system palettes.
     * @param managedProfiles List of managed profiles for this user.
@@ -666,7 +676,9 @@ public class ThemeOverlayController implements CoreStartable, Dumpable {
                    && res.getColor(android.R.color.system_primary_container_dark, theme)
                    == MaterialDynamicColors.primaryContainer().getArgb(mDynamicSchemeDark)
                    && res.getColor(android.R.color.system_primary_container_light, theme)
                    == MaterialDynamicColors.primaryContainer().getArgb(mDynamicSchemeLight))) {
                    == MaterialDynamicColors.primaryContainer().getArgb(mDynamicSchemeLight)
                    && res.getColor(android.R.color.system_primary_fixed, theme)
                    == MaterialDynamicColors.primaryFixed().getArgb(mDynamicSchemeLight))) {
                return false;
            }
        }
+37 −0
Original line number Diff line number Diff line
@@ -16,6 +16,8 @@

package com.android.systemui.theme;

import static android.util.TypedValue.TYPE_INT_COLOR_ARGB8;

import static com.android.systemui.keyguard.WakefulnessLifecycle.WAKEFULNESS_AWAKE;
import static com.android.systemui.theme.ThemeOverlayApplier.OVERLAY_CATEGORY_ACCENT_COLOR;
import static com.android.systemui.theme.ThemeOverlayApplier.OVERLAY_CATEGORY_SYSTEM_PALETTE;
@@ -29,6 +31,7 @@ import static org.mockito.Mockito.clearInvocations;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.reset;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyNoMoreInteractions;
import static org.mockito.Mockito.when;
@@ -926,4 +929,38 @@ public class ThemeOverlayControllerTest extends SysuiTestCase {
        verify(mThemeOverlayApplier, never()).applyCurrentUserOverlays(any(), any(), anyInt(),
                any());
    }

    @Test
    public void createDynamicOverlay_addsAllDynamicColors() {
        // Trigger new wallpaper colors to generate an overlay
        WallpaperColors mainColors = new WallpaperColors(Color.valueOf(Color.RED),
                Color.valueOf(Color.BLUE), null);
        mColorsListener.getValue().onColorsChanged(mainColors, WallpaperManager.FLAG_SYSTEM,
                USER_SYSTEM);
        ArgumentCaptor<FabricatedOverlay[]> themeOverlays =
                ArgumentCaptor.forClass(FabricatedOverlay[].class);

        verify(mThemeOverlayApplier)
                .applyCurrentUserOverlays(any(), themeOverlays.capture(), anyInt(), any());

        FabricatedOverlay[] overlays = themeOverlays.getValue();
        FabricatedOverlay accents = overlays[0];
        FabricatedOverlay neutrals = overlays[1];
        FabricatedOverlay dynamic = overlays[2];

        final int colorsPerPalette = 12;

        // Color resources were added for all 3 accent palettes
        verify(accents, times(colorsPerPalette * 3))
                .setResourceValue(any(String.class), eq(TYPE_INT_COLOR_ARGB8), anyInt(), eq(null));
        // Color resources were added for all 2 neutral palettes
        verify(neutrals, times(colorsPerPalette * 2))
                .setResourceValue(any(String.class), eq(TYPE_INT_COLOR_ARGB8), anyInt(), eq(null));
        // 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())
        ).setResourceValue(any(String.class), eq(TYPE_INT_COLOR_ARGB8), anyInt(), eq(null));
    }
}