From c27d74d08e009bf85737a237e7a5a77f676d0aea Mon Sep 17 00:00:00 2001 From: jackqdyulei Date: Thu, 27 Jul 2017 16:13:03 -0700 Subject: [PATCH] Create wrapper and shadow for AccessibilityManager This is for testing, because robolectric doesn't recognize new API. Bug: 62022517 Test: Build Change-Id: I1c150d86366305eacf3245bbabdf3d3e26124c77 --- .../AccessibilityManagerWrapperImpl.java | 38 +++++++++++++++++++ ...ShadowAccessibilityManagerWrapperImpl.java | 34 +++++++++++++++++ 2 files changed, 72 insertions(+) create mode 100644 src/com/android/settings/applications/AccessibilityManagerWrapperImpl.java create mode 100644 tests/robotests/src/com/android/settings/testutils/shadow/ShadowAccessibilityManagerWrapperImpl.java diff --git a/src/com/android/settings/applications/AccessibilityManagerWrapperImpl.java b/src/com/android/settings/applications/AccessibilityManagerWrapperImpl.java new file mode 100644 index 00000000000..4ebaea759fc --- /dev/null +++ b/src/com/android/settings/applications/AccessibilityManagerWrapperImpl.java @@ -0,0 +1,38 @@ +/* + * Copyright (C) 2017 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.applications; + +import android.view.accessibility.AccessibilityManager; + +/** + * This class replicates a subset of the {@link android.view.accessibility.AccessibilityManager}. + * The interface exists so that we can use a thin wrapper around the AccessibilityManager in + * production code and a mock in tests. + */ +public class AccessibilityManagerWrapperImpl { + + /** + * Determines if the accessibility button within the system navigation area is supported. + * + * @return {@code true} if the accessibility button is supported on this device, + * {@code false} otherwise + * @hide + */ + public static boolean isAccessibilityButtonSupported() { + return AccessibilityManager.isAccessibilityButtonSupported(); + } +} diff --git a/tests/robotests/src/com/android/settings/testutils/shadow/ShadowAccessibilityManagerWrapperImpl.java b/tests/robotests/src/com/android/settings/testutils/shadow/ShadowAccessibilityManagerWrapperImpl.java new file mode 100644 index 00000000000..95d5de5e5b9 --- /dev/null +++ b/tests/robotests/src/com/android/settings/testutils/shadow/ShadowAccessibilityManagerWrapperImpl.java @@ -0,0 +1,34 @@ +/* + * Copyright (C) 2017 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.testutils.shadow; + +import com.android.settings.applications.AccessibilityManagerWrapperImpl; + +import org.robolectric.annotation.Implementation; +import org.robolectric.annotation.Implements; + +/** + * This class provides shadow for API that is not supported in current roboletric + */ +@Implements(AccessibilityManagerWrapperImpl.class) +public class ShadowAccessibilityManagerWrapperImpl { + + @Implementation + public static boolean isAccessibilityButtonSupported() { + return true; + } +}