Check for focused window before raising 'no focused window' ANR
Previously, we were relying on the dispatcher trying to send a focused event prior to raising ANR due to no focused window. So, the previous expected behavior was: 1. A key comes in, and there is no focused window 2. ANR timer starts 3. Focused window appears 4. We try to dispatch the key again, and realize there's a focused window 5. We stop the ANR timer However, there are cases when the pending key event gets dropped. For example, this could happen if the user touches another application. That would lead to the following sequence of events: 1. A key comes in, and there is no focused window 2. ANR timer starts 3. User touches another application, and the pending key gets dropped 4. Focused window appears 5. We don't try to dispatch the pending key anymore (since nothing is pending) 6. We raise the "no focused window" ANR, even though we have a focused window (and don't even have a focused event to dispatch anymore). Solution: always check for focused window presence before raising the "no focused window" ANR. This way, we will no longer rely on other events happening for this ANR to be functioning correctly. Bug: 164754075 Bug: 167780081 Test: atest inputflinger_tests Change-Id: I70162d507fa7d65132c83fcba96ad9931e373647 Merged-In: I70162d507fa7d65132c83fcba96ad9931e373647 Signed-off-by:Akash Srivastava <akashniki@gmail.com> Signed-off-by:
DennySPb <dennyspb@gmail.com> Signed-off-by:
Anushek Prasal <anushekprasal@gmail.com> Signed-off-by:
Simão Gomes Viana <devel@superboring.dev>
Showing
- services/inputflinger/dispatcher/InputDispatcher.cpp 34 additions, 1 deletionservices/inputflinger/dispatcher/InputDispatcher.cpp
- services/inputflinger/dispatcher/InputDispatcher.h 6 additions, 0 deletionsservices/inputflinger/dispatcher/InputDispatcher.h
- services/inputflinger/tests/InputDispatcher_test.cpp 60 additions, 0 deletionsservices/inputflinger/tests/InputDispatcher_test.cpp
Loading
Please register or sign in to comment