summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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 b1d3d450a7f8..81fc96619128 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);
+ }
}
}
}