Merge "Update accessibility focused virtual view bounds." into lmp-dev
diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java
index dd1cbc9..4299e2e 100644
--- a/core/java/android/view/ViewRootImpl.java
+++ b/core/java/android/view/ViewRootImpl.java
@@ -6111,6 +6111,33 @@
}
}
} break;
+
+
+ case AccessibilityEvent.TYPE_WINDOW_CONTENT_CHANGED: {
+ if (mAccessibilityFocusedHost != null && mAccessibilityFocusedVirtualView != null) {
+ // We care only for changes rooted in the focused host.
+ final long eventSourceId = event.getSourceNodeId();
+ final int hostViewId = AccessibilityNodeInfo.getAccessibilityViewId(
+ eventSourceId);
+ if (hostViewId != mAccessibilityFocusedHost.getAccessibilityViewId()) {
+ break;
+ }
+
+ // We only care about changes that may change the virtual focused view bounds.
+ final int changes = event.getContentChangeTypes();
+ if ((changes & AccessibilityEvent.CONTENT_CHANGE_TYPE_SUBTREE) != 0
+ || changes == AccessibilityEvent.CONTENT_CHANGE_TYPE_UNDEFINED) {
+ AccessibilityNodeProvider provider = mAccessibilityFocusedHost
+ .getAccessibilityNodeProvider();
+ if (provider != null) {
+ final int virtualChildId = AccessibilityNodeInfo.getVirtualDescendantId(
+ mAccessibilityFocusedVirtualView.getSourceNodeId());
+ mAccessibilityFocusedVirtualView = provider.createAccessibilityNodeInfo(
+ virtualChildId);
+ }
+ }
+ }
+ } break;
}
mAccessibilityManager.sendAccessibilityEvent(event);
return true;