diff options
author | Svetoslav Ganov <svetoslavganov@google.com> | 2011-06-09 14:47:38 -0700 |
---|---|---|
committer | Svetoslav Ganov <svetoslavganov@google.com> | 2011-06-09 15:44:24 -0700 |
commit | 601ad8061cb8dcf3ab7385fa9e9dd13f15dc8ece (patch) | |
tree | 2ddae4cbc4745126034dbf1bba97cb4a9d938e6f /core/java/android/view/ViewAncestor.java | |
parent | fe93010446e68c747f4af727cbc48eaf63131689 (diff) | |
download | frameworks_base-601ad8061cb8dcf3ab7385fa9e9dd13f15dc8ece.zip frameworks_base-601ad8061cb8dcf3ab7385fa9e9dd13f15dc8ece.tar.gz frameworks_base-601ad8061cb8dcf3ab7385fa9e9dd13f15dc8ece.tar.bz2 |
Invalid access to AccessibilityInteractionController
1. The Interaction connection checks if the ViewAncestor
is valid and posts a message to be processed on the UI
thread. The code in the UI thread did not check if
the mView was valid. Added this check.
2. Added a faster sync mechanism in the test for
getting the source of the last access event.
Change-Id: I9982b6592f5f44a68a67df40f37c063a3ba62993
Diffstat (limited to 'core/java/android/view/ViewAncestor.java')
-rw-r--r-- | core/java/android/view/ViewAncestor.java | 61 |
1 files changed, 31 insertions, 30 deletions
diff --git a/core/java/android/view/ViewAncestor.java b/core/java/android/view/ViewAncestor.java index da26aba..0a5b6aa0 100644 --- a/core/java/android/view/ViewAncestor.java +++ b/core/java/android/view/ViewAncestor.java @@ -2321,20 +2321,28 @@ public final class ViewAncestor extends Handler implements ViewParent, handleDispatchSystemUiVisibilityChanged(msg.arg1); } break; case DO_FIND_ACCESSIBLITY_NODE_INFO_BY_ACCESSIBILITY_ID: { - getAccessibilityInteractionController() - .findAccessibilityNodeInfoByAccessibilityIdUiThread(msg); + if (mView != null) { + getAccessibilityInteractionController() + .findAccessibilityNodeInfoByAccessibilityIdUiThread(msg); + } } break; case DO_PERFORM_ACCESSIBILITY_ACTION: { - getAccessibilityInteractionController() - .perfromAccessibilityActionUiThread(msg); + if (mView != null) { + getAccessibilityInteractionController() + .perfromAccessibilityActionUiThread(msg); + } } break; case DO_FIND_ACCESSIBLITY_NODE_INFO_BY_VIEW_ID: { - getAccessibilityInteractionController() - .findAccessibilityNodeInfoByViewIdUiThread(msg); + if (mView != null) { + getAccessibilityInteractionController() + .findAccessibilityNodeInfoByViewIdUiThread(msg); + } } break; case DO_FIND_ACCESSIBLITY_NODE_INFO_BY_VIEW_TEXT: { - getAccessibilityInteractionController() - .findAccessibilityNodeInfosByViewTextUiThread(msg); + if (mView != null) { + getAccessibilityInteractionController() + .findAccessibilityNodeInfosByViewTextUiThread(msg); + } } break; } } @@ -4149,44 +4157,37 @@ public final class ViewAncestor extends Handler implements ViewParent, public void findAccessibilityNodeInfoByAccessibilityId(int accessibilityId, int interactionId, IAccessibilityInteractionConnectionCallback callback) { - final ViewAncestor viewAncestor = mViewAncestor.get(); - if (viewAncestor == null) { - return; - } - getAccessibilityInteractionController() - .findAccessibilityNodeInfoByAccessibilityIdClientThread(accessibilityId, + if (mViewAncestor.get() != null) { + getAccessibilityInteractionController() + .findAccessibilityNodeInfoByAccessibilityIdClientThread(accessibilityId, interactionId, callback); + } } public void performAccessibilityAction(int accessibilityId, int action, int interactionId, IAccessibilityInteractionConnectionCallback callback) { - final ViewAncestor viewAncestor = mViewAncestor.get(); - if (viewAncestor == null) { - return; + if (mViewAncestor.get() != null) { + getAccessibilityInteractionController() + .performAccessibilityActionClientThread(accessibilityId, action, interactionId, + callback); } - getAccessibilityInteractionController() - .performAccessibilityActionClientThread(accessibilityId, action, interactionId, - callback); } public void findAccessibilityNodeInfoByViewId(int viewId, int interactionId, IAccessibilityInteractionConnectionCallback callback) { - final ViewAncestor viewAncestor = mViewAncestor.get(); - if (viewAncestor == null) { - return; + if (mViewAncestor.get() != null) { + getAccessibilityInteractionController() + .findAccessibilityNodeInfoByViewIdClientThread(viewId, interactionId, callback); } - getAccessibilityInteractionController() - .findAccessibilityNodeInfoByViewIdClientThread(viewId, interactionId, callback); } public void findAccessibilityNodeInfosByViewText(String text, int interactionId, IAccessibilityInteractionConnectionCallback callback) { - final ViewAncestor viewAncestor = mViewAncestor.get(); - if (viewAncestor == null) { - return; + if (mViewAncestor.get() != null) { + getAccessibilityInteractionController() + .findAccessibilityNodeInfosByViewTextClientThread(text, interactionId, + callback); } - getAccessibilityInteractionController() - .findAccessibilityNodeInfosByViewTextClientThread(text, interactionId, callback); } } |