Loading core/java/android/hardware/display/DisplayManagerInternal.java +8 −2 Original line number Diff line number Diff line Loading @@ -37,6 +37,7 @@ import android.window.ScreenCapture; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.util.List; import java.util.Objects; import java.util.Set; /** Loading Loading @@ -470,6 +471,9 @@ public abstract class DisplayManagerInternal { // Set to PowerManager.BRIGHTNESS_INVALID if there's no override. public float screenBrightnessOverride; // Tag used to identify the app window requesting the brightness override. public CharSequence screenBrightnessOverrideTag; // An override of the screen auto-brightness adjustment factor in the range -1 (dimmer) to // 1 (brighter). Set to Float.NaN if there's no override. public float screenAutoBrightnessAdjustmentOverride; Loading Loading @@ -524,6 +528,7 @@ public abstract class DisplayManagerInternal { policy = other.policy; useProximitySensor = other.useProximitySensor; screenBrightnessOverride = other.screenBrightnessOverride; screenBrightnessOverrideTag = other.screenBrightnessOverrideTag; screenAutoBrightnessAdjustmentOverride = other.screenAutoBrightnessAdjustmentOverride; screenLowPowerBrightnessFactor = other.screenLowPowerBrightnessFactor; blockScreenOn = other.blockScreenOn; Loading @@ -544,8 +549,9 @@ public abstract class DisplayManagerInternal { return other != null && policy == other.policy && useProximitySensor == other.useProximitySensor && floatEquals(screenBrightnessOverride, other.screenBrightnessOverride) && floatEquals(screenBrightnessOverride, other.screenBrightnessOverride) && Objects.equals(screenBrightnessOverrideTag, other.screenBrightnessOverrideTag) && floatEquals(screenAutoBrightnessAdjustmentOverride, other.screenAutoBrightnessAdjustmentOverride) && screenLowPowerBrightnessFactor Loading core/java/android/os/PowerManagerInternal.java +3 −1 Original line number Diff line number Diff line Loading @@ -104,8 +104,10 @@ public abstract class PowerManagerInternal { * This method must only be called by the window manager. * * @param brightness The overridden brightness, or Float.NaN to disable the override. * @param tag Source identifier of the app window that requests the override. */ public abstract void setScreenBrightnessOverrideFromWindowManager(float brightness); public abstract void setScreenBrightnessOverrideFromWindowManager( float brightness, CharSequence tag); /** * Used by the window manager to override the user activity timeout based on the Loading services/core/java/com/android/server/display/DisplayBrightnessState.java +10 −0 Original line number Diff line number Diff line Loading @@ -331,6 +331,16 @@ public final class DisplayBrightnessState { return this; } /** * Sets the {@link BrightnessReason} using the int-based reason enum. This is a convenience * function so we don't have to type out the constructor syntax everywhere. * * @param brightnessReason The int-based brightness enum. */ public Builder setBrightnessReason(int brightnessReason) { return setBrightnessReason(new BrightnessReason(brightnessReason)); } /** * Gets the {@link com.android.server.display.brightness.strategy.DisplayBrightnessStrategy} * name Loading services/core/java/com/android/server/display/brightness/BrightnessReason.java +38 −9 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.server.display.brightness; import android.annotation.Nullable; import android.util.Slog; import java.util.Objects; Loading Loading @@ -66,6 +67,16 @@ public final class BrightnessReason { // Any number of MODIFIER_* private int mModifier; // Tag used to identify the source of the brightness (usually a specific activity/window). private CharSequence mTag; public BrightnessReason() { } public BrightnessReason(int reason) { setReason(reason); } /** * A utility to clone a BrightnessReason from another BrightnessReason event * Loading @@ -74,6 +85,7 @@ public final class BrightnessReason { public void set(BrightnessReason other) { setReason(other == null ? REASON_UNKNOWN : other.mReason); setModifier(other == null ? 0 : other.mModifier); setTag(other == null ? null : other.mTag); } /** Loading @@ -85,19 +97,20 @@ public final class BrightnessReason { setModifier(modifier | this.mModifier); } @Override public boolean equals(Object obj) { if (!(obj instanceof BrightnessReason)) { return false; } BrightnessReason other = (BrightnessReason) obj; return other.mReason == mReason && other.mModifier == mModifier; return other.mReason == mReason && other.mModifier == mModifier && Objects.equals(other.mTag != null ? other.mTag.toString() : null, mTag); } @Override public int hashCode() { return Objects.hash(mReason, mModifier); return Objects.hash(mReason, mModifier, mTag); } @Override Loading @@ -115,6 +128,11 @@ public final class BrightnessReason { public String toString(int adjustments) { final StringBuilder sb = new StringBuilder(); sb.append(reasonToString(mReason)); if (mTag != null) { sb.append("(").append(mTag).append(")"); } sb.append(" ["); if ((adjustments & ADJUSTMENT_AUTO_TEMP) != 0) { sb.append(" temp_adj"); Loading Loading @@ -149,8 +167,23 @@ public final class BrightnessReason { return sb.toString(); } public void setTag(@Nullable CharSequence tag) { mTag = tag; } /** * A utility to set the reason of the BrightnessReason object * Gets the tag to identify who requested the brightness. */ @Nullable public CharSequence getTag() { return mTag; } public int getReason() { return mReason; } /** * Sets the reason of the BrightnessReason object * * @param reason The value to which the reason is to be updated. */ Loading @@ -162,16 +195,12 @@ public final class BrightnessReason { } } public int getReason() { return mReason; } public int getModifier() { return mModifier; } /** * A utility to set the modified of the current BrightnessReason object * Sets the modifier bitflags of the current BrightnessReason object * * @param modifier The value to which the modifier is to be updated */ Loading services/core/java/com/android/server/display/brightness/strategy/OverrideBrightnessStrategy.java +10 −4 Original line number Diff line number Diff line Loading @@ -16,9 +16,10 @@ package com.android.server.display.brightness.strategy; import android.hardware.display.DisplayManagerInternal.DisplayPowerRequest; import com.android.server.display.DisplayBrightnessState; import com.android.server.display.brightness.BrightnessReason; import com.android.server.display.brightness.BrightnessUtils; import com.android.server.display.brightness.StrategyExecutionRequest; import com.android.server.display.brightness.StrategySelectionNotifyRequest; Loading @@ -33,9 +34,14 @@ public class OverrideBrightnessStrategy implements DisplayBrightnessStrategy { StrategyExecutionRequest strategyExecutionRequest) { // Todo(b/241308599): Introduce a validator class and add validations before setting // the brightness return BrightnessUtils.constructDisplayBrightnessState(BrightnessReason.REASON_OVERRIDE, strategyExecutionRequest.getDisplayPowerRequest().screenBrightnessOverride, getName()); DisplayPowerRequest dpr = strategyExecutionRequest.getDisplayPowerRequest(); BrightnessReason reason = new BrightnessReason(BrightnessReason.REASON_OVERRIDE); reason.setTag(dpr.screenBrightnessOverrideTag); return new DisplayBrightnessState.Builder() .setBrightness(dpr.screenBrightnessOverride) .setBrightnessReason(reason) .setDisplayBrightnessStrategyName(getName()) .build(); } @Override Loading Loading
core/java/android/hardware/display/DisplayManagerInternal.java +8 −2 Original line number Diff line number Diff line Loading @@ -37,6 +37,7 @@ import android.window.ScreenCapture; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.util.List; import java.util.Objects; import java.util.Set; /** Loading Loading @@ -470,6 +471,9 @@ public abstract class DisplayManagerInternal { // Set to PowerManager.BRIGHTNESS_INVALID if there's no override. public float screenBrightnessOverride; // Tag used to identify the app window requesting the brightness override. public CharSequence screenBrightnessOverrideTag; // An override of the screen auto-brightness adjustment factor in the range -1 (dimmer) to // 1 (brighter). Set to Float.NaN if there's no override. public float screenAutoBrightnessAdjustmentOverride; Loading Loading @@ -524,6 +528,7 @@ public abstract class DisplayManagerInternal { policy = other.policy; useProximitySensor = other.useProximitySensor; screenBrightnessOverride = other.screenBrightnessOverride; screenBrightnessOverrideTag = other.screenBrightnessOverrideTag; screenAutoBrightnessAdjustmentOverride = other.screenAutoBrightnessAdjustmentOverride; screenLowPowerBrightnessFactor = other.screenLowPowerBrightnessFactor; blockScreenOn = other.blockScreenOn; Loading @@ -544,8 +549,9 @@ public abstract class DisplayManagerInternal { return other != null && policy == other.policy && useProximitySensor == other.useProximitySensor && floatEquals(screenBrightnessOverride, other.screenBrightnessOverride) && floatEquals(screenBrightnessOverride, other.screenBrightnessOverride) && Objects.equals(screenBrightnessOverrideTag, other.screenBrightnessOverrideTag) && floatEquals(screenAutoBrightnessAdjustmentOverride, other.screenAutoBrightnessAdjustmentOverride) && screenLowPowerBrightnessFactor Loading
core/java/android/os/PowerManagerInternal.java +3 −1 Original line number Diff line number Diff line Loading @@ -104,8 +104,10 @@ public abstract class PowerManagerInternal { * This method must only be called by the window manager. * * @param brightness The overridden brightness, or Float.NaN to disable the override. * @param tag Source identifier of the app window that requests the override. */ public abstract void setScreenBrightnessOverrideFromWindowManager(float brightness); public abstract void setScreenBrightnessOverrideFromWindowManager( float brightness, CharSequence tag); /** * Used by the window manager to override the user activity timeout based on the Loading
services/core/java/com/android/server/display/DisplayBrightnessState.java +10 −0 Original line number Diff line number Diff line Loading @@ -331,6 +331,16 @@ public final class DisplayBrightnessState { return this; } /** * Sets the {@link BrightnessReason} using the int-based reason enum. This is a convenience * function so we don't have to type out the constructor syntax everywhere. * * @param brightnessReason The int-based brightness enum. */ public Builder setBrightnessReason(int brightnessReason) { return setBrightnessReason(new BrightnessReason(brightnessReason)); } /** * Gets the {@link com.android.server.display.brightness.strategy.DisplayBrightnessStrategy} * name Loading
services/core/java/com/android/server/display/brightness/BrightnessReason.java +38 −9 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.server.display.brightness; import android.annotation.Nullable; import android.util.Slog; import java.util.Objects; Loading Loading @@ -66,6 +67,16 @@ public final class BrightnessReason { // Any number of MODIFIER_* private int mModifier; // Tag used to identify the source of the brightness (usually a specific activity/window). private CharSequence mTag; public BrightnessReason() { } public BrightnessReason(int reason) { setReason(reason); } /** * A utility to clone a BrightnessReason from another BrightnessReason event * Loading @@ -74,6 +85,7 @@ public final class BrightnessReason { public void set(BrightnessReason other) { setReason(other == null ? REASON_UNKNOWN : other.mReason); setModifier(other == null ? 0 : other.mModifier); setTag(other == null ? null : other.mTag); } /** Loading @@ -85,19 +97,20 @@ public final class BrightnessReason { setModifier(modifier | this.mModifier); } @Override public boolean equals(Object obj) { if (!(obj instanceof BrightnessReason)) { return false; } BrightnessReason other = (BrightnessReason) obj; return other.mReason == mReason && other.mModifier == mModifier; return other.mReason == mReason && other.mModifier == mModifier && Objects.equals(other.mTag != null ? other.mTag.toString() : null, mTag); } @Override public int hashCode() { return Objects.hash(mReason, mModifier); return Objects.hash(mReason, mModifier, mTag); } @Override Loading @@ -115,6 +128,11 @@ public final class BrightnessReason { public String toString(int adjustments) { final StringBuilder sb = new StringBuilder(); sb.append(reasonToString(mReason)); if (mTag != null) { sb.append("(").append(mTag).append(")"); } sb.append(" ["); if ((adjustments & ADJUSTMENT_AUTO_TEMP) != 0) { sb.append(" temp_adj"); Loading Loading @@ -149,8 +167,23 @@ public final class BrightnessReason { return sb.toString(); } public void setTag(@Nullable CharSequence tag) { mTag = tag; } /** * A utility to set the reason of the BrightnessReason object * Gets the tag to identify who requested the brightness. */ @Nullable public CharSequence getTag() { return mTag; } public int getReason() { return mReason; } /** * Sets the reason of the BrightnessReason object * * @param reason The value to which the reason is to be updated. */ Loading @@ -162,16 +195,12 @@ public final class BrightnessReason { } } public int getReason() { return mReason; } public int getModifier() { return mModifier; } /** * A utility to set the modified of the current BrightnessReason object * Sets the modifier bitflags of the current BrightnessReason object * * @param modifier The value to which the modifier is to be updated */ Loading
services/core/java/com/android/server/display/brightness/strategy/OverrideBrightnessStrategy.java +10 −4 Original line number Diff line number Diff line Loading @@ -16,9 +16,10 @@ package com.android.server.display.brightness.strategy; import android.hardware.display.DisplayManagerInternal.DisplayPowerRequest; import com.android.server.display.DisplayBrightnessState; import com.android.server.display.brightness.BrightnessReason; import com.android.server.display.brightness.BrightnessUtils; import com.android.server.display.brightness.StrategyExecutionRequest; import com.android.server.display.brightness.StrategySelectionNotifyRequest; Loading @@ -33,9 +34,14 @@ public class OverrideBrightnessStrategy implements DisplayBrightnessStrategy { StrategyExecutionRequest strategyExecutionRequest) { // Todo(b/241308599): Introduce a validator class and add validations before setting // the brightness return BrightnessUtils.constructDisplayBrightnessState(BrightnessReason.REASON_OVERRIDE, strategyExecutionRequest.getDisplayPowerRequest().screenBrightnessOverride, getName()); DisplayPowerRequest dpr = strategyExecutionRequest.getDisplayPowerRequest(); BrightnessReason reason = new BrightnessReason(BrightnessReason.REASON_OVERRIDE); reason.setTag(dpr.screenBrightnessOverrideTag); return new DisplayBrightnessState.Builder() .setBrightness(dpr.screenBrightnessOverride) .setBrightnessReason(reason) .setDisplayBrightnessStrategyName(getName()) .build(); } @Override Loading