Loading core/java/android/accessibilityservice/AccessibilityService.java +42 −39 Original line number Diff line number Diff line Loading @@ -886,7 +886,7 @@ public abstract class AccessibilityService extends Service { * them, otherwise an empty list. */ public List<AccessibilityWindowInfo> getWindows() { return AccessibilityInteractionClient.getInstance().getWindows(mConnectionId); return AccessibilityInteractionClient.getInstance(this).getWindows(mConnectionId); } /** Loading Loading @@ -914,7 +914,8 @@ public abstract class AccessibilityService extends Service { */ @NonNull public final SparseArray<List<AccessibilityWindowInfo>> getWindowsOnAllDisplays() { return AccessibilityInteractionClient.getInstance().getWindowsOnAllDisplays(mConnectionId); return AccessibilityInteractionClient.getInstance(this).getWindowsOnAllDisplays( mConnectionId); } /** Loading @@ -940,7 +941,8 @@ public abstract class AccessibilityService extends Service { * @return The root node if this service can retrieve window content. */ public AccessibilityNodeInfo getRootInActiveWindow() { return AccessibilityInteractionClient.getInstance().getRootInActiveWindow(mConnectionId); return AccessibilityInteractionClient.getInstance(this).getRootInActiveWindow( mConnectionId); } /** Loading @@ -949,7 +951,7 @@ public abstract class AccessibilityService extends Service { */ public final void disableSelf() { final IAccessibilityServiceConnection connection = AccessibilityInteractionClient.getInstance().getConnection(mConnectionId); AccessibilityInteractionClient.getInstance(this).getConnection(mConnectionId); if (connection != null) { try { connection.disableSelf(); Loading @@ -970,7 +972,7 @@ public abstract class AccessibilityService extends Service { private void setDefaultTokenInternal(Context context, int displayId) { final WindowManagerImpl wm = (WindowManagerImpl) context.getSystemService(WINDOW_SERVICE); final IAccessibilityServiceConnection connection = AccessibilityInteractionClient.getInstance().getConnection(mConnectionId); AccessibilityInteractionClient.getInstance(this).getConnection(mConnectionId); IBinder token = null; if (connection != null) { synchronized (mLock) { Loading Loading @@ -1042,7 +1044,7 @@ public abstract class AccessibilityService extends Service { public final @NonNull FingerprintGestureController getFingerprintGestureController() { if (mFingerprintGestureController == null) { mFingerprintGestureController = new FingerprintGestureController( AccessibilityInteractionClient.getInstance().getConnection(mConnectionId)); AccessibilityInteractionClient.getInstance(this).getConnection(mConnectionId)); } return mFingerprintGestureController; } Loading Loading @@ -1074,8 +1076,7 @@ public abstract class AccessibilityService extends Service { @Nullable GestureResultCallback callback, @Nullable Handler handler) { final IAccessibilityServiceConnection connection = AccessibilityInteractionClient.getInstance().getConnection( mConnectionId); AccessibilityInteractionClient.getInstance(this).getConnection(mConnectionId); if (connection == null) { return false; } Loading Loading @@ -1287,7 +1288,7 @@ public abstract class AccessibilityService extends Service { private void setMagnificationCallbackEnabled(boolean enabled) { final IAccessibilityServiceConnection connection = AccessibilityInteractionClient.getInstance().getConnection( AccessibilityInteractionClient.getInstance(mService).getConnection( mService.mConnectionId); if (connection != null) { try { Loading Loading @@ -1348,7 +1349,7 @@ public abstract class AccessibilityService extends Service { */ public float getScale() { final IAccessibilityServiceConnection connection = AccessibilityInteractionClient.getInstance().getConnection( AccessibilityInteractionClient.getInstance(mService).getConnection( mService.mConnectionId); if (connection != null) { try { Loading Loading @@ -1377,7 +1378,7 @@ public abstract class AccessibilityService extends Service { */ public float getCenterX() { final IAccessibilityServiceConnection connection = AccessibilityInteractionClient.getInstance().getConnection( AccessibilityInteractionClient.getInstance(mService).getConnection( mService.mConnectionId); if (connection != null) { try { Loading Loading @@ -1406,7 +1407,7 @@ public abstract class AccessibilityService extends Service { */ public float getCenterY() { final IAccessibilityServiceConnection connection = AccessibilityInteractionClient.getInstance().getConnection( AccessibilityInteractionClient.getInstance(mService).getConnection( mService.mConnectionId); if (connection != null) { try { Loading Loading @@ -1440,7 +1441,7 @@ public abstract class AccessibilityService extends Service { @NonNull public Region getMagnificationRegion() { final IAccessibilityServiceConnection connection = AccessibilityInteractionClient.getInstance().getConnection( AccessibilityInteractionClient.getInstance(mService).getConnection( mService.mConnectionId); if (connection != null) { try { Loading Loading @@ -1469,7 +1470,7 @@ public abstract class AccessibilityService extends Service { */ public boolean reset(boolean animate) { final IAccessibilityServiceConnection connection = AccessibilityInteractionClient.getInstance().getConnection( AccessibilityInteractionClient.getInstance(mService).getConnection( mService.mConnectionId); if (connection != null) { try { Loading Loading @@ -1497,7 +1498,7 @@ public abstract class AccessibilityService extends Service { */ public boolean setScale(float scale, boolean animate) { final IAccessibilityServiceConnection connection = AccessibilityInteractionClient.getInstance().getConnection( AccessibilityInteractionClient.getInstance(mService).getConnection( mService.mConnectionId); if (connection != null) { try { Loading Loading @@ -1529,7 +1530,7 @@ public abstract class AccessibilityService extends Service { */ public boolean setCenter(float centerX, float centerY, boolean animate) { final IAccessibilityServiceConnection connection = AccessibilityInteractionClient.getInstance().getConnection( AccessibilityInteractionClient.getInstance(mService).getConnection( mService.mConnectionId); if (connection != null) { try { Loading Loading @@ -1701,7 +1702,7 @@ public abstract class AccessibilityService extends Service { private void setSoftKeyboardCallbackEnabled(boolean enabled) { final IAccessibilityServiceConnection connection = AccessibilityInteractionClient.getInstance().getConnection( AccessibilityInteractionClient.getInstance(mService).getConnection( mService.mConnectionId); if (connection != null) { try { Loading Loading @@ -1760,7 +1761,7 @@ public abstract class AccessibilityService extends Service { @SoftKeyboardShowMode public int getShowMode() { final IAccessibilityServiceConnection connection = AccessibilityInteractionClient.getInstance().getConnection( AccessibilityInteractionClient.getInstance(mService).getConnection( mService.mConnectionId); if (connection != null) { try { Loading Loading @@ -1789,7 +1790,7 @@ public abstract class AccessibilityService extends Service { */ public boolean setShowMode(@SoftKeyboardShowMode int showMode) { final IAccessibilityServiceConnection connection = AccessibilityInteractionClient.getInstance().getConnection( AccessibilityInteractionClient.getInstance(mService).getConnection( mService.mConnectionId); if (connection != null) { try { Loading Loading @@ -1835,7 +1836,7 @@ public abstract class AccessibilityService extends Service { */ public boolean switchToInputMethod(@NonNull String imeId) { final IAccessibilityServiceConnection connection = AccessibilityInteractionClient.getInstance().getConnection( AccessibilityInteractionClient.getInstance(mService).getConnection( mService.mConnectionId); if (connection != null) { try { Loading Loading @@ -1888,7 +1889,7 @@ public abstract class AccessibilityService extends Service { displayId); if (controller == null) { controller = new AccessibilityButtonController( AccessibilityInteractionClient.getInstance().getConnection(mConnectionId)); AccessibilityInteractionClient.getInstance(this).getConnection(mConnectionId)); mAccessibilityButtonControllers.put(displayId, controller); } return controller; Loading Loading @@ -1922,7 +1923,7 @@ public abstract class AccessibilityService extends Service { */ public final @NonNull List<AccessibilityAction> getSystemActions() { IAccessibilityServiceConnection connection = AccessibilityInteractionClient.getInstance().getConnection(mConnectionId); AccessibilityInteractionClient.getInstance(this).getConnection(mConnectionId); if (connection != null) { try { return connection.getSystemActions(); Loading Loading @@ -1955,7 +1956,7 @@ public abstract class AccessibilityService extends Service { */ public final boolean performGlobalAction(int action) { IAccessibilityServiceConnection connection = AccessibilityInteractionClient.getInstance().getConnection(mConnectionId); AccessibilityInteractionClient.getInstance(this).getConnection(mConnectionId); if (connection != null) { try { return connection.performGlobalAction(action); Loading Loading @@ -1996,7 +1997,7 @@ public abstract class AccessibilityService extends Service { * @see AccessibilityNodeInfo#FOCUS_ACCESSIBILITY */ public AccessibilityNodeInfo findFocus(int focus) { return AccessibilityInteractionClient.getInstance().findFocus(mConnectionId, return AccessibilityInteractionClient.getInstance(this).findFocus(mConnectionId, AccessibilityWindowInfo.ANY_WINDOW_ID, AccessibilityNodeInfo.ROOT_NODE_ID, focus); } Loading @@ -2012,7 +2013,7 @@ public abstract class AccessibilityService extends Service { */ public final AccessibilityServiceInfo getServiceInfo() { IAccessibilityServiceConnection connection = AccessibilityInteractionClient.getInstance().getConnection(mConnectionId); AccessibilityInteractionClient.getInstance(this).getConnection(mConnectionId); if (connection != null) { try { return connection.getServiceInfo(); Loading Loading @@ -2044,12 +2045,12 @@ public abstract class AccessibilityService extends Service { */ private void sendServiceInfo() { IAccessibilityServiceConnection connection = AccessibilityInteractionClient.getInstance().getConnection(mConnectionId); AccessibilityInteractionClient.getInstance(this).getConnection(mConnectionId); if (mInfo != null && connection != null) { try { connection.setServiceInfo(mInfo); mInfo = null; AccessibilityInteractionClient.getInstance().clearCache(); AccessibilityInteractionClient.getInstance(this).clearCache(); } catch (RemoteException re) { Log.w(LOG_TAG, "Error while setting AccessibilityServiceInfo", re); re.rethrowFromSystemServer(); Loading Loading @@ -2096,8 +2097,7 @@ public abstract class AccessibilityService extends Service { Preconditions.checkNotNull(executor, "executor cannot be null"); Preconditions.checkNotNull(callback, "callback cannot be null"); final IAccessibilityServiceConnection connection = AccessibilityInteractionClient.getInstance().getConnection( mConnectionId); AccessibilityInteractionClient.getInstance(this).getConnection(mConnectionId); if (connection == null) { sendScreenshotFailure(ERROR_TAKE_SCREENSHOT_INTERNAL_ERROR, executor, callback); return; Loading Loading @@ -2136,7 +2136,7 @@ public abstract class AccessibilityService extends Service { */ public void setAccessibilityFocusAppearance(int strokeWidth, @ColorInt int color) { IAccessibilityServiceConnection connection = AccessibilityInteractionClient.getInstance().getConnection(mConnectionId); AccessibilityInteractionClient.getInstance(this).getConnection(mConnectionId); if (connection != null) { try { connection.setFocusAppearance(strokeWidth, color); Loading Loading @@ -2261,12 +2261,14 @@ public abstract class AccessibilityService extends Service { private final HandlerCaller mCaller; private final Callbacks mCallback; private final Context mContext; private int mConnectionId = AccessibilityInteractionClient.NO_ID; public IAccessibilityServiceClientWrapper(Context context, Looper looper, Callbacks callback) { mCallback = callback; mContext = context; mCaller = new HandlerCaller(context, looper, this, true /*asyncHandler*/); } Loading Loading @@ -2366,7 +2368,8 @@ public abstract class AccessibilityService extends Service { boolean serviceWantsEvent = message.arg1 != 0; if (event != null) { // Send the event to AccessibilityCache via AccessibilityInteractionClient AccessibilityInteractionClient.getInstance().onAccessibilityEvent(event); AccessibilityInteractionClient.getInstance(mContext).onAccessibilityEvent( event); if (serviceWantsEvent && (mConnectionId != AccessibilityInteractionClient.NO_ID)) { // Send the event to AccessibilityService Loading Loading @@ -2395,15 +2398,15 @@ public abstract class AccessibilityService extends Service { IBinder windowToken = (IBinder) args.arg2; args.recycle(); if (connection != null) { AccessibilityInteractionClient.getInstance().addConnection(mConnectionId, connection); AccessibilityInteractionClient.getInstance(mContext).addConnection( mConnectionId, connection); mCallback.init(mConnectionId, windowToken); mCallback.onServiceConnected(); } else { AccessibilityInteractionClient.getInstance().removeConnection( AccessibilityInteractionClient.getInstance(mContext).removeConnection( mConnectionId); mConnectionId = AccessibilityInteractionClient.NO_ID; AccessibilityInteractionClient.getInstance().clearCache(); AccessibilityInteractionClient.getInstance(mContext).clearCache(); mCallback.init(AccessibilityInteractionClient.NO_ID, null); } return; Loading @@ -2415,14 +2418,14 @@ public abstract class AccessibilityService extends Service { return; } case DO_CLEAR_ACCESSIBILITY_CACHE: { AccessibilityInteractionClient.getInstance().clearCache(); AccessibilityInteractionClient.getInstance(mContext).clearCache(); return; } case DO_ON_KEY_EVENT: { KeyEvent event = (KeyEvent) message.obj; try { IAccessibilityServiceConnection connection = AccessibilityInteractionClient .getInstance().getConnection(mConnectionId); .getInstance(mContext).getConnection(mConnectionId); if (connection != null) { final boolean result = mCallback.onKeyEvent(event); final int sequence = message.arg1; Loading Loading @@ -2637,7 +2640,7 @@ public abstract class AccessibilityService extends Service { public void setGestureDetectionPassthroughRegion(int displayId, @NonNull Region region) { Preconditions.checkNotNull(region, "region cannot be null"); final IAccessibilityServiceConnection connection = AccessibilityInteractionClient.getInstance().getConnection(mConnectionId); AccessibilityInteractionClient.getInstance(this).getConnection(mConnectionId); if (connection != null) { try { connection.setGestureDetectionPassthroughRegion(displayId, region); Loading @@ -2663,7 +2666,7 @@ public abstract class AccessibilityService extends Service { public void setTouchExplorationPassthroughRegion(int displayId, @NonNull Region region) { Preconditions.checkNotNull(region, "region cannot be null"); final IAccessibilityServiceConnection connection = AccessibilityInteractionClient.getInstance().getConnection(mConnectionId); AccessibilityInteractionClient.getInstance(this).getConnection(mConnectionId); if (connection != null) { try { connection.setTouchExplorationPassthroughRegion(displayId, region); Loading core/java/android/accessibilityservice/IAccessibilityServiceConnection.aidl +3 −0 Original line number Diff line number Diff line Loading @@ -117,4 +117,7 @@ interface IAccessibilityServiceConnection { void setTouchExplorationPassthroughRegion(int displayId, in Region region); void setFocusAppearance(int strokeWidth, int color); oneway void logTrace(long timestamp, String where, String callingParams, int processId, long threadId, int callingUid, in Bundle serializedCallingStackInBundle); } core/java/android/view/accessibility/AccessibilityInteractionClient.java +112 −1 File changed.Preview size limit exceeded, changes collapsed. Show changes core/java/android/view/accessibility/AccessibilityManager.java +30 −0 Original line number Diff line number Diff line Loading @@ -110,6 +110,9 @@ public final class AccessibilityManager { /** @hide */ public static final int STATE_FLAG_REQUEST_MULTI_FINGER_GESTURES = 0x00000010; /** @hide */ public static final int STATE_FLAG_ACCESSIBILITY_TRACING_ENABLED = 0x00000020; /** @hide */ public static final int DALTONIZER_DISABLED = -1; Loading Loading @@ -232,6 +235,9 @@ public final class AccessibilityManager { @UnsupportedAppUsage(trackingBug = 123768939L) boolean mIsHighTextContrastEnabled; // Whether accessibility tracing is enabled or not boolean mIsAccessibilityTracingEnabled = false; AccessibilityPolicy mAccessibilityPolicy; private int mPerformingAction = 0; Loading Loading @@ -1003,6 +1009,17 @@ public final class AccessibilityManager { } } /** * Gets accessibility tracing enabled state. * * @hide */ public boolean isAccessibilityTracingEnabled() { synchronized (mLock) { return mIsAccessibilityTracingEnabled; } } /** * Get the preparers that are registered for an accessibility ID * Loading Loading @@ -1197,6 +1214,8 @@ public final class AccessibilityManager { (stateFlags & STATE_FLAG_TOUCH_EXPLORATION_ENABLED) != 0; final boolean highTextContrastEnabled = (stateFlags & STATE_FLAG_HIGH_TEXT_CONTRAST_ENABLED) != 0; final boolean accessibilityTracingEnabled = (stateFlags & STATE_FLAG_ACCESSIBILITY_TRACING_ENABLED) != 0; final boolean wasEnabled = isEnabled(); final boolean wasTouchExplorationEnabled = mIsTouchExplorationEnabled; Loading @@ -1218,6 +1237,8 @@ public final class AccessibilityManager { if (wasHighTextContrastEnabled != highTextContrastEnabled) { notifyHighTextContrastStateChanged(); } updateAccessibilityTracingState(accessibilityTracingEnabled); } /** Loading Loading @@ -1674,6 +1695,15 @@ public final class AccessibilityManager { } } /** * Update mIsAccessibilityTracingEnabled. */ private void updateAccessibilityTracingState(boolean enabled) { synchronized (mLock) { mIsAccessibilityTracingEnabled = enabled; } } /** * Update interactive and non-interactive UI timeout. * Loading core/tests/coretests/src/android/view/accessibility/AccessibilityServiceConnectionImpl.java +3 −0 Original line number Diff line number Diff line Loading @@ -163,4 +163,7 @@ public class AccessibilityServiceConnectionImpl extends IAccessibilityServiceCon public void setGestureDetectionPassthroughRegion(int displayId, Region region) {} public void setFocusAppearance(int strokeWidth, int color) {} public void logTrace(long timestamp, String where, String callingParams, int processId, long threadId, int callingUid, Bundle callingStack) {} } Loading
core/java/android/accessibilityservice/AccessibilityService.java +42 −39 Original line number Diff line number Diff line Loading @@ -886,7 +886,7 @@ public abstract class AccessibilityService extends Service { * them, otherwise an empty list. */ public List<AccessibilityWindowInfo> getWindows() { return AccessibilityInteractionClient.getInstance().getWindows(mConnectionId); return AccessibilityInteractionClient.getInstance(this).getWindows(mConnectionId); } /** Loading Loading @@ -914,7 +914,8 @@ public abstract class AccessibilityService extends Service { */ @NonNull public final SparseArray<List<AccessibilityWindowInfo>> getWindowsOnAllDisplays() { return AccessibilityInteractionClient.getInstance().getWindowsOnAllDisplays(mConnectionId); return AccessibilityInteractionClient.getInstance(this).getWindowsOnAllDisplays( mConnectionId); } /** Loading @@ -940,7 +941,8 @@ public abstract class AccessibilityService extends Service { * @return The root node if this service can retrieve window content. */ public AccessibilityNodeInfo getRootInActiveWindow() { return AccessibilityInteractionClient.getInstance().getRootInActiveWindow(mConnectionId); return AccessibilityInteractionClient.getInstance(this).getRootInActiveWindow( mConnectionId); } /** Loading @@ -949,7 +951,7 @@ public abstract class AccessibilityService extends Service { */ public final void disableSelf() { final IAccessibilityServiceConnection connection = AccessibilityInteractionClient.getInstance().getConnection(mConnectionId); AccessibilityInteractionClient.getInstance(this).getConnection(mConnectionId); if (connection != null) { try { connection.disableSelf(); Loading @@ -970,7 +972,7 @@ public abstract class AccessibilityService extends Service { private void setDefaultTokenInternal(Context context, int displayId) { final WindowManagerImpl wm = (WindowManagerImpl) context.getSystemService(WINDOW_SERVICE); final IAccessibilityServiceConnection connection = AccessibilityInteractionClient.getInstance().getConnection(mConnectionId); AccessibilityInteractionClient.getInstance(this).getConnection(mConnectionId); IBinder token = null; if (connection != null) { synchronized (mLock) { Loading Loading @@ -1042,7 +1044,7 @@ public abstract class AccessibilityService extends Service { public final @NonNull FingerprintGestureController getFingerprintGestureController() { if (mFingerprintGestureController == null) { mFingerprintGestureController = new FingerprintGestureController( AccessibilityInteractionClient.getInstance().getConnection(mConnectionId)); AccessibilityInteractionClient.getInstance(this).getConnection(mConnectionId)); } return mFingerprintGestureController; } Loading Loading @@ -1074,8 +1076,7 @@ public abstract class AccessibilityService extends Service { @Nullable GestureResultCallback callback, @Nullable Handler handler) { final IAccessibilityServiceConnection connection = AccessibilityInteractionClient.getInstance().getConnection( mConnectionId); AccessibilityInteractionClient.getInstance(this).getConnection(mConnectionId); if (connection == null) { return false; } Loading Loading @@ -1287,7 +1288,7 @@ public abstract class AccessibilityService extends Service { private void setMagnificationCallbackEnabled(boolean enabled) { final IAccessibilityServiceConnection connection = AccessibilityInteractionClient.getInstance().getConnection( AccessibilityInteractionClient.getInstance(mService).getConnection( mService.mConnectionId); if (connection != null) { try { Loading Loading @@ -1348,7 +1349,7 @@ public abstract class AccessibilityService extends Service { */ public float getScale() { final IAccessibilityServiceConnection connection = AccessibilityInteractionClient.getInstance().getConnection( AccessibilityInteractionClient.getInstance(mService).getConnection( mService.mConnectionId); if (connection != null) { try { Loading Loading @@ -1377,7 +1378,7 @@ public abstract class AccessibilityService extends Service { */ public float getCenterX() { final IAccessibilityServiceConnection connection = AccessibilityInteractionClient.getInstance().getConnection( AccessibilityInteractionClient.getInstance(mService).getConnection( mService.mConnectionId); if (connection != null) { try { Loading Loading @@ -1406,7 +1407,7 @@ public abstract class AccessibilityService extends Service { */ public float getCenterY() { final IAccessibilityServiceConnection connection = AccessibilityInteractionClient.getInstance().getConnection( AccessibilityInteractionClient.getInstance(mService).getConnection( mService.mConnectionId); if (connection != null) { try { Loading Loading @@ -1440,7 +1441,7 @@ public abstract class AccessibilityService extends Service { @NonNull public Region getMagnificationRegion() { final IAccessibilityServiceConnection connection = AccessibilityInteractionClient.getInstance().getConnection( AccessibilityInteractionClient.getInstance(mService).getConnection( mService.mConnectionId); if (connection != null) { try { Loading Loading @@ -1469,7 +1470,7 @@ public abstract class AccessibilityService extends Service { */ public boolean reset(boolean animate) { final IAccessibilityServiceConnection connection = AccessibilityInteractionClient.getInstance().getConnection( AccessibilityInteractionClient.getInstance(mService).getConnection( mService.mConnectionId); if (connection != null) { try { Loading Loading @@ -1497,7 +1498,7 @@ public abstract class AccessibilityService extends Service { */ public boolean setScale(float scale, boolean animate) { final IAccessibilityServiceConnection connection = AccessibilityInteractionClient.getInstance().getConnection( AccessibilityInteractionClient.getInstance(mService).getConnection( mService.mConnectionId); if (connection != null) { try { Loading Loading @@ -1529,7 +1530,7 @@ public abstract class AccessibilityService extends Service { */ public boolean setCenter(float centerX, float centerY, boolean animate) { final IAccessibilityServiceConnection connection = AccessibilityInteractionClient.getInstance().getConnection( AccessibilityInteractionClient.getInstance(mService).getConnection( mService.mConnectionId); if (connection != null) { try { Loading Loading @@ -1701,7 +1702,7 @@ public abstract class AccessibilityService extends Service { private void setSoftKeyboardCallbackEnabled(boolean enabled) { final IAccessibilityServiceConnection connection = AccessibilityInteractionClient.getInstance().getConnection( AccessibilityInteractionClient.getInstance(mService).getConnection( mService.mConnectionId); if (connection != null) { try { Loading Loading @@ -1760,7 +1761,7 @@ public abstract class AccessibilityService extends Service { @SoftKeyboardShowMode public int getShowMode() { final IAccessibilityServiceConnection connection = AccessibilityInteractionClient.getInstance().getConnection( AccessibilityInteractionClient.getInstance(mService).getConnection( mService.mConnectionId); if (connection != null) { try { Loading Loading @@ -1789,7 +1790,7 @@ public abstract class AccessibilityService extends Service { */ public boolean setShowMode(@SoftKeyboardShowMode int showMode) { final IAccessibilityServiceConnection connection = AccessibilityInteractionClient.getInstance().getConnection( AccessibilityInteractionClient.getInstance(mService).getConnection( mService.mConnectionId); if (connection != null) { try { Loading Loading @@ -1835,7 +1836,7 @@ public abstract class AccessibilityService extends Service { */ public boolean switchToInputMethod(@NonNull String imeId) { final IAccessibilityServiceConnection connection = AccessibilityInteractionClient.getInstance().getConnection( AccessibilityInteractionClient.getInstance(mService).getConnection( mService.mConnectionId); if (connection != null) { try { Loading Loading @@ -1888,7 +1889,7 @@ public abstract class AccessibilityService extends Service { displayId); if (controller == null) { controller = new AccessibilityButtonController( AccessibilityInteractionClient.getInstance().getConnection(mConnectionId)); AccessibilityInteractionClient.getInstance(this).getConnection(mConnectionId)); mAccessibilityButtonControllers.put(displayId, controller); } return controller; Loading Loading @@ -1922,7 +1923,7 @@ public abstract class AccessibilityService extends Service { */ public final @NonNull List<AccessibilityAction> getSystemActions() { IAccessibilityServiceConnection connection = AccessibilityInteractionClient.getInstance().getConnection(mConnectionId); AccessibilityInteractionClient.getInstance(this).getConnection(mConnectionId); if (connection != null) { try { return connection.getSystemActions(); Loading Loading @@ -1955,7 +1956,7 @@ public abstract class AccessibilityService extends Service { */ public final boolean performGlobalAction(int action) { IAccessibilityServiceConnection connection = AccessibilityInteractionClient.getInstance().getConnection(mConnectionId); AccessibilityInteractionClient.getInstance(this).getConnection(mConnectionId); if (connection != null) { try { return connection.performGlobalAction(action); Loading Loading @@ -1996,7 +1997,7 @@ public abstract class AccessibilityService extends Service { * @see AccessibilityNodeInfo#FOCUS_ACCESSIBILITY */ public AccessibilityNodeInfo findFocus(int focus) { return AccessibilityInteractionClient.getInstance().findFocus(mConnectionId, return AccessibilityInteractionClient.getInstance(this).findFocus(mConnectionId, AccessibilityWindowInfo.ANY_WINDOW_ID, AccessibilityNodeInfo.ROOT_NODE_ID, focus); } Loading @@ -2012,7 +2013,7 @@ public abstract class AccessibilityService extends Service { */ public final AccessibilityServiceInfo getServiceInfo() { IAccessibilityServiceConnection connection = AccessibilityInteractionClient.getInstance().getConnection(mConnectionId); AccessibilityInteractionClient.getInstance(this).getConnection(mConnectionId); if (connection != null) { try { return connection.getServiceInfo(); Loading Loading @@ -2044,12 +2045,12 @@ public abstract class AccessibilityService extends Service { */ private void sendServiceInfo() { IAccessibilityServiceConnection connection = AccessibilityInteractionClient.getInstance().getConnection(mConnectionId); AccessibilityInteractionClient.getInstance(this).getConnection(mConnectionId); if (mInfo != null && connection != null) { try { connection.setServiceInfo(mInfo); mInfo = null; AccessibilityInteractionClient.getInstance().clearCache(); AccessibilityInteractionClient.getInstance(this).clearCache(); } catch (RemoteException re) { Log.w(LOG_TAG, "Error while setting AccessibilityServiceInfo", re); re.rethrowFromSystemServer(); Loading Loading @@ -2096,8 +2097,7 @@ public abstract class AccessibilityService extends Service { Preconditions.checkNotNull(executor, "executor cannot be null"); Preconditions.checkNotNull(callback, "callback cannot be null"); final IAccessibilityServiceConnection connection = AccessibilityInteractionClient.getInstance().getConnection( mConnectionId); AccessibilityInteractionClient.getInstance(this).getConnection(mConnectionId); if (connection == null) { sendScreenshotFailure(ERROR_TAKE_SCREENSHOT_INTERNAL_ERROR, executor, callback); return; Loading Loading @@ -2136,7 +2136,7 @@ public abstract class AccessibilityService extends Service { */ public void setAccessibilityFocusAppearance(int strokeWidth, @ColorInt int color) { IAccessibilityServiceConnection connection = AccessibilityInteractionClient.getInstance().getConnection(mConnectionId); AccessibilityInteractionClient.getInstance(this).getConnection(mConnectionId); if (connection != null) { try { connection.setFocusAppearance(strokeWidth, color); Loading Loading @@ -2261,12 +2261,14 @@ public abstract class AccessibilityService extends Service { private final HandlerCaller mCaller; private final Callbacks mCallback; private final Context mContext; private int mConnectionId = AccessibilityInteractionClient.NO_ID; public IAccessibilityServiceClientWrapper(Context context, Looper looper, Callbacks callback) { mCallback = callback; mContext = context; mCaller = new HandlerCaller(context, looper, this, true /*asyncHandler*/); } Loading Loading @@ -2366,7 +2368,8 @@ public abstract class AccessibilityService extends Service { boolean serviceWantsEvent = message.arg1 != 0; if (event != null) { // Send the event to AccessibilityCache via AccessibilityInteractionClient AccessibilityInteractionClient.getInstance().onAccessibilityEvent(event); AccessibilityInteractionClient.getInstance(mContext).onAccessibilityEvent( event); if (serviceWantsEvent && (mConnectionId != AccessibilityInteractionClient.NO_ID)) { // Send the event to AccessibilityService Loading Loading @@ -2395,15 +2398,15 @@ public abstract class AccessibilityService extends Service { IBinder windowToken = (IBinder) args.arg2; args.recycle(); if (connection != null) { AccessibilityInteractionClient.getInstance().addConnection(mConnectionId, connection); AccessibilityInteractionClient.getInstance(mContext).addConnection( mConnectionId, connection); mCallback.init(mConnectionId, windowToken); mCallback.onServiceConnected(); } else { AccessibilityInteractionClient.getInstance().removeConnection( AccessibilityInteractionClient.getInstance(mContext).removeConnection( mConnectionId); mConnectionId = AccessibilityInteractionClient.NO_ID; AccessibilityInteractionClient.getInstance().clearCache(); AccessibilityInteractionClient.getInstance(mContext).clearCache(); mCallback.init(AccessibilityInteractionClient.NO_ID, null); } return; Loading @@ -2415,14 +2418,14 @@ public abstract class AccessibilityService extends Service { return; } case DO_CLEAR_ACCESSIBILITY_CACHE: { AccessibilityInteractionClient.getInstance().clearCache(); AccessibilityInteractionClient.getInstance(mContext).clearCache(); return; } case DO_ON_KEY_EVENT: { KeyEvent event = (KeyEvent) message.obj; try { IAccessibilityServiceConnection connection = AccessibilityInteractionClient .getInstance().getConnection(mConnectionId); .getInstance(mContext).getConnection(mConnectionId); if (connection != null) { final boolean result = mCallback.onKeyEvent(event); final int sequence = message.arg1; Loading Loading @@ -2637,7 +2640,7 @@ public abstract class AccessibilityService extends Service { public void setGestureDetectionPassthroughRegion(int displayId, @NonNull Region region) { Preconditions.checkNotNull(region, "region cannot be null"); final IAccessibilityServiceConnection connection = AccessibilityInteractionClient.getInstance().getConnection(mConnectionId); AccessibilityInteractionClient.getInstance(this).getConnection(mConnectionId); if (connection != null) { try { connection.setGestureDetectionPassthroughRegion(displayId, region); Loading @@ -2663,7 +2666,7 @@ public abstract class AccessibilityService extends Service { public void setTouchExplorationPassthroughRegion(int displayId, @NonNull Region region) { Preconditions.checkNotNull(region, "region cannot be null"); final IAccessibilityServiceConnection connection = AccessibilityInteractionClient.getInstance().getConnection(mConnectionId); AccessibilityInteractionClient.getInstance(this).getConnection(mConnectionId); if (connection != null) { try { connection.setTouchExplorationPassthroughRegion(displayId, region); Loading
core/java/android/accessibilityservice/IAccessibilityServiceConnection.aidl +3 −0 Original line number Diff line number Diff line Loading @@ -117,4 +117,7 @@ interface IAccessibilityServiceConnection { void setTouchExplorationPassthroughRegion(int displayId, in Region region); void setFocusAppearance(int strokeWidth, int color); oneway void logTrace(long timestamp, String where, String callingParams, int processId, long threadId, int callingUid, in Bundle serializedCallingStackInBundle); }
core/java/android/view/accessibility/AccessibilityInteractionClient.java +112 −1 File changed.Preview size limit exceeded, changes collapsed. Show changes
core/java/android/view/accessibility/AccessibilityManager.java +30 −0 Original line number Diff line number Diff line Loading @@ -110,6 +110,9 @@ public final class AccessibilityManager { /** @hide */ public static final int STATE_FLAG_REQUEST_MULTI_FINGER_GESTURES = 0x00000010; /** @hide */ public static final int STATE_FLAG_ACCESSIBILITY_TRACING_ENABLED = 0x00000020; /** @hide */ public static final int DALTONIZER_DISABLED = -1; Loading Loading @@ -232,6 +235,9 @@ public final class AccessibilityManager { @UnsupportedAppUsage(trackingBug = 123768939L) boolean mIsHighTextContrastEnabled; // Whether accessibility tracing is enabled or not boolean mIsAccessibilityTracingEnabled = false; AccessibilityPolicy mAccessibilityPolicy; private int mPerformingAction = 0; Loading Loading @@ -1003,6 +1009,17 @@ public final class AccessibilityManager { } } /** * Gets accessibility tracing enabled state. * * @hide */ public boolean isAccessibilityTracingEnabled() { synchronized (mLock) { return mIsAccessibilityTracingEnabled; } } /** * Get the preparers that are registered for an accessibility ID * Loading Loading @@ -1197,6 +1214,8 @@ public final class AccessibilityManager { (stateFlags & STATE_FLAG_TOUCH_EXPLORATION_ENABLED) != 0; final boolean highTextContrastEnabled = (stateFlags & STATE_FLAG_HIGH_TEXT_CONTRAST_ENABLED) != 0; final boolean accessibilityTracingEnabled = (stateFlags & STATE_FLAG_ACCESSIBILITY_TRACING_ENABLED) != 0; final boolean wasEnabled = isEnabled(); final boolean wasTouchExplorationEnabled = mIsTouchExplorationEnabled; Loading @@ -1218,6 +1237,8 @@ public final class AccessibilityManager { if (wasHighTextContrastEnabled != highTextContrastEnabled) { notifyHighTextContrastStateChanged(); } updateAccessibilityTracingState(accessibilityTracingEnabled); } /** Loading Loading @@ -1674,6 +1695,15 @@ public final class AccessibilityManager { } } /** * Update mIsAccessibilityTracingEnabled. */ private void updateAccessibilityTracingState(boolean enabled) { synchronized (mLock) { mIsAccessibilityTracingEnabled = enabled; } } /** * Update interactive and non-interactive UI timeout. * Loading
core/tests/coretests/src/android/view/accessibility/AccessibilityServiceConnectionImpl.java +3 −0 Original line number Diff line number Diff line Loading @@ -163,4 +163,7 @@ public class AccessibilityServiceConnectionImpl extends IAccessibilityServiceCon public void setGestureDetectionPassthroughRegion(int displayId, Region region) {} public void setFocusAppearance(int strokeWidth, int color) {} public void logTrace(long timestamp, String where, String callingParams, int processId, long threadId, int callingUid, Bundle callingStack) {} }