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
This commit is contained in:
Beverly
2022-03-29 16:05:06 +00:00
committed by Beverly Tai
parent 6ad5af88f2
commit 8948273f59
2 changed files with 42 additions and 36 deletions

View File

@@ -147,6 +147,7 @@ public class DozeScreenBrightness extends BroadcastReceiver implements DozeMachi
setLightSensorEnabled(true);
break;
case DOZE:
case DOZE_AOD_PAUSED:
setLightSensorEnabled(false);
resetBrightnessToDefault();
break;

View File

@@ -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();
}