Skip to content

Commit c00d2dd

Browse files
sganovAndroid (Google) Code Review
authored andcommitted
Merge "Fixing a memory leak in accessibility enteraction APIs." into ics-mr1
2 parents 220d2b0 + af5b4f4 commit c00d2dd

File tree

1 file changed

+15
-11
lines changed

1 file changed

+15
-11
lines changed

core/java/android/view/ViewRootImpl.java

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4473,19 +4473,20 @@ public void ensureNoConnection() {
44734473
* AccessibilityManagerService to the latter can interact with
44744474
* the view hierarchy in this ViewAncestor.
44754475
*/
4476-
final class AccessibilityInteractionConnection
4476+
static final class AccessibilityInteractionConnection
44774477
extends IAccessibilityInteractionConnection.Stub {
4478-
private final WeakReference<ViewRootImpl> mViewAncestor;
4478+
private final WeakReference<ViewRootImpl> mRootImpl;
44794479

44804480
AccessibilityInteractionConnection(ViewRootImpl viewAncestor) {
4481-
mViewAncestor = new WeakReference<ViewRootImpl>(viewAncestor);
4481+
mRootImpl = new WeakReference<ViewRootImpl>(viewAncestor);
44824482
}
44834483

44844484
public void findAccessibilityNodeInfoByAccessibilityId(int accessibilityId,
44854485
int interactionId, IAccessibilityInteractionConnectionCallback callback,
44864486
int interrogatingPid, long interrogatingTid) {
4487-
if (mViewAncestor.get() != null) {
4488-
getAccessibilityInteractionController()
4487+
ViewRootImpl viewRootImpl = mRootImpl.get();
4488+
if (viewRootImpl != null) {
4489+
viewRootImpl.getAccessibilityInteractionController()
44894490
.findAccessibilityNodeInfoByAccessibilityIdClientThread(accessibilityId,
44904491
interactionId, callback, interrogatingPid, interrogatingTid);
44914492
}
@@ -4494,8 +4495,9 @@ public void findAccessibilityNodeInfoByAccessibilityId(int accessibilityId,
44944495
public void performAccessibilityAction(int accessibilityId, int action,
44954496
int interactionId, IAccessibilityInteractionConnectionCallback callback,
44964497
int interogatingPid, long interrogatingTid) {
4497-
if (mViewAncestor.get() != null) {
4498-
getAccessibilityInteractionController()
4498+
ViewRootImpl viewRootImpl = mRootImpl.get();
4499+
if (viewRootImpl != null) {
4500+
viewRootImpl.getAccessibilityInteractionController()
44994501
.performAccessibilityActionClientThread(accessibilityId, action, interactionId,
45004502
callback, interogatingPid, interrogatingTid);
45014503
}
@@ -4504,8 +4506,9 @@ public void performAccessibilityAction(int accessibilityId, int action,
45044506
public void findAccessibilityNodeInfoByViewId(int viewId,
45054507
int interactionId, IAccessibilityInteractionConnectionCallback callback,
45064508
int interrogatingPid, long interrogatingTid) {
4507-
if (mViewAncestor.get() != null) {
4508-
getAccessibilityInteractionController()
4509+
ViewRootImpl viewRootImpl = mRootImpl.get();
4510+
if (viewRootImpl != null) {
4511+
viewRootImpl.getAccessibilityInteractionController()
45094512
.findAccessibilityNodeInfoByViewIdClientThread(viewId, interactionId, callback,
45104513
interrogatingPid, interrogatingTid);
45114514
}
@@ -4514,8 +4517,9 @@ public void findAccessibilityNodeInfoByViewId(int viewId,
45144517
public void findAccessibilityNodeInfosByViewText(String text, int accessibilityId,
45154518
int interactionId, IAccessibilityInteractionConnectionCallback callback,
45164519
int interrogatingPid, long interrogatingTid) {
4517-
if (mViewAncestor.get() != null) {
4518-
getAccessibilityInteractionController()
4520+
ViewRootImpl viewRootImpl = mRootImpl.get();
4521+
if (viewRootImpl != null) {
4522+
viewRootImpl.getAccessibilityInteractionController()
45194523
.findAccessibilityNodeInfosByViewTextClientThread(text, accessibilityId,
45204524
interactionId, callback, interrogatingPid, interrogatingTid);
45214525
}

0 commit comments

Comments
 (0)