From 74580d1f201d3ec9faa24d888549e77b08666264 Mon Sep 17 00:00:00 2001 From: Beverly Date: Thu, 2 Sep 2021 07:51:28 -0400 Subject: [PATCH] Register for doze brightness as soon as we can On devices with under display prox, binned brightness no longer uses the prox sensor, so let's remove the brightnessUsesProx config that was only used for devices with under display prox (to avoid the blinking white dot). We now also no longer need to wait on the screen state to change to dozing states to register for the brightness sensor since the brightness sensor doesn't check prox. Test: manual, atest DozeScreenBrightnessTest Fixes: 194151347 Change-Id: Ie5110585b683accccc1066a06b069072947ffb3f --- packages/SystemUI/res/values/config.xml | 5 - .../systemui/doze/DozeScreenBrightness.java | 25 ++-- .../statusbar/phone/DozeParameters.java | 9 +- .../systemui/doze/DozeConfigurationUtil.java | 1 - .../doze/DozeScreenBrightnessTest.java | 122 ++++++------------ 5 files changed, 46 insertions(+), 116 deletions(-) diff --git a/packages/SystemUI/res/values/config.xml b/packages/SystemUI/res/values/config.xml index b6d5b3a6760ac..d274c917c26df 100644 --- a/packages/SystemUI/res/values/config.xml +++ b/packages/SystemUI/res/values/config.xml @@ -194,11 +194,6 @@ low powered state yet. --> true - - true - true diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeScreenBrightness.java b/packages/SystemUI/src/com/android/systemui/doze/DozeScreenBrightness.java index 98d2739836a90..da7b389fbd36e 100644 --- a/packages/SystemUI/src/com/android/systemui/doze/DozeScreenBrightness.java +++ b/packages/SystemUI/src/com/android/systemui/doze/DozeScreenBrightness.java @@ -29,7 +29,6 @@ import android.os.SystemProperties; import android.os.Trace; import android.os.UserHandle; import android.provider.Settings; -import android.view.Display; import com.android.systemui.dock.DockManager; import com.android.systemui.doze.dagger.BrightnessSensor; @@ -111,7 +110,15 @@ public class DozeScreenBrightness extends BroadcastReceiver implements DozeMachi public void transitionTo(DozeMachine.State oldState, DozeMachine.State newState) { switch (newState) { case INITIALIZED: + resetBrightnessToDefault(); + break; + case DOZE_AOD: + case DOZE_REQUEST_PULSE: + case DOZE_AOD_DOCKED: + setLightSensorEnabled(true); + break; case DOZE: + setLightSensorEnabled(false); resetBrightnessToDefault(); break; case FINISH: @@ -124,22 +131,6 @@ public class DozeScreenBrightness extends BroadcastReceiver implements DozeMachi } } - @Override - public void onScreenState(int state) { - boolean isDockedScreenOn = state == Display.STATE_ON && mDockManager.isDocked(); - if (state == Display.STATE_DOZE || state == Display.STATE_DOZE_SUSPEND - || (isDockedScreenOn && shouldRegisterLightSensorWhenScreenOnDocked())) { - setLightSensorEnabled(true); - } else { - setLightSensorEnabled(false); - } - } - - private boolean shouldRegisterLightSensorWhenScreenOnDocked() { - return !mDozeParameters.brightnessUsesProx() - || !mDozeParameters.getSelectivelyRegisterSensorsUsingProx(); - } - private void onDestroy() { setLightSensorEnabled(false); } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeParameters.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeParameters.java index 36f6c4fd57a29..e67c6ac3a7c8d 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeParameters.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeParameters.java @@ -267,13 +267,6 @@ public class DozeParameters implements TunerService.Tunable, return mResources.getBoolean(R.bool.doze_long_press_uses_prox); } - /** - * Whether the brightness sensor uses the proximity sensor. - */ - public boolean brightnessUsesProx() { - return mResources.getBoolean(R.bool.doze_brightness_uses_prox); - } - /** * Callback to listen for DozeParameter changes. */ @@ -298,6 +291,7 @@ public class DozeParameters implements TunerService.Tunable, @Override public void dump(@NonNull FileDescriptor fd, @NonNull PrintWriter pw, @NonNull String[] args) { + pw.print("getAlwaysOn(): "); pw.println(getAlwaysOn()); pw.print("getDisplayStateSupported(): "); pw.println(getDisplayStateSupported()); pw.print("getPulseDuration(): "); pw.println(getPulseDuration()); pw.print("getPulseInDuration(): "); pw.println(getPulseInDuration()); @@ -310,7 +304,6 @@ public class DozeParameters implements TunerService.Tunable, pw.print("getPickupVibrationThreshold(): "); pw.println(getPickupVibrationThreshold()); pw.print("getSelectivelyRegisterSensorsUsingProx(): "); pw.println(getSelectivelyRegisterSensorsUsingProx()); - pw.print("brightnessUsesProx(): "); pw.println(brightnessUsesProx()); } interface Callback { diff --git a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeConfigurationUtil.java b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeConfigurationUtil.java index a32cb9b6baa96..d6226aa53f67d 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeConfigurationUtil.java +++ b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeConfigurationUtil.java @@ -43,7 +43,6 @@ public class DozeConfigurationUtil { when(params.singleTapUsesProx()).thenReturn(true); when(params.longPressUsesProx()).thenReturn(true); when(params.getQuickPickupAodDuration()).thenReturn(500); - when(params.brightnessUsesProx()).thenReturn(true); doneHolder[0] = true; return params; 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 deb7d31d87a37..e0520b406a0ae 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeScreenBrightnessTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeScreenBrightnessTest.java @@ -18,6 +18,7 @@ package com.android.systemui.doze; import static com.android.systemui.doze.DozeMachine.State.DOZE; import static com.android.systemui.doze.DozeMachine.State.DOZE_AOD; +import static com.android.systemui.doze.DozeMachine.State.DOZE_AOD_DOCKED; import static com.android.systemui.doze.DozeMachine.State.DOZE_AOD_PAUSED; import static com.android.systemui.doze.DozeMachine.State.DOZE_AOD_PAUSING; import static com.android.systemui.doze.DozeMachine.State.DOZE_PULSE_DONE; @@ -43,7 +44,6 @@ import android.os.PowerManager; import android.os.UserHandle; import android.provider.Settings; import android.testing.AndroidTestingRunner; -import android.view.Display; import androidx.test.filters.SmallTest; @@ -114,8 +114,6 @@ public class DozeScreenBrightnessTest extends SysuiTestCase { mScreen = new DozeScreenBrightness(mContext, mServiceFake, mSensorManager, Optional.of(mSensor.getSensor()), mDozeHost, null /* handler */, mAlwaysOnDisplayPolicy, mWakefulnessLifecycle, mDozeParameters, mDockManager); - - mScreen.onScreenState(Display.STATE_ON); } @Test @@ -126,19 +124,10 @@ public class DozeScreenBrightnessTest extends SysuiTestCase { assertTrue(mServiceFake.screenBrightness <= PowerManager.BRIGHTNESS_ON); } - @Test - public void testAod_usesLightSensor() { - mScreen.onScreenState(Display.STATE_DOZE); - waitForSensorManager(); - - mSensor.sendSensorEvent(3); - - assertEquals(3, mServiceFake.screenBrightness); - } - @Test public void testAod_usesDebugValue() throws Exception { - mScreen.onScreenState(Display.STATE_DOZE); + mScreen.transitionTo(UNINITIALIZED, INITIALIZED); + mScreen.transitionTo(INITIALIZED, DOZE_AOD); waitForSensorManager(); Intent intent = new Intent(DozeScreenBrightness.ACTION_AOD_BRIGHTNESS); @@ -161,71 +150,53 @@ public class DozeScreenBrightnessTest extends SysuiTestCase { } @Test - public void testAodDocked_doNotSelectivelyUseProx_usesLightSensor() { - // GIVEN the device doesn't need to selectively register for prox sensors and - // brightness sensor uses prox - when(mDozeParameters.getSelectivelyRegisterSensorsUsingProx()).thenReturn(false); - when(mDozeParameters.brightnessUsesProx()).thenReturn(true); - + public void doze_doesNotUseLightSensor() { // GIVEN the device is docked and the display state changes to ON - when(mDockManager.isDocked()).thenReturn(true); - mScreen.onScreenState(Display.STATE_ON); + mScreen.transitionTo(UNINITIALIZED, INITIALIZED); + mScreen.transitionTo(INITIALIZED, DOZE); waitForSensorManager(); // WHEN new sensor event sent mSensor.sendSensorEvent(3); - // THEN brightness is updated - assertEquals(3, mServiceFake.screenBrightness); - } - - @Test - public void testAodDocked_brightnessDoesNotUseProx_usesLightSensor() { - // GIVEN the device doesn't need to selectively register for prox sensors but - // the brightness sensor doesn't use prox - when(mDozeParameters.getSelectivelyRegisterSensorsUsingProx()).thenReturn(true); - when(mDozeParameters.brightnessUsesProx()).thenReturn(false); - - // GIVEN the device is docked and the display state changes to ON - when(mDockManager.isDocked()).thenReturn(true); - mScreen.onScreenState(Display.STATE_ON); - waitForSensorManager(); - - // WHEN new sensor event sent - mSensor.sendSensorEvent(3); - - // THEN brightness is updated - assertEquals(3, mServiceFake.screenBrightness); - } - - - @Test - public void testAodDocked_noProx_brightnessUsesProx_doNotUseLightSensor() { - final int startBrightness = mServiceFake.screenBrightness; - - // GIVEN the device needs to selectively register for prox sensors and - // the brightness sensor uses prox - when(mDozeParameters.getSelectivelyRegisterSensorsUsingProx()).thenReturn(true); - when(mDozeParameters.brightnessUsesProx()).thenReturn(true); - - // GIVEN the device is docked and the display state is on - when(mDockManager.isDocked()).thenReturn(true); - mScreen.onScreenState(Display.STATE_ON); - waitForSensorManager(); - - // WHEN new sensor event sent - mSensor.sendSensorEvent(3); - - // THEN brightness is NOT changed + // THEN brightness is NOT changed, it's set to the default brightness assertNotSame(3, mServiceFake.screenBrightness); - assertEquals(startBrightness, mServiceFake.screenBrightness); + assertEquals(DEFAULT_BRIGHTNESS, mServiceFake.screenBrightness); + } + + @Test + public void aod_usesLightSensor() { + // GIVEN the device is docked and the display state changes to ON + mScreen.transitionTo(UNINITIALIZED, INITIALIZED); + mScreen.transitionTo(INITIALIZED, DOZE_AOD); + waitForSensorManager(); + + // WHEN new sensor event sent + mSensor.sendSensorEvent(3); + + // THEN brightness is updated + assertEquals(3, mServiceFake.screenBrightness); + } + + @Test + public void docked_usesLightSensor() { + // GIVEN the device is docked and the display state changes to ON + mScreen.transitionTo(UNINITIALIZED, INITIALIZED); + mScreen.transitionTo(INITIALIZED, DOZE_AOD); + mScreen.transitionTo(DOZE_AOD, DOZE_AOD_DOCKED); + waitForSensorManager(); + + // WHEN new sensor event sent + mSensor.sendSensorEvent(3); + + // THEN brightness is updated + assertEquals(3, mServiceFake.screenBrightness); } @Test public void testPausingAod_doesNotResetBrightness() throws Exception { mScreen.transitionTo(UNINITIALIZED, INITIALIZED); mScreen.transitionTo(INITIALIZED, DOZE_AOD); - mScreen.onScreenState(Display.STATE_DOZE); waitForSensorManager(); mSensor.sendSensorEvent(1); @@ -265,18 +236,6 @@ public class DozeScreenBrightnessTest extends SysuiTestCase { assertEquals(DEFAULT_BRIGHTNESS, mServiceFake.screenBrightness); } - @Test - public void testOnScreenStateSetBeforeTransition_stillRegistersSensor() { - mScreen.transitionTo(UNINITIALIZED, INITIALIZED); - mScreen.onScreenState(Display.STATE_DOZE); - mScreen.transitionTo(INITIALIZED, DOZE_AOD); - waitForSensorManager(); - - mSensor.sendSensorEvent(1); - - assertEquals(1, mServiceFake.screenBrightness); - } - @Test public void testNullSensor() throws Exception { mScreen = new DozeScreenBrightness(mContext, mServiceFake, mSensorManager, @@ -287,15 +246,12 @@ public class DozeScreenBrightnessTest extends SysuiTestCase { mScreen.transitionTo(INITIALIZED, DOZE_AOD); mScreen.transitionTo(DOZE_AOD, DOZE_AOD_PAUSING); mScreen.transitionTo(DOZE_AOD_PAUSING, DOZE_AOD_PAUSED); - mScreen.onScreenState(Display.STATE_DOZE); - mScreen.onScreenState(Display.STATE_OFF); } @Test public void testNoBrightnessDeliveredAfterFinish() throws Exception { mScreen.transitionTo(UNINITIALIZED, INITIALIZED); mScreen.transitionTo(INITIALIZED, DOZE_AOD); - mScreen.onScreenState(Display.STATE_DOZE); mScreen.transitionTo(DOZE_AOD, FINISH); waitForSensorManager(); @@ -308,7 +264,6 @@ public class DozeScreenBrightnessTest extends SysuiTestCase { public void testNonPositiveBrightness_keepsPreviousBrightnessAndScrim() { mScreen.transitionTo(UNINITIALIZED, INITIALIZED); mScreen.transitionTo(INITIALIZED, DOZE_AOD); - mScreen.onScreenState(Display.STATE_DOZE); waitForSensorManager(); mSensor.sendSensorEvent(1); @@ -322,7 +277,6 @@ public class DozeScreenBrightnessTest extends SysuiTestCase { public void pausingAod_unblanksAfterSensor() { mScreen.transitionTo(UNINITIALIZED, INITIALIZED); mScreen.transitionTo(INITIALIZED, DOZE_AOD); - mScreen.onScreenState(Display.STATE_DOZE); waitForSensorManager(); mSensor.sendSensorEvent(2); @@ -334,7 +288,6 @@ public class DozeScreenBrightnessTest extends SysuiTestCase { reset(mDozeHost); mScreen.transitionTo(DOZE_AOD_PAUSED, DOZE_AOD); - mScreen.onScreenState(Display.STATE_DOZE); waitForSensorManager(); mSensor.sendSensorEvent(2); verify(mDozeHost).setAodDimmingScrim(eq(0f)); @@ -344,7 +297,6 @@ public class DozeScreenBrightnessTest extends SysuiTestCase { public void pausingAod_unblanksIfSensorWasAlwaysReady() throws Exception { mScreen.transitionTo(UNINITIALIZED, INITIALIZED); mScreen.transitionTo(INITIALIZED, DOZE_AOD); - mScreen.onScreenState(Display.STATE_DOZE); waitForSensorManager(); mSensor.sendSensorEvent(2);