Merge "Fix inattentive sleep failing to go to sleep while dreaming" into tm-dev am: 641fbeb11b

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/17006673

Change-Id: I777d0427500b9c6db40311ab4b4d2d298b7f4a13
This commit is contained in:
Robert Horvath
2022-03-24 13:39:21 +00:00
committed by Automerger Merge Worker
2 changed files with 24 additions and 2 deletions

View File

@@ -2718,8 +2718,8 @@ public final class PowerManagerService extends SystemService
@GuardedBy("mLock")
private void updateUserActivitySummaryLocked(long now, int dirty) {
// Update the status of the user activity timeout timer.
if ((dirty & (DIRTY_DISPLAY_GROUP_WAKEFULNESS | DIRTY_WAKE_LOCKS
| DIRTY_USER_ACTIVITY | DIRTY_WAKEFULNESS | DIRTY_SETTINGS)) == 0) {
if ((dirty & (DIRTY_DISPLAY_GROUP_WAKEFULNESS | DIRTY_WAKE_LOCKS | DIRTY_USER_ACTIVITY
| DIRTY_WAKEFULNESS | DIRTY_SETTINGS | DIRTY_ATTENTIVE)) == 0) {
return;
}
mHandler.removeMessages(MSG_USER_ACTIVITY_TIMEOUT);
@@ -2803,6 +2803,11 @@ public final class PowerManagerService extends SystemService
screenDimDuration);
}
if (isAttentiveTimeoutExpired(powerGroup, now)) {
groupUserActivitySummary = 0;
groupNextTimeout = -1;
}
hasUserActivitySummary |= groupUserActivitySummary != 0;
if (nextTimeout == -1) {

View File

@@ -1086,6 +1086,23 @@ public class PowerManagerServiceTest {
assertThat(mService.getGlobalWakefulnessLocked()).isNotEqualTo(WAKEFULNESS_ASLEEP);
}
@SuppressWarnings("GuardedBy")
@Test
public void testInattentiveSleep_goesToSleepFromDream() {
setAttentiveTimeout(20000);
createService();
startSystem();
setPluggedIn(true);
forceAwake();
forceDream();
when(mDreamManagerInternalMock.isDreaming()).thenReturn(true);
assertThat(mService.getGlobalWakefulnessLocked()).isEqualTo(WAKEFULNESS_DREAMING);
advanceTime(20500);
assertThat(mService.getGlobalWakefulnessLocked()).isEqualTo(WAKEFULNESS_ASLEEP);
}
@Test
public void testWakeLock_affectsProperDisplayGroup() {
final int nonDefaultDisplayGroupId = Display.DEFAULT_DISPLAY_GROUP + 1;