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
This commit is contained in:
@@ -194,11 +194,6 @@
|
||||
low powered state yet. -->
|
||||
<bool name="doze_long_press_uses_prox">true</bool>
|
||||
|
||||
<!-- Doze: whether the brightness sensor uses the proximity sensor.
|
||||
If both this parameter and doze_selectively_register_prox are true, registration for the
|
||||
brightness sensor won't occur when the display state is ON. -->
|
||||
<bool name="doze_brightness_uses_prox">true</bool>
|
||||
|
||||
<!-- Doze: should notifications be used as a pulse signal? -->
|
||||
<bool name="doze_pulse_on_notifications">true</bool>
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user