1 /* 2 ** Copyright 2009, The Android Open Source Project 3 ** 4 ** Licensed under the Apache License, Version 2.0 (the "License"); 5 ** you may not use this file except in compliance with the License. 6 ** You may obtain a copy of the License at 7 ** 8 ** http://www.apache.org/licenses/LICENSE-2.0 9 ** 10 ** Unless required by applicable law or agreed to in writing, software 11 ** distributed under the License is distributed on an "AS IS" BASIS, 12 ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 ** See the License for the specific language governing permissions and 14 ** limitations under the License. 15 */ 16 17 package android.view.accessibility; 18 19 import android.app.RemoteAction; 20 import android.accessibilityservice.AccessibilityServiceInfo; 21 import android.accessibilityservice.IAccessibilityServiceConnection; 22 import android.accessibilityservice.IAccessibilityServiceClient; 23 import android.content.ComponentName; 24 import android.content.pm.ParceledListSlice; 25 import android.os.Bundle; 26 import android.view.accessibility.AccessibilityEvent; 27 import android.view.accessibility.AccessibilityNodeInfo; 28 import android.view.accessibility.IAccessibilityInteractionConnection; 29 import android.view.accessibility.IAccessibilityManagerClient; 30 import android.view.accessibility.AccessibilityWindowAttributes; 31 import android.view.accessibility.IMagnificationConnection; 32 import android.view.accessibility.IUserInitializationCompleteCallback; 33 import android.view.InputEvent; 34 import android.view.IWindow; 35 import android.view.MagnificationSpec; 36 import android.view.SurfaceControl; 37 38 /** 39 * Interface implemented by the AccessibilityManagerService called by 40 * the AccessibilityManagers. 41 * 42 * @hide 43 */ 44 interface IAccessibilityManager { 45 46 @RequiresNoPermission interrupt(int userId)47 oneway void interrupt(int userId); 48 49 @RequiresNoPermission sendAccessibilityEvent(in AccessibilityEvent uiEvent, int userId)50 oneway void sendAccessibilityEvent(in AccessibilityEvent uiEvent, int userId); 51 52 @RequiresNoPermission addClient(IAccessibilityManagerClient client, int userId)53 long addClient(IAccessibilityManagerClient client, int userId); 54 55 @RequiresNoPermission removeClient(IAccessibilityManagerClient client, int userId)56 boolean removeClient(IAccessibilityManagerClient client, int userId); 57 58 @RequiresNoPermission getInstalledAccessibilityServiceList(int userId)59 ParceledListSlice<AccessibilityServiceInfo> getInstalledAccessibilityServiceList(int userId); 60 61 @RequiresNoPermission 62 @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553) getEnabledAccessibilityServiceList(int feedbackType, int userId)63 List<AccessibilityServiceInfo> getEnabledAccessibilityServiceList(int feedbackType, int userId); 64 65 @RequiresNoPermission addAccessibilityInteractionConnection(IWindow windowToken, IBinder leashToken, in IAccessibilityInteractionConnection connection, String packageName, int userId)66 int addAccessibilityInteractionConnection(IWindow windowToken, IBinder leashToken, 67 in IAccessibilityInteractionConnection connection, 68 String packageName, int userId); 69 70 @RequiresNoPermission removeAccessibilityInteractionConnection(IWindow windowToken)71 void removeAccessibilityInteractionConnection(IWindow windowToken); 72 73 @EnforcePermission("MODIFY_ACCESSIBILITY_DATA") setPictureInPictureActionReplacingConnection( in IAccessibilityInteractionConnection connection)74 void setPictureInPictureActionReplacingConnection( 75 in IAccessibilityInteractionConnection connection); 76 77 @EnforcePermission("RETRIEVE_WINDOW_CONTENT") registerUiTestAutomationService(IBinder owner, IAccessibilityServiceClient client, in AccessibilityServiceInfo info, int userId, int flags)78 void registerUiTestAutomationService(IBinder owner, IAccessibilityServiceClient client, 79 in AccessibilityServiceInfo info, int userId, int flags); 80 81 @RequiresNoPermission unregisterUiTestAutomationService(IAccessibilityServiceClient client)82 void unregisterUiTestAutomationService(IAccessibilityServiceClient client); 83 84 // Used by UiAutomation 85 @EnforcePermission("RETRIEVE_WINDOW_CONTENT") getWindowToken(int windowId, int userId)86 IBinder getWindowToken(int windowId, int userId); 87 88 @EnforcePermission("STATUS_BAR_SERVICE") notifyAccessibilityButtonClicked(int displayId, String targetName)89 void notifyAccessibilityButtonClicked(int displayId, String targetName); 90 91 @EnforcePermission("STATUS_BAR_SERVICE") notifyAccessibilityButtonLongClicked(int displayId)92 void notifyAccessibilityButtonLongClicked(int displayId); 93 94 @EnforcePermission("STATUS_BAR_SERVICE") notifyAccessibilityButtonVisibilityChanged(boolean available)95 void notifyAccessibilityButtonVisibilityChanged(boolean available); 96 97 @EnforcePermission("MANAGE_ACCESSIBILITY") performAccessibilityShortcut(int displayId, int shortcutType, String targetName)98 void performAccessibilityShortcut(int displayId, int shortcutType, String targetName); 99 100 @EnforcePermission("MANAGE_ACCESSIBILITY") getAccessibilityShortcutTargets(int shortcutType)101 List<String> getAccessibilityShortcutTargets(int shortcutType); 102 103 // System process only 104 @RequiresNoPermission sendFingerprintGesture(int gestureKeyCode)105 boolean sendFingerprintGesture(int gestureKeyCode); 106 107 // System process only 108 @RequiresNoPermission getAccessibilityWindowId(IBinder windowToken)109 int getAccessibilityWindowId(IBinder windowToken); 110 111 @RequiresNoPermission getRecommendedTimeoutMillis()112 long getRecommendedTimeoutMillis(); 113 114 @EnforcePermission("MANAGE_ACCESSIBILITY") registerSystemAction(in RemoteAction action, int actionId)115 oneway void registerSystemAction(in RemoteAction action, int actionId); 116 117 @EnforcePermission("MANAGE_ACCESSIBILITY") unregisterSystemAction(int actionId)118 oneway void unregisterSystemAction(int actionId); 119 120 @EnforcePermission("STATUS_BAR_SERVICE") setMagnificationConnection(in IMagnificationConnection connection)121 oneway void setMagnificationConnection(in IMagnificationConnection connection); 122 123 @RequiresNoPermission associateEmbeddedHierarchy(IBinder host, IBinder embedded)124 void associateEmbeddedHierarchy(IBinder host, IBinder embedded); 125 126 @RequiresNoPermission disassociateEmbeddedHierarchy(IBinder token)127 void disassociateEmbeddedHierarchy(IBinder token); 128 129 @RequiresNoPermission getFocusStrokeWidth()130 int getFocusStrokeWidth(); 131 132 @RequiresNoPermission getFocusColor()133 int getFocusColor(); 134 135 @RequiresNoPermission isAudioDescriptionByDefaultEnabled()136 boolean isAudioDescriptionByDefaultEnabled(); 137 138 @EnforcePermission("SET_SYSTEM_AUDIO_CAPTION") setSystemAudioCaptioningEnabled(boolean isEnabled, int userId)139 void setSystemAudioCaptioningEnabled(boolean isEnabled, int userId); 140 141 @RequiresNoPermission isSystemAudioCaptioningUiEnabled(int userId)142 boolean isSystemAudioCaptioningUiEnabled(int userId); 143 144 @EnforcePermission("SET_SYSTEM_AUDIO_CAPTION") setSystemAudioCaptioningUiEnabled(boolean isEnabled, int userId)145 void setSystemAudioCaptioningUiEnabled(boolean isEnabled, int userId); 146 147 @RequiresNoPermission setAccessibilityWindowAttributes(int displayId, int windowId, int userId, in AccessibilityWindowAttributes attributes)148 oneway void setAccessibilityWindowAttributes(int displayId, int windowId, int userId, in AccessibilityWindowAttributes attributes); 149 150 // Requires CREATE_VIRTUAL_DEVICE permission. Also requires either a11y permission or role. 151 @EnforcePermission("CREATE_VIRTUAL_DEVICE") registerProxyForDisplay(IAccessibilityServiceClient proxy, int displayId)152 boolean registerProxyForDisplay(IAccessibilityServiceClient proxy, int displayId); 153 154 // Requires CREATE_VIRTUAL_DEVICE permission. Also requires either a11y permission or role. 155 @EnforcePermission("CREATE_VIRTUAL_DEVICE") unregisterProxyForDisplay(int displayId)156 boolean unregisterProxyForDisplay(int displayId); 157 158 // Used by UiAutomation for tests on the InputFilter 159 @EnforcePermission("INJECT_EVENTS") injectInputEventToInputFilter(in InputEvent event)160 void injectInputEventToInputFilter(in InputEvent event); 161 162 @EnforcePermission("MANAGE_ACCESSIBILITY") startFlashNotificationSequence(String opPkg, int reason, IBinder token)163 boolean startFlashNotificationSequence(String opPkg, int reason, IBinder token); 164 165 @EnforcePermission("MANAGE_ACCESSIBILITY") stopFlashNotificationSequence(String opPkg)166 boolean stopFlashNotificationSequence(String opPkg); 167 168 @EnforcePermission("MANAGE_ACCESSIBILITY") startFlashNotificationEvent(String opPkg, int reason, String reasonPkg)169 boolean startFlashNotificationEvent(String opPkg, int reason, String reasonPkg); 170 171 @RequiresNoPermission isAccessibilityTargetAllowed(String packageName, int uid, int userId)172 boolean isAccessibilityTargetAllowed(String packageName, int uid, int userId); 173 174 @RequiresNoPermission sendRestrictedDialogIntent(String packageName, int uid, int userId)175 boolean sendRestrictedDialogIntent(String packageName, int uid, int userId); 176 177 @EnforcePermission("MANAGE_ACCESSIBILITY") isAccessibilityServiceWarningRequired(in AccessibilityServiceInfo info)178 boolean isAccessibilityServiceWarningRequired(in AccessibilityServiceInfo info); 179 180 parcelable WindowTransformationSpec { 181 float[] transformationMatrix; 182 MagnificationSpec magnificationSpec; 183 } 184 @RequiresNoPermission getWindowTransformationSpec(int windowId)185 WindowTransformationSpec getWindowTransformationSpec(int windowId); 186 187 @EnforcePermission("INTERNAL_SYSTEM_WINDOW") attachAccessibilityOverlayToDisplay(int displayId, in SurfaceControl surfaceControl)188 void attachAccessibilityOverlayToDisplay(int displayId, in SurfaceControl surfaceControl); 189 190 @EnforcePermission(allOf={"STATUS_BAR_SERVICE","MANAGE_ACCESSIBILITY"}) notifyQuickSettingsTilesChanged(int userId, in List<ComponentName> tileComponentNames)191 oneway void notifyQuickSettingsTilesChanged(int userId, in List<ComponentName> tileComponentNames); 192 193 @EnforcePermission("MANAGE_ACCESSIBILITY") enableShortcutsForTargets(boolean enable, int shortcutTypes, in List<String> shortcutTargets, int userId)194 oneway void enableShortcutsForTargets(boolean enable, int shortcutTypes, in List<String> shortcutTargets, int userId); 195 196 @EnforcePermission("MANAGE_ACCESSIBILITY") getA11yFeatureToTileMap(int userId)197 Bundle getA11yFeatureToTileMap(int userId); 198 199 @RequiresNoPermission registerUserInitializationCompleteCallback(IUserInitializationCompleteCallback callback)200 void registerUserInitializationCompleteCallback(IUserInitializationCompleteCallback callback); 201 202 @RequiresNoPermission unregisterUserInitializationCompleteCallback(IUserInitializationCompleteCallback callback)203 void unregisterUserInitializationCompleteCallback(IUserInitializationCompleteCallback callback); 204 } 205