diff options
| author | 2014-09-26 22:56:27 +0000 | |
|---|---|---|
| committer | 2014-09-26 22:56:28 +0000 | |
| commit | 44389c5a3c8e6194573458b73f09197177f85c97 (patch) | |
| tree | 9afa302b164a30fc2997e37b7563dd2f7cae9625 | |
| parent | e3c3de677c2ec16049f23304c0692b9ed35eb51e (diff) | |
| parent | b3ba1d4e717d6292df4273108f0da61dac4f7b10 (diff) | |
Merge "Accessibility node provider getting invalid virtual view id." into lmp-dev
| -rw-r--r-- | core/java/android/view/ViewRootImpl.java | 21 |
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); + } } } } |