Provides an ordered array of shortcut types so Settings presents shortcuts in the desired order

NO_IFTTT=corrects ui order
Flag: android.provider.a11y_standalone_gesture_enabled
Test: atest AccessibilityUtilTest
Bug: 371463731

Change-Id: Ia1864076faa281cf57c469a2d0d34f859858d859
This commit is contained in:
Riley Jones
2024-10-08 21:33:55 +00:00
parent ae24d51b1b
commit ea06748ee2
5 changed files with 18 additions and 22 deletions

View File

@@ -90,11 +90,5 @@
settings:allowDividerAbove="false" settings:allowDividerAbove="false"
settings:allowDividerBelow="false" settings:allowDividerBelow="false"
settings:controller="com.android.settings.accessibility.shortcuts.TripleTapShortcutOptionController" /> settings:controller="com.android.settings.accessibility.shortcuts.TripleTapShortcutOptionController" />
<!-- <!-- LINT.ThenChange(/src/com/android/settings/accessibility/AccessibilityUtil.java:shortcut_type_ui_order) -->
LINT.ThenChange(
/src/com/android/settings/accessibility/AccessibilityGestureNavigationTutorial.java:shortcut_type_ui_order,
/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java:shortcut_type_ui_order,
/src/com/android/settings/accessibility/AccessibilityShortcutPreferenceFragment.java:shortcut_type_ui_order
)
-->
</PreferenceScreen> </PreferenceScreen>

View File

@@ -64,7 +64,6 @@ import androidx.core.widget.TextViewCompat;
import androidx.viewpager.widget.PagerAdapter; import androidx.viewpager.widget.PagerAdapter;
import androidx.viewpager.widget.ViewPager; import androidx.viewpager.widget.ViewPager;
import com.android.internal.accessibility.common.ShortcutConstants;
import com.android.internal.accessibility.common.ShortcutConstants.UserShortcutType; import com.android.internal.accessibility.common.ShortcutConstants.UserShortcutType;
import com.android.internal.accessibility.util.ShortcutUtils; import com.android.internal.accessibility.util.ShortcutUtils;
import com.android.settings.R; import com.android.settings.R;
@@ -490,11 +489,10 @@ public final class AccessibilityShortcutsTutorial {
static List<TutorialPage> createShortcutTutorialPages( static List<TutorialPage> createShortcutTutorialPages(
@NonNull Context context, int shortcutTypes, @NonNull CharSequence featureName, @NonNull Context context, int shortcutTypes, @NonNull CharSequence featureName,
boolean inSetupWizard) { boolean inSetupWizard) {
// LINT.IfChange(shortcut_type_ui_order)
final List<TutorialPage> tutorialPages = new ArrayList<>(); final List<TutorialPage> tutorialPages = new ArrayList<>();
int buttonMode = ShortcutUtils.getButtonMode(context, context.getUserId()); int buttonMode = ShortcutUtils.getButtonMode(context, context.getUserId());
for (int shortcutType: ShortcutConstants.USER_SHORTCUT_TYPES) { for (int shortcutType: AccessibilityUtil.SHORTCUTS_ORDER_IN_UI) {
if ((shortcutTypes & shortcutType) == 0) { if ((shortcutTypes & shortcutType) == 0) {
continue; continue;
} }
@@ -506,7 +504,6 @@ public final class AccessibilityShortcutsTutorial {
createShortcutTutorialPage( createShortcutTutorialPage(
context, shortcutType, buttonMode, featureName, inSetupWizard)); context, shortcutType, buttonMode, featureName, inSetupWizard));
} }
// LINT.ThenChange(/res/xml/accessibility_edit_shortcuts.xml:shortcut_type_ui_order)
return tutorialPages; return tutorialPages;
} }

View File

