From 79141a1236ebf9d540b72cd1bf1bc56d4b5fe954 Mon Sep 17 00:00:00 2001 From: Hyunyoung Song Date: Wed, 16 May 2018 15:54:31 -0700 Subject: [PATCH] Accessibility sugar for Recents Adding various-pitch earcorns that depend on the scroll state and position in the list notifications. This is for Talkback. Bug: 72222505 Test: Manual Change-Id: I99ffe553f7a20d057940197d97506bc1a14a193e --- .../android/quickstep/views/RecentsView.java | 30 +++++++++++++++++++ .../com/android/quickstep/views/TaskView.java | 8 ++++- 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/quickstep/src/com/android/quickstep/views/RecentsView.java b/quickstep/src/com/android/quickstep/views/RecentsView.java index 0358028bc7..186de36814 100644 --- a/quickstep/src/com/android/quickstep/views/RecentsView.java +++ b/quickstep/src/com/android/quickstep/views/RecentsView.java @@ -54,7 +54,9 @@ import android.view.LayoutInflater; import android.view.MotionEvent; import android.view.View; import android.view.ViewDebug; +import android.view.accessibility.AccessibilityEvent; import android.view.accessibility.AccessibilityNodeInfo; +import android.widget.ListView; import com.android.launcher3.BaseActivity; import com.android.launcher3.DeviceProfile; @@ -1334,6 +1336,34 @@ public abstract class RecentsView extends PagedView impl } } + @Override + public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) { + super.onInitializeAccessibilityNodeInfo(info); + + final AccessibilityNodeInfo.CollectionInfo + collectionInfo = AccessibilityNodeInfo.CollectionInfo.obtain( + 1, getChildCount(), false, + AccessibilityNodeInfo.CollectionInfo.SELECTION_MODE_NONE); + info.setCollectionInfo(collectionInfo); + } + + @Override + public void onInitializeAccessibilityEvent(AccessibilityEvent event) { + super.onInitializeAccessibilityEvent(event); + + if (event.getEventType() == AccessibilityEvent.TYPE_VIEW_SCROLLED) { + event.setFromIndex(getCurrentPage()); + event.setToIndex(getCurrentPage()); + event.setItemCount(getChildCount()); + } + } + + @Override + public CharSequence getAccessibilityClassName() { + // To hear position-in-list related feedback from Talkback. + return ListView.class.getName(); + } + @Override protected boolean isPageOrderFlipped() { return true; diff --git a/quickstep/src/com/android/quickstep/views/TaskView.java b/quickstep/src/com/android/quickstep/views/TaskView.java index 0df0580fea..213d9cb592 100644 --- a/quickstep/src/com/android/quickstep/views/TaskView.java +++ b/quickstep/src/com/android/quickstep/views/TaskView.java @@ -320,7 +320,13 @@ public class TaskView extends FrameLayout implements TaskCallbacks, PageCallback } } - getRecentsView().addTaskAccessibilityActionsExtra(info); + final RecentsView recentsView = getRecentsView(); + recentsView.addTaskAccessibilityActionsExtra(info); + + final AccessibilityNodeInfo.CollectionItemInfo itemInfo = + AccessibilityNodeInfo.CollectionItemInfo.obtain( + 0, 1, recentsView.indexOfChild(this), 1, false); + info.setCollectionItemInfo(itemInfo); } @Override