From 44b14508de4f44ae244e1930550e85f3b759d8e6 Mon Sep 17 00:00:00 2001 From: Matthew Ng Date: Fri, 4 May 2018 11:10:14 -0700 Subject: [PATCH] Added toggle overview custom action over home button for a11y The toggle overview custom action only appears when swipe up ui is shown (2 buttons). Change-Id: I8b3790c98b663dd04bec921a9f7372733c73ea4e Fixes: 78177915 Test: use talkback, enable swipe up ui and toggle overview via home btn --- packages/SystemUI/res/values/config.xml | 2 + packages/SystemUI/res/values/strings.xml | 3 ++ .../statusbar/phone/ButtonDispatcher.java | 13 ++++++ .../statusbar/phone/NavigationBarView.java | 41 ++++++++++++++++++- 4 files changed, 57 insertions(+), 2 deletions(-) diff --git a/packages/SystemUI/res/values/config.xml b/packages/SystemUI/res/values/config.xml index b9cde7c313380..251589ba17f6a 100644 --- a/packages/SystemUI/res/values/config.xml +++ b/packages/SystemUI/res/values/config.xml @@ -383,6 +383,8 @@ + + true diff --git a/packages/SystemUI/res/values/strings.xml b/packages/SystemUI/res/values/strings.xml index f1f80c70af39e..58a6e8f2484c4 100644 --- a/packages/SystemUI/res/values/strings.xml +++ b/packages/SystemUI/res/values/strings.xml @@ -862,6 +862,9 @@ Split screen to the right + + Toggle Overview + Charged diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ButtonDispatcher.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ButtonDispatcher.java index 2161655a64c5a..fb94756c23198 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ButtonDispatcher.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ButtonDispatcher.java @@ -19,6 +19,7 @@ import android.animation.AnimatorListenerAdapter; import android.animation.ValueAnimator; import android.view.View; +import android.view.View.AccessibilityDelegate; import com.android.systemui.Interpolators; import com.android.systemui.plugins.statusbar.phone.NavBarButtonProvider.ButtonInterface; import com.android.systemui.statusbar.policy.KeyButtonDrawable; @@ -50,6 +51,7 @@ public class ButtonDispatcher { private View mCurrentView; private boolean mVertical; private ValueAnimator mFadeAnimator; + private AccessibilityDelegate mAccessibilityDelegate; private final ValueAnimator.AnimatorUpdateListener mAlphaListener = animation -> setAlpha((float) animation.getAnimatedValue()); @@ -84,6 +86,9 @@ public class ButtonDispatcher { if (mVisibility != null && mVisibility != -1) { view.setVisibility(mVisibility); } + if (mAccessibilityDelegate != null) { + view.setAccessibilityDelegate(mAccessibilityDelegate); + } if (view instanceof ButtonInterface) { final ButtonInterface button = (ButtonInterface) view; if (mDarkIntensity != null) { @@ -212,6 +217,14 @@ public class ButtonDispatcher { } } + public void setAccessibilityDelegate(AccessibilityDelegate delegate) { + mAccessibilityDelegate = delegate; + final int N = mViews.size(); + for (int i = 0; i < N; i++) { + mViews.get(i).setAccessibilityDelegate(delegate); + } + } + public void setClickable(boolean clickable) { abortCurrentGesture(); final int N = mViews.size(); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java index 6cc96da96e45b..1c57017f2dcd7 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java @@ -36,8 +36,10 @@ import android.graphics.Point; import android.graphics.Rect; import android.graphics.drawable.AnimatedVectorDrawable; import android.graphics.drawable.Drawable; +import android.os.Bundle; import android.os.Handler; import android.os.Message; +import android.os.RemoteException; import android.os.SystemProperties; import android.support.annotation.ColorInt; import android.util.AttributeSet; @@ -51,6 +53,8 @@ import android.view.View; import android.view.ViewGroup; import android.view.WindowInsets; import android.view.WindowManager; +import android.view.accessibility.AccessibilityNodeInfo; +import android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction; import android.view.inputmethod.InputMethodManager; import android.widget.FrameLayout; @@ -60,11 +64,14 @@ import com.android.systemui.DockedStackExistsListener; import com.android.systemui.OverviewProxyService; import com.android.systemui.R; import com.android.systemui.RecentsComponent; +import com.android.systemui.SysUiServiceProvider; import com.android.systemui.plugins.PluginListener; import com.android.systemui.plugins.PluginManager; import com.android.systemui.plugins.statusbar.phone.NavGesture; import com.android.systemui.plugins.statusbar.phone.NavGesture.GestureHelper; +import com.android.systemui.recents.Recents; import com.android.systemui.recents.RecentsOnboarding; +import com.android.systemui.shared.recents.IOverviewProxy; import com.android.systemui.shared.system.ActivityManagerWrapper; import com.android.systemui.shared.system.NavigationBarCompat; import com.android.systemui.shared.system.WindowManagerWrapper; @@ -230,6 +237,34 @@ public class NavigationBarView extends FrameLayout implements PluginListener