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

Commit bbc5afc6 authored by Garvit Narang's avatar Garvit Narang
Browse files

Reword brightness cap API to be aligned with display service variant

Brightness clamping API in display service follows a range from 0 to 1
and this CL brings the notification manager aspect of it in line with
the one for display service for consistency

Fixes: 427541717
Test: presubmit
Flag: EXEMPT trivial
Change-Id: Ibbd616f4e51924e6fdf04e268723390312ae316c
parent e10fa405
Loading
Loading
Loading
Loading
+14 −14
Original line number 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 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 mSuppressAmbientDisplay;
@@ -180,7 +180,7 @@ public final class ZenDeviceEffects implements Parcelable {
        }
        if (mBrightnessCap != null
                && (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
     * 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
     */
    @Nullable
    @FloatRange(from = BRIGHTNESS_CAP_MIN, to = BRIGHTNESS_CAP_MAX)
    public Float getBrightnessPercentageCap() {
    public Float getBrightnessCap() {
        return mBrightnessCap;
    }

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

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

@@ -139,7 +139,7 @@ public class ZenDeviceEffectsTest extends UiServiceTestCase {
        assertThat(modified.shouldUseNightLight()).isTrue(); // updated
        assertThat(modified.shouldUseNightMode()).isFalse(); // updated
        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
    }

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

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

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

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

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

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

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

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

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