1 /*
2  * Copyright 2017 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.accessibilityservice.AccessibilityService;
20 import android.accessibilityservice.AccessibilityServiceInfo;
21 import android.accessibilityservice.IAccessibilityServiceConnection;
22 import android.accessibilityservice.IBrailleDisplayController;
23 import android.accessibilityservice.MagnificationConfig;
24 import android.annotation.EnforcePermission;
25 import android.annotation.NonNull;
26 import android.annotation.RequiresNoPermission;
27 import android.content.pm.ParceledListSlice;
28 import android.graphics.Region;
29 import android.hardware.usb.UsbDevice;
30 import android.os.Bundle;
31 import android.os.IBinder;
32 import android.os.RemoteCallback;
33 import android.os.RemoteException;
34 import android.view.SurfaceControl;
35 import android.window.ScreenCapture;
36 
37 import java.util.Collections;
38 import java.util.List;
39 
40 /**
41  * Stub implementation of IAccessibilityServiceConnection so each test doesn't need to implement
42  * all of the methods
43  */
44 public class AccessibilityServiceConnectionImpl extends IAccessibilityServiceConnection.Stub {
setServiceInfo(AccessibilityServiceInfo info)45     public void setServiceInfo(AccessibilityServiceInfo info) {}
46 
setAttributionTag(String attributionTag)47     public void setAttributionTag(String attributionTag) {}
48 
findAccessibilityNodeInfoByAccessibilityId(int accessibilityWindowId, long accessibilityNodeId, int interactionId, IAccessibilityInteractionConnectionCallback callback, int flags, long threadId, Bundle arguments)49     public String[] findAccessibilityNodeInfoByAccessibilityId(int accessibilityWindowId,
50             long accessibilityNodeId, int interactionId,
51             IAccessibilityInteractionConnectionCallback callback, int flags, long threadId,
52             Bundle arguments) {
53         return null;
54     }
55 
findAccessibilityNodeInfosByText(int accessibilityWindowId, long accessibilityNodeId, String text, int interactionId, IAccessibilityInteractionConnectionCallback callback, long threadId)56     public String[] findAccessibilityNodeInfosByText(int accessibilityWindowId,
57             long accessibilityNodeId, String text, int interactionId,
58             IAccessibilityInteractionConnectionCallback callback, long threadId) {
59         return null;
60     }
61 
findAccessibilityNodeInfosByViewId(int accessibilityWindowId, long accessibilityNodeId, String viewId, int interactionId, IAccessibilityInteractionConnectionCallback callback, long threadId)62     public String[] findAccessibilityNodeInfosByViewId(int accessibilityWindowId,
63             long accessibilityNodeId, String viewId, int interactionId,
64             IAccessibilityInteractionConnectionCallback callback, long threadId) {
65         return null;
66     }
67 
findFocus(int accessibilityWindowId, long accessibilityNodeId, int focusType, int interactionId, IAccessibilityInteractionConnectionCallback callback, long threadId)68     public String[] findFocus(int accessibilityWindowId, long accessibilityNodeId, int focusType,
69             int interactionId, IAccessibilityInteractionConnectionCallback callback,
70             long threadId) {
71         return null;
72     }
73 
focusSearch(int accessibilityWindowId, long accessibilityNodeId, int direction, int interactionId, IAccessibilityInteractionConnectionCallback callback, long threadId)74     public String[] focusSearch(int accessibilityWindowId, long accessibilityNodeId, int direction,
75             int interactionId, IAccessibilityInteractionConnectionCallback callback,
76             long threadId) {
77         return null;
78     }
79 
performAccessibilityAction(int accessibilityWindowId, long accessibilityNodeId, int action, Bundle arguments, int interactionId, IAccessibilityInteractionConnectionCallback callback, long threadId)80     public boolean performAccessibilityAction(int accessibilityWindowId, long accessibilityNodeId,
81             int action, Bundle arguments, int interactionId,
82             IAccessibilityInteractionConnectionCallback callback, long threadId) {
83         return false;
84     }
85 
getWindow(int windowId)86     public AccessibilityWindowInfo getWindow(int windowId) {
87         return null;
88     }
89 
getWindows()90     public AccessibilityWindowInfo.WindowListSparseArray getWindows() {
91         return null;
92     }
93 
getServiceInfo()94     public AccessibilityServiceInfo getServiceInfo() {
95         return null;
96     }
97 
performGlobalAction(int action)98     public boolean performGlobalAction(int action) {
99         return false;
100     }
101 
getSystemActions()102     public List<AccessibilityNodeInfo.AccessibilityAction> getSystemActions() {
103         return Collections.emptyList();
104     }
105 
disableSelf()106     public void disableSelf() {}
107 
setOnKeyEventResult(boolean handled, int sequence)108     public void setOnKeyEventResult(boolean handled, int sequence) {}
109 
getMagnificationConfig(int displayId)110     public MagnificationConfig getMagnificationConfig(int displayId) {
111         return null;
112     }
113 
getMagnificationScale(int displayId)114     public float getMagnificationScale(int displayId) {
115         return 0.0f;
116     }
117 
getMagnificationCenterX(int displayId)118     public float getMagnificationCenterX(int displayId) {
119         return 0.0f;
120     }
121 
getMagnificationCenterY(int displayId)122     public float getMagnificationCenterY(int displayId) {
123         return 0.0f;
124     }
125 
getMagnificationRegion(int displayId)126     public Region getMagnificationRegion(int displayId) {
127         return null;
128     }
129 
getCurrentMagnificationRegion(int displayId)130     public Region getCurrentMagnificationRegion(int displayId) {
131         return null;
132     }
133 
resetMagnification(int displayId, boolean animate)134     public boolean resetMagnification(int displayId, boolean animate) {
135         return false;
136     }
137 
resetCurrentMagnification(int displayId, boolean animate)138     public boolean resetCurrentMagnification(int displayId, boolean animate) {
139         return false;
140     }
141 
setMagnificationConfig(int displayId, @NonNull MagnificationConfig config, boolean animate)142     public boolean setMagnificationConfig(int displayId,
143             @NonNull MagnificationConfig config, boolean animate) {
144         return false;
145     }
146 
setMagnificationCallbackEnabled(int displayId, boolean enabled)147     public void setMagnificationCallbackEnabled(int displayId, boolean enabled) {}
148 
setSoftKeyboardShowMode(int showMode)149     public boolean setSoftKeyboardShowMode(int showMode) {
150         return false;
151     }
152 
getSoftKeyboardShowMode()153     public int getSoftKeyboardShowMode() {
154         return 0;
155     }
156 
setSoftKeyboardCallbackEnabled(boolean enabled)157     public void setSoftKeyboardCallbackEnabled(boolean enabled) {}
158 
switchToInputMethod(String imeId)159     public boolean switchToInputMethod(String imeId) {
160         return false;
161     }
162 
setInputMethodEnabled(String imeId, boolean enabled)163     public int setInputMethodEnabled(String imeId, boolean enabled) {
164         return AccessibilityService.SoftKeyboardController.ENABLE_IME_FAIL_UNKNOWN;
165     }
166 
isAccessibilityButtonAvailable()167     public boolean isAccessibilityButtonAvailable() {
168         return false;
169     }
170 
sendGesture(int sequence, ParceledListSlice gestureSteps)171     public void sendGesture(int sequence, ParceledListSlice gestureSteps) {}
172 
dispatchGesture(int sequence, ParceledListSlice gestureSteps, int displayId)173     public void dispatchGesture(int sequence, ParceledListSlice gestureSteps, int displayId) {}
174 
isFingerprintGestureDetectionAvailable()175     public boolean isFingerprintGestureDetectionAvailable() {
176         return false;
177     }
178 
getOverlayWindowToken(int displayId)179     public IBinder getOverlayWindowToken(int displayId) {
180         return null;
181     }
182 
getWindowIdForLeashToken(IBinder token)183     public int getWindowIdForLeashToken(IBinder token) {
184         return -1;
185     }
186 
takeScreenshot(int displayId, RemoteCallback callback)187     public void takeScreenshot(int displayId, RemoteCallback callback) {}
188 
takeScreenshotOfWindow(int accessibilityWindowId, int interactionId, ScreenCapture.ScreenCaptureListener listener, IAccessibilityInteractionConnectionCallback callback)189     public void takeScreenshotOfWindow(int accessibilityWindowId, int interactionId,
190             ScreenCapture.ScreenCaptureListener listener,
191             IAccessibilityInteractionConnectionCallback callback) {}
192 
setFocusAppearance(int strokeWidth, int color)193     public void setFocusAppearance(int strokeWidth, int color) {}
194 
setCacheEnabled(boolean enabled)195     public void setCacheEnabled(boolean enabled) {}
196 
logTrace(long timestamp, String where, String callingParams, int processId, long threadId, int callingUid, Bundle callingStack)197     public void logTrace(long timestamp, String where, String callingParams, int processId,
198             long threadId, int callingUid, Bundle callingStack) {}
199 
setGestureDetectionPassthroughRegion(int displayId, Region region)200     public void setGestureDetectionPassthroughRegion(int displayId, Region region) {}
201 
setTouchExplorationPassthroughRegion(int displayId, Region region)202     public void setTouchExplorationPassthroughRegion(int displayId, Region region) {}
203 
setServiceDetectsGesturesEnabled(int displayId, boolean mode)204     public void setServiceDetectsGesturesEnabled(int displayId, boolean mode) {}
205 
requestTouchExploration(int displayId)206     public void requestTouchExploration(int displayId) {}
207 
requestDragging(int displayId, int pointerId)208     public void requestDragging(int displayId, int pointerId) {}
209 
requestDelegating(int displayId)210     public void requestDelegating(int displayId) {}
211 
onDoubleTap(int displayId)212     public void onDoubleTap(int displayId) {}
213 
onDoubleTapAndHold(int displayId)214     public void onDoubleTapAndHold(int displayId) {}
215 
logTrace(long timestamp, String where, long loggingTypes, String callingParams, int processId, long threadId, int callingUid, Bundle serializedCallingStackInBundle)216     public void logTrace(long timestamp, String where, long loggingTypes, String callingParams,
217             int processId, long threadId, int callingUid, Bundle serializedCallingStackInBundle) {}
218 
setAnimationScale(float scale)219     public void setAnimationScale(float scale) {}
220 
221     @RequiresNoPermission
222     @Override
setInstalledAndEnabledServices(List<AccessibilityServiceInfo> infos)223     public void setInstalledAndEnabledServices(List<AccessibilityServiceInfo> infos)
224             throws RemoteException {
225     }
226 
227     @RequiresNoPermission
228     @Override
getInstalledAndEnabledServices()229     public List<AccessibilityServiceInfo> getInstalledAndEnabledServices() throws RemoteException {
230         return null;
231     }
232 
233     @RequiresNoPermission
234     @Override
attachAccessibilityOverlayToDisplay( int interactionId, int displayId, SurfaceControl sc, IAccessibilityInteractionConnectionCallback callback)235     public void attachAccessibilityOverlayToDisplay(
236             int interactionId,
237             int displayId,
238             SurfaceControl sc,
239             IAccessibilityInteractionConnectionCallback callback) {}
240 
241     @RequiresNoPermission
242     @Override
attachAccessibilityOverlayToWindow( int interactionId, int accessibilityWindowId, SurfaceControl sc, IAccessibilityInteractionConnectionCallback callback)243     public void attachAccessibilityOverlayToWindow(
244             int interactionId,
245             int accessibilityWindowId,
246             SurfaceControl sc,
247             IAccessibilityInteractionConnectionCallback callback) {}
248 
249     @EnforcePermission(android.Manifest.permission.BLUETOOTH_CONNECT)
250     @Override
connectBluetoothBrailleDisplay( String bluetoothAddress, IBrailleDisplayController controller)251     public void connectBluetoothBrailleDisplay(
252             String bluetoothAddress, IBrailleDisplayController controller) {
253         connectBluetoothBrailleDisplay_enforcePermission();
254     }
255 
256     @RequiresNoPermission
257     @Override
connectUsbBrailleDisplay( UsbDevice usbDevice, IBrailleDisplayController controller)258     public void connectUsbBrailleDisplay(
259             UsbDevice usbDevice, IBrailleDisplayController controller) {}
260 
261     @EnforcePermission(android.Manifest.permission.MANAGE_ACCESSIBILITY)
262     @Override
setTestBrailleDisplayData(List<Bundle> brailleDisplays)263     public void setTestBrailleDisplayData(List<Bundle> brailleDisplays) {
264         setTestBrailleDisplayData_enforcePermission();
265     }
266 }
267