From f8bc964289df5ea53672df401c6d51dd47c02e53 Mon Sep 17 00:00:00 2001 From: Svetoslav Date: Mon, 25 Nov 2013 17:45:00 -0800 Subject: Fixing some accessibility bugs. 1. Views not important for accessibility should not send events. 2. The base View implementation should not add it self to the list of children for accessibility. 3. Null pointer exception in AccessibilityNodeInfoCache. Change-Id: Ie5b373362269200ead13ffe632679bd42ee40309 --- core/java/android/view/View.java | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) (limited to 'core/java/android/view/View.java') diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java index a693ed4..0439b50 100644 --- a/core/java/android/view/View.java +++ b/core/java/android/view/View.java @@ -5022,7 +5022,8 @@ public class View implements Drawable.Callback, KeyEvent.Callback, * @param text The announcement text. */ public void announceForAccessibility(CharSequence text) { - if (AccessibilityManager.getInstance(mContext).isEnabled() && mParent != null) { + if (AccessibilityManager.getInstance(mContext).isEnabled() && mParent != null + && isImportantForAccessibility()) { AccessibilityEvent event = AccessibilityEvent.obtain( AccessibilityEvent.TYPE_ANNOUNCEMENT); onInitializeAccessibilityEvent(event); @@ -5072,7 +5073,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback, * Note: Called from the default {@link AccessibilityDelegate}. */ void sendAccessibilityEventUncheckedInternal(AccessibilityEvent event) { - if (!isShown()) { + if (!isShown() || !isImportantForAccessibility()) { return; } onInitializeAccessibilityEvent(event); @@ -7372,9 +7373,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback, * @param children The list of children for accessibility. */ public void addChildrenForAccessibility(ArrayList children) { - if (includeForAccessibility()) { - children.add(this); - } + } /** @@ -7388,7 +7387,6 @@ public class View implements Drawable.Callback, KeyEvent.Callback, * @hide */ public boolean includeForAccessibility() { - //noinspection SimplifiableIfStatement if (mAttachInfo != null) { return (mAttachInfo.mAccessibilityFetchFlags & AccessibilityNodeInfo.FLAG_INCLUDE_NOT_IMPORTANT_VIEWS) != 0 -- cgit v1.1