summaryrefslogtreecommitdiff
path: root/include/android/input.h
diff options
context:
space:
mode:
author Harry Cutts <hcutts@google.com> 2025-01-27 09:01:06 -0800
committer Harry Cutts <hcutts@google.com> 2025-02-05 12:44:25 +0000
commit26640c99888043d5f41b5e209bb96efe76b7ef9e (patch)
treefb4bf31b87904bd9d917042959faecd0812fe565 /include/android/input.h
parent03ec059e19d131dc3ea20504f7c0372eddb26d91 (diff)
InputVerifier: verify button events and states (attempt 2)
Check the following things: * BUTTON_PRESS and _RELEASE actions have a single, valid action button * No redundant BUTTON_PRESS or _RELEASE actions (i.e. for buttons that are already pressed or released) * Button state remains consistent throughout the stream, i.e.: * Buttons are only added to the state by BUTTON_PRESS (though DOWN events can have "pending" buttons on them) * Buttons are only removed from the state by BUTTON_RELEASE * When a DOWN event has pending buttons in its state, it is immediately followed by a BUTTON_PRESS for each one We could also verify that press and release events for primary, secondary, and tertiary buttons are accompanied by down and up events. However, I couldn't find any documentation that states which buttons should result in down or up events, so I haven't implemented this for now. This is the second attempt to land this change, due to the original causing test failures. Change I5c259c13d433d3010d2cf9c6fe01e08ba5990ef7 fixes the failures. v2 also adds a separate flag for button state verification, as it is actually used in production to check events injected by assistive technologies, whether or not the flag that I previously thought was guarding it is enabled. Test: connect a mouse and a touchpad, enable the verifier, play around with the buttons, and check that any issues found by the verifier appear to be legitimate. (I found b/391298464 , and checked that the verifier caught a button problem with a partial fix to b/372571823 .) Test: atest --host libinput_rust_tests Test: atest --host frameworks/native/libs/input/tests/InputVerifier_test.cpp Test: atest --host \ frameworks/native/services/inputflinger/tests/InputDispatcher_test.cpp Bug: 392870542 Flag: com.android.input.flags.enable_button_state_verification Change-Id: I46f489b26df8785563e41e58135b6b5de4ff62a2
Diffstat (limited to 'include/android/input.h')
-rw-r--r--include/android/input.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/include/android/input.h b/include/android/input.h
index ee98d7aee9..5f445509fa 100644
--- a/include/android/input.h
+++ b/include/android/input.h
@@ -849,6 +849,7 @@ enum {
* Refer to the documentation on the MotionEvent class for descriptions of each button.
*/
enum {
+ // LINT.IfChange(AMOTION_EVENT_BUTTON)
/** primary */
AMOTION_EVENT_BUTTON_PRIMARY = 1 << 0,
/** secondary */
@@ -861,6 +862,7 @@ enum {
AMOTION_EVENT_BUTTON_FORWARD = 1 << 4,
AMOTION_EVENT_BUTTON_STYLUS_PRIMARY = 1 << 5,
AMOTION_EVENT_BUTTON_STYLUS_SECONDARY = 1 << 6,
+ // LINT.ThenChange(/frameworks/native/libs/input/rust/input.rs)
};
/**