Ensure Monkey uses sane timestamps for key events.
Bug: 6323659
Change-Id: Idc14c36026bc8d1b612765e2da73e9b618d94ded
diff --git a/cmds/monkey/src/com/android/commands/monkey/MonkeyKeyEvent.java b/cmds/monkey/src/com/android/commands/monkey/MonkeyKeyEvent.java
index b05c3a7..53f230c 100644
--- a/cmds/monkey/src/com/android/commands/monkey/MonkeyKeyEvent.java
+++ b/cmds/monkey/src/com/android/commands/monkey/MonkeyKeyEvent.java
@@ -18,7 +18,6 @@
import android.app.IActivityManager;
import android.hardware.input.InputManager;
-import android.os.RemoteException;
import android.os.SystemClock;
import android.view.IWindowManager;
import android.view.InputDevice;
@@ -36,7 +35,7 @@
private int mDeviceId = -1;
private long mEventTime = -1;
- private KeyEvent keyEvent = null;
+ private KeyEvent mKeyEvent;
public MonkeyKeyEvent(int action, int keycode) {
super(EVENT_TYPE_KEY);
@@ -46,7 +45,7 @@
public MonkeyKeyEvent(KeyEvent e) {
super(EVENT_TYPE_KEY);
- keyEvent = e;
+ mKeyEvent = e;
}
public MonkeyKeyEvent(long downTime, long eventTime, int action,
@@ -113,18 +112,21 @@
}
}
- long eventTime = mEventTime;
- if (eventTime == 0) {
- eventTime = SystemClock.uptimeMillis();
+ KeyEvent keyEvent = mKeyEvent;
+ if (keyEvent == null) {
+ long eventTime = mEventTime;
+ if (eventTime <= 0) {
+ eventTime = SystemClock.uptimeMillis();
+ }
+ long downTime = mDownTime;
+ if (downTime <= 0) {
+ downTime = eventTime;
+ }
+ keyEvent = new KeyEvent(downTime, eventTime, mAction, mKeyCode,
+ mRepeatCount, mMetaState, mDeviceId, mScancode,
+ KeyEvent.FLAG_FROM_SYSTEM, InputDevice.SOURCE_KEYBOARD);
}
- long downTime = mDownTime;
- if (downTime == 0) {
- downTime = eventTime;
- }
- KeyEvent newEvent = new KeyEvent(downTime, eventTime, mAction, mKeyCode,
- mRepeatCount, mMetaState, mDeviceId, mScancode,
- KeyEvent.FLAG_FROM_SYSTEM, InputDevice.SOURCE_KEYBOARD);
- if (!InputManager.getInstance().injectInputEvent(newEvent,
+ if (!InputManager.getInstance().injectInputEvent(keyEvent,
InputManager.INJECT_INPUT_EVENT_MODE_WAIT_FOR_RESULT)) {
return MonkeyEvent.INJECT_FAIL;
}