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
This commit is contained in:
Beverly
2020-04-21 14:49:33 -04:00
parent 0c99ecaec1
commit 4922aa006a
2 changed files with 14 additions and 11 deletions

View File

@@ -18,6 +18,8 @@ package com.android.settings.notification.history;
import static android.provider.Settings.Secure.NOTIFICATION_HISTORY_ENABLED; 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.Activity;
import android.app.ActivityManager; import android.app.ActivityManager;
import android.app.INotificationManager; import android.app.INotificationManager;
@@ -88,15 +90,15 @@ public class NotificationHistoryActivity extends Activity {
? getString(R.string.condition_expand_hide) ? getString(R.string.condition_expand_hide)
: getString(R.string.condition_expand_show)); : getString(R.string.condition_expand_show));
expand.setOnClickListener(v -> { expand.setOnClickListener(v -> {
container.setVisibility(container.getVisibility() == View.VISIBLE container.setVisibility(container.getVisibility() == View.VISIBLE
? View.GONE : View.VISIBLE); ? View.GONE : View.VISIBLE);
expand.setImageResource(container.getVisibility() == View.VISIBLE expand.setImageResource(container.getVisibility() == View.VISIBLE
? R.drawable.ic_expand_less ? R.drawable.ic_expand_less
: com.android.internal.R.drawable.ic_expand_more); : com.android.internal.R.drawable.ic_expand_more);
expand.setContentDescription(container.getVisibility() == View.VISIBLE expand.setContentDescription(container.getVisibility() == View.VISIBLE
? getString(R.string.condition_expand_hide) ? getString(R.string.condition_expand_hide)
: getString(R.string.condition_expand_show)); : getString(R.string.condition_expand_show));
expand.setAccessibilityLiveRegion(View.ACCESSIBILITY_LIVE_REGION_POLITE); expand.sendAccessibilityEvent(TYPE_VIEW_ACCESSIBILITY_FOCUSED);
}); });
TextView label = viewForPackage.findViewById(R.id.label); 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, count.setText(getResources().getQuantityString(R.plurals.notification_history_count,
nhp.notifications.size(), nhp.notifications.size())); nhp.notifications.size(), nhp.notifications.size()));
NotificationHistoryRecyclerView rv = final NotificationHistoryRecyclerView rv =
viewForPackage.findViewById(R.id.notification_list); viewForPackage.findViewById(R.id.notification_list);
rv.setAdapter(new NotificationHistoryAdapter(mNm, rv)); rv.setAdapter(new NotificationHistoryAdapter(mNm, rv));
((NotificationHistoryAdapter) rv.getAdapter()).onRebuildComplete( ((NotificationHistoryAdapter) rv.getAdapter()).onRebuildComplete(

View File

@@ -91,11 +91,12 @@ public class NotificationHistoryAdapter extends
new AccessibilityNodeInfo.AccessibilityAction( new AccessibilityNodeInfo.AccessibilityAction(
AccessibilityNodeInfo.ACTION_CLICK, description); AccessibilityNodeInfo.ACTION_CLICK, description);
info.addAction(customClick); info.addAction(customClick);
//info.addAction(AccessibilityNodeInfo.AccessibilityAction.ACTION_DISMISS); info.addAction(AccessibilityNodeInfo.AccessibilityAction.ACTION_DISMISS);
} }
@Override @Override
public boolean performAccessibilityAction(View host, int action, Bundle args) { public boolean performAccessibilityAction(View host, int action, Bundle args) {
super.performAccessibilityAction(host, action, args);
if (action == AccessibilityNodeInfo.AccessibilityAction.ACTION_DISMISS.getId()) { if (action == AccessibilityNodeInfo.AccessibilityAction.ACTION_DISMISS.getId()) {
onItemSwipeDeleted(position); onItemSwipeDeleted(position);
return true; return true;