Reland "Reject inconsistent globally injected events" --try 2
This reverts commit f7f93f5fd5afa40858ac492402ec6cc85fe89275.
Reason for revert: fixed tests
Changes: the test for inconsistent sequence needed to be updated because
the injection will now always fail.
Original description:
The dispatcher currently crashes when certain inconsistent input events
are injected. This is affecting test stability negatively.
In this CL, we reject globally-injected inconsistent events. That may cause
some test flakiness, but should eliminate the crashes due to dispatcher
reaching bad state later.
Unfortunately, we can't currently reject all inconsistent injected
events. In the case of targeted injection, it is common for the caller
to leave pointers dangling. Since the injection happens into the
caller-owned windows only, at the end of those tests the windows get
cleaned up, so the dispatcher is still in a good state.
The eventual goal is to completely get rid of injection. Meanwhile,
however, this should help avoid at least some of the crashes.
Bug: 369935405
Flag: EXEMPT bugfix
Test: atest inputflinger_tests
Change-Id: Ic778677a63e544feadf01f3cc47b08ec3b207297
diff --git a/include/input/InputEventBuilders.h b/include/input/InputEventBuilders.h
index 1899a66..1696a62 100644
--- a/include/input/InputEventBuilders.h
+++ b/include/input/InputEventBuilders.h
@@ -250,6 +250,9 @@
public:
MotionEventBuilder(int32_t action, int32_t source) {
mAction = action;
+ if (mAction == AMOTION_EVENT_ACTION_CANCEL) {
+ mFlags |= AMOTION_EVENT_FLAG_CANCELED;
+ }
mSource = source;
mEventTime = systemTime(SYSTEM_TIME_MONOTONIC);
mDownTime = mEventTime;