From 0aaf42755056778c3b950efb99b9124b50755c79 Mon Sep 17 00:00:00 2001 From: Phil Weaver Date: Fri, 24 Jun 2016 18:17:21 -0700 Subject: [PATCH] Behave if the same view gets a11y focus twice. In some corner cases, ViewRootImpl#setAccessibilityFocus can be called twice for the same view. Make sure we're actually changing views before clearing accessibility focus to avoid inconsistent state. Bug: 29637593 Change-Id: I5dc6f05bdeaec55c352417bfca92c11bd03c3c10 (cherry picked from commit da4692774c74b51818a2df1dc7534d8d13d62634) --- core/java/android/view/ViewRootImpl.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java index 92801a4d45758..209886b27c189 100644 --- a/core/java/android/view/ViewRootImpl.java +++ b/core/java/android/view/ViewRootImpl.java @@ -3173,7 +3173,7 @@ public final class ViewRootImpl implements ViewParent, } focusNode.recycle(); } - if (mAccessibilityFocusedHost != null) { + if ((mAccessibilityFocusedHost != null) && (mAccessibilityFocusedHost != view)) { // Clear accessibility focus in the view. mAccessibilityFocusedHost.clearAccessibilityFocusNoCallbacks( AccessibilityNodeInfo.ACTION_ACCESSIBILITY_FOCUS);