diff options
| author | Svetoslav Ganov <svetoslavganov@google.com> | 2012-06-01 09:10:25 -0700 |
|---|---|---|
| committer | Svetoslav Ganov <svetoslavganov@google.com> | 2012-06-01 09:10:30 -0700 |
| commit | 30ac645210ecf96ae28fc5cb3b663aeb83dbdec1 (patch) | |
| tree | 006ba52e0e84b7d98e0380b7db12b559fa26d494 /core | |
| parent | 5ab6e12b450d13c8eb501001c7a8669826b86ea4 (diff) | |
| download | frameworks_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
Diffstat (limited to 'core')
| -rw-r--r-- | core/java/android/view/AccessibilityInteractionController.java | 4 |
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 |
