1 /*
2  * Copyright (C) 2017 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file
5  * except in compliance with the License. You may obtain a copy of the License at
6  *
7  *      http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software distributed under the
10  * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
11  * KIND, either express or implied. See the License for the specific language governing
12  * permissions and limitations under the License.
13  */
14 
15 package com.android.systemui.statusbar.policy;
16 
17 import android.view.accessibility.AccessibilityEvent;
18 import android.view.accessibility.AccessibilityManager;
19 import android.view.accessibility.AccessibilityManager.AccessibilityServicesStateChangeListener;
20 
21 import androidx.annotation.NonNull;
22 
23 import com.android.systemui.dagger.SysUISingleton;
24 
25 import javax.inject.Inject;
26 
27 /**
28  * For mocking because AccessibilityManager is final for some reason...
29  */
30 @SysUISingleton
31 public class AccessibilityManagerWrapper implements
32         CallbackController<AccessibilityServicesStateChangeListener> {
33 
34     private final AccessibilityManager mAccessibilityManager;
35 
36     @Inject
AccessibilityManagerWrapper(AccessibilityManager accessibilityManager)37     public AccessibilityManagerWrapper(AccessibilityManager accessibilityManager) {
38         mAccessibilityManager = accessibilityManager;
39     }
40 
41     @Override
addCallback(@onNull AccessibilityServicesStateChangeListener listener)42     public void addCallback(@NonNull AccessibilityServicesStateChangeListener listener) {
43         mAccessibilityManager.addAccessibilityServicesStateChangeListener(listener);
44     }
45 
46     @Override
removeCallback(@onNull AccessibilityServicesStateChangeListener listener)47     public void removeCallback(@NonNull AccessibilityServicesStateChangeListener listener) {
48         mAccessibilityManager.removeAccessibilityServicesStateChangeListener(listener);
49     }
50 
addAccessibilityStateChangeListener( AccessibilityManager.AccessibilityStateChangeListener listener)51     public void addAccessibilityStateChangeListener(
52             AccessibilityManager.AccessibilityStateChangeListener listener) {
53         mAccessibilityManager.addAccessibilityStateChangeListener(listener);
54     }
55 
removeAccessibilityStateChangeListener( AccessibilityManager.AccessibilityStateChangeListener listener)56     public void removeAccessibilityStateChangeListener(
57             AccessibilityManager.AccessibilityStateChangeListener listener) {
58         mAccessibilityManager.removeAccessibilityStateChangeListener(listener);
59     }
60 
isEnabled()61     public boolean isEnabled() {
62         return mAccessibilityManager.isEnabled();
63     }
64 
sendAccessibilityEvent(AccessibilityEvent event)65     public void sendAccessibilityEvent(AccessibilityEvent event) {
66         mAccessibilityManager.sendAccessibilityEvent(event);
67     }
68 
69     /** Returns a recommended ui timeout value in milliseconds. */
getRecommendedTimeoutMillis(int originalTimeout, int uiContentFlags)70     public int getRecommendedTimeoutMillis(int originalTimeout, int uiContentFlags) {
71         return mAccessibilityManager.getRecommendedTimeoutMillis(originalTimeout, uiContentFlags);
72     }
73 }
74