From cfe3e454ac37131d2893101cb854fa607c56f09a Mon Sep 17 00:00:00 2001 From: Peter_Liang Date: Wed, 15 Apr 2020 15:26:56 +0800 Subject: [PATCH] Tutorial improvement for Accessibility shortcut (1/n). Because can't save the value into setting keys for the service before version R, and in order to let tutorial dialog can get the consistent value, using alternative that each fragment with shortcut to must implement the new abstract method. Bug: 148989018 Test: manual test Change-Id: Iba2a7daa70eb00f0bba37317c9355531fbb77628 --- ...AccessibilityActivityPreferenceFragment.java | 6 ++++++ ...yAccessibilityServicePreferenceFragment.java | 17 +++++++++++++++++ ...eAccessibilityServicePreferenceFragment.java | 8 +++++++- .../ToggleColorInversionPreferenceFragment.java | 6 ++++++ .../ToggleDaltonizerPreferenceFragment.java | 6 ++++++ .../ToggleFeaturePreferenceFragment.java | 5 +++++ ...leScreenMagnificationPreferenceFragment.java | 5 +++++ .../ToggleFeaturePreferenceFragmentTest.java | 5 +++++ .../ToggleFeaturePreferenceFragmentTest.java | 5 +++++ 9 files changed, 62 insertions(+), 1 deletion(-) diff --git a/src/com/android/settings/accessibility/LaunchAccessibilityActivityPreferenceFragment.java b/src/com/android/settings/accessibility/LaunchAccessibilityActivityPreferenceFragment.java index de37babfc32..169a9521323 100644 --- a/src/com/android/settings/accessibility/LaunchAccessibilityActivityPreferenceFragment.java +++ b/src/com/android/settings/accessibility/LaunchAccessibilityActivityPreferenceFragment.java @@ -100,6 +100,12 @@ public class LaunchAccessibilityActivityPreferenceFragment extends showDialog(DialogEnums.EDIT_SHORTCUT); } + @Override + int getUserShortcutTypes() { + return AccessibilityUtil.getUserShortcutTypesFromSettings(getPrefContext(), + mComponentName); + } + @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { // Do not call super. We don't want to see the "Help & feedback" option on this page so as diff --git a/src/com/android/settings/accessibility/LegacyAccessibilityServicePreferenceFragment.java b/src/com/android/settings/accessibility/LegacyAccessibilityServicePreferenceFragment.java index 1803874f09c..4fcfff8e7f7 100644 --- a/src/com/android/settings/accessibility/LegacyAccessibilityServicePreferenceFragment.java +++ b/src/com/android/settings/accessibility/LegacyAccessibilityServicePreferenceFragment.java @@ -18,6 +18,7 @@ package com.android.settings.accessibility; import static com.android.settings.accessibility.AccessibilityUtil.UserShortcutType; +import android.accessibilityservice.AccessibilityServiceInfo; import android.os.Bundle; import android.view.View; @@ -48,6 +49,22 @@ public class LegacyAccessibilityServicePreferenceFragment extends setAllowedPreferredShortcutType(UserShortcutType.HARDWARE); } + @Override + int getUserShortcutTypes() { + int shortcutTypes = super.getUserShortcutTypes(); + + final AccessibilityServiceInfo info = getAccessibilityServiceInfo(); + final boolean hasRequestAccessibilityButtonFlag = + (info.flags & AccessibilityServiceInfo.FLAG_REQUEST_ACCESSIBILITY_BUTTON) != 0; + if (hasRequestAccessibilityButtonFlag) { + shortcutTypes |= UserShortcutType.SOFTWARE; + } else { + shortcutTypes &= (~UserShortcutType.SOFTWARE); + } + + return shortcutTypes; + } + private void setAllowedPreferredShortcutType(int type) { final AccessibilityUserShortcutType shortcut = new AccessibilityUserShortcutType( mComponentName.flattenToString(), type); diff --git a/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java b/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java index d530a563365..6fdbe0310e0 100644 --- a/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java +++ b/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java @@ -106,7 +106,7 @@ public class ToggleAccessibilityServicePreferenceFragment extends // capabilities. For // example, before JellyBean MR2 the user was granting the explore by touch // one. - private AccessibilityServiceInfo getAccessibilityServiceInfo() { + AccessibilityServiceInfo getAccessibilityServiceInfo() { final List infos = AccessibilityManager.getInstance( getPrefContext()).getInstalledAccessibilityServiceList(); @@ -197,6 +197,12 @@ public class ToggleAccessibilityServicePreferenceFragment extends } } + @Override + int getUserShortcutTypes() { + return AccessibilityUtil.getUserShortcutTypesFromSettings(getPrefContext(), + mComponentName); + } + @Override protected void updateToggleServiceTitle(SwitchPreference switchPreference) { final AccessibilityServiceInfo info = getAccessibilityServiceInfo(); diff --git a/src/com/android/settings/accessibility/ToggleColorInversionPreferenceFragment.java b/src/com/android/settings/accessibility/ToggleColorInversionPreferenceFragment.java index 07ff7203013..5cde5e602e7 100644 --- a/src/com/android/settings/accessibility/ToggleColorInversionPreferenceFragment.java +++ b/src/com/android/settings/accessibility/ToggleColorInversionPreferenceFragment.java @@ -124,6 +124,12 @@ public class ToggleColorInversionPreferenceFragment extends ToggleFeaturePrefere showDialog(DialogEnums.EDIT_SHORTCUT); } + @Override + int getUserShortcutTypes() { + return AccessibilityUtil.getUserShortcutTypesFromSettings(getPrefContext(), + mComponentName); + } + private void updateSwitchBarToggleSwitch() { final boolean checked = Settings.Secure.getInt(getContentResolver(), ENABLED, OFF) == ON; if (mToggleServiceDividerSwitchPreference.isChecked() == checked) { diff --git a/src/com/android/settings/accessibility/ToggleDaltonizerPreferenceFragment.java b/src/com/android/settings/accessibility/ToggleDaltonizerPreferenceFragment.java index 5b9c55b3a93..c7212a44b21 100644 --- a/src/com/android/settings/accessibility/ToggleDaltonizerPreferenceFragment.java +++ b/src/com/android/settings/accessibility/ToggleDaltonizerPreferenceFragment.java @@ -198,6 +198,12 @@ public final class ToggleDaltonizerPreferenceFragment extends ToggleFeaturePrefe showDialog(DialogEnums.EDIT_SHORTCUT); } + @Override + int getUserShortcutTypes() { + return AccessibilityUtil.getUserShortcutTypesFromSettings(getPrefContext(), + mComponentName); + } + private void updateSwitchBarToggleSwitch() { final boolean checked = Settings.Secure.getInt(getContentResolver(), ENABLED, OFF) == ON; if (mToggleServiceDividerSwitchPreference.isChecked() == checked) { diff --git a/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java b/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java index eeb1f3ae5cf..7fc4623e332 100644 --- a/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java +++ b/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java @@ -334,6 +334,11 @@ public abstract class ToggleFeaturePreferenceFragment extends SettingsPreference removeActionBarToggleSwitch(); } + /** + * Returns the shortcut type list which has been checked by user. + */ + abstract int getUserShortcutTypes(); + protected void updateToggleServiceTitle(SwitchPreference switchPreference) { switchPreference.setTitle(R.string.accessibility_service_master_switch_title); } diff --git a/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java b/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java index 91b8eaebd47..11f25b4dd43 100644 --- a/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java +++ b/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java @@ -412,6 +412,11 @@ public class ToggleScreenMagnificationPreferenceFragment extends } } + @Override + int getUserShortcutTypes() { + return getUserShortcutTypeFromSettings(getPrefContext()); + } + @Override protected void onPreferenceToggled(String preferenceKey, boolean enabled) { if (enabled && TextUtils.equals( diff --git a/tests/robotests/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragmentTest.java b/tests/robotests/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragmentTest.java index e476c21f37d..3df9c048637 100644 --- a/tests/robotests/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragmentTest.java +++ b/tests/robotests/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragmentTest.java @@ -129,6 +129,11 @@ public class ToggleFeaturePreferenceFragmentTest { return 0; } + @Override + int getUserShortcutTypes() { + return 0; + } + @Override public int getPreferenceScreenResId() { return R.xml.placeholder_prefs; diff --git a/tests/unit/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragmentTest.java b/tests/unit/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragmentTest.java index 9a3b526dd7a..e0013e08f8c 100644 --- a/tests/unit/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragmentTest.java +++ b/tests/unit/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragmentTest.java @@ -86,5 +86,10 @@ public class ToggleFeaturePreferenceFragmentTest { public int getMetricsCategory() { return 0; } + + @Override + int getUserShortcutTypes() { + return 0; + } } } \ No newline at end of file