Loading apex/jobscheduler/service/java/com/android/server/DeviceIdleController.java +13 −2 Original line number Diff line number Diff line Loading @@ -3527,11 +3527,14 @@ public class DeviceIdleController extends SystemService @VisibleForTesting @GuardedBy("this") void updateQuickDozeFlagLocked(boolean enabled) { if (DEBUG) Slog.i(TAG, "updateQuickDozeFlagLocked: enabled=" + enabled); if (DEBUG) { Slog.i(TAG, "updateQuickDozeFlagLocked: enabled=" + enabled + ", mForceIdle=" + mForceIdle); } mQuickDozeActivated = enabled; mQuickDozeActivatedWhileIdling = mQuickDozeActivated && (mState == STATE_IDLE || mState == STATE_IDLE_MAINTENANCE); if (enabled) { if (!mForceIdle && enabled) { // If Quick Doze is enabled, see if we should go straight into it. becomeInactiveIfAppropriateLocked(); } Loading Loading @@ -3617,6 +3620,14 @@ public class DeviceIdleController extends SystemService } } /** Must only be used in tests. */ @VisibleForTesting void setForceIdleEnabledForTest(boolean enabled) { synchronized (this) { mForceIdle = enabled; } } /** Sanity check to make sure DeviceIdleController and AlarmManager are on the same page. */ @GuardedBy("this") private void verifyAlarmStateLocked() { Loading services/tests/mockingservicestests/src/com/android/server/DeviceIdleControllerTest.java +27 −0 Original line number Diff line number Diff line Loading @@ -589,6 +589,33 @@ public class DeviceIdleControllerTest { assertFalse(mDeviceIdleController.isQuickDozeEnabled()); } @Test public void testStateUnchanged_QuickDozeOn_ForceIdleOn() { enterDeepState(STATE_ACTIVE); mDeviceIdleController.setForceIdleEnabledForTest(true); setQuickDozeEnabled(true); setChargingOn(false); setScreenOn(false); verifyStateConditions(STATE_ACTIVE); assertTrue(mDeviceIdleController.isQuickDozeEnabled()); } @Test public void testStateActiveToStateQuickDozeDelay_ForceIdleOff() { setAlarmSoon(false); InOrder inOrder = inOrder(mDeviceIdleController); enterDeepState(STATE_ACTIVE); mDeviceIdleController.setForceIdleEnabledForTest(false); setQuickDozeEnabled(true); setChargingOn(false); setScreenOn(false); verifyStateConditions(STATE_QUICK_DOZE_DELAY); assertTrue(mDeviceIdleController.isQuickDozeEnabled()); inOrder.verify(mDeviceIdleController) .scheduleAlarmLocked(eq(mConstants.QUICK_DOZE_DELAY_TIMEOUT)); } @Test public void testStateActiveToStateInactive_ConditionsNotMet() { mDeviceIdleController.becomeActiveLocked("testing", 0); Loading Loading
apex/jobscheduler/service/java/com/android/server/DeviceIdleController.java +13 −2 Original line number Diff line number Diff line Loading @@ -3527,11 +3527,14 @@ public class DeviceIdleController extends SystemService @VisibleForTesting @GuardedBy("this") void updateQuickDozeFlagLocked(boolean enabled) { if (DEBUG) Slog.i(TAG, "updateQuickDozeFlagLocked: enabled=" + enabled); if (DEBUG) { Slog.i(TAG, "updateQuickDozeFlagLocked: enabled=" + enabled + ", mForceIdle=" + mForceIdle); } mQuickDozeActivated = enabled; mQuickDozeActivatedWhileIdling = mQuickDozeActivated && (mState == STATE_IDLE || mState == STATE_IDLE_MAINTENANCE); if (enabled) { if (!mForceIdle && enabled) { // If Quick Doze is enabled, see if we should go straight into it. becomeInactiveIfAppropriateLocked(); } Loading Loading @@ -3617,6 +3620,14 @@ public class DeviceIdleController extends SystemService } } /** Must only be used in tests. */ @VisibleForTesting void setForceIdleEnabledForTest(boolean enabled) { synchronized (this) { mForceIdle = enabled; } } /** Sanity check to make sure DeviceIdleController and AlarmManager are on the same page. */ @GuardedBy("this") private void verifyAlarmStateLocked() { Loading
services/tests/mockingservicestests/src/com/android/server/DeviceIdleControllerTest.java +27 −0 Original line number Diff line number Diff line Loading @@ -589,6 +589,33 @@ public class DeviceIdleControllerTest { assertFalse(mDeviceIdleController.isQuickDozeEnabled()); } @Test public void testStateUnchanged_QuickDozeOn_ForceIdleOn() { enterDeepState(STATE_ACTIVE); mDeviceIdleController.setForceIdleEnabledForTest(true); setQuickDozeEnabled(true); setChargingOn(false); setScreenOn(false); verifyStateConditions(STATE_ACTIVE); assertTrue(mDeviceIdleController.isQuickDozeEnabled()); } @Test public void testStateActiveToStateQuickDozeDelay_ForceIdleOff() { setAlarmSoon(false); InOrder inOrder = inOrder(mDeviceIdleController); enterDeepState(STATE_ACTIVE); mDeviceIdleController.setForceIdleEnabledForTest(false); setQuickDozeEnabled(true); setChargingOn(false); setScreenOn(false); verifyStateConditions(STATE_QUICK_DOZE_DELAY); assertTrue(mDeviceIdleController.isQuickDozeEnabled()); inOrder.verify(mDeviceIdleController) .scheduleAlarmLocked(eq(mConstants.QUICK_DOZE_DELAY_TIMEOUT)); } @Test public void testStateActiveToStateInactive_ConditionsNotMet() { mDeviceIdleController.becomeActiveLocked("testing", 0); Loading