diff options
| -rw-r--r-- | services/core/java/com/android/server/power/PowerManagerService.java | 9 | ||||
| -rw-r--r-- | services/tests/servicestests/src/com/android/server/power/PowerManagerServiceTest.java | 17 |
2 files changed, 24 insertions, 2 deletions
diff --git a/services/core/java/com/android/server/power/PowerManagerService.java b/services/core/java/com/android/server/power/PowerManagerService.java index 8291f48bb723..53fe34d190a6 100644 --- a/services/core/java/com/android/server/power/PowerManagerService.java +++ b/services/core/java/com/android/server/power/PowerManagerService.java @@ -2687,8 +2687,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); @@ -2775,6 +2775,11 @@ public final class PowerManagerService extends SystemService screenDimDuration); } + if (isAttentiveTimeoutExpired(powerGroup, now)) { + groupUserActivitySummary = 0; + groupNextTimeout = -1; + } + hasUserActivitySummary |= groupUserActivitySummary != 0; if (nextTimeout == -1) { diff --git a/services/tests/servicestests/src/com/android/server/power/PowerManagerServiceTest.java b/services/tests/servicestests/src/com/android/server/power/PowerManagerServiceTest.java index ee9a1e0fc481..a7d3ee9f4d75 100644 --- a/services/tests/servicestests/src/com/android/server/power/PowerManagerServiceTest.java +++ b/services/tests/servicestests/src/com/android/server/power/PowerManagerServiceTest.java @@ -1098,6 +1098,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; |