in tooling/rib-intellij-plugin/native/intellij-broadcast-rib/src/main/java/com/uber/debug/broadcast/rib/RibHierarchyDebugBroadcastHandler.java [166:188]
private synchronized RibHierarchyPayload buildRibHierarchyPayload(
@Nullable TargetInfo targetInfo) {
RibApplication ribApplication = new RibApplication(processName);
for (UUID rootId : roots) {
Activity activity = getActivityRecursive(rootId);
if (activity == null || !activity.hasWindowFocus()) {
continue;
}
Router router = getRouterFromId(rootId);
if (router != null) {
View view = router instanceof ViewRouter ? ((ViewRouter) router).getView() : null;
RibView ribView = view != null ? buildRibViewRecursive(view, targetInfo, 0) : null;
RibNode rootNode = new RibNode(router.getClass().getName(), rootId, ribView);
buildTreeRecursive(rootNode, targetInfo, 0);
RibActivity ribActivity = new RibActivity(activity, rootNode);
ribApplication.addActivity(ribActivity);
}
}
return targetInfo != null
? new RibHierarchyWithSelectionPayload(
android.os.Build.MODEL, ribApplication, targetInfo.nodeId(), targetInfo.viewId())
: new RibHierarchyPayload(android.os.Build.MODEL, ribApplication);
}