2525import android .os .Message ;
2626import android .os .Process ;
2727import android .os .RemoteException ;
28- import android .util .Pool ;
29- import android .util .Poolable ;
30- import android .util .PoolableManager ;
31- import android .util .Pools ;
3228import android .util .SparseLongArray ;
3329import android .view .accessibility .AccessibilityInteractionClient ;
3430import android .view .accessibility .AccessibilityNodeInfo ;
3531import android .view .accessibility .AccessibilityNodeProvider ;
3632import android .view .accessibility .IAccessibilityInteractionConnectionCallback ;
3733
34+ import com .android .internal .os .SomeArgs ;
35+
3836import java .util .ArrayList ;
3937import java .util .HashMap ;
4038import java .util .List ;
4846 * UI thread.
4947 */
5048final class AccessibilityInteractionController {
51- private static final int POOL_SIZE = 5 ;
5249
5350 private ArrayList <AccessibilityNodeInfo > mTempAccessibilityNodeInfoList =
5451 new ArrayList <AccessibilityNodeInfo >();
@@ -76,60 +73,6 @@ public AccessibilityInteractionController(ViewRootImpl viewRootImpl) {
7673 mPrefetcher = new AccessibilityNodePrefetcher ();
7774 }
7875
79- // Reusable poolable arguments for interacting with the view hierarchy
80- // to fit more arguments than Message and to avoid sharing objects between
81- // two messages since several threads can send messages concurrently.
82- private final Pool <SomeArgs > mPool = Pools .synchronizedPool (Pools .finitePool (
83- new PoolableManager <SomeArgs >() {
84- public SomeArgs newInstance () {
85- return new SomeArgs ();
86- }
87-
88- public void onAcquired (SomeArgs info ) {
89- /* do nothing */
90- }
91-
92- public void onReleased (SomeArgs info ) {
93- info .clear ();
94- }
95- }, POOL_SIZE )
96- );
97-
98- private class SomeArgs implements Poolable <SomeArgs > {
99- private SomeArgs mNext ;
100- private boolean mIsPooled ;
101-
102- public Object arg1 ;
103- public Object arg2 ;
104- public int argi1 ;
105- public int argi2 ;
106- public int argi3 ;
107-
108- public SomeArgs getNextPoolable () {
109- return mNext ;
110- }
111-
112- public boolean isPooled () {
113- return mIsPooled ;
114- }
115-
116- public void setNextPoolable (SomeArgs args ) {
117- mNext = args ;
118- }
119-
120- public void setPooled (boolean isPooled ) {
121- mIsPooled = isPooled ;
122- }
123-
124- private void clear () {
125- arg1 = null ;
126- arg2 = null ;
127- argi1 = 0 ;
128- argi2 = 0 ;
129- argi3 = 0 ;
130- }
131- }
132-
13376 private boolean isShown (View view ) {
13477 // The first two checks are made also made by isShown() which
13578 // however traverses the tree up to the parent to catch that.
@@ -148,7 +91,7 @@ public void findAccessibilityNodeInfoByAccessibilityIdClientThread(
14891 message .what = PrivateHandler .MSG_FIND_ACCESSIBLITY_NODE_INFO_BY_ACCESSIBILITY_ID ;
14992 message .arg1 = flags ;
15093
151- SomeArgs args = mPool . acquire ();
94+ SomeArgs args = SomeArgs . obtain ();
15295 args .argi1 = AccessibilityNodeInfo .getAccessibilityViewId (accessibilityNodeId );
15396 args .argi2 = AccessibilityNodeInfo .getVirtualDescendantId (accessibilityNodeId );
15497 args .argi3 = interactionId ;
@@ -177,7 +120,7 @@ private void findAccessibilityNodeInfoByAccessibilityIdUiThread(Message message)
177120 final IAccessibilityInteractionConnectionCallback callback =
178121 (IAccessibilityInteractionConnectionCallback ) args .arg1 ;
179122
180- mPool . release ( args );
123+ args . recycle ( );
181124
182125 List <AccessibilityNodeInfo > infos = mTempAccessibilityNodeInfoList ;
183126 infos .clear ();
@@ -216,7 +159,7 @@ public void findAccessibilityNodeInfoByViewIdClientThread(long accessibilityNode
216159 message .arg1 = flags ;
217160 message .arg2 = AccessibilityNodeInfo .getAccessibilityViewId (accessibilityNodeId );
218161
219- SomeArgs args = mPool . acquire ();
162+ SomeArgs args = SomeArgs . obtain ();
220163 args .argi1 = viewId ;
221164 args .argi2 = interactionId ;
222165 args .arg1 = callback ;
@@ -245,7 +188,7 @@ private void findAccessibilityNodeInfoByViewIdUiThread(Message message) {
245188 final IAccessibilityInteractionConnectionCallback callback =
246189 (IAccessibilityInteractionConnectionCallback ) args .arg1 ;
247190
248- mPool . release ( args );
191+ args . recycle ( );
249192
250193 AccessibilityNodeInfo info = null ;
251194 try {
@@ -284,7 +227,7 @@ public void findAccessibilityNodeInfosByTextClientThread(long accessibilityNodeI
284227 message .what = PrivateHandler .MSG_FIND_ACCESSIBLITY_NODE_INFO_BY_TEXT ;
285228 message .arg1 = flags ;
286229
287- SomeArgs args = mPool . acquire ();
230+ SomeArgs args = SomeArgs . obtain ();
288231 args .arg1 = text ;
289232 args .arg2 = callback ;
290233 args .argi1 = AccessibilityNodeInfo .getAccessibilityViewId (accessibilityNodeId );
@@ -315,7 +258,7 @@ private void findAccessibilityNodeInfosByTextUiThread(Message message) {
315258 final int accessibilityViewId = args .argi1 ;
316259 final int virtualDescendantId = args .argi2 ;
317260 final int interactionId = args .argi3 ;
318- mPool . release ( args );
261+ args . recycle ( );
319262
320263 List <AccessibilityNodeInfo > infos = null ;
321264 try {
@@ -383,7 +326,7 @@ public void findFocusClientThread(long accessibilityNodeId, int focusType, int i
383326 message .arg1 = flags ;
384327 message .arg2 = focusType ;
385328
386- SomeArgs args = mPool . acquire ();
329+ SomeArgs args = SomeArgs . obtain ();
387330 args .argi1 = interactionId ;
388331 args .argi2 = AccessibilityNodeInfo .getAccessibilityViewId (accessibilityNodeId );
389332 args .argi3 = AccessibilityNodeInfo .getVirtualDescendantId (accessibilityNodeId );
@@ -414,7 +357,7 @@ private void findFocusUiThread(Message message) {
414357 final IAccessibilityInteractionConnectionCallback callback =
415358 (IAccessibilityInteractionConnectionCallback ) args .arg1 ;
416359
417- mPool . release ( args );
360+ args . recycle ( );
418361
419362 AccessibilityNodeInfo focused = null ;
420363 try {
@@ -480,8 +423,7 @@ public void focusSearchClientThread(long accessibilityNodeId, int direction, int
480423 message .arg1 = flags ;
481424 message .arg2 = AccessibilityNodeInfo .getAccessibilityViewId (accessibilityNodeId );
482425
483- SomeArgs args = mPool .acquire ();
484- args .argi1 = AccessibilityNodeInfo .getVirtualDescendantId (accessibilityNodeId );
426+ SomeArgs args = SomeArgs .obtain ();
485427 args .argi2 = direction ;
486428 args .argi3 = interactionId ;
487429 args .arg1 = callback ;
@@ -505,13 +447,12 @@ private void focusSearchUiThread(Message message) {
505447 final int accessibilityViewId = message .arg2 ;
506448
507449 SomeArgs args = (SomeArgs ) message .obj ;
508- final int virtualDescendantId = args .argi1 ;
509450 final int direction = args .argi2 ;
510451 final int interactionId = args .argi3 ;
511452 final IAccessibilityInteractionConnectionCallback callback =
512453 (IAccessibilityInteractionConnectionCallback ) args .arg1 ;
513454
514- mPool . release ( args );
455+ args . recycle ( );
515456
516457 AccessibilityNodeInfo next = null ;
517458 try {
@@ -552,7 +493,7 @@ public void performAccessibilityActionClientThread(long accessibilityNodeId, int
552493 message .arg1 = flags ;
553494 message .arg2 = AccessibilityNodeInfo .getAccessibilityViewId (accessibilityNodeId );
554495
555- SomeArgs args = mPool . acquire ();
496+ SomeArgs args = SomeArgs . obtain ();
556497 args .argi1 = AccessibilityNodeInfo .getVirtualDescendantId (accessibilityNodeId );
557498 args .argi2 = action ;
558499 args .argi3 = interactionId ;
@@ -585,7 +526,7 @@ private void perfromAccessibilityActionUiThread(Message message) {
585526 (IAccessibilityInteractionConnectionCallback ) args .arg1 ;
586527 Bundle arguments = (Bundle ) args .arg2 ;
587528
588- mPool . release ( args );
529+ args . recycle ( );
589530
590531 boolean succeeded = false ;
591532 try {
0 commit comments