From 89025ff06e71f9e37b4bb6f94e43ff50f246d581 Mon Sep 17 00:00:00 2001 From: Yohei Yukawa Date: Sat, 10 Sep 2022 08:57:58 +0900 Subject: [PATCH] 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 c60176c1f315e10c95f3eec0019149d7b7932aa9 Fix: 245973012 Test: atest CtsInputMethodTestCases:AccessibilityInputMethodTest Test: atest CtsAccessibilityServiceTestCases:AccessibilityInputConnectionTest Test: atest CtsAccessibilityServiceTestCases:AccessibilityImeTest Change-Id: I3bacff7772d20660bfdbeff724a0d19b5f0e6fe4 --- core/java/android/accessibilityservice/InputMethod.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/core/java/android/accessibilityservice/InputMethod.java b/core/java/android/accessibilityservice/InputMethod.java index 1585f99759cd0..93888ef5ba6f8 100644 --- a/core/java/android/accessibilityservice/InputMethod.java +++ b/core/java/android/accessibilityservice/InputMethod.java @@ -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; }