Loading core/java/android/os/PowerManager.java +9 −1 Original line number Diff line number Diff line Loading @@ -566,7 +566,8 @@ public final class PowerManager { WAKE_REASON_HDMI, WAKE_REASON_DISPLAY_GROUP_ADDED, WAKE_REASON_DISPLAY_GROUP_TURNED_ON, WAKE_REASON_UNFOLD_DEVICE WAKE_REASON_UNFOLD_DEVICE, WAKE_REASON_DREAM_FINISHED }) @Retention(RetentionPolicy.SOURCE) public @interface WakeReason{} Loading Loading @@ -672,6 +673,12 @@ public final class PowerManager { */ public static final int WAKE_REASON_UNFOLD_DEVICE = 12; /** * Wake up reason code: Waking the device due to the dream finishing. * @hide */ public static final int WAKE_REASON_DREAM_FINISHED = 13; /** * Convert the wake reason to a string for debugging purposes. * @hide Loading @@ -691,6 +698,7 @@ public final class PowerManager { case WAKE_REASON_DISPLAY_GROUP_ADDED: return "WAKE_REASON_DISPLAY_GROUP_ADDED"; case WAKE_REASON_DISPLAY_GROUP_TURNED_ON: return "WAKE_REASON_DISPLAY_GROUP_TURNED_ON"; case WAKE_REASON_UNFOLD_DEVICE: return "WAKE_REASON_UNFOLD_DEVICE"; case WAKE_REASON_DREAM_FINISHED: return "WAKE_REASON_DREAM_FINISHED"; default: return Integer.toString(wakeReason); } } Loading services/core/java/com/android/server/power/PowerManagerService.java +6 −2 Original line number Diff line number Diff line Loading @@ -669,8 +669,12 @@ public final class PowerManagerService extends SystemService int reason, int uid, int opUid, String opPackageName, String details) { if (wakefulness == WAKEFULNESS_AWAKE) { // Kick user activity to prevent newly awake group from timing out instantly. // The dream may end without user activity if the dream app crashes / is updated, // don't poke the user activity timer for these wakes. int flags = reason == PowerManager.WAKE_REASON_DREAM_FINISHED ? PowerManager.USER_ACTIVITY_FLAG_NO_CHANGE_LIGHTS : 0; userActivityNoUpdateLocked(mPowerGroups.get(groupId), eventTime, PowerManager.USER_ACTIVITY_EVENT_OTHER, 0, uid); PowerManager.USER_ACTIVITY_EVENT_OTHER, flags, uid); } mDirty |= DIRTY_DISPLAY_GROUP_WAKEFULNESS; updateGlobalWakefulnessLocked(eventTime, reason, uid, opUid, opPackageName, details); Loading Loading @@ -3275,7 +3279,7 @@ public final class PowerManagerService extends SystemService } } else { wakePowerGroupLocked(powerGroup, now, PowerManager.WAKE_REASON_UNKNOWN, PowerManager.WAKE_REASON_DREAM_FINISHED, "android.server.power:DREAM_FINISHED", Process.SYSTEM_UID, mContext.getOpPackageName(), Process.SYSTEM_UID); } Loading services/tests/servicestests/src/com/android/server/power/PowerManagerServiceTest.java +21 −0 Original line number Diff line number Diff line Loading @@ -930,6 +930,27 @@ public class PowerManagerServiceTest { PowerManager.GO_TO_SLEEP_REASON_INATTENTIVE); } @Test public void testInattentiveSleep_dreamEnds_goesToSleepAfterTimeout() { setMinimumScreenOffTimeoutConfig(5); setAttentiveTimeout(30000); createService(); startSystem(); advanceTime(10000); forceDream(); advanceTime(10000); final String pkg = mContextSpy.getOpPackageName(); mService.getBinderServiceInstance().wakeUp(mClock.now(), PowerManager.WAKE_REASON_DREAM_FINISHED, "PowerManagerServiceTest:DREAM_FINISHED", pkg); advanceTime(10001); assertThat(mService.getGlobalWakefulnessLocked()).isEqualTo(WAKEFULNESS_ASLEEP); assertThat(mService.getBinderServiceInstance().getLastSleepReason()).isEqualTo( PowerManager.GO_TO_SLEEP_REASON_INATTENTIVE); } @Test public void testScreenOffTimeout_goesToSleepAfterTimeout() { final DisplayInfo info = new DisplayInfo(); Loading Loading
core/java/android/os/PowerManager.java +9 −1 Original line number Diff line number Diff line Loading @@ -566,7 +566,8 @@ public final class PowerManager { WAKE_REASON_HDMI, WAKE_REASON_DISPLAY_GROUP_ADDED, WAKE_REASON_DISPLAY_GROUP_TURNED_ON, WAKE_REASON_UNFOLD_DEVICE WAKE_REASON_UNFOLD_DEVICE, WAKE_REASON_DREAM_FINISHED }) @Retention(RetentionPolicy.SOURCE) public @interface WakeReason{} Loading Loading @@ -672,6 +673,12 @@ public final class PowerManager { */ public static final int WAKE_REASON_UNFOLD_DEVICE = 12; /** * Wake up reason code: Waking the device due to the dream finishing. * @hide */ public static final int WAKE_REASON_DREAM_FINISHED = 13; /** * Convert the wake reason to a string for debugging purposes. * @hide Loading @@ -691,6 +698,7 @@ public final class PowerManager { case WAKE_REASON_DISPLAY_GROUP_ADDED: return "WAKE_REASON_DISPLAY_GROUP_ADDED"; case WAKE_REASON_DISPLAY_GROUP_TURNED_ON: return "WAKE_REASON_DISPLAY_GROUP_TURNED_ON"; case WAKE_REASON_UNFOLD_DEVICE: return "WAKE_REASON_UNFOLD_DEVICE"; case WAKE_REASON_DREAM_FINISHED: return "WAKE_REASON_DREAM_FINISHED"; default: return Integer.toString(wakeReason); } } Loading
services/core/java/com/android/server/power/PowerManagerService.java +6 −2 Original line number Diff line number Diff line Loading @@ -669,8 +669,12 @@ public final class PowerManagerService extends SystemService int reason, int uid, int opUid, String opPackageName, String details) { if (wakefulness == WAKEFULNESS_AWAKE) { // Kick user activity to prevent newly awake group from timing out instantly. // The dream may end without user activity if the dream app crashes / is updated, // don't poke the user activity timer for these wakes. int flags = reason == PowerManager.WAKE_REASON_DREAM_FINISHED ? PowerManager.USER_ACTIVITY_FLAG_NO_CHANGE_LIGHTS : 0; userActivityNoUpdateLocked(mPowerGroups.get(groupId), eventTime, PowerManager.USER_ACTIVITY_EVENT_OTHER, 0, uid); PowerManager.USER_ACTIVITY_EVENT_OTHER, flags, uid); } mDirty |= DIRTY_DISPLAY_GROUP_WAKEFULNESS; updateGlobalWakefulnessLocked(eventTime, reason, uid, opUid, opPackageName, details); Loading Loading @@ -3275,7 +3279,7 @@ public final class PowerManagerService extends SystemService } } else { wakePowerGroupLocked(powerGroup, now, PowerManager.WAKE_REASON_UNKNOWN, PowerManager.WAKE_REASON_DREAM_FINISHED, "android.server.power:DREAM_FINISHED", Process.SYSTEM_UID, mContext.getOpPackageName(), Process.SYSTEM_UID); } Loading
services/tests/servicestests/src/com/android/server/power/PowerManagerServiceTest.java +21 −0 Original line number Diff line number Diff line Loading @@ -930,6 +930,27 @@ public class PowerManagerServiceTest { PowerManager.GO_TO_SLEEP_REASON_INATTENTIVE); } @Test public void testInattentiveSleep_dreamEnds_goesToSleepAfterTimeout() { setMinimumScreenOffTimeoutConfig(5); setAttentiveTimeout(30000); createService(); startSystem(); advanceTime(10000); forceDream(); advanceTime(10000); final String pkg = mContextSpy.getOpPackageName(); mService.getBinderServiceInstance().wakeUp(mClock.now(), PowerManager.WAKE_REASON_DREAM_FINISHED, "PowerManagerServiceTest:DREAM_FINISHED", pkg); advanceTime(10001); assertThat(mService.getGlobalWakefulnessLocked()).isEqualTo(WAKEFULNESS_ASLEEP); assertThat(mService.getBinderServiceInstance().getLastSleepReason()).isEqualTo( PowerManager.GO_TO_SLEEP_REASON_INATTENTIVE); } @Test public void testScreenOffTimeout_goesToSleepAfterTimeout() { final DisplayInfo info = new DisplayInfo(); Loading