diff options
| author | 2023-03-15 16:33:37 +0000 | |
|---|---|---|
| committer | 2023-03-15 21:25:02 +0000 | |
| commit | 024161c1489ad293dfe90ab7592caffe247cb15a (patch) | |
| tree | aecadbb614512616c233a06286290b2806bfc80a | |
| parent | 3eb0a87531cbdbbe38b041e3cabf0109055b7884 (diff) | |
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
| -rw-r--r-- | apex/jobscheduler/service/java/com/android/server/DeviceIdleController.java | 36 | ||||
| -rw-r--r-- | services/tests/mockingservicestests/src/com/android/server/DeviceIdleControllerTest.java | 48 |
2 files changed, 36 insertions, 48 deletions
diff --git a/apex/jobscheduler/service/java/com/android/server/DeviceIdleController.java b/apex/jobscheduler/service/java/com/android/server/DeviceIdleController.java index 1d93eb3a211a..1daacdf026d5 100644 --- a/apex/jobscheduler/service/java/com/android/server/DeviceIdleController.java +++ b/apex/jobscheduler/service/java/com/android/server/DeviceIdleController.java @@ -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) { diff --git a/services/tests/mockingservicestests/src/com/android/server/DeviceIdleControllerTest.java b/services/tests/mockingservicestests/src/com/android/server/DeviceIdleControllerTest.java index 5377ee71f480..3a47b476a131 100644 --- a/services/tests/mockingservicestests/src/com/android/server/DeviceIdleControllerTest.java +++ b/services/tests/mockingservicestests/src/com/android/server/DeviceIdleControllerTest.java @@ -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(); } } |