Merge "Don't crash system_server due to bad event time stamps." into udc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
3588c993d8
@@ -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();
|
||||
|
||||
@@ -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;
|
||||
@@ -112,6 +114,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;
|
||||
@@ -2468,4 +2471,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());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user