Merge "Fix off-by-one error when releasing wakelocks." into udc-dev

This commit is contained in:
Santos Cordon
2023-04-15 01:02:53 +00:00
committed by Android (Google) Code Review
2 changed files with 13 additions and 4 deletions

View File

@@ -38,7 +38,9 @@ public final class WakelockController {
public static final int WAKE_LOCK_STATE_CHANGED = 4;
public static final int WAKE_LOCK_UNFINISHED_BUSINESS = 5;
private static final int WAKE_LOCK_MAX = WAKE_LOCK_UNFINISHED_BUSINESS;
@VisibleForTesting
static final int WAKE_LOCK_MAX = WAKE_LOCK_UNFINISHED_BUSINESS;
private static final boolean DEBUG = false;
@IntDef(flag = true, prefix = "WAKE_LOCK_", value = {
@@ -132,7 +134,7 @@ public final class WakelockController {
* A utility to release all the wakelock acquired by the system
*/
public void releaseAll() {
for (int i = WAKE_LOCK_PROXIMITY_POSITIVE; i < WAKE_LOCK_MAX; i++) {
for (int i = WAKE_LOCK_PROXIMITY_POSITIVE; i <= WAKE_LOCK_MAX; i++) {
releaseWakelockInternal(i);
}
}

View File

@@ -244,6 +244,15 @@ public final class WakelockControllerTest {
verifyZeroInteractions(mDisplayPowerCallbacks);
}
@Test
public void testReleaseAll() throws Exception {
// Use WAKE_LOCK_MAX to verify it has been correctly set and used in releaseAll().
verifyWakelockAcquisition(WakelockController.WAKE_LOCK_MAX,
() -> mWakelockController.hasUnfinishedBusiness());
mWakelockController.releaseAll();
assertFalse(mWakelockController.hasUnfinishedBusiness());
}
private void verifyWakelockAcquisitionAndReaquisition(int wakelockId,
Callable<Boolean> isWakelockAcquiredCallable)
throws Exception {
@@ -284,6 +293,4 @@ public final class WakelockControllerTest {
assertFalse(mWakelockController.releaseWakelock(wakelockId));
assertFalse(isWakelockAcquiredCallable.call());
}
}