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

Commit 05ce809b authored by Kenny Guy's avatar Kenny Guy
Browse files

Add more brightness config details to dumpsys

Allow client to add a description to a brightness
config and dump to dumpsys
Dump time and package name of system app that
set the last brightness config.

Bug: 71854421
Test: atest PersistentDataStoreTest
Test: manaual - check adb shell dumpsys display
Change-Id: I5ff0c0d3a4c5e30c9d4aa7eea850c7174ee20450
parent ec267612
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -1117,9 +1117,9 @@ package android.hardware.display {
  }

  public static class BrightnessConfiguration.Builder {
    ctor public BrightnessConfiguration.Builder();
    ctor public BrightnessConfiguration.Builder(float[], float[]);
    method public android.hardware.display.BrightnessConfiguration build();
    method public android.hardware.display.BrightnessConfiguration.Builder setCurve(float[], float[]);
    method public android.hardware.display.BrightnessConfiguration.Builder setDescription(java.lang.String);
  }

  public final class DisplayManager {
+2 −2
Original line number Diff line number Diff line
@@ -320,9 +320,9 @@ package android.hardware.display {
  }

  public static class BrightnessConfiguration.Builder {
    ctor public BrightnessConfiguration.Builder();
    ctor public BrightnessConfiguration.Builder(float[], float[]);
    method public android.hardware.display.BrightnessConfiguration build();
    method public android.hardware.display.BrightnessConfiguration.Builder setCurve(float[], float[]);
    method public android.hardware.display.BrightnessConfiguration.Builder setDescription(java.lang.String);
  }

  public final class DisplayManager {
+60 −6
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

package android.hardware.display;

import android.annotation.Nullable;
import android.annotation.SystemApi;
import android.annotation.TestApi;
import android.os.Parcel;
@@ -25,6 +26,7 @@ import android.util.Pair;
import com.android.internal.util.Preconditions;

import java.util.Arrays;
import java.util.Objects;

/** @hide */
@SystemApi
@@ -32,10 +34,12 @@ import java.util.Arrays;
public final class BrightnessConfiguration implements Parcelable {
    private final float[] mLux;
    private final float[] mNits;
    private final String mDescription;

    private BrightnessConfiguration(float[] lux, float[] nits) {
    private BrightnessConfiguration(float[] lux, float[] nits, String description) {
        mLux = lux;
        mNits = nits;
        mDescription = description;
    }

    /**
@@ -51,10 +55,19 @@ public final class BrightnessConfiguration implements Parcelable {
        return Pair.create(Arrays.copyOf(mLux, mLux.length), Arrays.copyOf(mNits, mNits.length));
    }

    /**
     * Returns description string.
     * @hide
     */
    public String getDescription() {
        return mDescription;
    }

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeFloatArray(mLux);
        dest.writeFloatArray(mNits);
        dest.writeString(mDescription);
    }

    @Override
@@ -72,7 +85,9 @@ public final class BrightnessConfiguration implements Parcelable {
            }
            sb.append("(").append(mLux[i]).append(", ").append(mNits[i]).append(")");
        }
        sb.append("]}");
        sb.append("], '");
        sb.append(mDescription);
        sb.append("'}");
        return sb.toString();
    }

@@ -81,6 +96,7 @@ public final class BrightnessConfiguration implements Parcelable {
        int result = 1;
        result = result * 31 + Arrays.hashCode(mLux);
        result = result * 31 + Arrays.hashCode(mNits);
        result = result * 31 + mDescription.hashCode();
        return result;
    }

@@ -93,16 +109,17 @@ public final class BrightnessConfiguration implements Parcelable {
            return false;
        }
        final BrightnessConfiguration other = (BrightnessConfiguration) o;
        return Arrays.equals(mLux, other.mLux) && Arrays.equals(mNits, other.mNits);
        return Arrays.equals(mLux, other.mLux) && Arrays.equals(mNits, other.mNits)
                && Objects.equals(mDescription, other.mDescription);
    }

    public static final Creator<BrightnessConfiguration> CREATOR =
            new Creator<BrightnessConfiguration>() {
        public BrightnessConfiguration createFromParcel(Parcel in) {
            Builder builder = new Builder();
            float[] lux = in.createFloatArray();
            float[] nits = in.createFloatArray();
            builder.setCurve(lux, nits);
            Builder builder = new Builder(lux, nits);
            builder.setDescription(in.readString());
            return builder.build();
        }

@@ -117,6 +134,29 @@ public final class BrightnessConfiguration implements Parcelable {
    public static class Builder {
        private float[] mCurveLux;
        private float[] mCurveNits;
        private String mDescription;

        /**
         * STOPSHIP remove when app has stopped using this.
         * @hide
         */
        public Builder() {
        }

        /**
         * Constructs the builder with the control points for the brightness curve.
         *
         * Brightness curves must have strictly increasing ambient brightness values in lux and
         * monotonically increasing display brightness values in nits. In addition, the initial
         * control point must be 0 lux.
         *
         * @throws IllegalArgumentException if the initial control point is not at 0 lux.
         * @throws IllegalArgumentException if the lux levels are not strictly increasing.
         * @throws IllegalArgumentException if the nit levels are not monotonically increasing.
         */
        public Builder(float[] lux, float[] nits) {
            setCurve(lux, nits);
        }

        /**
         * Sets the control points for the brightness curve.
@@ -128,6 +168,9 @@ public final class BrightnessConfiguration implements Parcelable {
         * @throws IllegalArgumentException if the initial control point is not at 0 lux.
         * @throws IllegalArgumentException if the lux levels are not strictly increasing.
         * @throws IllegalArgumentException if the nit levels are not monotonically increasing.
         *
         * STOPSHIP remove when app has stopped using this.
         * @hide
         */
        public Builder setCurve(float[] lux, float[] nits) {
            Preconditions.checkNotNull(lux);
@@ -150,6 +193,17 @@ public final class BrightnessConfiguration implements Parcelable {
            return this;
        }

        /**
         * Set description of the brightness curve.
         *
         * @param description brief text describing the curve pushed. It maybe truncated
         *                    and will not be displayed in the UI
         */
        public Builder setDescription(@Nullable String description) {
            mDescription = description;
            return this;
        }

        /**
         * Builds the {@link BrightnessConfiguration}.
         *
@@ -159,7 +213,7 @@ public final class BrightnessConfiguration implements Parcelable {
            if (mCurveLux == null || mCurveNits == null) {
                throw new IllegalStateException("A curve must be set!");
            }
            return new BrightnessConfiguration(mCurveLux, mCurveNits);
            return new BrightnessConfiguration(mCurveLux, mCurveNits, mDescription);
        }

        private static void checkMonotonic(float[] vals, boolean strictlyIncreasing, String name) {
+4 −3
Original line number Diff line number Diff line
@@ -639,7 +639,7 @@ public final class DisplayManager {
    @TestApi
    @RequiresPermission(Manifest.permission.CONFIGURE_DISPLAY_BRIGHTNESS)
    public void setBrightnessConfiguration(BrightnessConfiguration c) {
        setBrightnessConfigurationForUser(c, UserHandle.myUserId());
        setBrightnessConfigurationForUser(c, UserHandle.myUserId(), mContext.getPackageName());
    }

    /**
@@ -650,8 +650,9 @@ public final class DisplayManager {
     *
     * @hide
     */
    public void setBrightnessConfigurationForUser(BrightnessConfiguration c, int userId) {
        mGlobal.setBrightnessConfigurationForUser(c, userId);
    public void setBrightnessConfigurationForUser(BrightnessConfiguration c, int userId,
            String packageName) {
        mGlobal.setBrightnessConfigurationForUser(c, userId, packageName);
    }

    /**
+3 −2
Original line number Diff line number Diff line
@@ -480,9 +480,10 @@ public final class DisplayManagerGlobal {
     *
     * @hide
     */
    public void setBrightnessConfigurationForUser(BrightnessConfiguration c, int userId) {
    public void setBrightnessConfigurationForUser(BrightnessConfiguration c, int userId,
            String packageName) {
        try {
            mDm.setBrightnessConfigurationForUser(c, userId);
            mDm.setBrightnessConfigurationForUser(c, userId, packageName);
        } catch (RemoteException ex) {
            throw ex.rethrowFromSystemServer();
        }
Loading