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

Commit d348974e authored by raylinhsu's avatar raylinhsu
Browse files

DO NOT MERGE Revert "Fix the ambient lux which did not update for blocking zone"

This reverts commit 400e7d5d.

Bug: 176018998
Test: atest DisplayModeDirectorTest
Change-Id: I58c60a3a124db11e9ae091831a84a704b3c4e6bf
parent d77d372d
Loading
Loading
Loading
Loading
+8 −27
Original line number Diff line number Diff line
@@ -52,12 +52,9 @@ import com.android.server.display.utils.AmbientFilterFactory;
import com.android.server.utils.DeviceConfigInterface;

import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.Locale;
import java.util.Objects;

/**
@@ -1163,8 +1160,7 @@ public class DisplayModeDirector {
        // mShouldObserveAmbientHighChange is true, screen is on, peak refresh rate
        // changeable and low power mode off. After initialization, these states will
        // be updated from the same handler thread.
        private int mDefaultDisplayState = Display.STATE_UNKNOWN;
        private boolean mIsDeviceActive = false;
        private boolean mDefaultDisplayOn = false;
        private boolean mRefreshRateChangeable = false;
        private boolean mLowPowerModeEnabled = false;

@@ -1345,8 +1341,7 @@ public class DisplayModeDirector {
            pw.println("  BrightnessObserver");
            pw.println("    mAmbientLux: " + mAmbientLux);
            pw.println("    mBrightness: " + mBrightness);
            pw.println("    mDefaultDisplayState: " + mDefaultDisplayState);
            pw.println("    mIsDeviceActive: " + mIsDeviceActive);
            pw.println("    mDefaultDisplayOn: " + mDefaultDisplayOn);
            pw.println("    mLowPowerModeEnabled: " + mLowPowerModeEnabled);
            pw.println("    mRefreshRateChangeable: " + mRefreshRateChangeable);
            pw.println("    mShouldObserveDisplayLowChange: " + mShouldObserveDisplayLowChange);
@@ -1572,17 +1567,14 @@ public class DisplayModeDirector {
        private void updateDefaultDisplayState() {
            Display display = mContext.getSystemService(DisplayManager.class)
                    .getDisplay(Display.DEFAULT_DISPLAY);
            if (display == null) {
                return;
            }

            setDefaultDisplayState(display.getState());
            boolean defaultDisplayOn = display != null && display.getState() != Display.STATE_OFF;
            setDefaultDisplayState(defaultDisplayOn);
        }

        @VisibleForTesting
        public void setDefaultDisplayState(int state) {
            if (mDefaultDisplayState != state) {
                mDefaultDisplayState = state;
        public void setDefaultDisplayState(boolean on) {
            if (mDefaultDisplayOn != on) {
                mDefaultDisplayOn = on;
                updateSensorStatus();
            }
        }
@@ -1603,19 +1595,15 @@ public class DisplayModeDirector {
        }

        private boolean isDeviceActive() {
            mIsDeviceActive = mInjector.isDeviceInteractive(mContext);
            return (mDefaultDisplayState == Display.STATE_ON)
                    && mIsDeviceActive;
            return mDefaultDisplayOn && mInjector.isDeviceInteractive(mContext);
        }

        private final class LightSensorEventListener implements SensorEventListener {
            final private static int INJECT_EVENTS_INTERVAL_MS = LIGHT_SENSOR_RATE_MS;
            private float mLastSensorData;
            private long mTimestamp;

            public void dumpLocked(PrintWriter pw) {
                pw.println("    mLastSensorData: " + mLastSensorData);
                pw.println("    mTimestamp: " + formatTimestamp(mTimestamp));
            }

            @Override
@@ -1639,7 +1627,6 @@ public class DisplayModeDirector {
                }

                long now = SystemClock.uptimeMillis();
                mTimestamp = System.currentTimeMillis();
                if (mAmbientFilter != null) {
                    mAmbientFilter.addValue(now, mLastSensorData);
                }
@@ -1666,12 +1653,6 @@ public class DisplayModeDirector {
                mHandler.removeCallbacks(mInjectSensorEventRunnable);
            }

            private String formatTimestamp(long time) {
                SimpleDateFormat dateFormat =
                        new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS", Locale.US);
                return dateFormat.format(new Date(time));
            }

            private void processSensorData(long now) {
                if (mAmbientFilter != null) {
                    mAmbientLux = mAmbientFilter.getEstimate(now);
+2 −40
Original line number Diff line number Diff line
@@ -34,7 +34,6 @@ import static org.mockito.Mockito.any;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import static org.mockito.internal.verification.VerificationModeFactory.times;

import android.annotation.NonNull;
import android.content.ContentResolver;
@@ -411,7 +410,7 @@ public class DisplayModeDirectorTest {
                createDirectorFromRefreshRateArray(new float[] {60.f, 90.f}, 0);
        setPeakRefreshRate(90);
        director.getSettingsObserver().setDefaultRefreshRate(90);
        director.getBrightnessObserver().setDefaultDisplayState(Display.STATE_ON);
        director.getBrightnessObserver().setDefaultDisplayState(true);

        final FakeDeviceConfig config = mInjector.getDeviceConfig();
        config.setRefreshRateInLowZone(90);
@@ -454,7 +453,7 @@ public class DisplayModeDirectorTest {
                createDirectorFromRefreshRateArray(new float[] {60.f, 90.f}, 0);
        setPeakRefreshRate(90 /*fps*/);
        director.getSettingsObserver().setDefaultRefreshRate(90);
        director.getBrightnessObserver().setDefaultDisplayState(Display.STATE_ON);
        director.getBrightnessObserver().setDefaultDisplayState(true);

        final FakeDeviceConfig config = mInjector.getDeviceConfig();
        config.setRefreshRateInHighZone(60);
@@ -491,43 +490,6 @@ public class DisplayModeDirectorTest {
        assertVoteForRefreshRateLocked(vote, 60 /*fps*/);
    }

    @Test
    public void testSensorRegistration() {
        DisplayModeDirector director =
                createDirectorFromRefreshRateArray(new float[] {60.f, 90.f}, 0);
        setPeakRefreshRate(90 /*fps*/);
        director.getSettingsObserver().setDefaultRefreshRate(90);
        director.getBrightnessObserver().setDefaultDisplayState(Display.STATE_ON);

        Sensor lightSensor = createLightSensor();
        SensorManager sensorManager = createMockSensorManager(lightSensor);

        director.start(sensorManager);
        ArgumentCaptor<SensorEventListener> listenerCaptor =
                ArgumentCaptor.forClass(SensorEventListener.class);
        Mockito.verify(sensorManager, Mockito.timeout(TimeUnit.SECONDS.toMillis(1)))
                .registerListener(
                        listenerCaptor.capture(),
                        eq(lightSensor),
                        anyInt(),
                        any(Handler.class));

        // Dispaly state changed from On to Doze
        director.getBrightnessObserver().setDefaultDisplayState(Display.STATE_DOZE);
        Mockito.verify(sensorManager)
                .unregisterListener(listenerCaptor.capture());

        // Dispaly state changed from Doze to On
        director.getBrightnessObserver().setDefaultDisplayState(Display.STATE_ON);
        Mockito.verify(sensorManager, times(2))
                .registerListener(
                        listenerCaptor.capture(),
                        eq(lightSensor),
                        anyInt(),
                        any(Handler.class));

    }

    private void assertVoteForRefreshRateLocked(Vote vote, float refreshRate) {
        assertThat(vote).isNotNull();
        final DisplayModeDirector.RefreshRateRange expectedRange =