From b3ba1d4e717d6292df4273108f0da61dac4f7b10 Mon Sep 17 00:00:00 2001 From: Svetoslav Date: Fri, 26 Sep 2014 15:20:40 -0700 Subject: 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 --- core/java/android/view/ViewRootImpl.java | 21 +++++++++++++++++---- 1 file 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); + } } } } -- cgit v1.2.3-59-g8ed1b