Fix a background NPE in A11yIME

This is a follow up CL to my previous CL [1], which aimed to clean up
A11yIME without changing any semantics.  One thing I overlooked is that

  android.accessibilityservice.InputMethod#mStartedInputConnection

can be set to null at any time (on the UI thread) and

  InputMethod.SessionImpl#invalidateInput()

needs to gracefully do early-exit as needed.

 [1]: I5ff2e804cbcf90828370a0612ff54111130bdff4
      c60176c1f3

Fix: 245973012
Test: atest CtsInputMethodTestCases:AccessibilityInputMethodTest
Test: atest CtsAccessibilityServiceTestCases:AccessibilityInputConnectionTest
Test: atest CtsAccessibilityServiceTestCases:AccessibilityImeTest
Change-Id: I3bacff7772d20660bfdbeff724a0d19b5f0e6fe4
This commit is contained in:
Yohei Yukawa
2022-09-10 08:57:58 +09:00
parent 1eaf0fadf2
commit 89025ff06e

View File

@@ -517,7 +517,8 @@ public class InputMethod {
@Override
public void invalidateInput(EditorInfo editorInfo,
IRemoteAccessibilityInputConnection connection, int sessionId) {
if (!mStartedInputConnection.isSameConnection(connection)) {
if (!mEnabled || mStartedInputConnection == null
|| !mStartedInputConnection.isSameConnection(connection)) {
// This is not an error, and can be safely ignored.
return;
}