Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 32aa4112 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Add AccessibilityManagerInternal#isTouchExplorationEnabled()"

parents c535a425 1dd7a063
Loading
Loading
Loading
Loading
+8 −0
Original line number Original line Diff line number Diff line
@@ -49,6 +49,7 @@ import android.accessibilityservice.TouchInteractionController;
import android.annotation.NonNull;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.Nullable;
import android.annotation.RequiresPermission;
import android.annotation.RequiresPermission;
import android.annotation.UserIdInt;
import android.app.ActivityOptions;
import android.app.ActivityOptions;
import android.app.AlertDialog;
import android.app.AlertDialog;
import android.app.PendingIntent;
import android.app.PendingIntent;
@@ -359,6 +360,13 @@ public class AccessibilityManagerService extends IAccessibilityManager.Stub
                EditorInfo editorInfo, boolean restarting) {
                EditorInfo editorInfo, boolean restarting) {
            mService.scheduleStartInput(remoteAccessibilityInputConnection, editorInfo, 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 {
    public static final class Lifecycle extends SystemService {
+15 −0
Original line number Original line Diff line number Diff line
@@ -17,6 +17,7 @@
package com.android.server;
package com.android.server;


import android.annotation.NonNull;
import android.annotation.NonNull;
import android.annotation.UserIdInt;
import android.util.ArraySet;
import android.util.ArraySet;
import android.util.SparseArray;
import android.util.SparseArray;
import android.view.inputmethod.EditorInfo;
import android.view.inputmethod.EditorInfo;
@@ -49,6 +50,15 @@ public abstract class AccessibilityManagerInternal {
            IRemoteAccessibilityInputConnection remoteAccessibilityInputConnection,
            IRemoteAccessibilityInputConnection remoteAccessibilityInputConnection,
            EditorInfo editorInfo, boolean restarting);
            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() {
    private static final AccessibilityManagerInternal NOP = new AccessibilityManagerInternal() {
        @Override
        @Override
        public void setImeSessionEnabled(SparseArray<IAccessibilityInputMethodSession> sessions,
        public void setImeSessionEnabled(SparseArray<IAccessibilityInputMethodSession> sessions,
@@ -71,6 +81,11 @@ public abstract class AccessibilityManagerInternal {
        public void startInput(IRemoteAccessibilityInputConnection remoteAccessibility,
        public void startInput(IRemoteAccessibilityInputConnection remoteAccessibility,
                EditorInfo editorInfo, boolean restarting) {
                EditorInfo editorInfo, boolean restarting) {
        }
        }

        @Override
        public boolean isTouchExplorationEnabled(int userId) {
            return false;
        }
    };
    };


    /**
    /**
+2 −6
Original line number Original line Diff line number Diff line
@@ -137,7 +137,6 @@ import android.view.WindowManager;
import android.view.WindowManager.DisplayImePolicy;
import android.view.WindowManager.DisplayImePolicy;
import android.view.WindowManager.LayoutParams;
import android.view.WindowManager.LayoutParams;
import android.view.WindowManager.LayoutParams.SoftInputModeFlags;
import android.view.WindowManager.LayoutParams.SoftInputModeFlags;
import android.view.accessibility.AccessibilityManager;
import android.view.inputmethod.EditorInfo;
import android.view.inputmethod.EditorInfo;
import android.view.inputmethod.InputBinding;
import android.view.inputmethod.InputBinding;
import android.view.inputmethod.InputConnection;
import android.view.inputmethod.InputConnection;
@@ -312,9 +311,6 @@ public final class InputMethodManagerService extends IInputMethodManager.Stub
    @NonNull private final InputMethodBindingController mBindingController;
    @NonNull private final InputMethodBindingController mBindingController;
    @NonNull private final AutofillSuggestionsController mAutofillController;
    @NonNull private final AutofillSuggestionsController mAutofillController;


    // TODO(b/219056452): Use AccessibilityManagerInternal instead.
    private final AccessibilityManager mAccessibilityManager;

    /**
    /**
     * Cache the result of {@code LocalServices.getService(AudioManagerInternal.class)}.
     * Cache the result of {@code LocalServices.getService(AudioManagerInternal.class)}.
     *
     *
@@ -1734,7 +1730,6 @@ public final class InputMethodManagerService extends IInputMethodManager.Stub
        mDisplayManagerInternal = LocalServices.getService(DisplayManagerInternal.class);
        mDisplayManagerInternal = LocalServices.getService(DisplayManagerInternal.class);
        mUserManager = mContext.getSystemService(UserManager.class);
        mUserManager = mContext.getSystemService(UserManager.class);
        mUserManagerInternal = LocalServices.getService(UserManagerInternal.class);
        mUserManagerInternal = LocalServices.getService(UserManagerInternal.class);
        mAccessibilityManager = AccessibilityManager.getInstance(context);
        mHasFeature = context.getPackageManager().hasSystemFeature(
        mHasFeature = context.getPackageManager().hasSystemFeature(
                PackageManager.FEATURE_INPUT_METHODS);
                PackageManager.FEATURE_INPUT_METHODS);


@@ -5469,7 +5464,8 @@ public final class InputMethodManagerService extends IInputMethodManager.Stub
        public void onCreateInlineSuggestionsRequest(@UserIdInt int userId,
        public void onCreateInlineSuggestionsRequest(@UserIdInt int userId,
                InlineSuggestionsRequestInfo requestInfo, IInlineSuggestionsRequestCallback cb) {
                InlineSuggestionsRequestInfo requestInfo, IInlineSuggestionsRequestCallback cb) {
            // Get the device global touch exploration state before lock to avoid deadlock.
            // 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) {
            synchronized (ImfLock.class) {
                mAutofillController.onCreateInlineSuggestionsRequest(userId, requestInfo, cb,
                mAutofillController.onCreateInlineSuggestionsRequest(userId, requestInfo, cb,