From 2af3f3067a55eaa81be0b90d4cbe0531920d48dc Mon Sep 17 00:00:00 2001 From: Jeff Brown Date: Wed, 11 Apr 2012 16:12:54 -0700 Subject: [PATCH] Ensure Monkey uses sane timestamps for key events. Bug: 6323659 Change-Id: Idc14c36026bc8d1b612765e2da73e9b618d94ded --- .../commands/monkey/MonkeyKeyEvent.java | 30 ++++++++++--------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/cmds/monkey/src/com/android/commands/monkey/MonkeyKeyEvent.java b/cmds/monkey/src/com/android/commands/monkey/MonkeyKeyEvent.java index b05c3a7b2..53f230c35 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 @@ package com.android.commands.monkey; 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 @@ public class MonkeyKeyEvent extends MonkeyEvent { 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 class MonkeyKeyEvent extends MonkeyEvent { public MonkeyKeyEvent(KeyEvent e) { super(EVENT_TYPE_KEY); - keyEvent = e; + mKeyEvent = e; } public MonkeyKeyEvent(long downTime, long eventTime, int action, @@ -113,18 +112,21 @@ public class MonkeyKeyEvent extends MonkeyEvent { } } - 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; }