From 2c134f79c51504ddf1db23aad2fc57f0cd096450 Mon Sep 17 00:00:00 2001 From: dakinola Date: Tue, 21 Nov 2023 12:04:46 +0000 Subject: Disable Touch & Hold Switch Access Accessibility Action for MediaProjection Permission Dialog Spinner Screen share mode spinner displayed a Touch & Hold Action when selected with Switch Access, despite the action not doing anything. So we make the spinner non-long-clickable and remove the long click accessibility action, so that Switch Access will not offer Touch & Hold as a possible interaction option. Fix: 308528499 Test: Manual testing Flag: None Change-Id: Iccc6bf202f36379012ed8b91e61eb8ae3cdba7af --- .../BaseMediaProjectionPermissionDialogDelegate.kt | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/packages/SystemUI/src/com/android/systemui/mediaprojection/permission/BaseMediaProjectionPermissionDialogDelegate.kt b/packages/SystemUI/src/com/android/systemui/mediaprojection/permission/BaseMediaProjectionPermissionDialogDelegate.kt index 654fffe89471..1983a670b5a8 100644 --- a/packages/SystemUI/src/com/android/systemui/mediaprojection/permission/BaseMediaProjectionPermissionDialogDelegate.kt +++ b/packages/SystemUI/src/com/android/systemui/mediaprojection/permission/BaseMediaProjectionPermissionDialogDelegate.kt @@ -24,6 +24,7 @@ import android.view.View import android.view.ViewGroup import android.view.ViewStub import android.view.WindowManager +import android.view.accessibility.AccessibilityNodeInfo import android.widget.AdapterView import android.widget.ArrayAdapter import android.widget.ImageView @@ -106,6 +107,19 @@ abstract class BaseMediaProjectionPermissionDialogDelegate( screenShareModeSpinner = dialog.requireViewById(R.id.screen_share_mode_spinner) screenShareModeSpinner.adapter = adapter screenShareModeSpinner.onItemSelectedListener = this + + // disable redundant Touch & Hold accessibility action for Switch Access + screenShareModeSpinner.accessibilityDelegate = + object : View.AccessibilityDelegate() { + override fun onInitializeAccessibilityNodeInfo( + host: View, + info: AccessibilityNodeInfo + ) { + info.removeAction(AccessibilityNodeInfo.AccessibilityAction.ACTION_LONG_CLICK) + super.onInitializeAccessibilityNodeInfo(host, info) + } + } + screenShareModeSpinner.isLongClickable = false } override fun onItemSelected(adapterView: AdapterView<*>?, view: View, pos: Int, id: Long) { -- cgit v1.2.3-59-g8ed1b