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();
|
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,
|
public static Dialog createCapabilitiesDialog(@NonNull Context context,
|
||||||
@NonNull AccessibilityServiceInfo info, @NonNull View.OnClickListener listener,
|
@NonNull AccessibilityServiceInfo info, @NonNull View.OnClickListener listener,
|
||||||
@NonNull UninstallActionPerformer performer) {
|
@NonNull UninstallActionPerformer performer) {
|
||||||
|
@@ -64,11 +64,26 @@ public class InvisibleToggleAccessibilityServicePreferenceFragment extends
|
|||||||
@Override
|
@Override
|
||||||
void onDialogButtonFromShortcutToggleClicked(View view) {
|
void onDialogButtonFromShortcutToggleClicked(View view) {
|
||||||
super.onDialogButtonFromShortcutToggleClicked(view);
|
super.onDialogButtonFromShortcutToggleClicked(view);
|
||||||
|
if (!android.view.accessibility.Flags.deduplicateAccessibilityWarningDialog()) {
|
||||||
if (view.getId() == R.id.permission_enable_allow_button) {
|
if (view.getId() == R.id.permission_enable_allow_button) {
|
||||||
AccessibilityUtils.setAccessibilityServiceState(getContext(), mComponentName,
|
AccessibilityUtils.setAccessibilityServiceState(getContext(), mComponentName,
|
||||||
true);
|
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}
|
* {@inheritDoc}
|
||||||
|
@@ -157,28 +157,55 @@ public class ToggleAccessibilityServicePreferenceFragment extends
|
|||||||
if (info == null) {
|
if (info == null) {
|
||||||
return 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
|
mWarningDialog = AccessibilityServiceWarning
|
||||||
.createCapabilitiesDialog(getPrefContext(), info,
|
.createCapabilitiesDialog(getPrefContext(), info,
|
||||||
this::onDialogButtonFromEnableToggleClicked,
|
this::onDialogButtonFromEnableToggleClicked,
|
||||||
this::onDialogButtonFromUninstallClicked);
|
this::onDialogButtonFromUninstallClicked);
|
||||||
|
}
|
||||||
return mWarningDialog;
|
return mWarningDialog;
|
||||||
case DialogEnums.ENABLE_WARNING_FROM_SHORTCUT_TOGGLE:
|
case DialogEnums.ENABLE_WARNING_FROM_SHORTCUT_TOGGLE:
|
||||||
if (info == null) {
|
if (info == null) {
|
||||||
return 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
|
mWarningDialog = AccessibilityServiceWarning
|
||||||
.createCapabilitiesDialog(getPrefContext(), info,
|
.createCapabilitiesDialog(getPrefContext(), info,
|
||||||
this::onDialogButtonFromShortcutToggleClicked,
|
this::onDialogButtonFromShortcutToggleClicked,
|
||||||
this::onDialogButtonFromUninstallClicked);
|
this::onDialogButtonFromUninstallClicked);
|
||||||
|
}
|
||||||
return mWarningDialog;
|
return mWarningDialog;
|
||||||
case DialogEnums.ENABLE_WARNING_FROM_SHORTCUT:
|
case DialogEnums.ENABLE_WARNING_FROM_SHORTCUT:
|
||||||
if (info == null) {
|
if (info == null) {
|
||||||
return 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
|
mWarningDialog = AccessibilityServiceWarning
|
||||||
.createCapabilitiesDialog(getPrefContext(), info,
|
.createCapabilitiesDialog(getPrefContext(), info,
|
||||||
this::onDialogButtonFromShortcutClicked,
|
this::onDialogButtonFromShortcutClicked,
|
||||||
this::onDialogButtonFromUninstallClicked);
|
this::onDialogButtonFromUninstallClicked);
|
||||||
|
}
|
||||||
return mWarningDialog;
|
return mWarningDialog;
|
||||||
case DialogEnums.DISABLE_WARNING_FROM_TOGGLE:
|
case DialogEnums.DISABLE_WARNING_FROM_TOGGLE:
|
||||||
if (info == null) {
|
if (info == null) {
|
||||||
@@ -459,7 +486,7 @@ public class ToggleAccessibilityServicePreferenceFragment extends
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onAllowButtonFromShortcutToggleClicked() {
|
void onAllowButtonFromShortcutToggleClicked() {
|
||||||
mShortcutPreference.setChecked(true);
|
mShortcutPreference.setChecked(true);
|
||||||
|
|
||||||
final int shortcutTypes = retrieveUserShortcutType(getPrefContext(),
|
final int shortcutTypes = retrieveUserShortcutType(getPrefContext(),
|
||||||
|
Reference in New Issue
Block a user