summaryrefslogtreecommitdiffstats
path: root/core/java/android/view/ViewAncestor.java
diff options
context:
space:
mode:
authorSvetoslav Ganov <svetoslavganov@google.com>2011-06-09 14:47:38 -0700
committerSvetoslav Ganov <svetoslavganov@google.com>2011-06-09 15:44:24 -0700
commit601ad8061cb8dcf3ab7385fa9e9dd13f15dc8ece (patch)
tree2ddae4cbc4745126034dbf1bba97cb4a9d938e6f /core/java/android/view/ViewAncestor.java
parentfe93010446e68c747f4af727cbc48eaf63131689 (diff)
downloadframeworks_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.java61
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);
}
}