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) {
|
if (eventTime > now) {
|
||||||
Slog.e(TAG, "Event time " + eventTime + " cannot be newer than " + now);
|
Slog.wtf(TAG, "Event cannot be newer than the current time ("
|
||||||
throw new IllegalArgumentException("event time must not be in the future");
|
+ "now=" + now
|
||||||
|
+ ", eventTime=" + eventTime
|
||||||
|
+ ", displayId=" + displayId
|
||||||
|
+ ", event=" + PowerManager.userActivityEventToString(event)
|
||||||
|
+ ", flags=" + flags
|
||||||
|
+ ")");
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
final int uid = Binder.getCallingUid();
|
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.ActivityManager.PROCESS_STATE_FOREGROUND_SERVICE;
|
||||||
import static android.app.AppOpsManager.MODE_ALLOWED;
|
import static android.app.AppOpsManager.MODE_ALLOWED;
|
||||||
import static android.app.AppOpsManager.MODE_ERRORED;
|
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_ASLEEP;
|
||||||
import static android.os.PowerManagerInternal.WAKEFULNESS_AWAKE;
|
import static android.os.PowerManagerInternal.WAKEFULNESS_AWAKE;
|
||||||
import static android.os.PowerManagerInternal.WAKEFULNESS_DOZING;
|
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.ArgumentMatchers.same;
|
||||||
import static org.mockito.Mockito.atLeastOnce;
|
import static org.mockito.Mockito.atLeastOnce;
|
||||||
import static org.mockito.Mockito.atMost;
|
import static org.mockito.Mockito.atMost;
|
||||||
|
import static org.mockito.Mockito.clearInvocations;
|
||||||
import static org.mockito.Mockito.doAnswer;
|
import static org.mockito.Mockito.doAnswer;
|
||||||
import static org.mockito.Mockito.never;
|
import static org.mockito.Mockito.never;
|
||||||
import static org.mockito.Mockito.spy;
|
import static org.mockito.Mockito.spy;
|
||||||
@@ -112,6 +114,7 @@ import org.mockito.Mockito;
|
|||||||
import org.mockito.MockitoAnnotations;
|
import org.mockito.MockitoAnnotations;
|
||||||
import org.mockito.stubbing.Answer;
|
import org.mockito.stubbing.Answer;
|
||||||
|
|
||||||
|
import java.time.Duration;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.concurrent.Executor;
|
import java.util.concurrent.Executor;
|
||||||
@@ -2468,4 +2471,18 @@ public class PowerManagerServiceTest {
|
|||||||
verify(mNotifierMock).onWakeLockReleased(anyInt(), eq(tag), eq(packageName), anyInt(),
|
verify(mNotifierMock).onWakeLockReleased(anyInt(), eq(tag), eq(packageName), anyInt(),
|
||||||
anyInt(), any(), any(), same(callback2));
|
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