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

Commit 8fcda25c authored by Garvit Narang's avatar Garvit Narang Committed by Android (Google) Code Review
Browse files

Merge "Reword brightness cap API to be aligned with display service variant" into main

parents e80191d4 bbc5afc6
Loading
Loading
Loading
Loading
+14 −14
Original line number Original line Diff line number Diff line
@@ -117,7 +117,7 @@ public final class ZenDeviceEffects implements Parcelable {


    private static final int MAX_EFFECTS_LENGTH = 2_000; // characters
    private static final int MAX_EFFECTS_LENGTH = 2_000; // characters
    private static final float BRIGHTNESS_CAP_MIN = 0f;
    private static final float BRIGHTNESS_CAP_MIN = 0f;
    private static final float BRIGHTNESS_CAP_MAX = 100f;
    private static final float BRIGHTNESS_CAP_MAX = 1f;


    private final boolean mGrayscale;
    private final boolean mGrayscale;
    private final boolean mSuppressAmbientDisplay;
    private final boolean mSuppressAmbientDisplay;
@@ -180,7 +180,7 @@ public final class ZenDeviceEffects implements Parcelable {
        }
        }
        if (mBrightnessCap != null
        if (mBrightnessCap != null
                && (mBrightnessCap < BRIGHTNESS_CAP_MIN || mBrightnessCap > BRIGHTNESS_CAP_MAX)) {
                && (mBrightnessCap < BRIGHTNESS_CAP_MIN || mBrightnessCap > BRIGHTNESS_CAP_MAX)) {
            throw new IllegalArgumentException("Brightness cap must be between 0f and 100f");
            throw new IllegalArgumentException("Brightness cap must be between 0f and 1f");
        }
        }
    }
    }


@@ -377,13 +377,14 @@ public final class ZenDeviceEffects implements Parcelable {


    /**
    /**
     * Gets the brightness cap that should be applied while the rule is active. This is reflected as
     * Gets the brightness cap that should be applied while the rule is active. This is reflected as
     * a percentage of the maximum brightness supported by the display.
     * a {@code float} normalized to a range of [0, 1] where 1 indicates the maximum brightness
     * supported by the display.
     *
     *
     * @hide
     * @hide
     */
     */
    @Nullable
    @Nullable
    @FloatRange(from = BRIGHTNESS_CAP_MIN, to = BRIGHTNESS_CAP_MAX)
    @FloatRange(from = BRIGHTNESS_CAP_MIN, to = BRIGHTNESS_CAP_MAX)
    public Float getBrightnessPercentageCap() {
    public Float getBrightnessCap() {
        return mBrightnessCap;
        return mBrightnessCap;
    }
    }


@@ -513,7 +514,7 @@ public final class ZenDeviceEffects implements Parcelable {
            mMinimizeRadioUsage = zenDeviceEffects.shouldMinimizeRadioUsage();
            mMinimizeRadioUsage = zenDeviceEffects.shouldMinimizeRadioUsage();
            mMaximizeDoze = zenDeviceEffects.shouldMaximizeDoze();
            mMaximizeDoze = zenDeviceEffects.shouldMaximizeDoze();
            mNightLight = zenDeviceEffects.shouldUseNightLight();
            mNightLight = zenDeviceEffects.shouldUseNightLight();
            mBrightnessCap = zenDeviceEffects.getBrightnessPercentageCap();
            mBrightnessCap = zenDeviceEffects.getBrightnessCap();
            mExtraEffects.addAll(zenDeviceEffects.getExtraEffects());
            mExtraEffects.addAll(zenDeviceEffects.getExtraEffects());
        }
        }


