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

Commit 3e2ed2a8 authored by Marcelo Arteiro's avatar Marcelo Arteiro Committed by Android (Google) Code Review
Browse files

Merge "Monochromatic Theme" into tm-qpr-dev

parents 77918110 5cc5b23d
Loading
Loading
Loading
Loading
+10 −3
Original line number Diff line number Diff line
@@ -205,6 +205,13 @@ enum class Style(internal val coreSpec: CoreSpec) {
            n1 = TonalSpec(HueSource(), ChromaMultiple(0.0833)),
            n2 = TonalSpec(HueSource(), ChromaMultiple(0.1666))
    )),
    MONOCHROMATIC(CoreSpec(
            a1 = TonalSpec(HueSource(), ChromaConstant(.0)),
            a2 = TonalSpec(HueSource(), ChromaConstant(.0)),
            a3 = TonalSpec(HueSource(), ChromaConstant(.0)),
            n1 = TonalSpec(HueSource(), ChromaConstant(.0)),
            n2 = TonalSpec(HueSource(), ChromaConstant(.0))
    )),
}

class ColorScheme(
+3 −0
Original line number Diff line number Diff line
@@ -212,6 +212,9 @@ public class Flags {
    // 803 - screen contents translation
    public static final UnreleasedFlag SCREEN_CONTENTS_TRANSLATION = new UnreleasedFlag(803);

    // 804 - monochromatic themes
    public static final UnreleasedFlag MONOCHROMATIC_THEMES = new UnreleasedFlag(804);

    /***************************************/
    // 900 - media
    public static final ReleasedFlag MEDIA_TAP_TO_TRANSFER = new ReleasedFlag(900);
+10 −2
Original line number Diff line number Diff line
@@ -79,6 +79,7 @@ import org.json.JSONException;
import org.json.JSONObject;

import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashSet;
@@ -114,6 +115,7 @@ public class ThemeOverlayController implements CoreStartable, Dumpable {
    private final SecureSettings mSecureSettings;
    private final Executor mMainExecutor;
    private final Handler mBgHandler;
    private final boolean mIsMonochromaticEnabled;
    private final Context mContext;
    private final boolean mIsMonetEnabled;
    private final UserTracker mUserTracker;
@@ -363,6 +365,7 @@ public class ThemeOverlayController implements CoreStartable, Dumpable {
            UserTracker userTracker, DumpManager dumpManager, FeatureFlags featureFlags,
            @Main Resources resources, WakefulnessLifecycle wakefulnessLifecycle) {
        mContext = context;
        mIsMonochromaticEnabled = featureFlags.isEnabled(Flags.MONOCHROMATIC_THEMES);
        mIsMonetEnabled = featureFlags.isEnabled(Flags.MONET);
        mDeviceProvisionedController = deviceProvisionedController;
        mBroadcastDispatcher = broadcastDispatcher;
@@ -665,8 +668,13 @@ public class ThemeOverlayController implements CoreStartable, Dumpable {
        // Allow-list of Style objects that can be created from a setting string, i.e. can be
        // used as a system-wide theme.
        // - Content intentionally excluded, intended for media player, not system-wide
        List<Style> validStyles = Arrays.asList(Style.EXPRESSIVE, Style.SPRITZ, Style.TONAL_SPOT,
                Style.FRUIT_SALAD, Style.RAINBOW, Style.VIBRANT);
        List<Style> validStyles = new ArrayList<>(Arrays.asList(Style.EXPRESSIVE, Style.SPRITZ,
                Style.TONAL_SPOT, Style.FRUIT_SALAD, Style.RAINBOW, Style.VIBRANT));

        if (mIsMonochromaticEnabled) {
            validStyles.add(Style.MONOCHROMATIC);
        }

        Style style = mThemeStyle;
        final String overlayPackageJson = mSecureSettings.getStringForUser(
                Settings.Secure.THEME_CUSTOMIZATION_OVERLAY_PACKAGES,
+12 −0
Original line number Diff line number Diff line
@@ -146,6 +146,18 @@ public class ColorSchemeTest extends SysuiTestCase {
        Assert.assertTrue(cam.getChroma() <= 8.0);
    }

    @Test
    public void testMonochromatic() {
        int colorInt = 0xffB3588A; // H350 C50 T50
        ColorScheme colorScheme = new ColorScheme(colorInt, false /* darkTheme */,
                Style.MONOCHROMATIC /* style */);
        int neutralMid = colorScheme.getNeutral1().get(colorScheme.getNeutral1().size() / 2);
        Assert.assertTrue(
                Color.red(neutralMid) == Color.green(neutralMid)
                && Color.green(neutralMid) == Color.blue(neutralMid)
        );
    }

    @Test
    @SuppressWarnings("ResultOfMethodCallIgnored")
    public void testToString() {