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

Commit 1c915ca4 authored by Android Build Coastguard Worker's avatar Android Build Coastguard Worker
Browse files

Merge cherrypicks of ['googleplex-android-review.googlesource.com/23735401'] into udc-qpr1-release.

Change-Id: Ib6ce9b81e1264a6c98c5c2f5403a6577f370e88e
parents 41d38f60 33617e12
Loading
Loading
Loading
Loading
+18 −26
Original line number Original line Diff line number Diff line
@@ -515,9 +515,7 @@ public class DisplayDeviceConfig {
    private final SensorData mScreenOffBrightnessSensor = new SensorData();
    private final SensorData mScreenOffBrightnessSensor = new SensorData();


    // The details of the proximity sensor associated with this display.
    // The details of the proximity sensor associated with this display.
    // Is null when no sensor should be used for that display
    private final SensorData mProximitySensor = new SensorData();
    @Nullable
    private SensorData mProximitySensor = new SensorData();


    private final List<RefreshRateLimitation> mRefreshRateLimitations =
    private final List<RefreshRateLimitation> mRefreshRateLimitations =
            new ArrayList<>(2 /*initialCapacity*/);
            new ArrayList<>(2 /*initialCapacity*/);
@@ -1339,7 +1337,6 @@ public class DisplayDeviceConfig {
        return mScreenOffBrightnessSensor;
        return mScreenOffBrightnessSensor;
    }
    }


    @Nullable
    SensorData getProximitySensor() {
    SensorData getProximitySensor() {
        return mProximitySensor;
        return mProximitySensor;
    }
    }
