Ensure Monkey uses sane timestamps for key events.
Bug: 6323659 Change-Id: Idc14c36026bc8d1b612765e2da73e9b618d94ded
This commit is contained in:
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user