Tech debt cleanup: Consolidates A11yService warning dialog.
Both frameworks/base and the Settings app define almost-identical copies of a warning dialog shown when enabling an accessibility service. The frameworks/base version was used for contexts outside of Settings (e.g. while editing the volume key shortcut after triggering it with 2+ features already enabled) while the Settings version was used in the Settings app. This change replaces version used in Settings with the version defined in frameworks/base. The warning dialog's functionality is tested in AccessibilityServiceWarningTest in frameworks/base. Feature flag: `adb shell device_config override accessibility android.view.accessibility.deduplicate_accessibility_warning_dialog true` Bug: 303511250 Test: atest AccessibilityServiceWarningTest Test: existing A11ySettings robotests Change-Id: Iad2f13040d53d82a4afb0353fae3ac355b5548d6
This commit is contained in:
@@ -67,7 +67,11 @@ public class AccessibilityServiceWarning {
|
||||
void uninstallPackage();
|
||||
}
|
||||
|
||||
/** Returns a {@link Dialog} to be shown to confirm that they want to enable a service. */
|
||||
/**
|
||||
* Returns a {@link Dialog} to be shown to confirm that they want to enable a service.
|
||||
* @deprecated Use {@link com.android.internal.accessibility.dialog.AccessibilityServiceWarning}
|
||||
*/
|
||||
@Deprecated
|
||||
public static Dialog createCapabilitiesDialog(@NonNull Context context,
|
||||
@NonNull AccessibilityServiceInfo info, @NonNull View.OnClickListener listener,
|
||||
@NonNull UninstallActionPerformer performer) {
|
||||
|
@@ -64,11 +64,26 @@ public class InvisibleToggleAccessibilityServicePreferenceFragment extends
|
||||
@Override
|
||||
void onDialogButtonFromShortcutToggleClicked(View view) {
|
||||
super.onDialogButtonFromShortcutToggleClicked(view);
|
||||
if (!android.view.accessibility.Flags.deduplicateAccessibilityWarningDialog()) {
|
||||
if (view.getId() == R.id.permission_enable_allow_button) {
|
||||
AccessibilityUtils.setAccessibilityServiceState(getContext(), mComponentName,
|
||||
true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* Enables accessibility service when user clicks permission allow button.
|
||||
*/
|
||||
@Override
|
||||
void onAllowButtonFromShortcutToggleClicked() {
|
||||
super.onAllowButtonFromShortcutToggleClicked();
|
||||
if (android.view.accessibility.Flags.deduplicateAccessibilityWarningDialog()) {
|
||||
AccessibilityUtils.setAccessibilityServiceState(getContext(), mComponentName, true);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
|
@@ -157,28 +157,55 @@ public class ToggleAccessibilityServicePreferenceFragment extends
|
||||
if (info == null) {
|
||||
return null;
|
||||
}
|
||||
if (android.view.accessibility.Flags.deduplicateAccessibilityWarningDialog()) {
|
||||
mWarningDialog =
|
||||
com.android.internal.accessibility.dialog.AccessibilityServiceWarning
|
||||
.createAccessibilityServiceWarningDialog(getPrefContext(), info,
|
||||
v -> onAllowButtonFromEnableToggleClicked(),
|
||||
v -> onDenyButtonFromEnableToggleClicked(),
|
||||
v -> onDialogButtonFromUninstallClicked());
|
||||
} else {
|
||||
mWarningDialog = AccessibilityServiceWarning
|
||||
.createCapabilitiesDialog(getPrefContext(), info,
|
||||
this::onDialogButtonFromEnableToggleClicked,
|
||||
this::onDialogButtonFromUninstallClicked);
|
||||
}
|
||||
return mWarningDialog;
|
||||
case DialogEnums.ENABLE_WARNING_FROM_SHORTCUT_TOGGLE:
|
||||
if (info == null) {
|
||||
return null;
|
||||
}
|
||||
if (android.view.accessibility.Flags.deduplicateAccessibilityWarningDialog()) {
|
||||
mWarningDialog =
|
||||
com.android.internal.accessibility.dialog.AccessibilityServiceWarning
|
||||
.createAccessibilityServiceWarningDialog(getPrefContext(), info,
|
||||
v -> onAllowButtonFromShortcutToggleClicked(),
|
||||
v -> onDenyButtonFromShortcutToggleClicked(),
|
||||
v -> onDialogButtonFromUninstallClicked());
|
||||
} else {
|
||||
mWarningDialog = AccessibilityServiceWarning
|
||||
.createCapabilitiesDialog(getPrefContext(), info,
|
||||
this::onDialogButtonFromShortcutToggleClicked,
|
||||
this::onDialogButtonFromUninstallClicked);
|
||||
}
|
||||
return mWarningDialog;
|
||||
case DialogEnums.ENABLE_WARNING_FROM_SHORTCUT:
|
||||
if (info == null) {
|
||||
return null;
|
||||
}
|
||||
if (android.view.accessibility.Flags.deduplicateAccessibilityWarningDialog()) {
|
||||
mWarningDialog =
|
||||
com.android.internal.accessibility.dialog.AccessibilityServiceWarning
|
||||
.createAccessibilityServiceWarningDialog(getPrefContext(), info,
|
||||
v -> onAllowButtonFromShortcutClicked(),
|
||||
v -> onDenyButtonFromShortcutClicked(),
|
||||
v -> onDialogButtonFromUninstallClicked());
|
||||
} else {
|
||||
mWarningDialog = AccessibilityServiceWarning
|
||||
.createCapabilitiesDialog(getPrefContext(), info,
|
||||
this::onDialogButtonFromShortcutClicked,
|
||||
this::onDialogButtonFromUninstallClicked);
|
||||
}
|
||||
return mWarningDialog;
|
||||
case DialogEnums.DISABLE_WARNING_FROM_TOGGLE:
|
||||
if (info == null) {
|
||||
@@ -459,7 +486,7 @@ public class ToggleAccessibilityServicePreferenceFragment extends
|
||||
}
|
||||
}
|
||||
|
||||
private void onAllowButtonFromShortcutToggleClicked() {
|
||||
void onAllowButtonFromShortcutToggleClicked() {
|
||||
mShortcutPreference.setChecked(true);
|
||||
|
||||
final int shortcutTypes = retrieveUserShortcutType(getPrefContext(),
|
||||
|
Reference in New Issue
Block a user