From 4922aa006aeee92f90b836dea5421a5d1e3e45be Mon Sep 17 00:00:00 2001 From: Beverly Date: Tue, 21 Apr 2020 14:49:33 -0400 Subject: [PATCH] Notification history a11y fixes - When clicking the expand/collapse button to see the posted notifications from an app in the last 24 hours, refocus accessibility on the button so the entire button (contentDescription + clickability) are announced. Previously only the contentDescription update was being announced. - Fix local context menu of NotificationHistory elements by calling the super method in performAccessibilityAction Test: manual Fixes: 153396313 Fixes: 153518629 Change-Id: I3d847ec1f2b72dcf411c6c7c7fe2dc061ccfde26 --- .../history/NotificationHistoryActivity.java | 22 ++++++++++--------- .../history/NotificationHistoryAdapter.java | 3 ++- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/src/com/android/settings/notification/history/NotificationHistoryActivity.java b/src/com/android/settings/notification/history/NotificationHistoryActivity.java index 144d102e651..acfc269354f 100644 --- a/src/com/android/settings/notification/history/NotificationHistoryActivity.java +++ b/src/com/android/settings/notification/history/NotificationHistoryActivity.java @@ -18,6 +18,8 @@ package com.android.settings.notification.history; import static android.provider.Settings.Secure.NOTIFICATION_HISTORY_ENABLED; +import static androidx.core.view.accessibility.AccessibilityEventCompat.TYPE_VIEW_ACCESSIBILITY_FOCUSED; + import android.app.Activity; import android.app.ActivityManager; import android.app.INotificationManager; @@ -88,15 +90,15 @@ public class NotificationHistoryActivity extends Activity { ? getString(R.string.condition_expand_hide) : getString(R.string.condition_expand_show)); expand.setOnClickListener(v -> { - container.setVisibility(container.getVisibility() == View.VISIBLE - ? View.GONE : View.VISIBLE); - expand.setImageResource(container.getVisibility() == View.VISIBLE - ? R.drawable.ic_expand_less - : com.android.internal.R.drawable.ic_expand_more); - expand.setContentDescription(container.getVisibility() == View.VISIBLE - ? getString(R.string.condition_expand_hide) - : getString(R.string.condition_expand_show)); - expand.setAccessibilityLiveRegion(View.ACCESSIBILITY_LIVE_REGION_POLITE); + container.setVisibility(container.getVisibility() == View.VISIBLE + ? View.GONE : View.VISIBLE); + expand.setImageResource(container.getVisibility() == View.VISIBLE + ? R.drawable.ic_expand_less + : com.android.internal.R.drawable.ic_expand_more); + expand.setContentDescription(container.getVisibility() == View.VISIBLE + ? getString(R.string.condition_expand_hide) + : getString(R.string.condition_expand_show)); + expand.sendAccessibilityEvent(TYPE_VIEW_ACCESSIBILITY_FOCUSED); }); TextView label = viewForPackage.findViewById(R.id.label); @@ -108,7 +110,7 @@ public class NotificationHistoryActivity extends Activity { count.setText(getResources().getQuantityString(R.plurals.notification_history_count, nhp.notifications.size(), nhp.notifications.size())); - NotificationHistoryRecyclerView rv = + final NotificationHistoryRecyclerView rv = viewForPackage.findViewById(R.id.notification_list); rv.setAdapter(new NotificationHistoryAdapter(mNm, rv)); ((NotificationHistoryAdapter) rv.getAdapter()).onRebuildComplete( diff --git a/src/com/android/settings/notification/history/NotificationHistoryAdapter.java b/src/com/android/settings/notification/history/NotificationHistoryAdapter.java index 9d652d97f2c..afe36ef0589 100644 --- a/src/com/android/settings/notification/history/NotificationHistoryAdapter.java +++ b/src/com/android/settings/notification/history/NotificationHistoryAdapter.java @@ -91,11 +91,12 @@ public class NotificationHistoryAdapter extends new AccessibilityNodeInfo.AccessibilityAction( AccessibilityNodeInfo.ACTION_CLICK, description); info.addAction(customClick); - //info.addAction(AccessibilityNodeInfo.AccessibilityAction.ACTION_DISMISS); + info.addAction(AccessibilityNodeInfo.AccessibilityAction.ACTION_DISMISS); } @Override public boolean performAccessibilityAction(View host, int action, Bundle args) { + super.performAccessibilityAction(host, action, args); if (action == AccessibilityNodeInfo.AccessibilityAction.ACTION_DISMISS.getId()) { onItemSwipeDeleted(position); return true;