@@ -50,7 +50,6 @@ import androidx.annotation.NonNull;
import androidx.annotation.StringRes; import androidx.annotation.StringRes;
import androidx.annotation.VisibleForTesting; import androidx.annotation.VisibleForTesting;
import com.android.internal.accessibility.common.ShortcutConstants;
import com.android.internal.accessibility.common.ShortcutConstants.UserShortcutType; import com.android.internal.accessibility.common.ShortcutConstants.UserShortcutType;
import com.android.internal.accessibility.util.ShortcutUtils; import com.android.internal.accessibility.util.ShortcutUtils;
import com.android.settings.R; import com.android.settings.R;
@@ -66,6 +65,16 @@ import java.util.StringJoiner;
/** Provides utility methods to accessibility settings only. */ /** Provides utility methods to accessibility settings only. */
public final class AccessibilityUtil { public final class AccessibilityUtil {
// LINT.IfChange(shortcut_type_ui_order)
static final int[] SHORTCUTS_ORDER_IN_UI = {
QUICK_SETTINGS,
SOFTWARE, // FAB displays before gesture. Navbar displays without gesture.
GESTURE,
HARDWARE,
TWOFINGER_DOUBLETAP,
TRIPLETAP
};
// LINT.ThenChange(/res/xml/accessibility_edit_shortcuts.xml:shortcut_type_ui_order)
private AccessibilityUtil(){} private AccessibilityUtil(){}
@@ -344,7 +353,7 @@ public final class AccessibilityUtil {
*/ */
static boolean hasValuesInSettings(Context context, int shortcutTypes, static boolean hasValuesInSettings(Context context, int shortcutTypes,
@NonNull ComponentName componentName) { @NonNull ComponentName componentName) {
for (int shortcutType : ShortcutConstants.USER_SHORTCUT_TYPES) { for (int shortcutType : AccessibilityUtil.SHORTCUTS_ORDER_IN_UI) {
if (!android.view.accessibility.Flags.a11yQsShortcut()) { if (!android.view.accessibility.Flags.a11yQsShortcut()) {
if ((shortcutType & QUICK_SETTINGS) == QUICK_SETTINGS) { if ((shortcutType & QUICK_SETTINGS) == QUICK_SETTINGS) {
continue; continue;
@@ -395,7 +404,7 @@ public final class AccessibilityUtil {
static int getUserShortcutTypesFromSettings(Context context, static int getUserShortcutTypesFromSettings(Context context,
@NonNull ComponentName componentName) { @NonNull ComponentName componentName) {
int shortcutTypes = DEFAULT; int shortcutTypes = DEFAULT;
for (int shortcutType : ShortcutConstants.USER_SHORTCUT_TYPES) { for (int shortcutType : AccessibilityUtil.SHORTCUTS_ORDER_IN_UI) {
if (!android.view.accessibility.Flags.a11yQsShortcut()) { if (!android.view.accessibility.Flags.a11yQsShortcut()) {
if ((shortcutType & QUICK_SETTINGS) == QUICK_SETTINGS) { if ((shortcutType & QUICK_SETTINGS) == QUICK_SETTINGS) {
continue; continue;
@@ -511,8 +520,7 @@ public final class AccessibilityUtil {
public static CharSequence getShortcutSummaryList(Context context, int shortcutTypes) { public static CharSequence getShortcutSummaryList(Context context, int shortcutTypes) {
final List<CharSequence> list = new ArrayList<>(); final List<CharSequence> list = new ArrayList<>();
// LINT.IfChange(shortcut_type_ui_order) for (int shortcutType : AccessibilityUtil.SHORTCUTS_ORDER_IN_UI) {
for (int shortcutType : ShortcutConstants.USER_SHORTCUT_TYPES) {
if (!android.view.accessibility.Flags.a11yQsShortcut() if (!android.view.accessibility.Flags.a11yQsShortcut()
&& (shortcutType & QUICK_SETTINGS) == QUICK_SETTINGS) { && (shortcutType & QUICK_SETTINGS) == QUICK_SETTINGS) {
continue; continue;
@@ -548,7 +556,6 @@ public final class AccessibilityUtil {
list.sort(CharSequence::compare); list.sort(CharSequence::compare);
return CaseMap.toTitle().wholeString().noLowercase().apply(Locale.getDefault(), /* iter= */ return CaseMap.toTitle().wholeString().noLowercase().apply(Locale.getDefault(), /* iter= */
null, LocaleUtils.getConcatenatedString(list)); null, LocaleUtils.getConcatenatedString(list));
// LINT.ThenChange(/res/xml/accessibility_edit_shortcuts.xml:shortcut_type_ui_order)
} }
@VisibleForTesting @VisibleForTesting

View File

@@ -30,7 +30,6 @@ import android.view.accessibility.Flags;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.VisibleForTesting; import androidx.annotation.VisibleForTesting;
import com.android.internal.accessibility.common.ShortcutConstants;
import com.android.internal.accessibility.common.ShortcutConstants.UserShortcutType; import com.android.internal.accessibility.common.ShortcutConstants.UserShortcutType;
import com.android.internal.accessibility.util.ShortcutUtils; import com.android.internal.accessibility.util.ShortcutUtils;
@@ -123,7 +122,7 @@ public final class PreferredShortcuts {
public static void updatePreferredShortcutsFromSettings( public static void updatePreferredShortcutsFromSettings(
@NonNull Context context, @NonNull Set<String> components) { @NonNull Context context, @NonNull Set<String> components) {
final Map<Integer, Set<String>> shortcutTypeToTargets = new ArrayMap<>(); final Map<Integer, Set<String>> shortcutTypeToTargets = new ArrayMap<>();
for (int shortcutType : ShortcutConstants.USER_SHORTCUT_TYPES) { for (int shortcutType : AccessibilityUtil.SHORTCUTS_ORDER_IN_UI) {
if (!Flags.a11yQsShortcut() if (!Flags.a11yQsShortcut()
&& shortcutType == QUICK_SETTINGS) { && shortcutType == QUICK_SETTINGS) {
// Skip saving quick setting as preferred shortcut option when flag is not enabled // Skip saving quick setting as preferred shortcut option when flag is not enabled

View File

@@ -55,7 +55,6 @@ import androidx.preference.Preference;
import androidx.preference.PreferenceCategory; import androidx.preference.PreferenceCategory;
import androidx.preference.SwitchPreferenceCompat; import androidx.preference.SwitchPreferenceCompat;
import com.android.internal.accessibility.common.ShortcutConstants;
import com.android.internal.accessibility.common.ShortcutConstants.UserShortcutType; import com.android.internal.accessibility.common.ShortcutConstants.UserShortcutType;
import com.android.internal.annotations.VisibleForTesting; import com.android.internal.annotations.VisibleForTesting;
import com.android.server.accessibility.Flags; import com.android.server.accessibility.Flags;
@@ -740,7 +739,7 @@ public class ToggleScreenMagnificationPreferenceFragment extends
@VisibleForTesting @VisibleForTesting
static boolean hasMagnificationValuesInSettings(Context context, int shortcutTypes) { static boolean hasMagnificationValuesInSettings(Context context, int shortcutTypes) {
for (int shortcutType : ShortcutConstants.USER_SHORTCUT_TYPES) { for (int shortcutType : AccessibilityUtil.SHORTCUTS_ORDER_IN_UI) {
if ((shortcutTypes & shortcutType) == 0) { if ((shortcutTypes & shortcutType) == 0) {
continue; continue;
} }
@@ -791,7 +790,7 @@ public class ToggleScreenMagnificationPreferenceFragment extends
private static int getUserShortcutTypeFromSettings(Context context) { private static int getUserShortcutTypeFromSettings(Context context) {
int shortcutTypes = DEFAULT; int shortcutTypes = DEFAULT;
for (int shortcutType : ShortcutConstants.USER_SHORTCUT_TYPES) { for (int shortcutType : AccessibilityUtil.SHORTCUTS_ORDER_IN_UI) {
if ((shortcutType & (TWOFINGER_DOUBLETAP | QUICK_SETTINGS | GESTURE | TRIPLETAP)) if ((shortcutType & (TWOFINGER_DOUBLETAP | QUICK_SETTINGS | GESTURE | TRIPLETAP))
== shortcutType == shortcutType
&& !android.view.accessibility.Flags.a11yQsShortcut()) { && !android.view.accessibility.Flags.a11yQsShortcut()) {