Fix should not let users adjust a11y button settings in SuW issue
Root Cause: Users should not be able to adjust any settings of the a11y button in the setup wizard flow, but there will be a link button to a11y button settings page on the a11y tutorial dialog where user can modify the settings. Solution: Hide the link button in a11y tutorial dialog if we know the dialog is launched from any setup wizard page. Bug: 256084341 Test: make RunSettingsRoboTests ROBOTEST_FILTER=AccessibilityGestureNavigationTutorialTest Change-Id: I742f9b7ba311fcd7a5105463709dc104345b9f12
This commit is contained in:
@@ -160,6 +160,37 @@ public final class AccessibilityGestureNavigationTutorial {
|
||||
return alertDialog;
|
||||
}
|
||||
|
||||
static AlertDialog createAccessibilityTutorialDialogForSetupWizard(Context context,
|
||||
int shortcutTypes) {
|
||||
return createAccessibilityTutorialDialogForSetupWizard(context, shortcutTypes,
|
||||
mOnClickListener);
|
||||
}
|
||||
|
||||
static AlertDialog createAccessibilityTutorialDialogForSetupWizard(Context context,
|
||||
int shortcutTypes, @Nullable DialogInterface.OnClickListener actionButtonListener) {
|
||||
|
||||
final int category = SettingsEnums.SWITCH_SHORTCUT_DIALOG_ACCESSIBILITY_BUTTON_SETTINGS;
|
||||
final DialogInterface.OnClickListener linkButtonListener =
|
||||
(dialog, which) -> new SubSettingLauncher(context)
|
||||
.setDestination(AccessibilityButtonFragment.class.getName())
|
||||
.setSourceMetricsCategory(category)
|
||||
.launch();
|
||||
|
||||
final AlertDialog alertDialog = new AlertDialog.Builder(context)
|
||||
.setPositiveButton(R.string.accessibility_tutorial_dialog_button,
|
||||
actionButtonListener)
|
||||
.create();
|
||||
|
||||
final List<TutorialPage> tutorialPages =
|
||||
createShortcutTutorialPages(context, shortcutTypes);
|
||||
Preconditions.checkArgument(!tutorialPages.isEmpty(),
|
||||
/* errorMessage= */ "Unexpected tutorial pages size");
|
||||
|
||||
alertDialog.setView(createShortcutNavigationContentView(context, tutorialPages, null));
|
||||
|
||||
return alertDialog;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets a content View for a dialog to confirm that they want to enable a service.
|
||||
*
|
||||
|
@@ -208,9 +208,17 @@ public abstract class AccessibilityShortcutPreferenceFragment extends DashboardF
|
||||
setupEditShortcutDialog(dialog);
|
||||
return dialog;
|
||||
case DialogEnums.LAUNCH_ACCESSIBILITY_TUTORIAL:
|
||||
if (WizardManagerHelper.isAnySetupWizard(getIntent())) {
|
||||
dialog = AccessibilityGestureNavigationTutorial
|
||||
.createAccessibilityTutorialDialog(getPrefContext(),
|
||||
getUserShortcutTypes(), this::callOnTutorialDialogButtonClicked);
|
||||
.createAccessibilityTutorialDialogForSetupWizard(
|
||||
getPrefContext(), getUserShortcutTypes(),
|
||||
this::callOnTutorialDialogButtonClicked);
|
||||
} else {
|
||||
dialog = AccessibilityGestureNavigationTutorial
|
||||
.createAccessibilityTutorialDialog(
|
||||
getPrefContext(), getUserShortcutTypes(),
|
||||
this::callOnTutorialDialogButtonClicked);
|
||||
}
|
||||
dialog.setCanceledOnTouchOutside(false);
|
||||
return dialog;
|
||||
default:
|
||||
|
@@ -219,9 +219,17 @@ public abstract class ToggleFeaturePreferenceFragment extends DashboardFragment
|
||||
setupEditShortcutDialog(mDialog);
|
||||
return mDialog;
|
||||
case DialogEnums.LAUNCH_ACCESSIBILITY_TUTORIAL:
|
||||
if (WizardManagerHelper.isAnySetupWizard(getIntent())) {
|
||||
mDialog = AccessibilityGestureNavigationTutorial
|
||||
.createAccessibilityTutorialDialog(getPrefContext(),
|
||||
getUserShortcutTypes(), this::callOnTutorialDialogButtonClicked);
|
||||
.createAccessibilityTutorialDialogForSetupWizard(
|
||||
getPrefContext(), getUserShortcutTypes(),
|
||||
this::callOnTutorialDialogButtonClicked);
|
||||
} else {
|
||||
mDialog = AccessibilityGestureNavigationTutorial
|
||||
.createAccessibilityTutorialDialog(
|
||||
getPrefContext(), getUserShortcutTypes(),
|
||||
this::callOnTutorialDialogButtonClicked);
|
||||
}
|
||||
mDialog.setCanceledOnTouchOutside(false);
|
||||
return mDialog;
|
||||
default:
|
||||
|
@@ -17,6 +17,7 @@
|
||||
package com.android.settings.accessibility;
|
||||
|
||||
import static com.android.settings.accessibility.AccessibilityGestureNavigationTutorial.createAccessibilityTutorialDialog;
|
||||
import static com.android.settings.accessibility.AccessibilityGestureNavigationTutorial.createAccessibilityTutorialDialogForSetupWizard;
|
||||
import static com.android.settings.accessibility.AccessibilityGestureNavigationTutorial.createShortcutTutorialPages;
|
||||
import static com.android.settings.accessibility.AccessibilityGestureNavigationTutorial.showGestureNavigationTutorialDialog;
|
||||
import static com.android.settings.accessibility.AccessibilityUtil.UserShortcutType;
|
||||
@@ -149,6 +150,18 @@ public final class AccessibilityGestureNavigationTutorialTest {
|
||||
.isEqualTo(View.GONE);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void createTutorialPages_turnOnSoftwareShortcut_showFromSuW_linkButtonGone() {
|
||||
mShortcutTypes |= UserShortcutType.SOFTWARE;
|
||||
|
||||
final AlertDialog alertDialog =
|
||||
createAccessibilityTutorialDialogForSetupWizard(mContext, mShortcutTypes);
|
||||
alertDialog.show();
|
||||
|
||||
assertThat(alertDialog.getButton(DialogInterface.BUTTON_NEGATIVE).getVisibility())
|
||||
.isEqualTo(View.GONE);
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void performClickOnPositiveButton_turnOnSoftwareShortcut_dismiss() {
|
||||
@@ -178,8 +191,7 @@ public final class AccessibilityGestureNavigationTutorialTest {
|
||||
public void performClickOnNegativeButton_turnOnSoftwareShortcut_directToSettingsPage() {
|
||||
mShortcutTypes |= UserShortcutType.SOFTWARE;
|
||||
Activity activity = Robolectric.buildActivity(Activity.class).create().get();
|
||||
final AlertDialog alertDialog =
|
||||
createAccessibilityTutorialDialog(activity, mShortcutTypes, mOnClickListener);
|
||||
final AlertDialog alertDialog = createAccessibilityTutorialDialog(activity, mShortcutTypes);
|
||||
alertDialog.show();
|
||||
|
||||
alertDialog.getButton(DialogInterface.BUTTON_NEGATIVE).performClick();
|
||||
|
Reference in New Issue
Block a user