summaryrefslogtreecommitdiffstats
path: root/core/java/android/view
diff options
context:
space:
mode:
authorSvetoslav <svetoslavganov@google.com>2014-09-26 15:20:40 -0700
committerSvetoslav <svetoslavganov@google.com>2014-09-26 15:23:36 -0700
commitb3ba1d4e717d6292df4273108f0da61dac4f7b10 (patch)
treedf6785c3bdadf178713cc76cc3f3b8ab5709a9a3 /core/java/android/view
parent6b0a880e13b217b670f27bfe8ef3a13b3bb51af0 (diff)
downloadframeworks_base-b3ba1d4e717d6292df4273108f0da61dac4f7b10.zip
frameworks_base-b3ba1d4e717d6292df4273108f0da61dac4f7b10.tar.gz
frameworks_base-b3ba1d4e717d6292df4273108f0da61dac4f7b10.tar.bz2
Accessibility node provider getting invalid virtual view id.
If the virtual child id is not specified we should ask the node provider to create a node info for the hosting view bu passing the special host node id. bug:17664111 Change-Id: I9c2d3195ad813eed7ea4108fe0d7ccb9cc32a1a0
Diffstat (limited to 'core/java/android/view')
-rw-r--r--core/java/android/view/ViewRootImpl.java21
1 files changed, 17 insertions, 4 deletions
diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java
index b1d3d45..81fc966 100644
--- a/core/java/android/view/ViewRootImpl.java
+++ b/core/java/android/view/ViewRootImpl.java
@@ -6096,8 +6096,15 @@ public final class ViewRootImpl implements ViewParent,
if (source != null) {
AccessibilityNodeProvider provider = source.getAccessibilityNodeProvider();
if (provider != null) {
- AccessibilityNodeInfo node = provider.createAccessibilityNodeInfo(
- AccessibilityNodeInfo.getVirtualDescendantId(sourceNodeId));
+ final int virtualNodeId = AccessibilityNodeInfo.getVirtualDescendantId(
+ sourceNodeId);
+ final AccessibilityNodeInfo node;
+ if (virtualNodeId == AccessibilityNodeInfo.UNDEFINED_ITEM_ID) {
+ node = provider.createAccessibilityNodeInfo(
+ AccessibilityNodeProvider.HOST_VIEW_ID);
+ } else {
+ node = provider.createAccessibilityNodeInfo(virtualNodeId);
+ }
setAccessibilityFocus(source, node);
}
}
@@ -6135,8 +6142,14 @@ public final class ViewRootImpl implements ViewParent,
if (provider != null) {
final int virtualChildId = AccessibilityNodeInfo.getVirtualDescendantId(
mAccessibilityFocusedVirtualView.getSourceNodeId());
- mAccessibilityFocusedVirtualView = provider.createAccessibilityNodeInfo(
- virtualChildId);
+ if (virtualChildId == AccessibilityNodeInfo.UNDEFINED_ITEM_ID) {
+ mAccessibilityFocusedVirtualView = provider
+ .createAccessibilityNodeInfo(
+ AccessibilityNodeProvider.HOST_VIEW_ID);
+ } else {
+ mAccessibilityFocusedVirtualView = provider
+ .createAccessibilityNodeInfo(virtualChildId);
+ }
}
}
}