Loading core/java/android/service/notification/ZenDeviceEffects.java +14 −14 Original line number Original line Diff line number Diff line Loading @@ -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; Loading Loading @@ -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"); } } } } Loading Loading @@ -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; } } Loading Loading @@ -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()); } } Loading Loading @@ -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; Loading Loading @@ -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 */ */ Loading @@ -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; Loading core/java/android/service/notification/ZenModeConfig.java +2 −2 Original line number Original line Diff line number Diff line Loading @@ -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; Loading @@ -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()); } } Loading core/java/android/service/notification/ZenModeDiff.java +2 −5 Original line number Original line Diff line number Diff line Loading @@ -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(), Loading services/core/java/com/android/server/notification/ZenModeHelper.java +2 −3 Original line number Original line Diff line number Diff line Loading @@ -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(); } } Loading Loading @@ -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())) { Loading services/tests/uiservicestests/src/com/android/server/notification/ZenDeviceEffectsTest.java +15 −20 Original line number Original line Diff line number Diff line Loading @@ -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")) Loading @@ -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"); } } Loading Loading @@ -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(); Loading @@ -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 } } Loading Loading @@ -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); } } Loading @@ -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(); Loading @@ -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"); } } Loading Loading @@ -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(); } } Loading Loading @@ -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 Loading
core/java/android/service/notification/ZenDeviceEffects.java +14 −14 Original line number Original line Diff line number Diff line Loading @@ -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; Loading Loading @@ -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"); } } } } Loading Loading @@ -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; } } Loading Loading @@ -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()); } } Loading Loading @@ -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; Loading Loading @@ -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 */ */ Loading @@ -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; Loading
core/java/android/service/notification/ZenModeConfig.java +2 −2 Original line number Original line Diff line number Diff line Loading @@ -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; Loading @@ -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()); } } Loading
core/java/android/service/notification/ZenModeDiff.java +2 −5 Original line number Original line Diff line number Diff line Loading @@ -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(), Loading
services/core/java/com/android/server/notification/ZenModeHelper.java +2 −3 Original line number Original line Diff line number Diff line Loading @@ -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(); } } Loading Loading @@ -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())) { Loading
services/tests/uiservicestests/src/com/android/server/notification/ZenDeviceEffectsTest.java +15 −20 Original line number Original line Diff line number Diff line Loading @@ -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")) Loading @@ -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"); } } Loading Loading @@ -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(); Loading @@ -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 } } Loading Loading @@ -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); } } Loading @@ -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(); Loading @@ -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"); } } Loading Loading @@ -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(); } } Loading Loading @@ -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