Loading res/xml/accessibility_settings.xml +2 −1 Original line number Diff line number Diff line Loading @@ -23,8 +23,9 @@ <Preference android:key="accessibility_shortcut_preference" android:title="@string/accessibility_global_gesture_preference_title" android:fragment="com.android.settings.accessibility.AccessibilityShortcutPreferenceFragment" android:title="@string/accessibility_global_gesture_preference_title"/> settings:controller="com.android.settings.accessibility.AccessibilityShortcutPreferenceController"/> <PreferenceCategory android:key="user_installed_services_category" Loading src/com/android/settings/accessibility/AccessibilitySettings.java +0 −25 Original line number Diff line number Diff line Loading @@ -99,8 +99,6 @@ public class AccessibilitySettings extends DashboardFragment implements private static final String TOGGLE_DISABLE_ANIMATIONS = "toggle_disable_animations"; private static final String SELECT_LONG_PRESS_TIMEOUT_PREFERENCE = "select_long_press_timeout_preference"; private static final String ACCESSIBILITY_SHORTCUT_PREFERENCE = "accessibility_shortcut_preference"; private static final String HEARING_AID_PREFERENCE = "hearing_aid_preference"; private static final String DISPLAY_MAGNIFICATION_PREFERENCE_SCREEN = Loading Loading @@ -187,7 +185,6 @@ public class AccessibilitySettings extends DashboardFragment implements private SwitchPreference mToggleDisableAnimationsPreference; private ListPreference mSelectLongPressTimeoutPreference; private Preference mDisplayMagnificationPreferenceScreen; private Preference mAccessibilityShortcutPreferenceScreen; private Preference mDisplayDaltonizerPreferenceScreen; private Preference mHearingAidPreference; private Preference mLiveCaptionPreference; Loading Loading @@ -378,9 +375,6 @@ public class AccessibilitySettings extends DashboardFragment implements // Display color adjustments. mDisplayDaltonizerPreferenceScreen = findPreference(DISPLAY_DALTONIZER_PREFERENCE_SCREEN); // Accessibility shortcut. mAccessibilityShortcutPreferenceScreen = findPreference(ACCESSIBILITY_SHORTCUT_PREFERENCE); // Dark Mode. mDarkUIModePreference = findPreference(DARK_UI_MODE_PREFERENCE); mDarkUIPreferenceController = new DarkUIPreferenceController(getContext(), Loading Loading @@ -606,25 +600,6 @@ public class AccessibilitySettings extends DashboardFragment implements mHearingAidPreferenceController.updateState(mHearingAidPreference); mLiveCaptionPreferenceController.updateState(mLiveCaptionPreference); updateAccessibilityShortcut(mAccessibilityShortcutPreferenceScreen); } private void updateAccessibilityShortcut(Preference preference) { if (AccessibilityManager.getInstance(getActivity()) .getInstalledAccessibilityServiceList().isEmpty()) { mAccessibilityShortcutPreferenceScreen .setSummary(getString(R.string.accessibility_no_services_installed)); mAccessibilityShortcutPreferenceScreen.setEnabled(false); } else { mAccessibilityShortcutPreferenceScreen.setEnabled(true); boolean shortcutEnabled = AccessibilityUtils.isShortcutEnabled(getContext(), UserHandle.myUserId()); CharSequence summary = shortcutEnabled ? AccessibilityShortcutPreferenceFragment.getServiceName(getContext()) : getString(R.string.accessibility_feature_state_off); mAccessibilityShortcutPreferenceScreen.setSummary(summary); } } public static final SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER = Loading src/com/android/settings/accessibility/AccessibilityShortcutPreferenceController.java 0 → 100644 +52 −0 Original line number Diff line number Diff line /* * Copyright (C) 2019 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.settings.accessibility; import android.content.Context; import android.os.UserHandle; import android.view.accessibility.AccessibilityManager; import com.android.settings.R; import com.android.settings.core.BasePreferenceController; import com.android.settingslib.accessibility.AccessibilityUtils; public class AccessibilityShortcutPreferenceController extends BasePreferenceController { public AccessibilityShortcutPreferenceController(Context context, String preferenceKey) { super(context, preferenceKey); } @Override public int getAvailabilityStatus() { return AccessibilityManager .getInstance(mContext).getInstalledAccessibilityServiceList().isEmpty() ? DISABLED_DEPENDENT_SETTING : AVAILABLE; } @Override public CharSequence getSummary() { if (AccessibilityManager.getInstance(mContext) .getInstalledAccessibilityServiceList().isEmpty()) { return mContext.getString(R.string.accessibility_no_services_installed); } else { final boolean shortcutEnabled = AccessibilityUtils.isShortcutEnabled(mContext, UserHandle.myUserId()); return shortcutEnabled ? AccessibilityShortcutPreferenceFragment.getServiceName(mContext) : mContext.getString(R.string.accessibility_feature_state_off); } } } tests/robotests/src/com/android/settings/accessibility/AccessibilitySettingsTest.java +7 −0 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ import static org.mockito.Mockito.spy; import android.content.Context; import android.provider.DeviceConfig; import android.provider.Settings; import android.view.accessibility.AccessibilityManager; import com.android.settings.R; import com.android.settings.testutils.XmlTestUtils; Loading @@ -36,7 +37,10 @@ import org.mockito.MockitoAnnotations; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; import org.robolectric.shadow.api.Shadow; import org.robolectric.shadows.ShadowAccessibilityManager; import java.util.ArrayList; import java.util.List; @RunWith(RobolectricTestRunner.class) Loading @@ -44,12 +48,15 @@ public class AccessibilitySettingsTest { private Context mContext; private AccessibilitySettings mSettings; private ShadowAccessibilityManager mShadowAccessibilityManager; @Before public void setup() { MockitoAnnotations.initMocks(this); mContext = RuntimeEnvironment.application; mSettings = spy(new AccessibilitySettings()); mShadowAccessibilityManager = Shadow.extract(AccessibilityManager.getInstance(mContext)); mShadowAccessibilityManager.setInstalledAccessibilityServiceList(new ArrayList<>()); doReturn(mContext).when(mSettings).getContext(); } Loading tests/robotests/src/com/android/settings/accessibility/AccessibilityShortcutPreferenceControllerTest.java 0 → 100644 +156 −0 Original line number Diff line number Diff line /* * Copyright (C) 2019 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.settings.accessibility; import static com.google.common.truth.Truth.assertThat; import android.accessibilityservice.AccessibilityServiceInfo; import android.content.ComponentName; import android.content.Context; import android.content.pm.ApplicationInfo; import android.content.pm.ResolveInfo; import android.content.pm.ServiceInfo; import android.provider.Settings; import android.view.accessibility.AccessibilityManager; import com.android.settings.R; import com.android.settings.core.BasePreferenceController; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; import org.robolectric.annotation.Implementation; import org.robolectric.annotation.Implements; import org.robolectric.shadow.api.Shadow; import org.robolectric.shadows.ShadowAccessibilityManager; import org.xmlpull.v1.XmlPullParserException; import java.io.IOException; import java.util.ArrayList; import java.util.List; @RunWith(RobolectricTestRunner.class) public class AccessibilityShortcutPreferenceControllerTest { private final static String PACKAGE_NAME = "com.foo.bar"; private final static String CLASS_NAME = PACKAGE_NAME + ".fake_a11y_service"; private final static String COMPONENT_NAME = PACKAGE_NAME + "/" + CLASS_NAME; private final static String SERVICE_NAME = "fake_a11y_service"; private final static int ON = 1; private final static int OFF = 0; private Context mContext; private AccessibilityShortcutPreferenceController mController; private ShadowAccessibilityManager mShadowAccessibilityManager; @Before public void setUp() { mContext = RuntimeEnvironment.application; mController = new AccessibilityShortcutPreferenceController(mContext, "shortcut_key"); mShadowAccessibilityManager = Shadow.extract(AccessibilityManager.getInstance(mContext)); mShadowAccessibilityManager.setInstalledAccessibilityServiceList(getMockServiceList()); } @Test public void getAvailabilityStatus_hasInstalledA11yServices_shouldReturnAvailable() { assertThat(mController.getAvailabilityStatus()) .isEqualTo(BasePreferenceController.AVAILABLE); } @Test public void getAvailabilityStatus_noInstalledServices_shouldReturnDisabledDependentSetting() { mShadowAccessibilityManager.setInstalledAccessibilityServiceList(new ArrayList<>()); assertThat(mController.getAvailabilityStatus()) .isEqualTo(BasePreferenceController.DISABLED_DEPENDENT_SETTING); } @Test @Config(shadows = {ShadowAccessibilityShortcutPreferenceFragment.class}) public void getSummary_enabledAndSelectedA11yServices_shouldReturnSelectedServiceName() { ShadowAccessibilityShortcutPreferenceFragment.setServiceName(SERVICE_NAME); Settings.Secure.putInt(mContext.getContentResolver(), Settings.Secure.ACCESSIBILITY_SHORTCUT_ENABLED, ON); assertThat(mController.getSummary()).isEqualTo(SERVICE_NAME); } @Test public void getSummary_enabledAndNoA11yServices_shouldReturnNoServiceInstalled() { mShadowAccessibilityManager.setInstalledAccessibilityServiceList(new ArrayList<>()); Settings.Secure.putInt(mContext.getContentResolver(), Settings.Secure.ACCESSIBILITY_SHORTCUT_ENABLED, ON); assertThat(mController.getSummary()) .isEqualTo(mContext.getString(R.string.accessibility_no_services_installed)); } @Test public void getSummary_disabledShortcut_shouldReturnOffSummary() { Settings.Secure.putInt(mContext.getContentResolver(), Settings.Secure.ACCESSIBILITY_SHORTCUT_ENABLED, OFF); assertThat(mController.getSummary()) .isEqualTo(mContext.getString(R.string.accessibility_feature_state_off)); } @Implements(AccessibilityShortcutPreferenceFragment.class) private static class ShadowAccessibilityShortcutPreferenceFragment { private static String sSelectedServiceName; public static void setServiceName(String selectedServiceName) { sSelectedServiceName = selectedServiceName; } @Implementation protected static CharSequence getServiceName(Context context) { return sSelectedServiceName; } } private AccessibilityServiceInfo getMockAccessibilityServiceInfo() { final ApplicationInfo applicationInfo = new ApplicationInfo(); final ServiceInfo serviceInfo = new ServiceInfo(); applicationInfo.packageName = PACKAGE_NAME; serviceInfo.packageName = PACKAGE_NAME; serviceInfo.name = CLASS_NAME; serviceInfo.applicationInfo = applicationInfo; final ResolveInfo resolveInfo = new ResolveInfo(); resolveInfo.serviceInfo = serviceInfo; try { final AccessibilityServiceInfo info = new AccessibilityServiceInfo(resolveInfo, mContext); ComponentName componentName = ComponentName.unflattenFromString(COMPONENT_NAME); info.setComponentName(componentName); return info; } catch (XmlPullParserException | IOException e) { // Do nothing } return null; } private List<AccessibilityServiceInfo> getMockServiceList() { final List<AccessibilityServiceInfo> infoList = new ArrayList<>(); infoList.add(getMockAccessibilityServiceInfo()); return infoList; } } Loading
res/xml/accessibility_settings.xml +2 −1 Original line number Diff line number Diff line Loading @@ -23,8 +23,9 @@ <Preference android:key="accessibility_shortcut_preference" android:title="@string/accessibility_global_gesture_preference_title" android:fragment="com.android.settings.accessibility.AccessibilityShortcutPreferenceFragment" android:title="@string/accessibility_global_gesture_preference_title"/> settings:controller="com.android.settings.accessibility.AccessibilityShortcutPreferenceController"/> <PreferenceCategory android:key="user_installed_services_category" Loading
src/com/android/settings/accessibility/AccessibilitySettings.java +0 −25 Original line number Diff line number Diff line Loading @@ -99,8 +99,6 @@ public class AccessibilitySettings extends DashboardFragment implements private static final String TOGGLE_DISABLE_ANIMATIONS = "toggle_disable_animations"; private static final String SELECT_LONG_PRESS_TIMEOUT_PREFERENCE = "select_long_press_timeout_preference"; private static final String ACCESSIBILITY_SHORTCUT_PREFERENCE = "accessibility_shortcut_preference"; private static final String HEARING_AID_PREFERENCE = "hearing_aid_preference"; private static final String DISPLAY_MAGNIFICATION_PREFERENCE_SCREEN = Loading Loading @@ -187,7 +185,6 @@ public class AccessibilitySettings extends DashboardFragment implements private SwitchPreference mToggleDisableAnimationsPreference; private ListPreference mSelectLongPressTimeoutPreference; private Preference mDisplayMagnificationPreferenceScreen; private Preference mAccessibilityShortcutPreferenceScreen; private Preference mDisplayDaltonizerPreferenceScreen; private Preference mHearingAidPreference; private Preference mLiveCaptionPreference; Loading Loading @@ -378,9 +375,6 @@ public class AccessibilitySettings extends DashboardFragment implements // Display color adjustments. mDisplayDaltonizerPreferenceScreen = findPreference(DISPLAY_DALTONIZER_PREFERENCE_SCREEN); // Accessibility shortcut. mAccessibilityShortcutPreferenceScreen = findPreference(ACCESSIBILITY_SHORTCUT_PREFERENCE); // Dark Mode. mDarkUIModePreference = findPreference(DARK_UI_MODE_PREFERENCE); mDarkUIPreferenceController = new DarkUIPreferenceController(getContext(), Loading Loading @@ -606,25 +600,6 @@ public class AccessibilitySettings extends DashboardFragment implements mHearingAidPreferenceController.updateState(mHearingAidPreference); mLiveCaptionPreferenceController.updateState(mLiveCaptionPreference); updateAccessibilityShortcut(mAccessibilityShortcutPreferenceScreen); } private void updateAccessibilityShortcut(Preference preference) { if (AccessibilityManager.getInstance(getActivity()) .getInstalledAccessibilityServiceList().isEmpty()) { mAccessibilityShortcutPreferenceScreen .setSummary(getString(R.string.accessibility_no_services_installed)); mAccessibilityShortcutPreferenceScreen.setEnabled(false); } else { mAccessibilityShortcutPreferenceScreen.setEnabled(true); boolean shortcutEnabled = AccessibilityUtils.isShortcutEnabled(getContext(), UserHandle.myUserId()); CharSequence summary = shortcutEnabled ? AccessibilityShortcutPreferenceFragment.getServiceName(getContext()) : getString(R.string.accessibility_feature_state_off); mAccessibilityShortcutPreferenceScreen.setSummary(summary); } } public static final SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER = Loading
src/com/android/settings/accessibility/AccessibilityShortcutPreferenceController.java 0 → 100644 +52 −0 Original line number Diff line number Diff line /* * Copyright (C) 2019 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.settings.accessibility; import android.content.Context; import android.os.UserHandle; import android.view.accessibility.AccessibilityManager; import com.android.settings.R; import com.android.settings.core.BasePreferenceController; import com.android.settingslib.accessibility.AccessibilityUtils; public class AccessibilityShortcutPreferenceController extends BasePreferenceController { public AccessibilityShortcutPreferenceController(Context context, String preferenceKey) { super(context, preferenceKey); } @Override public int getAvailabilityStatus() { return AccessibilityManager .getInstance(mContext).getInstalledAccessibilityServiceList().isEmpty() ? DISABLED_DEPENDENT_SETTING : AVAILABLE; } @Override public CharSequence getSummary() { if (AccessibilityManager.getInstance(mContext) .getInstalledAccessibilityServiceList().isEmpty()) { return mContext.getString(R.string.accessibility_no_services_installed); } else { final boolean shortcutEnabled = AccessibilityUtils.isShortcutEnabled(mContext, UserHandle.myUserId()); return shortcutEnabled ? AccessibilityShortcutPreferenceFragment.getServiceName(mContext) : mContext.getString(R.string.accessibility_feature_state_off); } } }
tests/robotests/src/com/android/settings/accessibility/AccessibilitySettingsTest.java +7 −0 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ import static org.mockito.Mockito.spy; import android.content.Context; import android.provider.DeviceConfig; import android.provider.Settings; import android.view.accessibility.AccessibilityManager; import com.android.settings.R; import com.android.settings.testutils.XmlTestUtils; Loading @@ -36,7 +37,10 @@ import org.mockito.MockitoAnnotations; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; import org.robolectric.shadow.api.Shadow; import org.robolectric.shadows.ShadowAccessibilityManager; import java.util.ArrayList; import java.util.List; @RunWith(RobolectricTestRunner.class) Loading @@ -44,12 +48,15 @@ public class AccessibilitySettingsTest { private Context mContext; private AccessibilitySettings mSettings; private ShadowAccessibilityManager mShadowAccessibilityManager; @Before public void setup() { MockitoAnnotations.initMocks(this); mContext = RuntimeEnvironment.application; mSettings = spy(new AccessibilitySettings()); mShadowAccessibilityManager = Shadow.extract(AccessibilityManager.getInstance(mContext)); mShadowAccessibilityManager.setInstalledAccessibilityServiceList(new ArrayList<>()); doReturn(mContext).when(mSettings).getContext(); } Loading
tests/robotests/src/com/android/settings/accessibility/AccessibilityShortcutPreferenceControllerTest.java 0 → 100644 +156 −0 Original line number Diff line number Diff line /* * Copyright (C) 2019 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.settings.accessibility; import static com.google.common.truth.Truth.assertThat; import android.accessibilityservice.AccessibilityServiceInfo; import android.content.ComponentName; import android.content.Context; import android.content.pm.ApplicationInfo; import android.content.pm.ResolveInfo; import android.content.pm.ServiceInfo; import android.provider.Settings; import android.view.accessibility.AccessibilityManager; import com.android.settings.R; import com.android.settings.core.BasePreferenceController; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; import org.robolectric.annotation.Implementation; import org.robolectric.annotation.Implements; import org.robolectric.shadow.api.Shadow; import org.robolectric.shadows.ShadowAccessibilityManager; import org.xmlpull.v1.XmlPullParserException; import java.io.IOException; import java.util.ArrayList; import java.util.List; @RunWith(RobolectricTestRunner.class) public class AccessibilityShortcutPreferenceControllerTest { private final static String PACKAGE_NAME = "com.foo.bar"; private final static String CLASS_NAME = PACKAGE_NAME + ".fake_a11y_service"; private final static String COMPONENT_NAME = PACKAGE_NAME + "/" + CLASS_NAME; private final static String SERVICE_NAME = "fake_a11y_service"; private final static int ON = 1; private final static int OFF = 0; private Context mContext; private AccessibilityShortcutPreferenceController mController; private ShadowAccessibilityManager mShadowAccessibilityManager; @Before public void setUp() { mContext = RuntimeEnvironment.application; mController = new AccessibilityShortcutPreferenceController(mContext, "shortcut_key"); mShadowAccessibilityManager = Shadow.extract(AccessibilityManager.getInstance(mContext)); mShadowAccessibilityManager.setInstalledAccessibilityServiceList(getMockServiceList()); } @Test public void getAvailabilityStatus_hasInstalledA11yServices_shouldReturnAvailable() { assertThat(mController.getAvailabilityStatus()) .isEqualTo(BasePreferenceController.AVAILABLE); } @Test public void getAvailabilityStatus_noInstalledServices_shouldReturnDisabledDependentSetting() { mShadowAccessibilityManager.setInstalledAccessibilityServiceList(new ArrayList<>()); assertThat(mController.getAvailabilityStatus()) .isEqualTo(BasePreferenceController.DISABLED_DEPENDENT_SETTING); } @Test @Config(shadows = {ShadowAccessibilityShortcutPreferenceFragment.class}) public void getSummary_enabledAndSelectedA11yServices_shouldReturnSelectedServiceName() { ShadowAccessibilityShortcutPreferenceFragment.setServiceName(SERVICE_NAME); Settings.Secure.putInt(mContext.getContentResolver(), Settings.Secure.ACCESSIBILITY_SHORTCUT_ENABLED, ON); assertThat(mController.getSummary()).isEqualTo(SERVICE_NAME); } @Test public void getSummary_enabledAndNoA11yServices_shouldReturnNoServiceInstalled() { mShadowAccessibilityManager.setInstalledAccessibilityServiceList(new ArrayList<>()); Settings.Secure.putInt(mContext.getContentResolver(), Settings.Secure.ACCESSIBILITY_SHORTCUT_ENABLED, ON); assertThat(mController.getSummary()) .isEqualTo(mContext.getString(R.string.accessibility_no_services_installed)); } @Test public void getSummary_disabledShortcut_shouldReturnOffSummary() { Settings.Secure.putInt(mContext.getContentResolver(), Settings.Secure.ACCESSIBILITY_SHORTCUT_ENABLED, OFF); assertThat(mController.getSummary()) .isEqualTo(mContext.getString(R.string.accessibility_feature_state_off)); } @Implements(AccessibilityShortcutPreferenceFragment.class) private static class ShadowAccessibilityShortcutPreferenceFragment { private static String sSelectedServiceName; public static void setServiceName(String selectedServiceName) { sSelectedServiceName = selectedServiceName; } @Implementation protected static CharSequence getServiceName(Context context) { return sSelectedServiceName; } } private AccessibilityServiceInfo getMockAccessibilityServiceInfo() { final ApplicationInfo applicationInfo = new ApplicationInfo(); final ServiceInfo serviceInfo = new ServiceInfo(); applicationInfo.packageName = PACKAGE_NAME; serviceInfo.packageName = PACKAGE_NAME; serviceInfo.name = CLASS_NAME; serviceInfo.applicationInfo = applicationInfo; final ResolveInfo resolveInfo = new ResolveInfo(); resolveInfo.serviceInfo = serviceInfo; try { final AccessibilityServiceInfo info = new AccessibilityServiceInfo(resolveInfo, mContext); ComponentName componentName = ComponentName.unflattenFromString(COMPONENT_NAME); info.setComponentName(componentName); return info; } catch (XmlPullParserException | IOException e) { // Do nothing } return null; } private List<AccessibilityServiceInfo> getMockServiceList() { final List<AccessibilityServiceInfo> infoList = new ArrayList<>(); infoList.add(getMockAccessibilityServiceInfo()); return infoList; } }