Ensure Monkey uses sane timestamps for key events.

Bug: 6323659
Change-Id: Idc14c36026bc8d1b612765e2da73e9b618d94ded
This commit is contained in:
Jeff Brown
2012-04-11 16:12:54 -07:00
parent ee684ebc76
commit 2af3f3067a

View File

@@ -18,7 +18,6 @@ package com.android.commands.monkey;
import android.app.IActivityManager; import android.app.IActivityManager;
import android.hardware.input.InputManager; import android.hardware.input.InputManager;
import android.os.RemoteException;
import android.os.SystemClock; import android.os.SystemClock;
import android.view.IWindowManager; import android.view.IWindowManager;
import android.view.InputDevice; import android.view.InputDevice;
@@ -36,7 +35,7 @@ public class MonkeyKeyEvent extends MonkeyEvent {
private int mDeviceId = -1; private int mDeviceId = -1;
private long mEventTime = -1; private long mEventTime = -1;
private KeyEvent keyEvent = null; private KeyEvent mKeyEvent;
public MonkeyKeyEvent(int action, int keycode) { public MonkeyKeyEvent(int action, int keycode) {
super(EVENT_TYPE_KEY); super(EVENT_TYPE_KEY);
@@ -46,7 +45,7 @@ public class MonkeyKeyEvent extends MonkeyEvent {
public MonkeyKeyEvent(KeyEvent e) { public MonkeyKeyEvent(KeyEvent e) {
super(EVENT_TYPE_KEY); super(EVENT_TYPE_KEY);
keyEvent = e; mKeyEvent = e;
} }
public MonkeyKeyEvent(long downTime, long eventTime, int action, public MonkeyKeyEvent(long downTime, long eventTime, int action,
@@ -113,18 +112,21 @@ public class MonkeyKeyEvent extends MonkeyEvent {
} }
} }
KeyEvent keyEvent = mKeyEvent;
if (keyEvent == null) {
long eventTime = mEventTime; long eventTime = mEventTime;
if (eventTime == 0) { if (eventTime <= 0) {
eventTime = SystemClock.uptimeMillis(); eventTime = SystemClock.uptimeMillis();
} }
long downTime = mDownTime; long downTime = mDownTime;
if (downTime == 0) { if (downTime <= 0) {
downTime = eventTime; downTime = eventTime;
} }
KeyEvent newEvent = new KeyEvent(downTime, eventTime, mAction, mKeyCode, keyEvent = new KeyEvent(downTime, eventTime, mAction, mKeyCode,
mRepeatCount, mMetaState, mDeviceId, mScancode, mRepeatCount, mMetaState, mDeviceId, mScancode,
KeyEvent.FLAG_FROM_SYSTEM, InputDevice.SOURCE_KEYBOARD); 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)) { InputManager.INJECT_INPUT_EVENT_MODE_WAIT_FOR_RESULT)) {
return MonkeyEvent.INJECT_FAIL; return MonkeyEvent.INJECT_FAIL;
} }