From d348974ecd0570d5884ee033e5c180ed7447940e Mon Sep 17 00:00:00 2001 From: raylinhsu Date: Wed, 13 Jan 2021 13:06:15 +0800 Subject: [PATCH] DO NOT MERGE Revert "Fix the ambient lux which did not update for blocking zone" This reverts commit 400e7d5dda91c58690f8febba4132856e560663d. Bug: 176018998 Test: atest DisplayModeDirectorTest Change-Id: I58c60a3a124db11e9ae091831a84a704b3c4e6bf --- .../server/display/DisplayModeDirector.java | 35 ++++------------ .../display/DisplayModeDirectorTest.java | 42 +------------------ 2 files changed, 10 insertions(+), 67 deletions(-) diff --git a/services/core/java/com/android/server/display/DisplayModeDirector.java b/services/core/java/com/android/server/display/DisplayModeDirector.java index 29a77e2b6ef23..02ee059194ec3 100644 --- a/services/core/java/com/android/server/display/DisplayModeDirector.java +++ b/services/core/java/com/android/server/display/DisplayModeDirector.java @@ -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); diff --git a/services/tests/servicestests/src/com/android/server/display/DisplayModeDirectorTest.java b/services/tests/servicestests/src/com/android/server/display/DisplayModeDirectorTest.java index e202145b7dbee..c467ee949aeba 100644 --- a/services/tests/servicestests/src/com/android/server/display/DisplayModeDirectorTest.java +++ b/services/tests/servicestests/src/com/android/server/display/DisplayModeDirectorTest.java @@ -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 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 =