Merge "Do not expose fallback InputConnection to A11y IME" into tm-dev am: df7d192d9b

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/17749703

Change-Id: I4101c68c148589070674ed55344d7f356358ba0f
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Yohei Yukawa
2022-04-15 03:58:20 +00:00
committed by Automerger Merge Worker

View File

@@ -62,7 +62,6 @@ public class InputMethod {
private final AccessibilityService mService; private final AccessibilityService mService;
private InputBinding mInputBinding; private InputBinding mInputBinding;
private InputConnection mInputConnection;
private boolean mInputStarted; private boolean mInputStarted;
private InputConnection mStartedInputConnection; private InputConnection mStartedInputConnection;
private EditorInfo mInputEditorInfo; private EditorInfo mInputEditorInfo;
@@ -81,12 +80,8 @@ public class InputMethod {
*/ */
@Nullable @Nullable
public final AccessibilityInputConnection getCurrentInputConnection() { public final AccessibilityInputConnection getCurrentInputConnection() {
InputConnection ic = mStartedInputConnection; if (mStartedInputConnection != null) {
if (ic != null) { return new AccessibilityInputConnection(mStartedInputConnection);
return new AccessibilityInputConnection(ic);
}
if (mInputConnection != null) {
return new AccessibilityInputConnection(mInputConnection);
} }
return null; return null;
} }
@@ -136,10 +131,8 @@ public class InputMethod {
* to perform whatever behavior you would like. * to perform whatever behavior you would like.
*/ */
public void onFinishInput() { public void onFinishInput() {
InputConnection ic = mStartedInputConnection != null ? mStartedInputConnection if (mStartedInputConnection != null) {
: mInputConnection; mStartedInputConnection.finishComposingText();
if (ic != null) {
ic.finishComposingText();
} }
} }
@@ -176,18 +169,14 @@ public class InputMethod {
final void bindInput(@NonNull InputBinding binding) { final void bindInput(@NonNull InputBinding binding) {
Trace.traceBegin(TRACE_TAG_WINDOW_MANAGER, "AccessibilityService.bindInput"); Trace.traceBegin(TRACE_TAG_WINDOW_MANAGER, "AccessibilityService.bindInput");
mInputBinding = binding; mInputBinding = binding;
mInputConnection = binding.getConnection(); Log.v(LOG_TAG, "bindInput(): binding=" + binding);
Log.v(LOG_TAG, "bindInput(): binding=" + binding
+ " ic=" + mInputConnection);
Trace.traceEnd(TRACE_TAG_WINDOW_MANAGER); Trace.traceEnd(TRACE_TAG_WINDOW_MANAGER);
} }
final void unbindInput() { final void unbindInput() {
Log.v(LOG_TAG, "unbindInput(): binding=" + mInputBinding Log.v(LOG_TAG, "unbindInput(): binding=" + mInputBinding);
+ " ic=" + mInputConnection);
// Unbind input is per process per display. // Unbind input is per process per display.
mInputBinding = null; mInputBinding = null;
mInputConnection = null;
} }
final void startInput(@Nullable InputConnection ic, @NonNull EditorInfo attribute) { final void startInput(@Nullable InputConnection ic, @NonNull EditorInfo attribute) {
@@ -206,8 +195,12 @@ public class InputMethod {
final void doStartInput(InputConnection ic, EditorInfo attribute, boolean restarting) { final void doStartInput(InputConnection ic, EditorInfo attribute, boolean restarting) {
if (!restarting && mInputStarted) { if ((ic == null || !restarting) && mInputStarted) {
doFinishInput(); doFinishInput();
if (ic == null) {
// Unlike InputMethodService, A11y IME should not observe fallback InputConnection.
return;
}
} }
mInputStarted = true; mInputStarted = true;
mStartedInputConnection = ic; mStartedInputConnection = ic;
@@ -224,6 +217,7 @@ public class InputMethod {
} }
mInputStarted = false; mInputStarted = false;
mStartedInputConnection = null; mStartedInputConnection = null;
mInputEditorInfo = null;
} }
private InputMethodSession onCreateInputMethodSessionInterface() { private InputMethodSession onCreateInputMethodSessionInterface() {