diff options
| -rw-r--r-- | services/core/java/com/android/server/power/PowerManagerService.java | 10 | ||||
| -rw-r--r-- | services/tests/servicestests/src/com/android/server/power/PowerManagerServiceTest.java | 17 |
2 files changed, 25 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 8744332270c7..7b0ac80ef9ab 100644 --- a/services/core/java/com/android/server/power/PowerManagerService.java +++ b/services/core/java/com/android/server/power/PowerManagerService.java @@ -5690,8 +5690,14 @@ public final class PowerManagerService extends SystemService } if (eventTime > now) { - Slog.e(TAG, "Event time " + eventTime + " cannot be newer than " + now); - throw new IllegalArgumentException("event time must not be in the future"); + Slog.wtf(TAG, "Event cannot be newer than the current time (" + + "now=" + now + + ", eventTime=" + eventTime + + ", displayId=" + displayId + + ", event=" + PowerManager.userActivityEventToString(event) + + ", flags=" + flags + + ")"); + return; } final int uid = Binder.getCallingUid(); 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 2a7e2dcb10c1..43d06117c45c 100644 --- a/services/tests/servicestests/src/com/android/server/power/PowerManagerServiceTest.java +++ b/services/tests/servicestests/src/com/android/server/power/PowerManagerServiceTest.java @@ -20,6 +20,7 @@ import static android.app.ActivityManager.PROCESS_STATE_BOUND_TOP; import static android.app.ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE; import static android.app.AppOpsManager.MODE_ALLOWED; import static android.app.AppOpsManager.MODE_ERRORED; +import static android.os.PowerManager.USER_ACTIVITY_EVENT_BUTTON; import static android.os.PowerManagerInternal.WAKEFULNESS_ASLEEP; import static android.os.PowerManagerInternal.WAKEFULNESS_AWAKE; import static android.os.PowerManagerInternal.WAKEFULNESS_DOZING; @@ -41,6 +42,7 @@ import static org.mockito.ArgumentMatchers.isNull; import static org.mockito.ArgumentMatchers.same; import static org.mockito.Mockito.atLeastOnce; import static org.mockito.Mockito.atMost; +import static org.mockito.Mockito.clearInvocations; import static org.mockito.Mockito.doAnswer; import static org.mockito.Mockito.never; import static org.mockito.Mockito.spy; @@ -113,6 +115,7 @@ import org.mockito.Mockito; import org.mockito.MockitoAnnotations; import org.mockito.stubbing.Answer; +import java.time.Duration; import java.util.HashMap; import java.util.Map; import java.util.concurrent.Executor; @@ -2494,4 +2497,18 @@ public class PowerManagerServiceTest { verify(mNotifierMock).onWakeLockReleased(anyInt(), eq(tag), eq(packageName), anyInt(), anyInt(), any(), any(), same(callback2)); } + + @Test + public void testUserActivity_futureEventsAreIgnored() { + createService(); + startSystem(); + // Starting the system triggers a user activity event, so clear that before calling + // userActivity() directly. + clearInvocations(mNotifierMock); + final long eventTime = mClock.now() + Duration.ofHours(10).toMillis(); + mService.getBinderServiceInstance().userActivity(Display.DEFAULT_DISPLAY, eventTime, + USER_ACTIVITY_EVENT_BUTTON, /* flags= */ 0); + verify(mNotifierMock, never()).onUserActivity(anyInt(), anyInt(), anyInt()); + } + } |