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

Commit 16b4fa40 authored by Rupesh Bansal's avatar Rupesh Bansal
Browse files

Added OverrideBrightnessStrategy

Bug: 259411444
Test: atest OverrideBrightnessStrategyTest
Change-Id: Ifb48a9e93a51f3c39956d82bf9b861388a10ef50
parent 5909714e
Loading
Loading
Loading
Loading
+0 −11
Original line number Diff line number Diff line
@@ -299,7 +299,6 @@ final class DisplayPowerController2 implements AutomaticBrightnessController.Cal
    private boolean mAppliedAutoBrightness;
    private boolean mAppliedDimming;
    private boolean mAppliedLowPower;
    private boolean mAppliedScreenBrightnessOverride;
    private boolean mAppliedTemporaryBrightness;
    private boolean mAppliedTemporaryAutoBrightnessAdjustment;
    private boolean mAppliedBrightnessBoost;
@@ -1202,15 +1201,6 @@ final class DisplayPowerController2 implements AutomaticBrightnessController.Cal
            mBrightnessReasonTemp.setReason(BrightnessReason.REASON_VR);
        }

        if ((Float.isNaN(brightnessState))
                && isValidBrightnessValue(mPowerRequest.screenBrightnessOverride)) {
            brightnessState = mPowerRequest.screenBrightnessOverride;
            mBrightnessReasonTemp.setReason(BrightnessReason.REASON_OVERRIDE);
            mAppliedScreenBrightnessOverride = true;
        } else {
            mAppliedScreenBrightnessOverride = false;
        }

        final boolean autoBrightnessEnabledInDoze =
                mDisplayBrightnessController.isAllowAutoBrightnessWhileDozingConfig()
                        && Display.isDozeState(state);
@@ -2316,7 +2306,6 @@ final class DisplayPowerController2 implements AutomaticBrightnessController.Cal
        pw.println("  mAppliedDimming=" + mAppliedDimming);
        pw.println("  mAppliedLowPower=" + mAppliedLowPower);
        pw.println("  mAppliedThrottling=" + mAppliedThrottling);
        pw.println("  mAppliedScreenBrightnessOverride=" + mAppliedScreenBrightnessOverride);
        pw.println("  mAppliedTemporaryBrightness=" + mAppliedTemporaryBrightness);
        pw.println("  mAppliedTemporaryAutoBrightnessAdjustment="
                + mAppliedTemporaryAutoBrightnessAdjustment);
+48 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2022 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.android.server.display.brightness;

import android.os.PowerManager;

import com.android.server.display.DisplayBrightnessState;

/**
 * A helper class for eualuating brightness utilities
 */
public final class BrightnessUtils {
    /**
     * Checks whether the brightness is within the valid brightness range, not including off.
     */
    public static boolean isValidBrightnessValue(float brightness) {
        return brightness >= PowerManager.BRIGHTNESS_MIN
                && brightness <= PowerManager.BRIGHTNESS_MAX;
    }

