diff options
| author | 2023-05-02 20:13:58 +0000 | |
|---|---|---|
| committer | 2023-05-02 20:13:58 +0000 | |
| commit | 95c521c018fa79bbdfb91402166f4cecceabd58d (patch) | |
| tree | 8c57640e98511b3d4dcb532afd1b637ada8269a2 | |
| parent | 87fe0383e9ed811f533b4be29357b7c5d962b0c7 (diff) | |
| parent | 805b5efa6c930315d05e4e700add212ea67db56d (diff) | |
Merge "Don't crash system_server due to bad event time stamps." into udc-dev am: 3588c993d8 am: 805b5efa6c
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/22761826
Change-Id: I8fd47c65304e98a8a496ff9b3b4d997770b20b5b
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
| -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()); + } + } |