Merge "Register for doze brightness as soon as we can" into sc-qpr1-dev am: 99efba6b99 am: 1d12540b5c

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/15742198

Change-Id: I6a876c184ae1fecc83ee21de7a2c5011bdacaf78
This commit is contained in:
Beverly Tai
2021-09-15 14:55:04 +00:00
committed by Automerger Merge Worker
5 changed files with 46 additions and 116 deletions

View File

@@ -197,11 +197,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>

View File

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

View File

@@ -269,13 +269,6 @@ public class DozeParameters implements
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.
*/
@@ -300,6 +293,7 @@ public class DozeParameters implements
@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());
@@ -312,7 +306,6 @@ public class DozeParameters implements
pw.print("getPickupVibrationThreshold(): "); pw.println(getPickupVibrationThreshold());
pw.print("getSelectivelyRegisterSensorsUsingProx(): ");
pw.println(getSelectivelyRegisterSensorsUsingProx());
pw.print("brightnessUsesProx(): "); pw.println(brightnessUsesProx());
}
interface Callback {

View File

@@ -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;

View File

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