Remove unnecessary parameter.
The idleUntil parameter wasn't necessary since the new state value indicates whether DeviceIdleController should call AlarmManager.setIdleUntil or not. Bug: 270672228 Bug: 273742717 Test: atest FrameworksMockingServicesTests:DeviceIdleControllerTest Change-Id: I7274266d6aa138238473f81f4e85636c8be37517
This commit is contained in:
@@ -1970,7 +1970,7 @@ public class DeviceIdleController extends SystemService
|
||||
} break;
|
||||
case MSG_RESET_PRE_IDLE_TIMEOUT_FACTOR: {
|
||||
updatePreIdleFactor();
|
||||
maybeDoImmediateMaintenance();
|
||||
maybeDoImmediateMaintenance("idle factor");
|
||||
} break;
|
||||
case MSG_REPORT_STATIONARY_STATUS: {
|
||||
final DeviceIdleInternal.StationaryListener newListener =
|
||||
@@ -3517,11 +3517,11 @@ public class DeviceIdleController extends SystemService
|
||||
// doze alarm to after the upcoming AlarmClock alarm.
|
||||
scheduleAlarmLocked(
|
||||
mAlarmManager.getNextWakeFromIdleTime() - mInjector.getElapsedRealtime()
|
||||
+ mConstants.QUICK_DOZE_DELAY_TIMEOUT, false);
|
||||
+ mConstants.QUICK_DOZE_DELAY_TIMEOUT);
|
||||
} else {
|
||||
// Wait a small amount of time in case something (eg: background service from
|
||||
// recently closed app) needs to finish running.
|
||||
scheduleAlarmLocked(mConstants.QUICK_DOZE_DELAY_TIMEOUT, false);
|
||||
scheduleAlarmLocked(mConstants.QUICK_DOZE_DELAY_TIMEOUT);
|
||||
}
|
||||
} else if (mState == STATE_ACTIVE) {
|
||||
moveToStateLocked(STATE_INACTIVE, "no activity");
|
||||
@@ -3536,9 +3536,9 @@ public class DeviceIdleController extends SystemService
|
||||
// alarm to after the upcoming AlarmClock alarm.
|
||||
scheduleAlarmLocked(
|
||||
mAlarmManager.getNextWakeFromIdleTime() - mInjector.getElapsedRealtime()
|
||||
+ delay, false);
|
||||
+ delay);
|
||||
} else {
|
||||
scheduleAlarmLocked(delay, false);
|
||||
scheduleAlarmLocked(delay);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -3753,7 +3753,7 @@ public class DeviceIdleController extends SystemService
|
||||
if (shouldUseIdleTimeoutFactorLocked()) {
|
||||
delay = (long) (mPreIdleFactor * delay);
|
||||
}
|
||||
scheduleAlarmLocked(delay, false);
|
||||
scheduleAlarmLocked(delay);
|
||||
moveToStateLocked(STATE_IDLE_PENDING, reason);
|
||||
break;
|
||||
case STATE_IDLE_PENDING:
|
||||
@@ -3779,7 +3779,7 @@ public class DeviceIdleController extends SystemService
|
||||
case STATE_SENSING:
|
||||
cancelSensingTimeoutAlarmLocked();
|
||||
moveToStateLocked(STATE_LOCATING, reason);
|
||||
scheduleAlarmLocked(mConstants.LOCATING_TIMEOUT, false);
|
||||
scheduleAlarmLocked(mConstants.LOCATING_TIMEOUT);
|
||||
LocationManager locationManager = mInjector.getLocationManager();
|
||||
if (locationManager != null
|
||||
&& locationManager.getProvider(LocationManager.NETWORK_PROVIDER) != null) {
|
||||
@@ -3819,7 +3819,7 @@ public class DeviceIdleController extends SystemService
|
||||
// Everything is in place to go into IDLE state.
|
||||
case STATE_IDLE_MAINTENANCE:
|
||||
moveToStateLocked(STATE_IDLE, reason);
|
||||
scheduleAlarmLocked(mNextIdleDelay, true);
|
||||
scheduleAlarmLocked(mNextIdleDelay);
|
||||
if (DEBUG) Slog.d(TAG, "Moved to STATE_IDLE. Next alarm in " + mNextIdleDelay +
|
||||
" ms.");
|
||||
mNextIdleDelay = (long)(mNextIdleDelay * mConstants.IDLE_FACTOR);
|
||||
@@ -3842,7 +3842,7 @@ public class DeviceIdleController extends SystemService
|
||||
mActiveIdleOpCount = 1;
|
||||
mActiveIdleWakeLock.acquire();
|
||||
moveToStateLocked(STATE_IDLE_MAINTENANCE, reason);
|
||||
scheduleAlarmLocked(mNextIdlePendingDelay, false);
|
||||
scheduleAlarmLocked(mNextIdlePendingDelay);
|
||||
if (DEBUG) Slog.d(TAG, "Moved from STATE_IDLE to STATE_IDLE_MAINTENANCE. " +
|
||||
"Next alarm in " + mNextIdlePendingDelay + " ms.");
|
||||
mMaintenanceStartTime = SystemClock.elapsedRealtime();
|
||||
@@ -4013,19 +4013,18 @@ public class DeviceIdleController extends SystemService
|
||||
if (Math.abs(delay - newDelay) < MIN_STATE_STEP_ALARM_CHANGE) {
|
||||
return;
|
||||
}
|
||||
scheduleAlarmLocked(newDelay, false);
|
||||
scheduleAlarmLocked(newDelay);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void maybeDoImmediateMaintenance() {
|
||||
private void maybeDoImmediateMaintenance(String reason) {
|
||||
synchronized (this) {
|
||||
if (mState == STATE_IDLE) {
|
||||
long duration = SystemClock.elapsedRealtime() - mIdleStartTime;
|
||||
/* Let's trgger a immediate maintenance,
|
||||
* if it has been idle for a long time */
|
||||
// Trigger an immediate maintenance window if it has been IDLE for long enough.
|
||||
if (duration > mConstants.IDLE_TIMEOUT) {
|
||||
scheduleAlarmLocked(0, false);
|
||||
stepIdleStateLocked(reason);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -4045,7 +4044,7 @@ public class DeviceIdleController extends SystemService
|
||||
void setIdleStartTimeForTest(long idleStartTime) {
|
||||
synchronized (this) {
|
||||
mIdleStartTime = idleStartTime;
|
||||
maybeDoImmediateMaintenance();
|
||||
maybeDoImmediateMaintenance("testing");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4224,8 +4223,9 @@ public class DeviceIdleController extends SystemService
|
||||
}
|
||||
|
||||
@GuardedBy("this")
|
||||
void scheduleAlarmLocked(long delay, boolean idleUntil) {
|
||||
if (DEBUG) Slog.d(TAG, "scheduleAlarmLocked(" + delay + ", " + idleUntil + ")");
|
||||
@VisibleForTesting
|
||||
void scheduleAlarmLocked(long delay) {
|
||||
if (DEBUG) Slog.d(TAG, "scheduleAlarmLocked(" + delay + ", " + stateToString(mState) + ")");
|
||||
|
||||
if (mUseMotionSensor && mMotionSensor == null
|
||||
&& mState != STATE_QUICK_DOZE_DELAY
|
||||
@@ -4241,7 +4241,7 @@ public class DeviceIdleController extends SystemService
|
||||
return;
|
||||
}
|
||||
mNextAlarmTime = SystemClock.elapsedRealtime() + delay;
|
||||
if (idleUntil) {
|
||||
if (mState == STATE_IDLE) {
|
||||
mAlarmManager.setIdleUntil(AlarmManager.ELAPSED_REALTIME_WAKEUP,
|
||||
mNextAlarmTime, "DeviceIdleController.deep", mDeepAlarmListener, mHandler);
|
||||
} else if (mState == STATE_LOCATING) {
|
||||
|
||||
@@ -50,7 +50,6 @@ import static org.junit.Assert.assertFalse;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
import static org.junit.Assert.fail;
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.ArgumentMatchers.anyBoolean;
|
||||
import static org.mockito.ArgumentMatchers.anyInt;
|
||||
import static org.mockito.ArgumentMatchers.anyLong;
|
||||
import static org.mockito.ArgumentMatchers.anyString;
|
||||
@@ -624,8 +623,7 @@ public class DeviceIdleControllerTest {
|
||||
|
||||
mDeviceIdleController.becomeInactiveIfAppropriateLocked();
|
||||
verifyStateConditions(STATE_INACTIVE);
|
||||
verify(mDeviceIdleController)
|
||||
.scheduleAlarmLocked(eq(mConstants.INACTIVE_TIMEOUT), eq(false));
|
||||
verify(mDeviceIdleController).scheduleAlarmLocked(eq(mConstants.INACTIVE_TIMEOUT));
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -643,8 +641,7 @@ public class DeviceIdleControllerTest {
|
||||
|
||||
mDeviceIdleController.becomeInactiveIfAppropriateLocked();
|
||||
verifyStateConditions(STATE_INACTIVE);
|
||||
verify(mDeviceIdleController)
|
||||
.scheduleAlarmLocked(eq(mConstants.INACTIVE_TIMEOUT), eq(false));
|
||||
verify(mDeviceIdleController).scheduleAlarmLocked(eq(mConstants.INACTIVE_TIMEOUT));
|
||||
// The device configuration doesn't require a motion sensor to proceed with idling.
|
||||
// This should be the case on TVs or other such devices. We should set an alarm to move
|
||||
// forward if the motion sensor is missing in this case.
|
||||
@@ -669,8 +666,7 @@ public class DeviceIdleControllerTest {
|
||||
|
||||
mDeviceIdleController.becomeInactiveIfAppropriateLocked();
|
||||
verifyStateConditions(STATE_INACTIVE);
|
||||
verify(mDeviceIdleController)
|
||||
.scheduleAlarmLocked(eq(mConstants.INACTIVE_TIMEOUT), eq(false));
|
||||
verify(mDeviceIdleController).scheduleAlarmLocked(eq(mConstants.INACTIVE_TIMEOUT));
|
||||
// The device configuration requires a motion sensor to proceed with idling,
|
||||
// so we should never set an alarm to move forward if the motion sensor is
|
||||
// missing in this case.
|
||||
@@ -699,7 +695,7 @@ public class DeviceIdleControllerTest {
|
||||
mDeviceIdleController.becomeInactiveIfAppropriateLocked();
|
||||
verifyStateConditions(STATE_INACTIVE);
|
||||
inOrder.verify(mDeviceIdleController)
|
||||
.scheduleAlarmLocked(eq(timeUntilAlarm + mConstants.INACTIVE_TIMEOUT), eq(false));
|
||||
.scheduleAlarmLocked(eq(timeUntilAlarm + mConstants.INACTIVE_TIMEOUT));
|
||||
|
||||
enterDeepState(STATE_ACTIVE);
|
||||
setQuickDozeEnabled(true);
|
||||
@@ -709,7 +705,7 @@ public class DeviceIdleControllerTest {
|
||||
mDeviceIdleController.becomeInactiveIfAppropriateLocked();
|
||||
verifyStateConditions(STATE_QUICK_DOZE_DELAY);
|
||||
inOrder.verify(mDeviceIdleController).scheduleAlarmLocked(
|
||||
eq(timeUntilAlarm + mConstants.QUICK_DOZE_DELAY_TIMEOUT), eq(false));
|
||||
eq(timeUntilAlarm + mConstants.QUICK_DOZE_DELAY_TIMEOUT));
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -736,59 +732,56 @@ public class DeviceIdleControllerTest {
|
||||
setScreenOn(false);
|
||||
verifyStateConditions(STATE_QUICK_DOZE_DELAY);
|
||||
inOrder.verify(mDeviceIdleController)
|
||||
.scheduleAlarmLocked(eq(mConstants.QUICK_DOZE_DELAY_TIMEOUT), eq(false));
|
||||
.scheduleAlarmLocked(eq(mConstants.QUICK_DOZE_DELAY_TIMEOUT));
|
||||
|
||||
enterDeepState(STATE_INACTIVE);
|
||||
setQuickDozeEnabled(true);
|
||||
verifyStateConditions(STATE_QUICK_DOZE_DELAY);
|
||||
inOrder.verify(mDeviceIdleController)
|
||||
.scheduleAlarmLocked(eq(mConstants.QUICK_DOZE_DELAY_TIMEOUT), eq(false));
|
||||
.scheduleAlarmLocked(eq(mConstants.QUICK_DOZE_DELAY_TIMEOUT));
|
||||
|
||||
enterDeepState(STATE_IDLE_PENDING);
|
||||
setQuickDozeEnabled(true);
|
||||
verifyStateConditions(STATE_QUICK_DOZE_DELAY);
|
||||
inOrder.verify(mDeviceIdleController)
|
||||
.scheduleAlarmLocked(eq(mConstants.QUICK_DOZE_DELAY_TIMEOUT), eq(false));
|
||||
.scheduleAlarmLocked(eq(mConstants.QUICK_DOZE_DELAY_TIMEOUT));
|
||||
|
||||
enterDeepState(STATE_SENSING);
|
||||
setQuickDozeEnabled(true);
|
||||
verifyStateConditions(STATE_QUICK_DOZE_DELAY);
|
||||
inOrder.verify(mDeviceIdleController)
|
||||
.scheduleAlarmLocked(eq(mConstants.QUICK_DOZE_DELAY_TIMEOUT), eq(false));
|
||||
.scheduleAlarmLocked(eq(mConstants.QUICK_DOZE_DELAY_TIMEOUT));
|
||||
|
||||
enterDeepState(STATE_LOCATING);
|
||||
setQuickDozeEnabled(true);
|
||||
verifyStateConditions(STATE_QUICK_DOZE_DELAY);
|
||||
inOrder.verify(mDeviceIdleController)
|
||||
.scheduleAlarmLocked(eq(mConstants.QUICK_DOZE_DELAY_TIMEOUT), eq(false));
|
||||
.scheduleAlarmLocked(eq(mConstants.QUICK_DOZE_DELAY_TIMEOUT));
|
||||
|
||||
// IDLE should stay as IDLE.
|
||||
enterDeepState(STATE_IDLE);
|
||||
// Clear out any alarm setting from the order before checking for this section.
|
||||
inOrder.verify(mDeviceIdleController, atLeastOnce())
|
||||
.scheduleAlarmLocked(anyLong(), anyBoolean());
|
||||
inOrder.verify(mDeviceIdleController, atLeastOnce()).scheduleAlarmLocked(anyLong());
|
||||
setQuickDozeEnabled(true);
|
||||
verifyStateConditions(STATE_IDLE);
|
||||
inOrder.verify(mDeviceIdleController, never()).scheduleAlarmLocked(anyLong(), anyBoolean());
|
||||
inOrder.verify(mDeviceIdleController, never()).scheduleAlarmLocked(anyLong());
|
||||
|
||||
// IDLE_MAINTENANCE should stay as IDLE_MAINTENANCE.
|
||||
enterDeepState(STATE_IDLE_MAINTENANCE);
|
||||
// Clear out any alarm setting from the order before checking for this section.
|
||||
inOrder.verify(mDeviceIdleController, atLeastOnce())
|
||||
.scheduleAlarmLocked(anyLong(), anyBoolean());
|
||||
inOrder.verify(mDeviceIdleController, atLeastOnce()).scheduleAlarmLocked(anyLong());
|
||||
setQuickDozeEnabled(true);
|
||||
verifyStateConditions(STATE_IDLE_MAINTENANCE);
|
||||
inOrder.verify(mDeviceIdleController, never()).scheduleAlarmLocked(anyLong(), anyBoolean());
|
||||
inOrder.verify(mDeviceIdleController, never()).scheduleAlarmLocked(anyLong());
|
||||
|
||||
// State is already QUICK_DOZE_DELAY. No work should be done.
|
||||
enterDeepState(STATE_QUICK_DOZE_DELAY);
|
||||
// Clear out any alarm setting from the order before checking for this section.
|
||||
inOrder.verify(mDeviceIdleController, atLeastOnce())
|
||||
.scheduleAlarmLocked(anyLong(), anyBoolean());
|
||||
inOrder.verify(mDeviceIdleController, atLeastOnce()).scheduleAlarmLocked(anyLong());
|
||||
setQuickDozeEnabled(true);
|
||||
mDeviceIdleController.becomeInactiveIfAppropriateLocked();
|
||||
verifyStateConditions(STATE_QUICK_DOZE_DELAY);
|
||||
inOrder.verify(mDeviceIdleController, never()).scheduleAlarmLocked(anyLong(), anyBoolean());
|
||||
inOrder.verify(mDeviceIdleController, never()).scheduleAlarmLocked(anyLong());
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -2685,17 +2678,12 @@ public class DeviceIdleControllerTest {
|
||||
if (ret == mDeviceIdleController.SET_IDLE_FACTOR_RESULT_OK) {
|
||||
enterDeepState(STATE_IDLE);
|
||||
long now = SystemClock.elapsedRealtime();
|
||||
long alarm = mDeviceIdleController.getNextAlarmTime();
|
||||
mDeviceIdleController.setIdleStartTimeForTest(
|
||||
now - (long) (mConstants.IDLE_TIMEOUT * 0.6));
|
||||
long newAlarm = mDeviceIdleController.getNextAlarmTime();
|
||||
assertTrue("maintenance not reschedule IDLE_TIMEOUT * 0.6",
|
||||
newAlarm == alarm);
|
||||
verifyStateConditions(STATE_IDLE);
|
||||
mDeviceIdleController.setIdleStartTimeForTest(
|
||||
now - (long) (mConstants.IDLE_TIMEOUT * 1.2));
|
||||
newAlarm = mDeviceIdleController.getNextAlarmTime();
|
||||
assertTrue("maintenance not reschedule IDLE_TIMEOUT * 1.2",
|
||||
(newAlarm - now) < minuteInMillis);
|
||||
verifyStateConditions(STATE_IDLE_MAINTENANCE);
|
||||
mDeviceIdleController.resetPreIdleTimeoutMode();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user