summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java8
-rw-r--r--services/core/java/com/android/server/AccessibilityManagerInternal.java15
-rw-r--r--services/core/java/com/android/server/inputmethod/InputMethodManagerService.java8
3 files changed, 25 insertions, 6 deletions
diff --git a/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java b/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java
index f17f8f7bd7e4..482947098cdb 100644
--- a/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java
+++ b/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java
@@ -49,6 +49,7 @@ import android.accessibilityservice.TouchInteractionController;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.RequiresPermission;
+import android.annotation.UserIdInt;
import android.app.ActivityOptions;
import android.app.AlertDialog;
import android.app.PendingIntent;
@@ -359,6 +360,13 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub
EditorInfo editorInfo, boolean restarting) {
mService.scheduleStartInput(remoteAccessibilityInputConnection, editorInfo, restarting);
}
+
+ @Override
+ public boolean isTouchExplorationEnabled(@UserIdInt int userId) {
+ synchronized (mService.mLock) {
+ return mService.getUserStateLocked(userId).isTouchExplorationEnabledLocked();
+ }
+ }
}
public static final class Lifecycle extends SystemService {
diff --git a/services/core/java/com/android/server/AccessibilityManagerInternal.java b/services/core/java/com/android/server/AccessibilityManagerInternal.java
index 6ca32af8c3cb..faa45ca558a3 100644
--- a/services/core/java/com/android/server/AccessibilityManagerInternal.java
+++ b/services/core/java/com/android/server/AccessibilityManagerInternal.java
@@ -17,6 +17,7 @@
package com.android.server;
import android.annotation.NonNull;
+import android.annotation.UserIdInt;
import android.util.ArraySet;
import android.util.SparseArray;
import android.view.inputmethod.EditorInfo;
@@ -49,6 +50,15 @@ public abstract class AccessibilityManagerInternal {
IRemoteAccessibilityInputConnection remoteAccessibilityInputConnection,
EditorInfo editorInfo, boolean restarting);
+ /**
+ * Queries whether touch-exploration mode is enabled or not for the specified user.
+ *
+ * @param userId User ID to be queried about.
+ * @return {@code true} if touch-exploration mode is enabled.
+ * @see android.view.accessibility.AccessibilityManager#isTouchExplorationEnabled()
+ */
+ public abstract boolean isTouchExplorationEnabled(@UserIdInt int userId);
+
private static final AccessibilityManagerInternal NOP = new AccessibilityManagerInternal() {
@Override
public void setImeSessionEnabled(SparseArray<IAccessibilityInputMethodSession> sessions,
@@ -71,6 +81,11 @@ public abstract class AccessibilityManagerInternal {
public void startInput(IRemoteAccessibilityInputConnection remoteAccessibility,
EditorInfo editorInfo, boolean restarting) {
}
+
+ @Override
+ public boolean isTouchExplorationEnabled(int userId) {
+ return false;
+ }
};
/**
diff --git a/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java b/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java
index 31e0693ed47c..0033ff845346 100644
--- a/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java
+++ b/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java
@@ -138,7 +138,6 @@ import android.view.WindowManager;
import android.view.WindowManager.DisplayImePolicy;
import android.view.WindowManager.LayoutParams;
import android.view.WindowManager.LayoutParams.SoftInputModeFlags;
-import android.view.accessibility.AccessibilityManager;
import android.view.inputmethod.EditorInfo;
import android.view.inputmethod.InputBinding;
import android.view.inputmethod.InputConnection;
@@ -316,9 +315,6 @@ public final class InputMethodManagerService extends IInputMethodManager.Stub
@NonNull private final InputMethodBindingController mBindingController;
@NonNull private final AutofillSuggestionsController mAutofillController;
- // TODO(b/219056452): Use AccessibilityManagerInternal instead.
- private final AccessibilityManager mAccessibilityManager;
-
/**
* Cache the result of {@code LocalServices.getService(AudioManagerInternal.class)}.
*
@@ -1740,7 +1736,6 @@ public final class InputMethodManagerService extends IInputMethodManager.Stub
mAppOpsManager = mContext.getSystemService(AppOpsManager.class);
mUserManager = mContext.getSystemService(UserManager.class);
mUserManagerInternal = LocalServices.getService(UserManagerInternal.class);
- mAccessibilityManager = AccessibilityManager.getInstance(context);
mHasFeature = context.getPackageManager().hasSystemFeature(
PackageManager.FEATURE_INPUT_METHODS);
@@ -5484,7 +5479,8 @@ public final class InputMethodManagerService extends IInputMethodManager.Stub
public void onCreateInlineSuggestionsRequest(@UserIdInt int userId,
InlineSuggestionsRequestInfo requestInfo, IInlineSuggestionsRequestCallback cb) {
// Get the device global touch exploration state before lock to avoid deadlock.
- boolean touchExplorationEnabled = mAccessibilityManager.isTouchExplorationEnabled();
+ final boolean touchExplorationEnabled = AccessibilityManagerInternal.get()
+ .isTouchExplorationEnabled(userId);
synchronized (ImfLock.class) {
mAutofillController.onCreateInlineSuggestionsRequest(userId, requestInfo, cb,