Merge "Test deep transitions when an alarm is imminent."

This commit is contained in:
TreeHugger Robot
2018-10-16 19:12:43 +00:00
committed by Android (Google) Code Review

View File

@@ -424,6 +424,54 @@ public class DeviceIdleControllerTest {
verifyStateConditions(STATE_ACTIVE);
}
@Test
public void testStepIdleStateLocked_ValidStates_WithWakeFromIdleAlarmSoon() {
enterDeepState(STATE_ACTIVE);
// Return that there's an alarm coming soon.
doReturn(SystemClock.elapsedRealtime() + mConstants.MIN_TIME_TO_ALARM / 2).when(
mAlarmManager).getNextWakeFromIdleTime();
mDeviceIdleController.stepIdleStateLocked("testing");
verifyStateConditions(STATE_ACTIVE);
// Everything besides ACTIVE should end up as INACTIVE since the screen would be off.
enterDeepState(STATE_INACTIVE);
doReturn(SystemClock.elapsedRealtime() + mConstants.MIN_TIME_TO_ALARM / 2).when(
mAlarmManager).getNextWakeFromIdleTime();
mDeviceIdleController.stepIdleStateLocked("testing");
verifyStateConditions(STATE_INACTIVE);
enterDeepState(STATE_IDLE_PENDING);
doReturn(SystemClock.elapsedRealtime() + mConstants.MIN_TIME_TO_ALARM / 2).when(
mAlarmManager).getNextWakeFromIdleTime();
mDeviceIdleController.stepIdleStateLocked("testing");
verifyStateConditions(STATE_INACTIVE);
enterDeepState(STATE_SENSING);
doReturn(SystemClock.elapsedRealtime() + mConstants.MIN_TIME_TO_ALARM / 2).when(
mAlarmManager).getNextWakeFromIdleTime();
mDeviceIdleController.stepIdleStateLocked("testing");
verifyStateConditions(STATE_INACTIVE);
enterDeepState(STATE_LOCATING);
doReturn(SystemClock.elapsedRealtime() + mConstants.MIN_TIME_TO_ALARM / 2).when(
mAlarmManager).getNextWakeFromIdleTime();
mDeviceIdleController.stepIdleStateLocked("testing");
verifyStateConditions(STATE_INACTIVE);
enterDeepState(STATE_IDLE);
doReturn(SystemClock.elapsedRealtime() + mConstants.MIN_TIME_TO_ALARM / 2).when(
mAlarmManager).getNextWakeFromIdleTime();
mDeviceIdleController.stepIdleStateLocked("testing");
verifyStateConditions(STATE_INACTIVE);
enterDeepState(STATE_IDLE_MAINTENANCE);
doReturn(SystemClock.elapsedRealtime() + mConstants.MIN_TIME_TO_ALARM / 2).when(
mAlarmManager).getNextWakeFromIdleTime();
mDeviceIdleController.stepIdleStateLocked("testing");
verifyStateConditions(STATE_INACTIVE);
}
@Test
public void testStepIdleStateLocked_ValidStates_NoLocationManager() {
mInjector.locationManager = null;
@@ -495,7 +543,6 @@ public class DeviceIdleControllerTest {
mInjector.locationManager = mLocationManager;
doReturn(mock(LocationProvider.class)).when(mLocationManager).getProvider(anyString());
// Make sure the controller doesn't think there's a wake-from-idle alarm coming soon.
// TODO: add tests for when there's a wake-from-idle alarm coming soon.
doReturn(Long.MAX_VALUE).when(mAlarmManager).getNextWakeFromIdleTime();
// Set state to INACTIVE.
mDeviceIdleController.becomeActiveLocked("testing", 0);