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

Commit e2a980fc authored by Santos Cordon's avatar Santos Cordon
Browse files

Add better logging for override test case.

This change includes a tag when an activity overrides
the brightness value.

Bug: 302512031
Test: atest com.android.server.display, atest com.android.server.power
Flag: EXEMPT simple logging
Change-Id: I71853e039d835786577b4d5c8784fe079f5791ff
parent fdf9784b
Loading
Loading
Loading
Loading
+8 −2
Original line number Diff line number Diff line
@@ -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;

/**
@@ -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;
@@ -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;
@@ -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
+3 −1
Original line number Diff line number Diff line
@@ -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
+10 −0
Original line number Diff line number Diff line
@@ -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
+38 −9
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

package com.android.server.display.brightness;

import android.annotation.Nullable;
import android.util.Slog;

import java.util.Objects;
@@ -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
     *
@@ -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);
    }

    /**
@@ -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
@@ -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");
@@ -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.
     */
@@ -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
     */
+10 −4
Original line number Diff line number Diff line
@@ -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;

@@ -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