Merge "Cleanup how we set back button alpha" into ub-launcher3-edmonton
diff --git a/quickstep/src/com/android/quickstep/fallback/FallbackRecentsView.java b/quickstep/src/com/android/quickstep/fallback/FallbackRecentsView.java
index 9e2de33..c5d74c7 100644
--- a/quickstep/src/com/android/quickstep/fallback/FallbackRecentsView.java
+++ b/quickstep/src/com/android/quickstep/fallback/FallbackRecentsView.java
@@ -20,8 +20,10 @@
 import android.graphics.Rect;
 import android.util.AttributeSet;
 import android.view.View;
+import android.view.accessibility.AccessibilityNodeInfo;
 
 import com.android.launcher3.DeviceProfile;
+import com.android.launcher3.R;
 import com.android.quickstep.RecentsActivity;
 import com.android.quickstep.util.LayoutUtils;
 import com.android.quickstep.views.RecentsView;
@@ -71,4 +73,21 @@
         // Just use the activity task size for multi-window as well.
         return false;
     }
+
+    @Override
+    public void addTaskAccessibilityActionsExtra(AccessibilityNodeInfo info) {
+        info.addAction(
+                new AccessibilityNodeInfo.AccessibilityAction(
+                        R.string.recents_clear_all,
+                        getContext().getText(R.string.recents_clear_all)));
+    }
+
+    @Override
+    public boolean performTaskAccessibilityActionExtra(int action) {
+        if (action == R.string.recents_clear_all) {
+            dismissAllTasks();
+            return true;
+        }
+        return false;
+    }
 }
diff --git a/quickstep/src/com/android/quickstep/views/RecentsView.java b/quickstep/src/com/android/quickstep/views/RecentsView.java
index a6da89f..65b53fe 100644
--- a/quickstep/src/com/android/quickstep/views/RecentsView.java
+++ b/quickstep/src/com/android/quickstep/views/RecentsView.java
@@ -53,6 +53,7 @@
 import android.view.MotionEvent;
 import android.view.View;
 import android.view.ViewDebug;
+import android.view.accessibility.AccessibilityNodeInfo;
 
 import com.android.launcher3.BaseActivity;
 import com.android.launcher3.DeviceProfile;
@@ -1321,4 +1322,11 @@
     protected boolean isPageOrderFlipped() {
         return FLIP_RECENTS;
     }
+
+    public void addTaskAccessibilityActionsExtra(AccessibilityNodeInfo info) {
+    }
+
+    public boolean performTaskAccessibilityActionExtra(int action) {
+        return false;
+    }
 }
diff --git a/quickstep/src/com/android/quickstep/views/TaskView.java b/quickstep/src/com/android/quickstep/views/TaskView.java
index 82aa45a..2f1a0fe 100644
--- a/quickstep/src/com/android/quickstep/views/TaskView.java
+++ b/quickstep/src/com/android/quickstep/views/TaskView.java
@@ -17,6 +17,7 @@
 package com.android.quickstep.views;
 
 import static android.widget.Toast.LENGTH_SHORT;
+
 import static com.android.quickstep.views.TaskThumbnailView.DIM_ALPHA_MULTIPLIER;
 
 import android.animation.Animator;
@@ -116,7 +117,7 @@
             }
             launchTask(true /* animate */);
             BaseActivity.fromContext(context).getUserEventDispatcher().logTaskLaunchOrDismiss(
-                    Touch.TAP, Direction.NONE, ((RecentsView) getParent()).indexOfChild(this),
+                    Touch.TAP, Direction.NONE, getRecentsView().indexOfChild(this),
                     TaskUtils.getComponentKeyForTask(getTask().key));
         });
         setOutlineProvider(new TaskOutlineProvider(getResources()));
@@ -318,12 +319,14 @@
                         context.getText(menuOption.labelResId)));
             }
         }
+
+        getRecentsView().addTaskAccessibilityActionsExtra(info);
     }
 
     @Override
     public boolean performAccessibilityAction(int action, Bundle arguments) {
         if (action == R.string.accessibility_close_task) {
-            ((RecentsView) getParent()).dismissTask(this, true /*animateTaskView*/,
+            getRecentsView().dismissTask(this, true /*animateTaskView*/,
                     true /*removeTask*/);
             return true;
         }
@@ -339,9 +342,15 @@
             }
         }
 
+        if (getRecentsView().performTaskAccessibilityActionExtra(action)) return true;
+
         return super.performAccessibilityAction(action, arguments);
     }
 
+    private RecentsView getRecentsView() {
+        return (RecentsView) getParent();
+    }
+
     public void notifyTaskLaunchFailed(String tag) {
         String msg = "Failed to launch task";
         if (mTask != null) {