InputTracer: Disallow adding new targets from a derived event tracker
There are complex interactions between features in InputDispatcher that
can lead to cancelations being generated for a derived event. When
this happens, calling dispatchToTargetHint will result in a crash.
Since it is difficult to determine exactly how to reproduce this issue
in a test case, loosen the check so that we only crash if we are trying
to add a new target, which should never happen.
Bug: 328928072
Bug: 210460522
Test: will re-enable the flag and wait for new crash reports
Change-Id: I0134a12b40e1da33a94d61b721e967dfdbc95fe8
diff --git a/services/inputflinger/dispatcher/trace/InputTracer.cpp b/services/inputflinger/dispatcher/trace/InputTracer.cpp
index 49e6e21..4cf6a89 100644
--- a/services/inputflinger/dispatcher/trace/InputTracer.cpp
+++ b/services/inputflinger/dispatcher/trace/InputTracer.cpp
@@ -101,14 +101,15 @@
void InputTracer::dispatchToTargetHint(const EventTrackerInterface& cookie,
const InputTarget& target) {
- if (isDerivedCookie(cookie)) {
- LOG(FATAL) << "Event target cannot be updated from a derived cookie.";
- }
auto& eventState = getState(cookie);
if (eventState->isEventProcessingComplete) {
// TODO(b/210460522): Disallow adding new targets after eventProcessingComplete() is called.
return;
}
+ if (isDerivedCookie(cookie)) {
+ // TODO(b/210460522): Disallow adding new targets from a derived cookie.
+ return;
+ }
// TODO(b/210460522): Determine if the event is sensitive based on the target.
}