Fix Monkey key events.
Monkey should not be injecting keys with metastate of -1. Cleaned up the code to ensure it doesn't happen and to make it more obvious what's going on. Bug: 6397645 Change-Id: I7339b2fe14edb0578005f93af1f803a0ae3dec96
This commit is contained in:
@@ -21,26 +21,39 @@ import android.hardware.input.InputManager;
|
|||||||
import android.os.SystemClock;
|
import android.os.SystemClock;
|
||||||
import android.view.IWindowManager;
|
import android.view.IWindowManager;
|
||||||
import android.view.InputDevice;
|
import android.view.InputDevice;
|
||||||
|
import android.view.KeyCharacterMap;
|
||||||
import android.view.KeyEvent;
|
import android.view.KeyEvent;
|
||||||
/**
|
/**
|
||||||
* monkey key event
|
* monkey key event
|
||||||
*/
|
*/
|
||||||
public class MonkeyKeyEvent extends MonkeyEvent {
|
public class MonkeyKeyEvent extends MonkeyEvent {
|
||||||
private long mDownTime = -1;
|
private int mDeviceId;
|
||||||
private int mMetaState = -1;
|
private long mEventTime;
|
||||||
private int mAction = -1;
|
private long mDownTime;
|
||||||
private int mKeyCode = -1;
|
private int mAction;
|
||||||
private int mScancode = -1;
|
private int mKeyCode;
|
||||||
private int mRepeatCount = -1;
|
private int mScanCode;
|
||||||
private int mDeviceId = -1;
|
private int mMetaState;
|
||||||
private long mEventTime = -1;
|
private int mRepeatCount;
|
||||||
|
|
||||||
private KeyEvent mKeyEvent;
|
private KeyEvent mKeyEvent;
|
||||||
|
|
||||||
public MonkeyKeyEvent(int action, int keycode) {
|
public MonkeyKeyEvent(int action, int keyCode) {
|
||||||
|
this(-1, -1, action, keyCode, 0, 0, KeyCharacterMap.VIRTUAL_KEYBOARD, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
public MonkeyKeyEvent(long downTime, long eventTime, int action,
|
||||||
|
int keyCode, int repeatCount, int metaState,
|
||||||
|
int device, int scanCode) {
|
||||||
super(EVENT_TYPE_KEY);
|
super(EVENT_TYPE_KEY);
|
||||||
|
mDownTime = downTime;
|
||||||
|
mEventTime = eventTime;
|
||||||
mAction = action;
|
mAction = action;
|
||||||
mKeyCode = keycode;
|
mKeyCode = keyCode;
|
||||||
|
mRepeatCount = repeatCount;
|
||||||
|
mMetaState = metaState;
|
||||||
|
mDeviceId = device;
|
||||||
|
mScanCode = scanCode;
|
||||||
}
|
}
|
||||||
|
|
||||||
public MonkeyKeyEvent(KeyEvent e) {
|
public MonkeyKeyEvent(KeyEvent e) {
|
||||||
@@ -48,42 +61,33 @@ public class MonkeyKeyEvent extends MonkeyEvent {
|
|||||||
mKeyEvent = e;
|
mKeyEvent = e;
|
||||||
}
|
}
|
||||||
|
|
||||||
public MonkeyKeyEvent(long downTime, long eventTime, int action,
|
|
||||||
int code, int repeat, int metaState,
|
|
||||||
int device, int scancode) {
|
|
||||||
super(EVENT_TYPE_KEY);
|
|
||||||
|
|
||||||
mAction = action;
|
|
||||||
mKeyCode = code;
|
|
||||||
mMetaState = metaState;
|
|
||||||
mScancode = scancode;
|
|
||||||
mRepeatCount = repeat;
|
|
||||||
mDeviceId = device;
|
|
||||||
mDownTime = downTime;
|
|
||||||
mEventTime = eventTime;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getKeyCode() {
|
public int getKeyCode() {
|
||||||
return mKeyCode;
|
return mKeyEvent != null ? mKeyEvent.getKeyCode() : mKeyCode;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getAction() {
|
public int getAction() {
|
||||||
return mAction;
|
return mKeyEvent != null ? mKeyEvent.getAction() : mAction;
|
||||||
}
|
}
|
||||||
|
|
||||||
public long getDownTime() {
|
public long getDownTime() {
|
||||||
return mDownTime;
|
return mKeyEvent != null ? mKeyEvent.getDownTime() : mDownTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
public long getEventTime() {
|
public long getEventTime() {
|
||||||
return mEventTime;
|
return mKeyEvent != null ? mKeyEvent.getEventTime() : mEventTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setDownTime(long downTime) {
|
public void setDownTime(long downTime) {
|
||||||
|
if (mKeyEvent != null) {
|
||||||
|
throw new IllegalStateException("Cannot modify down time of this key event.");
|
||||||
|
}
|
||||||
mDownTime = downTime;
|
mDownTime = downTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setEventTime(long eventTime) {
|
public void setEventTime(long eventTime) {
|
||||||
|
if (mKeyEvent != null) {
|
||||||
|
throw new IllegalStateException("Cannot modify event time of this key event.");
|
||||||
|
}
|
||||||
mEventTime = eventTime;
|
mEventTime = eventTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -123,7 +127,7 @@ public class MonkeyKeyEvent extends MonkeyEvent {
|
|||||||
downTime = eventTime;
|
downTime = eventTime;
|
||||||
}
|
}
|
||||||
keyEvent = 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(keyEvent,
|
if (!InputManager.getInstance().injectInputEvent(keyEvent,
|
||||||
|
|||||||
Reference in New Issue
Block a user