Merge "Register for doze brightness as soon as we can" into sc-qpr1-dev
This commit is contained in:
@@ -194,11 +194,6 @@
|
|||||||
low powered state yet. -->
|
low powered state yet. -->
|
||||||
<bool name="doze_long_press_uses_prox">true</bool>
|
<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? -->
|
<!-- Doze: should notifications be used as a pulse signal? -->
|
||||||
<bool name="doze_pulse_on_notifications">true</bool>
|
<bool name="doze_pulse_on_notifications">true</bool>
|
||||||
|
|
||||||
|
|||||||
@@ -29,7 +29,6 @@ import android.os.SystemProperties;
|
|||||||
import android.os.Trace;
|
import android.os.Trace;
|
||||||
import android.os.UserHandle;
|
import android.os.UserHandle;
|
||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
import android.view.Display;
|
|
||||||
|
|
||||||
import com.android.systemui.dock.DockManager;
|
import com.android.systemui.dock.DockManager;
|
||||||
import com.android.systemui.doze.dagger.BrightnessSensor;
|
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) {
|
public void transitionTo(DozeMachine.State oldState, DozeMachine.State newState) {
|
||||||
switch (newState) {
|
switch (newState) {
|
||||||
case INITIALIZED:
|
case INITIALIZED:
|
||||||
|
resetBrightnessToDefault();
|
||||||
|
break;
|
||||||
|
case DOZE_AOD:
|
||||||
|
case DOZE_REQUEST_PULSE:
|
||||||
|
case DOZE_AOD_DOCKED:
|
||||||
|
setLightSensorEnabled(true);
|
||||||
|
break;
|
||||||
case DOZE:
|
case DOZE:
|
||||||
|
setLightSensorEnabled(false);
|
||||||
resetBrightnessToDefault();
|
resetBrightnessToDefault();
|
||||||
break;
|
break;
|
||||||
case FINISH:
|
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() {
|
private void onDestroy() {
|
||||||
setLightSensorEnabled(false);
|
setLightSensorEnabled(false);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -267,13 +267,6 @@ public class DozeParameters implements TunerService.Tunable,
|
|||||||
return mResources.getBoolean(R.bool.doze_long_press_uses_prox);
|
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.
|
* Callback to listen for DozeParameter changes.
|
||||||
*/
|
*/
|
||||||
@@ -298,6 +291,7 @@ public class DozeParameters implements TunerService.Tunable,
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void dump(@NonNull FileDescriptor fd, @NonNull PrintWriter pw, @NonNull String[] args) {
|
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("getDisplayStateSupported(): "); pw.println(getDisplayStateSupported());
|
||||||
pw.print("getPulseDuration(): "); pw.println(getPulseDuration());
|
pw.print("getPulseDuration(): "); pw.println(getPulseDuration());
|
||||||
pw.print("getPulseInDuration(): "); pw.println(getPulseInDuration());
|
pw.print("getPulseInDuration(): "); pw.println(getPulseInDuration());
|
||||||
@@ -310,7 +304,6 @@ public class DozeParameters implements TunerService.Tunable,
|
|||||||
pw.print("getPickupVibrationThreshold(): "); pw.println(getPickupVibrationThreshold());
|
pw.print("getPickupVibrationThreshold(): "); pw.println(getPickupVibrationThreshold());
|
||||||
pw.print("getSelectivelyRegisterSensorsUsingProx(): ");
|
pw.print("getSelectivelyRegisterSensorsUsingProx(): ");
|
||||||
pw.println(getSelectivelyRegisterSensorsUsingProx());
|
pw.println(getSelectivelyRegisterSensorsUsingProx());
|
||||||
pw.print("brightnessUsesProx(): "); pw.println(brightnessUsesProx());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
interface Callback {
|
interface Callback {
|
||||||
|
|||||||
@@ -43,7 +43,6 @@ public class DozeConfigurationUtil {
|
|||||||
when(params.singleTapUsesProx()).thenReturn(true);
|
when(params.singleTapUsesProx()).thenReturn(true);
|
||||||
when(params.longPressUsesProx()).thenReturn(true);
|
when(params.longPressUsesProx()).thenReturn(true);
|
||||||
when(params.getQuickPickupAodDuration()).thenReturn(500);
|
when(params.getQuickPickupAodDuration()).thenReturn(500);
|
||||||
when(params.brightnessUsesProx()).thenReturn(true);
|
|
||||||
|
|
||||||
doneHolder[0] = true;
|
doneHolder[0] = true;
|
||||||
return params;
|
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;
|
||||||
import static com.android.systemui.doze.DozeMachine.State.DOZE_AOD;
|
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_PAUSED;
|
||||||
import static com.android.systemui.doze.DozeMachine.State.DOZE_AOD_PAUSING;
|
import static com.android.systemui.doze.DozeMachine.State.DOZE_AOD_PAUSING;
|
||||||
import static com.android.systemui.doze.DozeMachine.State.DOZE_PULSE_DONE;
|
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.os.UserHandle;
|
||||||
import android.provider.Settings;
|
import android.provider.Settings;
|
||||||
import android.testing.AndroidTestingRunner;
|
import android.testing.AndroidTestingRunner;
|
||||||
import android.view.Display;
|
|
||||||
|
|
||||||
import androidx.test.filters.SmallTest;
|
import androidx.test.filters.SmallTest;
|
||||||
|
|
||||||
@@ -114,8 +114,6 @@ public class DozeScreenBrightnessTest extends SysuiTestCase {
|
|||||||
mScreen = new DozeScreenBrightness(mContext, mServiceFake, mSensorManager,
|
mScreen = new DozeScreenBrightness(mContext, mServiceFake, mSensorManager,
|
||||||
Optional.of(mSensor.getSensor()), mDozeHost, null /* handler */,
|
Optional.of(mSensor.getSensor()), mDozeHost, null /* handler */,
|
||||||
mAlwaysOnDisplayPolicy, mWakefulnessLifecycle, mDozeParameters, mDockManager);
|
mAlwaysOnDisplayPolicy, mWakefulnessLifecycle, mDozeParameters, mDockManager);
|
||||||
|
|
||||||
mScreen.onScreenState(Display.STATE_ON);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -126,19 +124,10 @@ public class DozeScreenBrightnessTest extends SysuiTestCase {
|
|||||||
assertTrue(mServiceFake.screenBrightness <= PowerManager.BRIGHTNESS_ON);
|
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
|
@Test
|
||||||
public void testAod_usesDebugValue() throws Exception {
|
public void testAod_usesDebugValue() throws Exception {
|
||||||
mScreen.onScreenState(Display.STATE_DOZE);
|
mScreen.transitionTo(UNINITIALIZED, INITIALIZED);
|
||||||
|
mScreen.transitionTo(INITIALIZED, DOZE_AOD);
|
||||||
waitForSensorManager();
|
waitForSensorManager();
|
||||||
|
|
||||||
Intent intent = new Intent(DozeScreenBrightness.ACTION_AOD_BRIGHTNESS);
|
Intent intent = new Intent(DozeScreenBrightness.ACTION_AOD_BRIGHTNESS);
|
||||||
@@ -161,71 +150,53 @@ public class DozeScreenBrightnessTest extends SysuiTestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testAodDocked_doNotSelectivelyUseProx_usesLightSensor() {
|
public void doze_doesNotUseLightSensor() {
|
||||||
// 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);
|
|
||||||
|
|
||||||
// GIVEN the device is docked and the display state changes to ON
|
// GIVEN the device is docked and the display state changes to ON
|
||||||
when(mDockManager.isDocked()).thenReturn(true);
|
mScreen.transitionTo(UNINITIALIZED, INITIALIZED);
|
||||||
mScreen.onScreenState(Display.STATE_ON);
|
mScreen.transitionTo(INITIALIZED, DOZE);
|
||||||
waitForSensorManager();
|
waitForSensorManager();
|
||||||
|
|
||||||
// WHEN new sensor event sent
|
// WHEN new sensor event sent
|
||||||
mSensor.sendSensorEvent(3);
|
mSensor.sendSensorEvent(3);
|
||||||
|
|
||||||
// THEN brightness is updated
|
// THEN brightness is NOT changed, it's set to the default brightness
|
||||||
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
|
|
||||||
assertNotSame(3, mServiceFake.screenBrightness);
|
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
|
@Test
|
||||||
public void testPausingAod_doesNotResetBrightness() throws Exception {
|
public void testPausingAod_doesNotResetBrightness() throws Exception {
|
||||||
mScreen.transitionTo(UNINITIALIZED, INITIALIZED);
|
mScreen.transitionTo(UNINITIALIZED, INITIALIZED);
|
||||||
mScreen.transitionTo(INITIALIZED, DOZE_AOD);
|
mScreen.transitionTo(INITIALIZED, DOZE_AOD);
|
||||||
mScreen.onScreenState(Display.STATE_DOZE);
|
|
||||||
waitForSensorManager();
|
waitForSensorManager();
|
||||||
|
|
||||||
mSensor.sendSensorEvent(1);
|
mSensor.sendSensorEvent(1);
|
||||||
@@ -265,18 +236,6 @@ public class DozeScreenBrightnessTest extends SysuiTestCase {
|
|||||||
assertEquals(DEFAULT_BRIGHTNESS, mServiceFake.screenBrightness);
|
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
|
@Test
|
||||||
public void testNullSensor() throws Exception {
|
public void testNullSensor() throws Exception {
|
||||||
mScreen = new DozeScreenBrightness(mContext, mServiceFake, mSensorManager,
|
mScreen = new DozeScreenBrightness(mContext, mServiceFake, mSensorManager,
|
||||||
@@ -287,15 +246,12 @@ public class DozeScreenBrightnessTest extends SysuiTestCase {
|
|||||||
mScreen.transitionTo(INITIALIZED, DOZE_AOD);
|
mScreen.transitionTo(INITIALIZED, DOZE_AOD);
|
||||||
mScreen.transitionTo(DOZE_AOD, DOZE_AOD_PAUSING);
|
mScreen.transitionTo(DOZE_AOD, DOZE_AOD_PAUSING);
|
||||||
mScreen.transitionTo(DOZE_AOD_PAUSING, DOZE_AOD_PAUSED);
|
mScreen.transitionTo(DOZE_AOD_PAUSING, DOZE_AOD_PAUSED);
|
||||||
mScreen.onScreenState(Display.STATE_DOZE);
|
|
||||||
mScreen.onScreenState(Display.STATE_OFF);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testNoBrightnessDeliveredAfterFinish() throws Exception {
|
public void testNoBrightnessDeliveredAfterFinish() throws Exception {
|
||||||
mScreen.transitionTo(UNINITIALIZED, INITIALIZED);
|
mScreen.transitionTo(UNINITIALIZED, INITIALIZED);
|
||||||
mScreen.transitionTo(INITIALIZED, DOZE_AOD);
|
mScreen.transitionTo(INITIALIZED, DOZE_AOD);
|
||||||
mScreen.onScreenState(Display.STATE_DOZE);
|
|
||||||
mScreen.transitionTo(DOZE_AOD, FINISH);
|
mScreen.transitionTo(DOZE_AOD, FINISH);
|
||||||
waitForSensorManager();
|
waitForSensorManager();
|
||||||
|
|
||||||
@@ -308,7 +264,6 @@ public class DozeScreenBrightnessTest extends SysuiTestCase {
|
|||||||
public void testNonPositiveBrightness_keepsPreviousBrightnessAndScrim() {
|
public void testNonPositiveBrightness_keepsPreviousBrightnessAndScrim() {
|
||||||
mScreen.transitionTo(UNINITIALIZED, INITIALIZED);
|
mScreen.transitionTo(UNINITIALIZED, INITIALIZED);
|
||||||
mScreen.transitionTo(INITIALIZED, DOZE_AOD);
|
mScreen.transitionTo(INITIALIZED, DOZE_AOD);
|
||||||
mScreen.onScreenState(Display.STATE_DOZE);
|
|
||||||
waitForSensorManager();
|
waitForSensorManager();
|
||||||
|
|
||||||
mSensor.sendSensorEvent(1);
|
mSensor.sendSensorEvent(1);
|
||||||
@@ -322,7 +277,6 @@ public class DozeScreenBrightnessTest extends SysuiTestCase {
|
|||||||
public void pausingAod_unblanksAfterSensor() {
|
public void pausingAod_unblanksAfterSensor() {
|
||||||
mScreen.transitionTo(UNINITIALIZED, INITIALIZED);
|
mScreen.transitionTo(UNINITIALIZED, INITIALIZED);
|
||||||
mScreen.transitionTo(INITIALIZED, DOZE_AOD);
|
mScreen.transitionTo(INITIALIZED, DOZE_AOD);
|
||||||
mScreen.onScreenState(Display.STATE_DOZE);
|
|
||||||
waitForSensorManager();
|
waitForSensorManager();
|
||||||
|
|
||||||
mSensor.sendSensorEvent(2);
|
mSensor.sendSensorEvent(2);
|
||||||
@@ -334,7 +288,6 @@ public class DozeScreenBrightnessTest extends SysuiTestCase {
|
|||||||
|
|
||||||
reset(mDozeHost);
|
reset(mDozeHost);
|
||||||
mScreen.transitionTo(DOZE_AOD_PAUSED, DOZE_AOD);
|
mScreen.transitionTo(DOZE_AOD_PAUSED, DOZE_AOD);
|
||||||
mScreen.onScreenState(Display.STATE_DOZE);
|
|
||||||
waitForSensorManager();
|
waitForSensorManager();
|
||||||
mSensor.sendSensorEvent(2);
|
mSensor.sendSensorEvent(2);
|
||||||
verify(mDozeHost).setAodDimmingScrim(eq(0f));
|
verify(mDozeHost).setAodDimmingScrim(eq(0f));
|
||||||
@@ -344,7 +297,6 @@ public class DozeScreenBrightnessTest extends SysuiTestCase {
|
|||||||
public void pausingAod_unblanksIfSensorWasAlwaysReady() throws Exception {
|
public void pausingAod_unblanksIfSensorWasAlwaysReady() throws Exception {
|
||||||
mScreen.transitionTo(UNINITIALIZED, INITIALIZED);
|
mScreen.transitionTo(UNINITIALIZED, INITIALIZED);
|
||||||
mScreen.transitionTo(INITIALIZED, DOZE_AOD);
|
mScreen.transitionTo(INITIALIZED, DOZE_AOD);
|
||||||
mScreen.onScreenState(Display.STATE_DOZE);
|
|
||||||
waitForSensorManager();
|
waitForSensorManager();
|
||||||
|
|
||||||
mSensor.sendSensorEvent(2);
|
mSensor.sendSensorEvent(2);
|
||||||
|
|||||||
Reference in New Issue
Block a user