    /**
     * A utility to construct the DisplayBrightnessState
     */
    public static DisplayBrightnessState constructDisplayBrightnessState(
            int brightnessChangeReason, float brightness, float sdrBrightness) {
        BrightnessReason brightnessReason = new BrightnessReason();
        brightnessReason.setReason(brightnessChangeReason);
        return new DisplayBrightnessState.Builder()
                .setBrightness(brightness)
                .setSdrBrightness(sdrBrightness)
                .setBrightnessReason(brightnessReason)
                .build();
    }
}
+8 −2
Original line number Diff line number Diff line
@@ -34,6 +34,7 @@ public final class DisplayBrightnessController {
    private final int mDisplayId;
    // Selects an appropriate strategy based on the request provided by the clients.
    private DisplayBrightnessStrategySelector mDisplayBrightnessStrategySelector;
    private DisplayBrightnessStrategy mDisplayBrightnessStrategy;

    /**
     * The constructor of DisplayBrightnessController.
@@ -60,10 +61,10 @@ public final class DisplayBrightnessController {
    public DisplayBrightnessState updateBrightness(
            DisplayManagerInternal.DisplayPowerRequest displayPowerRequest,
            int targetDisplayState) {
        DisplayBrightnessStrategy displayBrightnessStrategy =
        mDisplayBrightnessStrategy =
                mDisplayBrightnessStrategySelector.selectStrategy(displayPowerRequest,
                        targetDisplayState);
        return displayBrightnessStrategy.updateBrightness(displayPowerRequest);
        return mDisplayBrightnessStrategy.updateBrightness(displayPowerRequest);
    }

    /**
@@ -82,6 +83,11 @@ public final class DisplayBrightnessController {
    public void dump(PrintWriter writer) {
        writer.println();
        writer.println("DisplayBrightnessController:");
        writer.println("  mDisplayId=: " + mDisplayId);
        if (mDisplayBrightnessStrategy != null) {
            writer.println("  Last selected DisplayBrightnessStrategy= "
                    + mDisplayBrightnessStrategy.getName());
        }
        IndentingPrintWriter ipw = new IndentingPrintWriter(writer, " ");
        mDisplayBrightnessStrategySelector.dump(ipw);
    }
+15 −1
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@ import com.android.internal.annotations.VisibleForTesting;
import com.android.server.display.brightness.strategy.DisplayBrightnessStrategy;
import com.android.server.display.brightness.strategy.DozeBrightnessStrategy;
import com.android.server.display.brightness.strategy.InvalidBrightnessStrategy;
import com.android.server.display.brightness.strategy.OverrideBrightnessStrategy;
import com.android.server.display.brightness.strategy.ScreenOffBrightnessStrategy;

import java.io.PrintWriter;
@@ -46,6 +47,8 @@ public class DisplayBrightnessStrategySelector {
    private final ScreenOffBrightnessStrategy mScreenOffBrightnessStrategy;
    // The brightness strategy used to manage the brightness state when the request state is
    // invalid.
    private final OverrideBrightnessStrategy mOverrideBrightnessStrategy;
    // The brightness strategy used to manage the brightness state request is invalid.
    private final InvalidBrightnessStrategy mInvalidBrightnessStrategy;

    // We take note of the old brightness strategy so that we can know when the strategy changes.
@@ -63,6 +66,7 @@ public class DisplayBrightnessStrategySelector {
        mDisplayId = displayId;
        mDozeBrightnessStrategy = injector.getDozeBrightnessStrategy();
        mScreenOffBrightnessStrategy = injector.getScreenOffBrightnessStrategy();
        mOverrideBrightnessStrategy = injector.getOverrideBrightnessStrategy();
        mInvalidBrightnessStrategy = injector.getInvalidBrightnessStrategy();
        mAllowAutoBrightnessWhileDozingConfig = context.getResources().getBoolean(
                R.bool.config_allowAutoBrightnessWhileDozing);
@@ -82,6 +86,9 @@ public class DisplayBrightnessStrategySelector {
            displayBrightnessStrategy = mScreenOffBrightnessStrategy;
        } else if (shouldUseDozeBrightnessStrategy(displayPowerRequest)) {
            displayBrightnessStrategy = mDozeBrightnessStrategy;
        } else if (BrightnessUtils
                .isValidBrightnessValue(displayPowerRequest.screenBrightnessOverride)) {
            displayBrightnessStrategy = mOverrideBrightnessStrategy;
        }

        if (!mOldBrightnessStrategyName.equals(displayBrightnessStrategy.getName())) {
@@ -108,8 +115,11 @@ public class DisplayBrightnessStrategySelector {
    public void dump(PrintWriter writer) {
        writer.println();
        writer.println("DisplayBrightnessStrategySelector:");
        writer.println("  mDisplayId= " + mDisplayId);
        writer.println("  mOldBrightnessStrategyName= " + mOldBrightnessStrategyName);
        writer.println(
                "  mAllowAutoBrightnessWhileDozingConfig=" + mAllowAutoBrightnessWhileDozingConfig);
                "  mAllowAutoBrightnessWhileDozingConfig= "
                        + mAllowAutoBrightnessWhileDozingConfig);
    }

    /**
@@ -138,6 +148,10 @@ public class DisplayBrightnessStrategySelector {
            return new DozeBrightnessStrategy();
        }

        OverrideBrightnessStrategy getOverrideBrightnessStrategy() {
            return new OverrideBrightnessStrategy();
        }

        InvalidBrightnessStrategy getInvalidBrightnessStrategy() {
            return new InvalidBrightnessStrategy();
        }
+3 −7
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ import android.hardware.display.DisplayManagerInternal;

import com.android.server.display.DisplayBrightnessState;
import com.android.server.display.brightness.BrightnessReason;
import com.android.server.display.brightness.BrightnessUtils;

/**
 * Manages the brightness of the display when the system is in the doze state.
@@ -30,13 +31,8 @@ public class DozeBrightnessStrategy implements DisplayBrightnessStrategy {
    public DisplayBrightnessState updateBrightness(
            DisplayManagerInternal.DisplayPowerRequest displayPowerRequest) {
        // Todo(brup): Introduce a validator class and add validations before setting the brightness
        BrightnessReason brightnessReason = new BrightnessReason();
        brightnessReason.setReason(BrightnessReason.REASON_DOZE);
        return new DisplayBrightnessState.Builder()
                .setBrightness(displayPowerRequest.dozeScreenBrightness)
                .setSdrBrightness(displayPowerRequest.dozeScreenBrightness)
                .setBrightnessReason(brightnessReason)
                .build();
        return BrightnessUtils.constructDisplayBrightnessState(BrightnessReason.REASON_DOZE,
                displayPowerRequest.dozeScreenBrightness, displayPowerRequest.dozeScreenBrightness);
    }

    @Override
Loading