diff --git a/Android.bp b/Android.bp index 5a1224ca71d..97b235d3ab9 100644 --- a/Android.bp +++ b/Android.bp @@ -76,6 +76,8 @@ android_library { "android.hardware.dumpstate-V1.0-java", "android.hardware.dumpstate-V1.1-java", "android.nfc.flags-aconfig-java", + "android.view.accessibility.flags-aconfig-java", + "com_android_server_accessibility_flags_lib", "net-utils-framework-common", "notification_flags_lib", "securebox", @@ -99,7 +101,6 @@ android_library { "settings-logtags", "settings-telephony-protos-lite", "statslog-settings", - "com_android_server_accessibility_flags_lib", ], plugins: ["androidx.room_room-compiler-plugin"], diff --git a/src/com/android/settings/accessibility/AccessibilityServiceWarning.java b/src/com/android/settings/accessibility/AccessibilityServiceWarning.java index e8ed85c63e3..9022ebfa9a1 100644 --- a/src/com/android/settings/accessibility/AccessibilityServiceWarning.java +++ b/src/com/android/settings/accessibility/AccessibilityServiceWarning.java @@ -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) { diff --git a/src/com/android/settings/accessibility/InvisibleToggleAccessibilityServicePreferenceFragment.java b/src/com/android/settings/accessibility/InvisibleToggleAccessibilityServicePreferenceFragment.java index 0c1876f95d0..1ecb94ae2bd 100644 --- a/src/com/android/settings/accessibility/InvisibleToggleAccessibilityServicePreferenceFragment.java +++ b/src/com/android/settings/accessibility/InvisibleToggleAccessibilityServicePreferenceFragment.java @@ -64,9 +64,24 @@ public class InvisibleToggleAccessibilityServicePreferenceFragment extends @Override void onDialogButtonFromShortcutToggleClicked(View view) { super.onDialogButtonFromShortcutToggleClicked(view); - if (view.getId() == R.id.permission_enable_allow_button) { - AccessibilityUtils.setAccessibilityServiceState(getContext(), mComponentName, - true); + 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); } } diff --git a/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java b/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java index 6847a6dc3c1..213f108bd66 100644 --- a/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java +++ b/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java @@ -157,28 +157,55 @@ public class ToggleAccessibilityServicePreferenceFragment extends if (info == null) { return null; } - mWarningDialog = AccessibilityServiceWarning - .createCapabilitiesDialog(getPrefContext(), info, - this::onDialogButtonFromEnableToggleClicked, - this::onDialogButtonFromUninstallClicked); + 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; } - mWarningDialog = AccessibilityServiceWarning - .createCapabilitiesDialog(getPrefContext(), info, - this::onDialogButtonFromShortcutToggleClicked, - this::onDialogButtonFromUninstallClicked); + 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; } - mWarningDialog = AccessibilityServiceWarning - .createCapabilitiesDialog(getPrefContext(), info, - this::onDialogButtonFromShortcutClicked, - this::onDialogButtonFromUninstallClicked); + 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(),