@@ -2566,51 +2563,46 @@ public class DisplayDeviceConfig {
    private void loadAmbientLightSensorFromDdc(DisplayConfiguration config) {
    private void loadAmbientLightSensorFromDdc(DisplayConfiguration config) {
        final SensorDetails sensorDetails = config.getLightSensor();
        final SensorDetails sensorDetails = config.getLightSensor();
        if (sensorDetails != null) {
        if (sensorDetails != null) {
            loadSensorData(sensorDetails, mAmbientLightSensor);
            mAmbientLightSensor.type = sensorDetails.getType();
            mAmbientLightSensor.name = sensorDetails.getName();
            final RefreshRateRange rr = sensorDetails.getRefreshRate();
            if (rr != null) {
                mAmbientLightSensor.minRefreshRate = rr.getMinimum().floatValue();
                mAmbientLightSensor.maxRefreshRate = rr.getMaximum().floatValue();
            }
        } else {
        } else {
            loadAmbientLightSensorFromConfigXml();
            loadAmbientLightSensorFromConfigXml();
        }
        }
    }
    }


    private void setProxSensorUnspecified() {
    private void setProxSensorUnspecified() {
        mProximitySensor = new SensorData();
        mProximitySensor.name = null;
        mProximitySensor.type = null;
    }
    }


    private void loadScreenOffBrightnessSensorFromDdc(DisplayConfiguration config) {
    private void loadScreenOffBrightnessSensorFromDdc(DisplayConfiguration config) {
        final SensorDetails sensorDetails = config.getScreenOffBrightnessSensor();
        final SensorDetails sensorDetails = config.getScreenOffBrightnessSensor();
        if (sensorDetails != null) {
        if (sensorDetails != null) {
            loadSensorData(sensorDetails, mScreenOffBrightnessSensor);
            mScreenOffBrightnessSensor.type = sensorDetails.getType();
            mScreenOffBrightnessSensor.name = sensorDetails.getName();
        }
        }
    }
    }


    private void loadProxSensorFromDdc(DisplayConfiguration config) {
    private void loadProxSensorFromDdc(DisplayConfiguration config) {
        SensorDetails sensorDetails = config.getProxSensor();
        SensorDetails sensorDetails = config.getProxSensor();
        if (sensorDetails != null) {
        if (sensorDetails != null) {
            String name = sensorDetails.getName();
            mProximitySensor.name = sensorDetails.getName();
            String type = sensorDetails.getType();
            mProximitySensor.type = sensorDetails.getType();
            if ("".equals(name) && "".equals(type)) {
            final RefreshRateRange rr = sensorDetails.getRefreshRate();
                // <proxSensor> with empty values to the config means no sensor should be used
            if (rr != null) {
                mProximitySensor = null;
                mProximitySensor.minRefreshRate = rr.getMinimum().floatValue();
            } else {
                mProximitySensor.maxRefreshRate = rr.getMaximum().floatValue();
                mProximitySensor = new SensorData();
                loadSensorData(sensorDetails, mProximitySensor);
            }
            }
        } else {
        } else {
            setProxSensorUnspecified();
            setProxSensorUnspecified();
        }
        }
    }
    }


    private void loadSensorData(@NonNull SensorDetails sensorDetails,
            @NonNull SensorData sensorData) {
        sensorData.name = sensorDetails.getName();
        sensorData.type = sensorDetails.getType();
        final RefreshRateRange rr = sensorDetails.getRefreshRate();
        if (rr != null) {
            sensorData.minRefreshRate = rr.getMinimum().floatValue();
            sensorData.maxRefreshRate = rr.getMaximum().floatValue();
        }
    }

    private void loadBrightnessChangeThresholdsFromXml() {
    private void loadBrightnessChangeThresholdsFromXml() {
        loadBrightnessChangeThresholds(/* config= */ null);
        loadBrightnessChangeThresholds(/* config= */ null);
    }
    }
+11 −5
Original line number Original line Diff line number Diff line
@@ -2301,23 +2301,29 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call
    }
    }


    private void loadAmbientLightSensor() {
    private void loadAmbientLightSensor() {
        DisplayDeviceConfig.SensorData lightSensor = mDisplayDeviceConfig.getAmbientLightSensor();
        final int fallbackType = mDisplayId == Display.DEFAULT_DISPLAY
        final int fallbackType = mDisplayId == Display.DEFAULT_DISPLAY
                ? Sensor.TYPE_LIGHT : SensorUtils.NO_FALLBACK;
                ? Sensor.TYPE_LIGHT : SensorUtils.NO_FALLBACK;
        mLightSensor = SensorUtils.findSensor(mSensorManager,
        mLightSensor = SensorUtils.findSensor(mSensorManager, lightSensor.type, lightSensor.name,
                mDisplayDeviceConfig.getAmbientLightSensor(), fallbackType);
                fallbackType);
    }
    }


    private void loadScreenOffBrightnessSensor() {
    private void loadScreenOffBrightnessSensor() {
        DisplayDeviceConfig.SensorData screenOffBrightnessSensor =
                mDisplayDeviceConfig.getScreenOffBrightnessSensor();
        mScreenOffBrightnessSensor = SensorUtils.findSensor(mSensorManager,
        mScreenOffBrightnessSensor = SensorUtils.findSensor(mSensorManager,
                mDisplayDeviceConfig.getScreenOffBrightnessSensor(), SensorUtils.NO_FALLBACK);
                screenOffBrightnessSensor.type, screenOffBrightnessSensor.name,
                SensorUtils.NO_FALLBACK);
    }
    }


    private void loadProximitySensor() {
    private void loadProximitySensor() {
        if (DEBUG_PRETEND_PROXIMITY_SENSOR_ABSENT || mDisplayId != Display.DEFAULT_DISPLAY) {
        if (DEBUG_PRETEND_PROXIMITY_SENSOR_ABSENT || mDisplayId != Display.DEFAULT_DISPLAY) {
            return;
            return;
        }
        }
        mProximitySensor = SensorUtils.findSensor(mSensorManager,
        final DisplayDeviceConfig.SensorData proxSensor =
                mDisplayDeviceConfig.getProximitySensor(), Sensor.TYPE_PROXIMITY);
                mDisplayDeviceConfig.getProximitySensor();
        mProximitySensor = SensorUtils.findSensor(mSensorManager, proxSensor.type, proxSensor.name,
                Sensor.TYPE_PROXIMITY);
        if (mProximitySensor != null) {
        if (mProximitySensor != null) {
            mProximityThreshold = Math.min(mProximitySensor.getMaximumRange(),
            mProximityThreshold = Math.min(mProximitySensor.getMaximumRange(),
                    TYPICAL_PROXIMITY_THRESHOLD);
                    TYPICAL_PROXIMITY_THRESHOLD);
+7 −3
Original line number Original line Diff line number Diff line
@@ -1948,15 +1948,19 @@ final class DisplayPowerController2 implements AutomaticBrightnessController.Cal
    }
    }


    private void loadAmbientLightSensor() {
    private void loadAmbientLightSensor() {
        DisplayDeviceConfig.SensorData lightSensor = mDisplayDeviceConfig.getAmbientLightSensor();
        final int fallbackType = mDisplayId == Display.DEFAULT_DISPLAY
        final int fallbackType = mDisplayId == Display.DEFAULT_DISPLAY
                ? Sensor.TYPE_LIGHT : SensorUtils.NO_FALLBACK;
                ? Sensor.TYPE_LIGHT : SensorUtils.NO_FALLBACK;
        mLightSensor = SensorUtils.findSensor(mSensorManager,
        mLightSensor = SensorUtils.findSensor(mSensorManager, lightSensor.type, lightSensor.name,
                mDisplayDeviceConfig.getAmbientLightSensor(), fallbackType);
                fallbackType);
    }
    }


    private void loadScreenOffBrightnessSensor() {
    private void loadScreenOffBrightnessSensor() {
        DisplayDeviceConfig.SensorData screenOffBrightnessSensor =
                mDisplayDeviceConfig.getScreenOffBrightnessSensor();
        mScreenOffBrightnessSensor = SensorUtils.findSensor(mSensorManager,
        mScreenOffBrightnessSensor = SensorUtils.findSensor(mSensorManager,
                mDisplayDeviceConfig.getScreenOffBrightnessSensor(), SensorUtils.NO_FALLBACK);
                screenOffBrightnessSensor.type, screenOffBrightnessSensor.name,
                SensorUtils.NO_FALLBACK);
    }
    }


    private float clampScreenBrightness(float value) {
    private float clampScreenBrightness(float value) {
+4 −2
Original line number Original line Diff line number Diff line
@@ -358,8 +358,10 @@ public final class DisplayPowerProximityStateController {
        if (DEBUG_PRETEND_PROXIMITY_SENSOR_ABSENT || mDisplayId != Display.DEFAULT_DISPLAY) {
        if (DEBUG_PRETEND_PROXIMITY_SENSOR_ABSENT || mDisplayId != Display.DEFAULT_DISPLAY) {
            return;
            return;
        }
        }
        mProximitySensor = SensorUtils.findSensor(mSensorManager,
        final DisplayDeviceConfig.SensorData proxSensor =
                mDisplayDeviceConfig.getProximitySensor(), Sensor.TYPE_PROXIMITY);
                mDisplayDeviceConfig.getProximitySensor();
        mProximitySensor = SensorUtils.findSensor(mSensorManager, proxSensor.type, proxSensor.name,
                Sensor.TYPE_PROXIMITY);
        if (mProximitySensor != null) {
        if (mProximitySensor != null) {
            mProximityThreshold = Math.min(mProximitySensor.getMaximumRange(),
            mProximityThreshold = Math.min(mProximitySensor.getMaximumRange(),
                    TYPICAL_PROXIMITY_THRESHOLD);
                    TYPICAL_PROXIMITY_THRESHOLD);
+6 −18
Original line number Original line Diff line number Diff line
@@ -16,13 +16,10 @@


package com.android.server.display.utils;
package com.android.server.display.utils;


import android.annotation.Nullable;
import android.hardware.Sensor;
import android.hardware.Sensor;
import android.hardware.SensorManager;
import android.hardware.SensorManager;
import android.text.TextUtils;
import android.text.TextUtils;


import com.android.server.display.DisplayDeviceConfig;

import java.util.List;
import java.util.List;


/**
/**
@@ -31,27 +28,18 @@ import java.util.List;
public class SensorUtils {
public class SensorUtils {
    public static final int NO_FALLBACK = 0;
    public static final int NO_FALLBACK = 0;


    /**
     * Finds the specified sensor for SensorData from DisplayDeviceConfig.
     */
    @Nullable
    public static Sensor findSensor(@Nullable SensorManager sensorManager,
            @Nullable DisplayDeviceConfig.SensorData sensorData, int fallbackType) {
        if (sensorData == null) {
            return null;
        } else {
            return findSensor(sensorManager, sensorData.type, sensorData.name, fallbackType);
        }
    }
    /**
    /**
     * Finds the specified sensor by type and name using SensorManager.
     * Finds the specified sensor by type and name using SensorManager.
     */
     */
    @Nullable
    public static Sensor findSensor(SensorManager sensorManager, String sensorType,
    public static Sensor findSensor(@Nullable SensorManager sensorManager,
            String sensorName, int fallbackType) {
            @Nullable String sensorType, @Nullable String sensorName, int fallbackType) {
        if (sensorManager == null) {
        if (sensorManager == null) {
            return null;
            return null;
        }
        }

        if ("".equals(sensorName) && "".equals(sensorType)) {
            return null;
        }
        final boolean isNameSpecified = !TextUtils.isEmpty(sensorName);
        final boolean isNameSpecified = !TextUtils.isEmpty(sensorName);
        final boolean isTypeSpecified = !TextUtils.isEmpty(sensorType);
        final boolean isTypeSpecified = !TextUtils.isEmpty(sensorType);
        if (isNameSpecified || isTypeSpecified) {
        if (isNameSpecified || isTypeSpecified) {
Loading