@@ -629,13 +630,13 @@ public final class ZenDeviceEffects implements Parcelable {


        /**
        /**
         * Sets whether the maximum brightness of the display should be capped while the rule is
         * Sets whether the maximum brightness of the display should be capped while the rule is
         * active. This is reflected as a percentage of the maximum brightness supported by the
         * active. This is reflected as a {@code float} normalized to a range of [0, 1] where 1
         * display.
         * indicates the maximum brightness supported by the display.
         *
         *
         * @hide
         * @hide
         */
         */
        @NonNull
        @NonNull
        public Builder setBrightnessPercentageCap(
        public Builder setBrightnessCap(
                @Nullable @FloatRange(from = BRIGHTNESS_CAP_MIN, to = BRIGHTNESS_CAP_MAX)
                @Nullable @FloatRange(from = BRIGHTNESS_CAP_MIN, to = BRIGHTNESS_CAP_MAX)
                        Float brightnessCap) {
                        Float brightnessCap) {
            mBrightnessCap = Flags.applyBrightnessClampingForModes() ? brightnessCap : null;
            mBrightnessCap = Flags.applyBrightnessClampingForModes() ? brightnessCap : null;
@@ -694,8 +695,8 @@ public final class ZenDeviceEffects implements Parcelable {
         * Applies the supplied {@link ZenDeviceEffects} to this builder which is consolidated on a
         * Applies the supplied {@link ZenDeviceEffects} to this builder which is consolidated on a
         * case by case basis choosing the most restrictive option. For effects tracked with a
         * case by case basis choosing the most restrictive option. For effects tracked with a
         * boolean value, currently the structure dictates {@code true} to be most restrictive,
         * boolean value, currently the structure dictates {@code true} to be most restrictive,
         * essentially logically-ORing the effect set. For {@link #getBrightnessPercentageCap()},
         * essentially logically-ORing the effect set. For {@link #getBrightnessCap()}, the lower
         * the lower range is chosen.
         * range is chosen.
         *
         *
         * @hide
         * @hide
         */
         */
@@ -714,11 +715,10 @@ public final class ZenDeviceEffects implements Parcelable {
            if (effects.shouldMaximizeDoze()) setShouldMaximizeDoze(true);
            if (effects.shouldMaximizeDoze()) setShouldMaximizeDoze(true);
            if (effects.shouldUseNightLight()) setShouldUseNightLight(true);
            if (effects.shouldUseNightLight()) setShouldUseNightLight(true);
            if (mBrightnessCap == null) {
            if (mBrightnessCap == null) {
                setBrightnessPercentageCap(effects.getBrightnessPercentageCap());
                setBrightnessCap(effects.getBrightnessCap());
            } else if (effects.getBrightnessPercentageCap() != null) {
            } else if (effects.getBrightnessCap() != null) {
                // BrightnessCap for this and other ZenDeviceEffects is non null.
                // BrightnessCap for this and other ZenDeviceEffects is non null.
                setBrightnessPercentageCap(
                setBrightnessCap(Math.min(effects.getBrightnessCap(), mBrightnessCap));
                        Math.min(effects.getBrightnessPercentageCap(), mBrightnessCap));
            }
            }
            addExtraEffects(effects.getExtraEffects());
            addExtraEffects(effects.getExtraEffects());
            return this;
            return this;
+2 −2
Original line number Original line Diff line number Diff line
@@ -1222,7 +1222,7 @@ public class ZenModeConfig implements Parcelable {
                                safeBoolean(parser, DEVICE_EFFECT_USE_NIGHT_LIGHT, false))
                                safeBoolean(parser, DEVICE_EFFECT_USE_NIGHT_LIGHT, false))
                        .setExtraEffects(safeStringSet(parser, DEVICE_EFFECT_EXTRAS));
                        .setExtraEffects(safeStringSet(parser, DEVICE_EFFECT_EXTRAS));
        if (android.service.notification.Flags.applyBrightnessClampingForModes()) {
        if (android.service.notification.Flags.applyBrightnessClampingForModes()) {
            builder.setBrightnessPercentageCap(unsafeFloat(parser, DEVICE_EFFECT_CAP_BRIGHTNESS));
            builder.setBrightnessCap(unsafeFloat(parser, DEVICE_EFFECT_CAP_BRIGHTNESS));
        }
        }
        ZenDeviceEffects deviceEffects = builder.build();
        ZenDeviceEffects deviceEffects = builder.build();
        return deviceEffects.hasEffects() ? deviceEffects : null;
        return deviceEffects.hasEffects() ? deviceEffects : null;
@@ -1249,7 +1249,7 @@ public class ZenModeConfig implements Parcelable {
        writeBooleanIfTrue(out, DEVICE_EFFECT_USE_NIGHT_LIGHT, deviceEffects.shouldUseNightLight());
        writeBooleanIfTrue(out, DEVICE_EFFECT_USE_NIGHT_LIGHT, deviceEffects.shouldUseNightLight());
        if (android.service.notification.Flags.applyBrightnessClampingForModes()) {
        if (android.service.notification.Flags.applyBrightnessClampingForModes()) {
            writeFloatIfNotNull(
            writeFloatIfNotNull(
                    out, DEVICE_EFFECT_CAP_BRIGHTNESS, deviceEffects.getBrightnessPercentageCap());
                    out, DEVICE_EFFECT_CAP_BRIGHTNESS, deviceEffects.getBrightnessCap());
        }
        }
        writeStringSet(out, DEVICE_EFFECT_EXTRAS, deviceEffects.getExtraEffects());
        writeStringSet(out, DEVICE_EFFECT_EXTRAS, deviceEffects.getExtraEffects());
    }
    }
+2 −5
Original line number Original line Diff line number Diff line
@@ -680,13 +680,10 @@ public class ZenModeDiff {
                        new FieldDiff<>(from.shouldUseNightLight(), to.shouldUseNightLight()));
                        new FieldDiff<>(from.shouldUseNightLight(), to.shouldUseNightLight()));
            }
            }
            if (Flags.applyBrightnessClampingForModes()
            if (Flags.applyBrightnessClampingForModes()
                    && !Objects.equals(
                    && !Objects.equals(from.getBrightnessCap(), to.getBrightnessCap())) {
                            from.getBrightnessPercentageCap(), to.getBrightnessPercentageCap())) {
                addField(
                addField(
                        FIELD_BRIGHTNESS_CAP,
                        FIELD_BRIGHTNESS_CAP,
                        new FieldDiff<>(
                        new FieldDiff<>(from.getBrightnessCap(), to.getBrightnessCap()));
                                from.getBrightnessPercentageCap(),
                                to.getBrightnessPercentageCap()));
            }
            }
            if (!Objects.equals(from.getExtraEffects(), to.getExtraEffects())) {
            if (!Objects.equals(from.getExtraEffects(), to.getExtraEffects())) {
                addField(FIELD_EXTRA_EFFECTS, new FieldDiff<>(from.getExtraEffects(),
                addField(FIELD_EXTRA_EFFECTS, new FieldDiff<>(from.getExtraEffects(),
+2 −3
Original line number Original line Diff line number Diff line
@@ -1425,7 +1425,7 @@ public class ZenModeHelper {
                            .setShouldMinimizeRadioUsage(oldEffects.shouldMinimizeRadioUsage())
                            .setShouldMinimizeRadioUsage(oldEffects.shouldMinimizeRadioUsage())
                            .setShouldMaximizeDoze(oldEffects.shouldMaximizeDoze())
                            .setShouldMaximizeDoze(oldEffects.shouldMaximizeDoze())
                            .setShouldUseNightLight(oldEffects.shouldUseNightLight())
                            .setShouldUseNightLight(oldEffects.shouldUseNightLight())
                            .setBrightnessPercentageCap(oldEffects.getBrightnessPercentageCap())
                            .setBrightnessCap(oldEffects.getBrightnessCap())
                            .setExtraEffects(oldEffects.getExtraEffects())
                            .setExtraEffects(oldEffects.getExtraEffects())
                            .build();
                            .build();
        }
        }
@@ -1471,8 +1471,7 @@ public class ZenModeHelper {
            }
            }
            if (android.service.notification.Flags.applyBrightnessClampingForModes()
            if (android.service.notification.Flags.applyBrightnessClampingForModes()
                    && !Objects.equals(
                    && !Objects.equals(
                            oldEffects.getBrightnessPercentageCap(),
                            oldEffects.getBrightnessCap(), newEffects.getBrightnessCap())) {
                            newEffects.getBrightnessPercentageCap())) {
                userModifiedFields |= ZenDeviceEffects.FIELD_BRIGHTNESS_CAP;
                userModifiedFields |= ZenDeviceEffects.FIELD_BRIGHTNESS_CAP;
            }
            }
            if (!Objects.equals(oldEffects.getExtraEffects(), newEffects.getExtraEffects())) {
            if (!Objects.equals(oldEffects.getExtraEffects(), newEffects.getExtraEffects())) {
+15 −20
Original line number Original line Diff line number Diff line
@@ -57,7 +57,7 @@ public class ZenDeviceEffectsTest extends UiServiceTestCase {
                        .setShouldUseNightLight(true)
                        .setShouldUseNightLight(true)
                        .setShouldSuppressAmbientDisplay(false)
                        .setShouldSuppressAmbientDisplay(false)
                        .setShouldSuppressAmbientDisplay(true)
                        .setShouldSuppressAmbientDisplay(true)
                        .setBrightnessPercentageCap(50f)
                        .setBrightnessCap(0.5f)
                        .addExtraEffect("WILL BE GONE")
                        .addExtraEffect("WILL BE GONE")
                        .setExtraEffects(ImmutableSet.of("1", "2"))
                        .setExtraEffects(ImmutableSet.of("1", "2"))
                        .addExtraEffects(ImmutableSet.of("3", "4"))
                        .addExtraEffects(ImmutableSet.of("3", "4"))
@@ -75,7 +75,7 @@ public class ZenDeviceEffectsTest extends UiServiceTestCase {
        assertThat(deviceEffects.shouldMinimizeRadioUsage()).isFalse();
        assertThat(deviceEffects.shouldMinimizeRadioUsage()).isFalse();
        assertThat(deviceEffects.shouldUseNightMode()).isFalse();
        assertThat(deviceEffects.shouldUseNightMode()).isFalse();
        assertThat(deviceEffects.shouldSuppressAmbientDisplay()).isTrue();
        assertThat(deviceEffects.shouldSuppressAmbientDisplay()).isTrue();
        assertThat(deviceEffects.getBrightnessPercentageCap()).isEqualTo(50f);
        assertThat(deviceEffects.getBrightnessCap()).isEqualTo(0.5f);
        assertThat(deviceEffects.getExtraEffects()).containsExactly("1", "2", "3", "4", "5");
        assertThat(deviceEffects.getExtraEffects()).containsExactly("1", "2", "3", "4", "5");
    }
    }


@@ -129,7 +129,7 @@ public class ZenDeviceEffectsTest extends UiServiceTestCase {
                        .setShouldDisplayGrayscale(true)
                        .setShouldDisplayGrayscale(true)
                        .setShouldUseNightMode(false)
                        .setShouldUseNightMode(false)
                        .setShouldUseNightLight(true)
                        .setShouldUseNightLight(true)
                        .setBrightnessPercentageCap(50f)
                        .setBrightnessCap(0.5f)
                        .addExtraEffect("2")
                        .addExtraEffect("2")
                        .build();
                        .build();


@@ -139,7 +139,7 @@ public class ZenDeviceEffectsTest extends UiServiceTestCase {
        assertThat(modified.shouldUseNightLight()).isTrue(); // updated
        assertThat(modified.shouldUseNightLight()).isTrue(); // updated
        assertThat(modified.shouldUseNightMode()).isFalse(); // updated
        assertThat(modified.shouldUseNightMode()).isFalse(); // updated
        assertThat(modified.shouldSuppressAmbientDisplay()).isTrue(); // from original
        assertThat(modified.shouldSuppressAmbientDisplay()).isTrue(); // from original
        assertThat(modified.getBrightnessPercentageCap()).isEqualTo(50f); // updated
        assertThat(modified.getBrightnessCap()).isEqualTo(0.5f); // updated
        assertThat(modified.getExtraEffects()).containsExactly("1", "2"); // updated
        assertThat(modified.getExtraEffects()).containsExactly("1", "2"); // updated
    }
    }


@@ -200,16 +200,13 @@ public class ZenDeviceEffectsTest extends UiServiceTestCase {
    @Test
    @Test
    @EnableFlags(android.service.notification.Flags.FLAG_APPLY_BRIGHTNESS_CLAMPING_FOR_MODES)
    @EnableFlags(android.service.notification.Flags.FLAG_APPLY_BRIGHTNESS_CLAMPING_FOR_MODES)
    public void builder_add_retainsLowerBrightnessCap() {
    public void builder_add_retainsLowerBrightnessCap() {
        ZenDeviceEffects zde1 =
        ZenDeviceEffects zde1 = new ZenDeviceEffects.Builder().setBrightnessCap(0.5f).build();
                new ZenDeviceEffects.Builder().setBrightnessPercentageCap(50f).build();
        ZenDeviceEffects zde2 = new ZenDeviceEffects.Builder().setBrightnessCap(0.6f).build();
        ZenDeviceEffects zde2 =
                new ZenDeviceEffects.Builder().setBrightnessPercentageCap(60f).build();


        ZenDeviceEffects add1 = new ZenDeviceEffects.Builder().add(zde1).add(zde2).build();
        ZenDeviceEffects add1 = new ZenDeviceEffects.Builder().add(zde1).add(zde2).build();
        ZenDeviceEffects add2 = new ZenDeviceEffects.Builder().add(zde2).add(zde1).build();
        ZenDeviceEffects add2 = new ZenDeviceEffects.Builder().add(zde2).add(zde1).build();


        ZenDeviceEffects expected =
        ZenDeviceEffects expected = new ZenDeviceEffects.Builder().setBrightnessCap(0.5f).build();
                new ZenDeviceEffects.Builder().setBrightnessPercentageCap(50f).build();
        assertThat(add1).isEqualTo(expected);
        assertThat(add1).isEqualTo(expected);
        assertThat(add2).isEqualTo(expected);
        assertThat(add2).isEqualTo(expected);
    }
    }
@@ -224,7 +221,7 @@ public class ZenDeviceEffectsTest extends UiServiceTestCase {
                        .setShouldMinimizeRadioUsage(true)
                        .setShouldMinimizeRadioUsage(true)
                        .setShouldUseNightMode(true)
                        .setShouldUseNightMode(true)
                        .setShouldSuppressAmbientDisplay(true)
                        .setShouldSuppressAmbientDisplay(true)
                        .setBrightnessPercentageCap(50f)
                        .setBrightnessCap(0.5f)
                        .setExtraEffects(ImmutableSet.of("1", "2", "3"))
                        .setExtraEffects(ImmutableSet.of("1", "2", "3"))
                        .build();
                        .build();


@@ -244,7 +241,7 @@ public class ZenDeviceEffectsTest extends UiServiceTestCase {
        assertThat(copy.shouldUseNightMode()).isTrue();
        assertThat(copy.shouldUseNightMode()).isTrue();
        assertThat(copy.shouldSuppressAmbientDisplay()).isTrue();
        assertThat(copy.shouldSuppressAmbientDisplay()).isTrue();
        assertThat(copy.shouldDisplayGrayscale()).isFalse();
        assertThat(copy.shouldDisplayGrayscale()).isFalse();
        assertThat(copy.getBrightnessPercentageCap()).isEqualTo(50f);
        assertThat(copy.getBrightnessCap()).isEqualTo(0.5f);
        assertThat(copy.getExtraEffects()).containsExactly("1", "2", "3");
        assertThat(copy.getExtraEffects()).containsExactly("1", "2", "3");
    }
    }


@@ -305,12 +302,11 @@ public class ZenDeviceEffectsTest extends UiServiceTestCase {
    @Test
    @Test
    @EnableFlags(android.service.notification.Flags.FLAG_APPLY_BRIGHTNESS_CLAMPING_FOR_MODES)
    @EnableFlags(android.service.notification.Flags.FLAG_APPLY_BRIGHTNESS_CLAMPING_FOR_MODES)
    public void hasEffects_brightnessCapSet_returnsTrue() {
    public void hasEffects_brightnessCapSet_returnsTrue() {
        ZenDeviceEffects effects =
        ZenDeviceEffects effects = new ZenDeviceEffects.Builder().setBrightnessCap(0.5f).build();
                new ZenDeviceEffects.Builder().setBrightnessPercentageCap(50f).build();
        assertThat(effects.hasEffects()).isTrue();
        assertThat(effects.hasEffects()).isTrue();
        effects = new ZenDeviceEffects.Builder().setBrightnessPercentageCap(0f).build();
        effects = new ZenDeviceEffects.Builder().setBrightnessCap(0f).build();
        assertThat(effects.hasEffects()).isTrue();
        assertThat(effects.hasEffects()).isTrue();
        effects = new ZenDeviceEffects.Builder().setBrightnessPercentageCap(100f).build();
        effects = new ZenDeviceEffects.Builder().setBrightnessCap(1f).build();
        assertThat(effects.hasEffects()).isTrue();
        assertThat(effects.hasEffects()).isTrue();
    }
    }


@@ -342,14 +338,13 @@ public class ZenDeviceEffectsTest extends UiServiceTestCase {
    @SuppressLint("Range")
    @SuppressLint("Range")
    @EnableFlags(android.service.notification.Flags.FLAG_APPLY_BRIGHTNESS_CLAMPING_FOR_MODES)
    @EnableFlags(android.service.notification.Flags.FLAG_APPLY_BRIGHTNESS_CLAMPING_FOR_MODES)
    public void validate_brightnessCapRange() {
    public void validate_brightnessCapRange() {
        ZenDeviceEffects okay =
        ZenDeviceEffects okay = new ZenDeviceEffects.Builder().setBrightnessCap(0.5f).build();
                new ZenDeviceEffects.Builder().setBrightnessPercentageCap(50f).build();


        ZenDeviceEffects lessThanZeroFixed =
        ZenDeviceEffects lessThanZeroFixed =
                new ZenDeviceEffects.Builder().setBrightnessPercentageCap(-10f).build();
                new ZenDeviceEffects.Builder().setBrightnessCap(-0.1f).build();


        ZenDeviceEffects moreThanOneFixed =
        ZenDeviceEffects moreThanOneFixed =
                new ZenDeviceEffects.Builder().setBrightnessPercentageCap(110f).build();
                new ZenDeviceEffects.Builder().setBrightnessCap(1.1f).build();


        okay.validate(); // No exception.
        okay.validate(); // No exception.
        assertThrows(IllegalArgumentException.class, lessThanZeroFixed::validate);
        assertThrows(IllegalArgumentException.class, lessThanZeroFixed::validate);
Loading