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