summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSvetoslav Ganov <svetoslavganov@google.com>2012-06-01 09:10:25 -0700
committerSvetoslav Ganov <svetoslavganov@google.com>2012-06-01 09:10:30 -0700
commit30ac645210ecf96ae28fc5cb3b663aeb83dbdec1 (patch)
tree006ba52e0e84b7d98e0380b7db12b559fa26d494
parent5ab6e12b450d13c8eb501001c7a8669826b86ea4 (diff)
downloadframeworks_base-30ac645210ecf96ae28fc5cb3b663aeb83dbdec1.zip
frameworks_base-30ac645210ecf96ae28fc5cb3b663aeb83dbdec1.tar.gz
frameworks_base-30ac645210ecf96ae28fc5cb3b663aeb83dbdec1.tar.bz2
AccessibilityInteractionController crash with IndexOutOfBoundException.
1. The findAccessibilityNodeInfosByTextUiThread was reusing an ArrayList instance also used by the logic to initialize an AccessibilityNodeInfo. Hence, if the find method got some view and creates the infos for them the method creating the info was reusing the same array list and was nuking its contents. bug:6556585 Change-Id: I1d013bf7b1f715f8b4c4ba60c677233bec40647c
-rw-r--r--core/java/android/view/AccessibilityInteractionController.java4
1 files changed, 3 insertions, 1 deletions
diff --git a/core/java/android/view/AccessibilityInteractionController.java b/core/java/android/view/AccessibilityInteractionController.java
index 6dc31dd..bd86a8d 100644
--- a/core/java/android/view/AccessibilityInteractionController.java
+++ b/core/java/android/view/AccessibilityInteractionController.java
@@ -62,6 +62,8 @@ final class AccessibilityInteractionController {
private final int mMyProcessId;
+ private final ArrayList<View> mTempArrayList = new ArrayList<View>();
+
public AccessibilityInteractionController(ViewRootImpl viewRootImpl) {
Looper looper = viewRootImpl.mHandler.getLooper();
mMyLooperThreadId = looper.getThread().getId();
@@ -313,7 +315,7 @@ final class AccessibilityInteractionController {
infos = provider.findAccessibilityNodeInfosByText(text,
virtualDescendantId);
} else if (virtualDescendantId == AccessibilityNodeInfo.UNDEFINED) {
- ArrayList<View> foundViews = mViewRootImpl.mAttachInfo.mTempArrayList;
+ ArrayList<View> foundViews = mTempArrayList;
foundViews.clear();
root.findViewsWithText(foundViews, text, View.FIND_VIEWS_WITH_TEXT
| View.FIND_VIEWS_WITH_CONTENT_DESCRIPTION