From 869c614ab24720bc2128ad89872443caec6e1188 Mon Sep 17 00:00:00 2001 From: Peter_Liang Date: Sat, 27 Mar 2021 01:07:19 +0800 Subject: [PATCH] Provide a way to Accessibility button settings via intent. Frameworks need a way to launch Accessibility button settings. Bug: 175365399 Test: atest AccessibilityDetailsSettingsFragmentTest Change-Id: I53063c6c6f34752370813cc035db531c664580ed --- .../AccessibilityDetailsSettingsFragment.java | 7 ++++ ...essibilityDetailsSettingsFragmentTest.java | 40 ++++++++++++++----- 2 files changed, 37 insertions(+), 10 deletions(-) diff --git a/src/com/android/settings/accessibility/AccessibilityDetailsSettingsFragment.java b/src/com/android/settings/accessibility/AccessibilityDetailsSettingsFragment.java index 58cdb72b718..7ff3dba7fcd 100644 --- a/src/com/android/settings/accessibility/AccessibilityDetailsSettingsFragment.java +++ b/src/com/android/settings/accessibility/AccessibilityDetailsSettingsFragment.java @@ -16,6 +16,7 @@ package com.android.settings.accessibility; +import static com.android.internal.accessibility.AccessibilityShortcutController.ACCESSIBILITY_BUTTON_COMPONENT_NAME; import static com.android.internal.accessibility.AccessibilityShortcutController.MAGNIFICATION_COMPONENT_NAME; import android.accessibilityservice.AccessibilityServiceInfo; @@ -101,6 +102,12 @@ public class AccessibilityDetailsSettingsFragment extends InstrumentedFragment { arguments, getContext()); return new LaunchFragmentArguments(destination, arguments); } + + if (ACCESSIBILITY_BUTTON_COMPONENT_NAME.equals(componentName)) { + final String destination = AccessibilityButtonFragment.class.getName(); + return new LaunchFragmentArguments(destination, /* arguments= */ null); + } + return null; } diff --git a/tests/robotests/src/com/android/settings/accessibility/AccessibilityDetailsSettingsFragmentTest.java b/tests/robotests/src/com/android/settings/accessibility/AccessibilityDetailsSettingsFragmentTest.java index a04f0cf120e..f5021730313 100644 --- a/tests/robotests/src/com/android/settings/accessibility/AccessibilityDetailsSettingsFragmentTest.java +++ b/tests/robotests/src/com/android/settings/accessibility/AccessibilityDetailsSettingsFragmentTest.java @@ -16,6 +16,7 @@ package com.android.settings.accessibility; +import static com.android.internal.accessibility.AccessibilityShortcutController.ACCESSIBILITY_BUTTON_COMPONENT_NAME; import static com.android.internal.accessibility.AccessibilityShortcutController.MAGNIFICATION_COMPONENT_NAME; import static com.google.common.truth.Truth.assertThat; @@ -85,7 +86,18 @@ public class AccessibilityDetailsSettingsFragmentTest { } @Test - public void onCreate_hasValidExtraComponentName_launchExpectedFragmentAndFinish() { + public void onCreate_afterSuccessfullyLaunch_shouldBeFinished() { + final Intent intent = new Intent(); + intent.putExtra(Intent.EXTRA_COMPONENT_NAME, COMPONENT_NAME); + doReturn(intent).when(mActivity).getIntent(); + + mFragment.onCreate(Bundle.EMPTY); + + verify(mActivity).finish(); + } + + @Test + public void onCreate_hasValidExtraComponentName_launchExpectedFragment() { final Intent intent = new Intent(); intent.putExtra(Intent.EXTRA_COMPONENT_NAME, COMPONENT_NAME); doReturn(intent).when(mActivity).getIntent(); @@ -94,11 +106,10 @@ public class AccessibilityDetailsSettingsFragmentTest { assertStartActivityWithExpectedFragment(mActivity, ToggleAccessibilityServicePreferenceFragment.class.getName()); - verify(mActivity).finish(); } @Test - public void onCreate_hasInvalidExtraComponentName_launchAccessibilitySettingsAndFinish() { + public void onCreate_hasInvalidExtraComponentName_launchAccessibilitySettings() { final Intent intent = new Intent(); intent.putExtra(Intent.EXTRA_COMPONENT_NAME, PACKAGE_NAME + "/.service"); doReturn(intent).when(mActivity).getIntent(); @@ -106,22 +117,20 @@ public class AccessibilityDetailsSettingsFragmentTest { mFragment.onCreate(Bundle.EMPTY); assertStartActivityWithExpectedFragment(mActivity, AccessibilitySettings.class.getName()); - verify(mActivity).finish(); } @Test - public void onCreate_hasNoExtraComponentName_launchAccessibilitySettingsAndFinish() { + public void onCreate_hasNoExtraComponentName_launchAccessibilitySettings() { final Intent intent = new Intent(); doReturn(intent).when(mActivity).getIntent(); mFragment.onCreate(Bundle.EMPTY); assertStartActivityWithExpectedFragment(mActivity, AccessibilitySettings.class.getName()); - verify(mActivity).finish(); } @Test - public void onCreate_extraComponentNameIsDisallowed_launchAccessibilitySettingsAndFinish() { + public void onCreate_extraComponentNameIsDisallowed_launchAccessibilitySettings() { final Intent intent = new Intent(); intent.putExtra(Intent.EXTRA_COMPONENT_NAME, COMPONENT_NAME); doReturn(intent).when(mActivity).getIntent(); @@ -130,11 +139,10 @@ public class AccessibilityDetailsSettingsFragmentTest { mFragment.onCreate(Bundle.EMPTY); assertStartActivityWithExpectedFragment(mActivity, AccessibilitySettings.class.getName()); - verify(mActivity).finish(); } @Test - public void onCreate_magnificationComponentName_launchMagnificationFragmentAndFinish() { + public void onCreate_magnificationComponentName_launchMagnificationFragment() { final Intent intent = new Intent(); intent.putExtra(Intent.EXTRA_COMPONENT_NAME, MAGNIFICATION_COMPONENT_NAME.flattenToString()); @@ -145,7 +153,19 @@ public class AccessibilityDetailsSettingsFragmentTest { assertStartActivityWithExpectedFragment(mActivity, ToggleScreenMagnificationPreferenceFragment.class.getName()); - verify(mActivity).finish(); + } + + @Test + public void onCreate_accessibilityButton_launchAccessibilityButtonFragment() { + final Intent intent = new Intent(); + intent.putExtra(Intent.EXTRA_COMPONENT_NAME, + ACCESSIBILITY_BUTTON_COMPONENT_NAME.flattenToString()); + doReturn(intent).when(mActivity).getIntent(); + + mFragment.onCreate(Bundle.EMPTY); + + assertStartActivityWithExpectedFragment(mActivity, + AccessibilityButtonFragment.class.getName()); } private AccessibilityServiceInfo getMockAccessibilityServiceInfo() {