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

Commit 29e478b0 authored by Oleg Petšjonkin's avatar Oleg Petšjonkin Committed by Android (Google) Code Review
Browse files

Merge "Temproary disabling NBMController and HdrClamper when adaptive brightness is off" into main

parents af44dcd5 be2cc83d
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -117,6 +117,7 @@ class BrightnessRangeController {
                () -> mNormalBrightnessModeController.setAutoBrightnessState(state),
                () ->  mHbmController.setAutoBrightnessEnabled(state)
        );
        mHdrClamper.setAutoBrightnessState(state);
    }

    void onBrightnessChanged(float brightness, float unthrottledBrightness,
+4 −2
Original line number Diff line number Diff line
@@ -79,10 +79,12 @@ class NormalBrightnessModeController {
            maxBrightnessPoints = mMaxBrightnessLimits.get(BrightnessLimitMapType.ADAPTIVE);
        }

        if (maxBrightnessPoints == null) {
        // AutoBrightnessController sends ambientLux values *only* when auto brightness enabled.
        // Temporary disabling this Controller if auto brightness is off, to avoid capping
        // brightness based on stale ambient lux. The issue is tracked here: b/322445088
        if (mAutoBrightnessEnabled && maxBrightnessPoints == null) {
            maxBrightnessPoints = mMaxBrightnessLimits.get(BrightnessLimitMapType.DEFAULT);
        }

        if (maxBrightnessPoints != null) {
            for (Map.Entry<Float, Float> brightnessPoint : maxBrightnessPoints.entrySet()) {
                float ambientBoundary = brightnessPoint.getKey();
+20 −1
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ import android.os.PowerManager;
import android.view.SurfaceControlHdrLayerInfoListener;

import com.android.internal.annotations.VisibleForTesting;
import com.android.server.display.AutomaticBrightnessController;
import com.android.server.display.config.HdrBrightnessData;

import java.io.PrintWriter;
@@ -56,6 +57,8 @@ public class HdrClamper {
    private float mTransitionRate = -1f;
    private float mDesiredTransitionRate = -1f;

    private boolean mAutoBrightnessEnabled = false;

    public HdrClamper(BrightnessClamperController.ClamperChangeListener clamperChangeListener,
            Handler handler) {
        this(clamperChangeListener, handler, new Injector());
@@ -122,6 +125,18 @@ public class HdrClamper {
        recalculateBrightnessCap(data, mAmbientLux, mHdrVisible);
    }

    /**
     * Sets state of auto brightness to temporary disabling this Clamper if auto brightness is off.
     * The issue is tracked here: b/322445088
     */
    public void setAutoBrightnessState(int state) {
        boolean isEnabled = state == AutomaticBrightnessController.AUTO_BRIGHTNESS_ENABLED;
        if (isEnabled != mAutoBrightnessEnabled) {
            mAutoBrightnessEnabled = isEnabled;
            recalculateBrightnessCap(mHdrBrightnessData, mAmbientLux, mHdrVisible);
        }
    }

    /** Clean up all resources */
    @SuppressLint("AndroidFrameworkRequiresPermission")
    public void stop() {
@@ -145,6 +160,7 @@ public class HdrClamper {
                : mHdrBrightnessData.toString()));
        pw.println("  mHdrListener registered=" + (mRegisteredDisplayToken != null));
        pw.println("  mAmbientLux=" + mAmbientLux);
        pw.println("  mAutoBrightnessEnabled=" + mAutoBrightnessEnabled);
    }

    private void reset() {
@@ -163,7 +179,10 @@ public class HdrClamper {

    private void recalculateBrightnessCap(HdrBrightnessData data, float ambientLux,
            boolean hdrVisible) {
        if (data == null || !hdrVisible) {
        // AutoBrightnessController sends ambientLux values *only* when auto brightness enabled.
        // Temporary disabling this Clamper if auto brightness is off, to avoid capping
        // brightness based on stale ambient lux. The issue is tracked here: b/322445088
        if (data == null || !hdrVisible || !mAutoBrightnessEnabled) {
            reset();
            return;
        }
+15 −10
Original line number Diff line number Diff line
@@ -43,6 +43,11 @@ public class NormalBrightnessModeControllerTest {

    private final NormalBrightnessModeController mController = new NormalBrightnessModeController();

    // AutoBrightnessController sends ambientLux values *only* when auto brightness enabled.
    // NormalBrightnessModeController is temporary disabled  if auto brightness is off,
    // to avoid capping brightness based on stale ambient lux. Temporary disabling tests with
    // auto brightness off and default config pres
    // The issue is tracked here: b/322445088
    @Keep
    private static Object[][] brightnessData() {
        return new Object[][]{
@@ -59,10 +64,10 @@ public class NormalBrightnessModeControllerTest {
                        ImmutableMap.of(99f, 0.1f, 101f, 0.2f)
                ), 0.2f},
                // Auto brightness - off, config only for default
                {100, AutomaticBrightnessController.AUTO_BRIGHTNESS_DISABLED, ImmutableMap.of(
                        BrightnessLimitMapType.DEFAULT,
                        ImmutableMap.of(99f, 0.1f, 101f, 0.2f)
                ), 0.2f},
                // {100, AutomaticBrightnessController.AUTO_BRIGHTNESS_DISABLED, ImmutableMap.of(
                //        BrightnessLimitMapType.DEFAULT,
                //        ImmutableMap.of(99f, 0.1f, 101f, 0.2f)
                // ), 0.2f},
                // Auto brightness - off, config only for adaptive
                {100, AutomaticBrightnessController.AUTO_BRIGHTNESS_DISABLED, ImmutableMap.of(
                        BrightnessLimitMapType.ADAPTIVE,
@@ -81,12 +86,12 @@ public class NormalBrightnessModeControllerTest {
                        ImmutableMap.of(99f, 0.3f, 101f, 0.4f)
                ), 0.4f},
                // Auto brightness - off, config for both
                {100, AutomaticBrightnessController.AUTO_BRIGHTNESS_DISABLED, ImmutableMap.of(
                        BrightnessLimitMapType.DEFAULT,
                        ImmutableMap.of(99f, 0.1f, 101f, 0.2f),
                        BrightnessLimitMapType.ADAPTIVE,
                        ImmutableMap.of(99f, 0.3f, 101f, 0.4f)
                ), 0.2f},
                // {100, AutomaticBrightnessController.AUTO_BRIGHTNESS_DISABLED, ImmutableMap.of(
                //        BrightnessLimitMapType.DEFAULT,
                //        ImmutableMap.of(99f, 0.1f, 101f, 0.2f),
                //        BrightnessLimitMapType.ADAPTIVE,
                //        ImmutableMap.of(99f, 0.3f, 101f, 0.4f)
                // ), 0.2f},
                // Auto brightness - on, config for both, ambient high
                {1000, AutomaticBrightnessController.AUTO_BRIGHTNESS_ENABLED, ImmutableMap.of(
                        BrightnessLimitMapType.DEFAULT,
+6 −0
Original line number Diff line number Diff line
@@ -33,6 +33,7 @@ import android.os.PowerManager;

import androidx.test.filters.SmallTest;

import com.android.server.display.AutomaticBrightnessController;
import com.android.server.display.config.HdrBrightnessData;
import com.android.server.testutils.OffsettableClock;
import com.android.server.testutils.TestHandler;
@@ -230,6 +231,11 @@ public class HdrClamperTest {
    }

    private void configureClamper() {
        // AutoBrightnessController sends ambientLux values *only* when auto brightness enabled.
        // HdrClamper is temporary disabled  if auto brightness is off.
        // Temporary setting AutoBrightnessState to enabled for this test
        // The issue is tracked here: b/322445088
        mHdrClamper.setAutoBrightnessState(AutomaticBrightnessController.AUTO_BRIGHTNESS_ENABLED);
        mHdrClamper.resetHdrConfig(TEST_HDR_DATA, WIDTH, HEIGHT, MIN_HDR_PERCENT, mMockBinder);
        mHdrChangeListener.onHdrVisible(true);
    }