Merge "Fix inattentive sleep failing to go to sleep while dreaming" into tm-dev

This commit is contained in:
Robert Horvath
2022-03-24 13:37:56 +00:00
committed by Android (Google) Code Review
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;