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;
         }