From 8948273f59ba8f9508df359c5df2c47933b82798 Mon Sep 17 00:00:00 2001 From: Beverly Date: Tue, 29 Mar 2022 16:05:06 +0000 Subject: [PATCH] Update brightness sensor registration on AOD_PAUSED changes So that the binned brightness sensor immediately updates the brightness rather than using its 2-3 second debouncing logic. This prevents a delay in reporting brightness updates when the device's proximity sensor stops being covered. Test: atest DozeScreenBrightnessTest Fixes: 200768925 Change-Id: Ib1158894d4f7b303247feacd24664f628663d733 --- .../systemui/doze/DozeScreenBrightness.java | 1 + .../doze/DozeScreenBrightnessTest.java | 77 ++++++++++--------- 2 files changed, 42 insertions(+), 36 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeScreenBrightness.java b/packages/SystemUI/src/com/android/systemui/doze/DozeScreenBrightness.java index dfb27eff722b0..0024a460136ed 100644 --- a/packages/SystemUI/src/com/android/systemui/doze/DozeScreenBrightness.java +++ b/packages/SystemUI/src/com/android/systemui/doze/DozeScreenBrightness.java @@ -147,6 +147,7 @@ public class DozeScreenBrightness extends BroadcastReceiver implements DozeMachi setLightSensorEnabled(true); break; case DOZE: + case DOZE_AOD_PAUSED: setLightSensorEnabled(false); resetBrightnessToDefault(); break; diff --git a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeScreenBrightnessTest.java b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeScreenBrightnessTest.java index f4b378e6c19c1..4736587e69557 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeScreenBrightnessTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeScreenBrightnessTest.java @@ -210,20 +210,6 @@ public class DozeScreenBrightnessTest extends SysuiTestCase { assertEquals(3, mServiceFake.screenBrightness); } - @Test - public void testPausingAod_doesNotResetBrightness() throws Exception { - mScreen.transitionTo(UNINITIALIZED, INITIALIZED); - mScreen.transitionTo(INITIALIZED, DOZE_AOD); - waitForSensorManager(); - - mSensor.sendSensorEvent(1); - - mScreen.transitionTo(DOZE_AOD, DOZE_AOD_PAUSING); - mScreen.transitionTo(DOZE_AOD_PAUSING, DOZE_AOD_PAUSED); - - assertEquals(1, mServiceFake.screenBrightness); - } - @Test public void testPulsing_withoutLightSensor_setsAoDDimmingScrimTransparent() throws Exception { mScreen = new DozeScreenBrightness( @@ -431,37 +417,18 @@ public class DozeScreenBrightnessTest extends SysuiTestCase { } @Test - public void pausingAod_unblanksAfterSensor() { + public void pausingAod_unblanksAfterSensorEvent() { mScreen.transitionTo(UNINITIALIZED, INITIALIZED); mScreen.transitionTo(INITIALIZED, DOZE_AOD); waitForSensorManager(); - mSensor.sendSensorEvent(2); - - mScreen.transitionTo(DOZE_AOD, DOZE_AOD_PAUSING); - mScreen.transitionTo(DOZE_AOD_PAUSING, DOZE_AOD_PAUSED); - - mSensor.sendSensorEvent(0); - - reset(mDozeHost); - mScreen.transitionTo(DOZE_AOD_PAUSED, DOZE_AOD); - waitForSensorManager(); - mSensor.sendSensorEvent(2); - verify(mDozeHost).setAodDimmingScrim(eq(0f)); - } - - @Test - public void pausingAod_unblanksIfSensorWasAlwaysReady() throws Exception { - mScreen.transitionTo(UNINITIALIZED, INITIALIZED); - mScreen.transitionTo(INITIALIZED, DOZE_AOD); - waitForSensorManager(); - - mSensor.sendSensorEvent(2); mScreen.transitionTo(DOZE_AOD, DOZE_AOD_PAUSING); mScreen.transitionTo(DOZE_AOD_PAUSING, DOZE_AOD_PAUSED); reset(mDozeHost); mScreen.transitionTo(DOZE_AOD_PAUSED, DOZE_AOD); + waitForSensorManager(); + mSensor.sendSensorEvent(2); verify(mDozeHost).setAodDimmingScrim(eq(0f)); } @@ -538,6 +505,44 @@ public class DozeScreenBrightnessTest extends SysuiTestCase { assertEquals(mServiceFake.screenBrightness, DEFAULT_BRIGHTNESS); } + @Test + public void transitionToAodPaused_resetsToDefaultBrightness_lightSensorDisabled() { + // GIVEN AOD + mScreen.transitionTo(UNINITIALIZED, INITIALIZED); + mScreen.transitionTo(INITIALIZED, DOZE_AOD); + + // WHEN AOD is paused + mScreen.transitionTo(DOZE_AOD, DOZE_AOD_PAUSING); + mScreen.transitionTo(DOZE_AOD, DOZE_AOD_PAUSED); + waitForSensorManager(); + + // THEN brightness is reset and light sensor is unregistered + assertEquals(mServiceFake.screenBrightness, DEFAULT_BRIGHTNESS); + + // THEN new light events don't update brightness since the light sensor was unregistered + mSensor.sendSensorEvent(1); + assertEquals(mServiceFake.screenBrightness, DEFAULT_BRIGHTNESS); + } + + @Test + public void transitionFromAodPausedToAod_lightSensorEnabled() { + // GIVEN AOD paused + mScreen.transitionTo(UNINITIALIZED, INITIALIZED); + mScreen.transitionTo(INITIALIZED, DOZE_AOD); + mScreen.transitionTo(DOZE_AOD, DOZE_AOD_PAUSING); + mScreen.transitionTo(DOZE_AOD, DOZE_AOD_PAUSED); + + // WHEN device transitions back to AOD + mScreen.transitionTo(DOZE_AOD_PAUSED, DOZE_AOD); + waitForSensorManager(); + + // WHEN there are brightness changes + mSensor.sendSensorEvent(1); + + // THEN aod brightness is updated + assertEquals(mServiceFake.screenBrightness, 1); + } + private void waitForSensorManager() { mFakeExecutor.runAllReady(); }