Loading core/java/android/view/KeyEvent.java +37 −24 Original line number Diff line number Diff line Loading @@ -31,6 +31,8 @@ import android.util.Log; import android.util.SparseIntArray; import android.view.KeyCharacterMap.KeyData; import java.util.concurrent.TimeUnit; /** * Object used to report key and button events. * <p> Loading Loading @@ -1298,9 +1300,16 @@ public class KeyEvent extends InputEvent implements Parcelable { private int mRepeatCount; @UnsupportedAppUsage private int mFlags; @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) /** * The time when the key initially was pressed, in nanoseconds. Only millisecond precision is * exposed as public api, so this must always be converted to / from milliseconds when used. */ private long mDownTime; @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) /** * The time when the current key event occurred. If mAction is ACTION_DOWN, then this is equal * to mDownTime. Only millisecond precision is exposed as public api, so this must always be * converted to / from milliseconds when used. */ private long mEventTime; @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) private String mCharacters; Loading Loading @@ -1400,8 +1409,8 @@ public class KeyEvent extends InputEvent implements Parcelable { public KeyEvent(long downTime, long eventTime, int action, int code, int repeat) { mId = nativeNextId(); mDownTime = downTime; mEventTime = eventTime; mDownTime = TimeUnit.NANOSECONDS.convert(downTime, TimeUnit.MILLISECONDS); mEventTime = TimeUnit.NANOSECONDS.convert(eventTime, TimeUnit.MILLISECONDS); mAction = action; mKeyCode = code; mRepeatCount = repeat; Loading @@ -1425,8 +1434,8 @@ public class KeyEvent extends InputEvent implements Parcelable { public KeyEvent(long downTime, long eventTime, int action, int code, int repeat, int metaState) { mId = nativeNextId(); mDownTime = downTime; mEventTime = eventTime; mDownTime = TimeUnit.NANOSECONDS.convert(downTime, TimeUnit.MILLISECONDS); mEventTime = TimeUnit.NANOSECONDS.convert(eventTime, TimeUnit.MILLISECONDS); mAction = action; mKeyCode = code; mRepeatCount = repeat; Loading Loading @@ -1454,8 +1463,8 @@ public class KeyEvent extends InputEvent implements Parcelable { int code, int repeat, int metaState, int deviceId, int scancode) { mId = nativeNextId(); mDownTime = downTime; mEventTime = eventTime; mDownTime = TimeUnit.NANOSECONDS.convert(downTime, TimeUnit.MILLISECONDS); mEventTime = TimeUnit.NANOSECONDS.convert(eventTime, TimeUnit.MILLISECONDS); mAction = action; mKeyCode = code; mRepeatCount = repeat; Loading Loading @@ -1485,8 +1494,8 @@ public class KeyEvent extends InputEvent implements Parcelable { int code, int repeat, int metaState, int deviceId, int scancode, int flags) { mId = nativeNextId(); mDownTime = downTime; mEventTime = eventTime; mDownTime = TimeUnit.NANOSECONDS.convert(downTime, TimeUnit.MILLISECONDS); mEventTime = TimeUnit.NANOSECONDS.convert(eventTime, TimeUnit.MILLISECONDS); mAction = action; mKeyCode = code; mRepeatCount = repeat; Loading Loading @@ -1518,8 +1527,8 @@ public class KeyEvent extends InputEvent implements Parcelable { int code, int repeat, int metaState, int deviceId, int scancode, int flags, int source) { mId = nativeNextId(); mDownTime = downTime; mEventTime = eventTime; mDownTime = TimeUnit.NANOSECONDS.convert(downTime, TimeUnit.MILLISECONDS); mEventTime = TimeUnit.NANOSECONDS.convert(eventTime, TimeUnit.MILLISECONDS); mAction = action; mKeyCode = code; mRepeatCount = repeat; Loading @@ -1545,8 +1554,8 @@ public class KeyEvent extends InputEvent implements Parcelable { */ public KeyEvent(long time, String characters, int deviceId, int flags) { mId = nativeNextId(); mDownTime = time; mEventTime = time; mDownTime = TimeUnit.NANOSECONDS.convert(time, TimeUnit.MILLISECONDS); mEventTime = TimeUnit.NANOSECONDS.convert(time, TimeUnit.MILLISECONDS); mCharacters = characters; mAction = ACTION_MULTIPLE; mKeyCode = KEYCODE_UNKNOWN; Loading Loading @@ -1592,7 +1601,7 @@ public class KeyEvent extends InputEvent implements Parcelable { public KeyEvent(KeyEvent origEvent, long eventTime, int newRepeat) { mId = nativeNextId(); // Not an exact copy so assign a new ID. mDownTime = origEvent.mDownTime; mEventTime = eventTime; mEventTime = TimeUnit.NANOSECONDS.convert(eventTime, TimeUnit.MILLISECONDS); mAction = origEvent.mAction; mKeyCode = origEvent.mKeyCode; mRepeatCount = newRepeat; Loading Loading @@ -1626,14 +1635,14 @@ public class KeyEvent extends InputEvent implements Parcelable { * * @hide */ public static KeyEvent obtain(int id, long downTime, long eventTime, int action, private static KeyEvent obtain(int id, long downTimeNanos, long eventTimeNanos, int action, int code, int repeat, int metaState, int deviceId, int scancode, int flags, int source, int displayId, @Nullable byte[] hmac, String characters) { KeyEvent ev = obtain(); ev.mId = id; ev.mDownTime = downTime; ev.mEventTime = eventTime; ev.mDownTime = downTimeNanos; ev.mEventTime = eventTimeNanos; ev.mAction = action; ev.mKeyCode = code; ev.mRepeatCount = repeat; Loading @@ -1656,6 +1665,8 @@ public class KeyEvent extends InputEvent implements Parcelable { public static KeyEvent obtain(long downTime, long eventTime, int action, int code, int repeat, int metaState, int deviceId, int scanCode, int flags, int source, int displayId, String characters) { downTime = TimeUnit.NANOSECONDS.convert(downTime, TimeUnit.MILLISECONDS); eventTime = TimeUnit.NANOSECONDS.convert(eventTime, TimeUnit.MILLISECONDS); return obtain(nativeNextId(), downTime, eventTime, action, code, repeat, metaState, deviceId, scanCode, flags, source, displayId, null /* hmac */, characters); } Loading @@ -1669,6 +1680,8 @@ public class KeyEvent extends InputEvent implements Parcelable { public static KeyEvent obtain(long downTime, long eventTime, int action, int code, int repeat, int metaState, int deviceId, int scancode, int flags, int source, String characters) { // Do not convert downTime and eventTime here. We are calling the obtain method above, // which will do the conversion. Just specify INVALID_DISPLAY and forward the request. return obtain(downTime, eventTime, action, code, repeat, metaState, deviceId, scancode, flags, source, INVALID_DISPLAY, characters); } Loading Loading @@ -1768,7 +1781,7 @@ public class KeyEvent extends InputEvent implements Parcelable { int newRepeat, int newFlags) { KeyEvent ret = new KeyEvent(event); ret.mId = nativeNextId(); // Not an exact copy so assign a new ID. ret.mEventTime = eventTime; ret.mEventTime = TimeUnit.NANOSECONDS.convert(eventTime, TimeUnit.MILLISECONDS); ret.mRepeatCount = newRepeat; ret.mFlags = newFlags; return ret; Loading Loading @@ -2617,8 +2630,8 @@ public class KeyEvent extends InputEvent implements Parcelable { * @hide */ public final void setTime(long downTime, long eventTime) { mDownTime = downTime; mEventTime = eventTime; mDownTime = TimeUnit.NANOSECONDS.convert(downTime, TimeUnit.MILLISECONDS); mEventTime = TimeUnit.NANOSECONDS.convert(eventTime, TimeUnit.MILLISECONDS); } /** Loading @@ -2633,7 +2646,7 @@ public class KeyEvent extends InputEvent implements Parcelable { * {@link android.os.SystemClock#uptimeMillis} time base */ public final long getDownTime() { return mDownTime; return TimeUnit.MILLISECONDS.convert(mDownTime, TimeUnit.NANOSECONDS); } /** Loading @@ -2645,7 +2658,7 @@ public class KeyEvent extends InputEvent implements Parcelable { */ @Override public final long getEventTime() { return mEventTime; return TimeUnit.MILLISECONDS.convert(mEventTime, TimeUnit.NANOSECONDS); } /** Loading @@ -2664,7 +2677,7 @@ public class KeyEvent extends InputEvent implements Parcelable { */ @Override public final long getEventTimeNano() { return mEventTime * 1000000L; return mEventTime; } /** Loading core/jni/android_view_KeyEvent.cpp +2 −5 Original line number Diff line number Diff line Loading @@ -98,9 +98,7 @@ jobject android_view_KeyEvent_fromNative(JNIEnv* env, const KeyEvent* event) { ScopedLocalRef<jbyteArray> hmac = toJbyteArray(env, event->getHmac()); jobject eventObj = env->CallStaticObjectMethod(gKeyEventClassInfo.clazz, gKeyEventClassInfo.obtain, event->getId(), nanoseconds_to_milliseconds(event->getDownTime()), nanoseconds_to_milliseconds(event->getEventTime()), event->getId(), event->getDownTime(), event->getEventTime(), event->getAction(), event->getKeyCode(), event->getRepeatCount(), event->getMetaState(), event->getDeviceId(), event->getScanCode(), Loading Loading @@ -136,8 +134,7 @@ status_t android_view_KeyEvent_toNative(JNIEnv* env, jobject eventObj, jlong eventTime = env->GetLongField(eventObj, gKeyEventClassInfo.mEventTime); event->initialize(id, deviceId, source, displayId, *hmac, action, flags, keyCode, scanCode, metaState, repeatCount, milliseconds_to_nanoseconds(downTime), milliseconds_to_nanoseconds(eventTime)); metaState, repeatCount, downTime, eventTime); return OK; } Loading core/tests/coretests/src/android/view/KeyEventTest.java +2 −4 Original line number Diff line number Diff line Loading @@ -36,7 +36,6 @@ import java.util.Set; @RunWith(AndroidJUnit4.class) public class KeyEventTest { private static final int ID = 0xabcdef; private static final int DOWN_TIME = 50; private static final long EVENT_TIME = 100; private static final int ACTION = KeyEvent.ACTION_DOWN; Loading @@ -47,7 +46,6 @@ public class KeyEventTest { private static final int SCAN_CODE = 0; private static final int FLAGS = 0; private static final int SOURCE = InputDevice.SOURCE_KEYBOARD; private static final byte[] HMAC = null; private static final String CHARACTERS = null; private static final int ID_SOURCE_MASK = 0x3 << 30; Loading Loading @@ -164,8 +162,8 @@ public class KeyEventTest { } private static KeyEvent createKey() { return KeyEvent.obtain(ID, DOWN_TIME, EVENT_TIME, ACTION, KEYCODE, REPEAT, METASTATE, DEVICE_ID, SCAN_CODE, FLAGS, SOURCE, INVALID_DISPLAY, HMAC, CHARACTERS); return KeyEvent.obtain(DOWN_TIME, EVENT_TIME, ACTION, KEYCODE, REPEAT, METASTATE, DEVICE_ID, SCAN_CODE, FLAGS, SOURCE, INVALID_DISPLAY, CHARACTERS); } private static void compareKeys(KeyEvent key1, KeyEvent key2) { Loading Loading
core/java/android/view/KeyEvent.java +37 −24 Original line number Diff line number Diff line Loading @@ -31,6 +31,8 @@ import android.util.Log; import android.util.SparseIntArray; import android.view.KeyCharacterMap.KeyData; import java.util.concurrent.TimeUnit; /** * Object used to report key and button events. * <p> Loading Loading @@ -1298,9 +1300,16 @@ public class KeyEvent extends InputEvent implements Parcelable { private int mRepeatCount; @UnsupportedAppUsage private int mFlags; @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) /** * The time when the key initially was pressed, in nanoseconds. Only millisecond precision is * exposed as public api, so this must always be converted to / from milliseconds when used. */ private long mDownTime; @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) /** * The time when the current key event occurred. If mAction is ACTION_DOWN, then this is equal * to mDownTime. Only millisecond precision is exposed as public api, so this must always be * converted to / from milliseconds when used. */ private long mEventTime; @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) private String mCharacters; Loading Loading @@ -1400,8 +1409,8 @@ public class KeyEvent extends InputEvent implements Parcelable { public KeyEvent(long downTime, long eventTime, int action, int code, int repeat) { mId = nativeNextId(); mDownTime = downTime; mEventTime = eventTime; mDownTime = TimeUnit.NANOSECONDS.convert(downTime, TimeUnit.MILLISECONDS); mEventTime = TimeUnit.NANOSECONDS.convert(eventTime, TimeUnit.MILLISECONDS); mAction = action; mKeyCode = code; mRepeatCount = repeat; Loading @@ -1425,8 +1434,8 @@ public class KeyEvent extends InputEvent implements Parcelable { public KeyEvent(long downTime, long eventTime, int action, int code, int repeat, int metaState) { mId = nativeNextId(); mDownTime = downTime; mEventTime = eventTime; mDownTime = TimeUnit.NANOSECONDS.convert(downTime, TimeUnit.MILLISECONDS); mEventTime = TimeUnit.NANOSECONDS.convert(eventTime, TimeUnit.MILLISECONDS); mAction = action; mKeyCode = code; mRepeatCount = repeat; Loading Loading @@ -1454,8 +1463,8 @@ public class KeyEvent extends InputEvent implements Parcelable { int code, int repeat, int metaState, int deviceId, int scancode) { mId = nativeNextId(); mDownTime = downTime; mEventTime = eventTime; mDownTime = TimeUnit.NANOSECONDS.convert(downTime, TimeUnit.MILLISECONDS); mEventTime = TimeUnit.NANOSECONDS.convert(eventTime, TimeUnit.MILLISECONDS); mAction = action; mKeyCode = code; mRepeatCount = repeat; Loading Loading @@ -1485,8 +1494,8 @@ public class KeyEvent extends InputEvent implements Parcelable { int code, int repeat, int metaState, int deviceId, int scancode, int flags) { mId = nativeNextId(); mDownTime = downTime; mEventTime = eventTime; mDownTime = TimeUnit.NANOSECONDS.convert(downTime, TimeUnit.MILLISECONDS); mEventTime = TimeUnit.NANOSECONDS.convert(eventTime, TimeUnit.MILLISECONDS); mAction = action; mKeyCode = code; mRepeatCount = repeat; Loading Loading @@ -1518,8 +1527,8 @@ public class KeyEvent extends InputEvent implements Parcelable { int code, int repeat, int metaState, int deviceId, int scancode, int flags, int source) { mId = nativeNextId(); mDownTime = downTime; mEventTime = eventTime; mDownTime = TimeUnit.NANOSECONDS.convert(downTime, TimeUnit.MILLISECONDS); mEventTime = TimeUnit.NANOSECONDS.convert(eventTime, TimeUnit.MILLISECONDS); mAction = action; mKeyCode = code; mRepeatCount = repeat; Loading @@ -1545,8 +1554,8 @@ public class KeyEvent extends InputEvent implements Parcelable { */ public KeyEvent(long time, String characters, int deviceId, int flags) { mId = nativeNextId(); mDownTime = time; mEventTime = time; mDownTime = TimeUnit.NANOSECONDS.convert(time, TimeUnit.MILLISECONDS); mEventTime = TimeUnit.NANOSECONDS.convert(time, TimeUnit.MILLISECONDS); mCharacters = characters; mAction = ACTION_MULTIPLE; mKeyCode = KEYCODE_UNKNOWN; Loading Loading @@ -1592,7 +1601,7 @@ public class KeyEvent extends InputEvent implements Parcelable { public KeyEvent(KeyEvent origEvent, long eventTime, int newRepeat) { mId = nativeNextId(); // Not an exact copy so assign a new ID. mDownTime = origEvent.mDownTime; mEventTime = eventTime; mEventTime = TimeUnit.NANOSECONDS.convert(eventTime, TimeUnit.MILLISECONDS); mAction = origEvent.mAction; mKeyCode = origEvent.mKeyCode; mRepeatCount = newRepeat; Loading Loading @@ -1626,14 +1635,14 @@ public class KeyEvent extends InputEvent implements Parcelable { * * @hide */ public static KeyEvent obtain(int id, long downTime, long eventTime, int action, private static KeyEvent obtain(int id, long downTimeNanos, long eventTimeNanos, int action, int code, int repeat, int metaState, int deviceId, int scancode, int flags, int source, int displayId, @Nullable byte[] hmac, String characters) { KeyEvent ev = obtain(); ev.mId = id; ev.mDownTime = downTime; ev.mEventTime = eventTime; ev.mDownTime = downTimeNanos; ev.mEventTime = eventTimeNanos; ev.mAction = action; ev.mKeyCode = code; ev.mRepeatCount = repeat; Loading @@ -1656,6 +1665,8 @@ public class KeyEvent extends InputEvent implements Parcelable { public static KeyEvent obtain(long downTime, long eventTime, int action, int code, int repeat, int metaState, int deviceId, int scanCode, int flags, int source, int displayId, String characters) { downTime = TimeUnit.NANOSECONDS.convert(downTime, TimeUnit.MILLISECONDS); eventTime = TimeUnit.NANOSECONDS.convert(eventTime, TimeUnit.MILLISECONDS); return obtain(nativeNextId(), downTime, eventTime, action, code, repeat, metaState, deviceId, scanCode, flags, source, displayId, null /* hmac */, characters); } Loading @@ -1669,6 +1680,8 @@ public class KeyEvent extends InputEvent implements Parcelable { public static KeyEvent obtain(long downTime, long eventTime, int action, int code, int repeat, int metaState, int deviceId, int scancode, int flags, int source, String characters) { // Do not convert downTime and eventTime here. We are calling the obtain method above, // which will do the conversion. Just specify INVALID_DISPLAY and forward the request. return obtain(downTime, eventTime, action, code, repeat, metaState, deviceId, scancode, flags, source, INVALID_DISPLAY, characters); } Loading Loading @@ -1768,7 +1781,7 @@ public class KeyEvent extends InputEvent implements Parcelable { int newRepeat, int newFlags) { KeyEvent ret = new KeyEvent(event); ret.mId = nativeNextId(); // Not an exact copy so assign a new ID. ret.mEventTime = eventTime; ret.mEventTime = TimeUnit.NANOSECONDS.convert(eventTime, TimeUnit.MILLISECONDS); ret.mRepeatCount = newRepeat; ret.mFlags = newFlags; return ret; Loading Loading @@ -2617,8 +2630,8 @@ public class KeyEvent extends InputEvent implements Parcelable { * @hide */ public final void setTime(long downTime, long eventTime) { mDownTime = downTime; mEventTime = eventTime; mDownTime = TimeUnit.NANOSECONDS.convert(downTime, TimeUnit.MILLISECONDS); mEventTime = TimeUnit.NANOSECONDS.convert(eventTime, TimeUnit.MILLISECONDS); } /** Loading @@ -2633,7 +2646,7 @@ public class KeyEvent extends InputEvent implements Parcelable { * {@link android.os.SystemClock#uptimeMillis} time base */ public final long getDownTime() { return mDownTime; return TimeUnit.MILLISECONDS.convert(mDownTime, TimeUnit.NANOSECONDS); } /** Loading @@ -2645,7 +2658,7 @@ public class KeyEvent extends InputEvent implements Parcelable { */ @Override public final long getEventTime() { return mEventTime; return TimeUnit.MILLISECONDS.convert(mEventTime, TimeUnit.NANOSECONDS); } /** Loading @@ -2664,7 +2677,7 @@ public class KeyEvent extends InputEvent implements Parcelable { */ @Override public final long getEventTimeNano() { return mEventTime * 1000000L; return mEventTime; } /** Loading
core/jni/android_view_KeyEvent.cpp +2 −5 Original line number Diff line number Diff line Loading @@ -98,9 +98,7 @@ jobject android_view_KeyEvent_fromNative(JNIEnv* env, const KeyEvent* event) { ScopedLocalRef<jbyteArray> hmac = toJbyteArray(env, event->getHmac()); jobject eventObj = env->CallStaticObjectMethod(gKeyEventClassInfo.clazz, gKeyEventClassInfo.obtain, event->getId(), nanoseconds_to_milliseconds(event->getDownTime()), nanoseconds_to_milliseconds(event->getEventTime()), event->getId(), event->getDownTime(), event->getEventTime(), event->getAction(), event->getKeyCode(), event->getRepeatCount(), event->getMetaState(), event->getDeviceId(), event->getScanCode(), Loading Loading @@ -136,8 +134,7 @@ status_t android_view_KeyEvent_toNative(JNIEnv* env, jobject eventObj, jlong eventTime = env->GetLongField(eventObj, gKeyEventClassInfo.mEventTime); event->initialize(id, deviceId, source, displayId, *hmac, action, flags, keyCode, scanCode, metaState, repeatCount, milliseconds_to_nanoseconds(downTime), milliseconds_to_nanoseconds(eventTime)); metaState, repeatCount, downTime, eventTime); return OK; } Loading
core/tests/coretests/src/android/view/KeyEventTest.java +2 −4 Original line number Diff line number Diff line Loading @@ -36,7 +36,6 @@ import java.util.Set; @RunWith(AndroidJUnit4.class) public class KeyEventTest { private static final int ID = 0xabcdef; private static final int DOWN_TIME = 50; private static final long EVENT_TIME = 100; private static final int ACTION = KeyEvent.ACTION_DOWN; Loading @@ -47,7 +46,6 @@ public class KeyEventTest { private static final int SCAN_CODE = 0; private static final int FLAGS = 0; private static final int SOURCE = InputDevice.SOURCE_KEYBOARD; private static final byte[] HMAC = null; private static final String CHARACTERS = null; private static final int ID_SOURCE_MASK = 0x3 << 30; Loading Loading @@ -164,8 +162,8 @@ public class KeyEventTest { } private static KeyEvent createKey() { return KeyEvent.obtain(ID, DOWN_TIME, EVENT_TIME, ACTION, KEYCODE, REPEAT, METASTATE, DEVICE_ID, SCAN_CODE, FLAGS, SOURCE, INVALID_DISPLAY, HMAC, CHARACTERS); return KeyEvent.obtain(DOWN_TIME, EVENT_TIME, ACTION, KEYCODE, REPEAT, METASTATE, DEVICE_ID, SCAN_CODE, FLAGS, SOURCE, INVALID_DISPLAY, CHARACTERS); } private static void compareKeys(KeyEvent key1, KeyEvent key2) { Loading