diff --git a/android/src/main/java/com/facebook/flipper/plugins/uidebugger/descriptors/ActivityDescriptor.kt b/android/src/main/java/com/facebook/flipper/plugins/uidebugger/descriptors/ActivityDescriptor.kt index 7fd837e42..7aeda3a2d 100644 --- a/android/src/main/java/com/facebook/flipper/plugins/uidebugger/descriptors/ActivityDescriptor.kt +++ b/android/src/main/java/com/facebook/flipper/plugins/uidebugger/descriptors/ActivityDescriptor.kt @@ -17,11 +17,15 @@ object ActivityDescriptor : ChainedDescriptor() { return node.javaClass.simpleName } - override fun onGetChildren(node: Activity, children: MutableList) { + override fun onGetChildren(node: Activity): List { + val children = mutableListOf() + node.window?.let { window -> children.add(window) } val fragments = FragmentTracker.getDialogFragments(node) fragments.forEach { fragment -> children.add(fragment) } + + return children } override fun onGetData( diff --git a/android/src/main/java/com/facebook/flipper/plugins/uidebugger/descriptors/ApplicationRefDescriptor.kt b/android/src/main/java/com/facebook/flipper/plugins/uidebugger/descriptors/ApplicationRefDescriptor.kt index 644ffda5d..d18131f47 100644 --- a/android/src/main/java/com/facebook/flipper/plugins/uidebugger/descriptors/ApplicationRefDescriptor.kt +++ b/android/src/main/java/com/facebook/flipper/plugins/uidebugger/descriptors/ApplicationRefDescriptor.kt @@ -31,7 +31,9 @@ object ApplicationRefDescriptor : ChainedDescriptor() { else node.application.getString(stringId) } - override fun onGetChildren(node: ApplicationRef, children: MutableList) { + override fun onGetChildren(node: ApplicationRef): List { + val children = mutableListOf() + val activeRoots = node.rootViews val added = mutableSetOf() @@ -47,5 +49,7 @@ object ApplicationRefDescriptor : ChainedDescriptor() { added.add(root) } } + + return children } } diff --git a/android/src/main/java/com/facebook/flipper/plugins/uidebugger/descriptors/ChainedDescriptor.kt b/android/src/main/java/com/facebook/flipper/plugins/uidebugger/descriptors/ChainedDescriptor.kt index e39145903..49b394ebf 100644 --- a/android/src/main/java/com/facebook/flipper/plugins/uidebugger/descriptors/ChainedDescriptor.kt +++ b/android/src/main/java/com/facebook/flipper/plugins/uidebugger/descriptors/ChainedDescriptor.kt @@ -65,23 +65,12 @@ abstract class ChainedDescriptor : NodeDescriptor { open fun onGetBounds(node: T): Bounds? = null - /** The children this node exposes in the inspector. */ final override fun getChildren(node: T): List { - val builder = mutableListOf() - onGetChildren(node, builder) - - var curDescriptor: ChainedDescriptor? = mSuper - while (curDescriptor != null) { - curDescriptor.onGetChildren(node, builder) - curDescriptor = curDescriptor.mSuper - } - - return builder + val children = onGetChildren(node) ?: mSuper?.getChildren(node) + return children ?: listOf() } - // this probably should not be chained as its unlikely you would want children to come from >1 - // descriptor - open fun onGetChildren(node: T, children: MutableList) {} + open fun onGetChildren(node: T): List? = null final override fun getData(node: T): Map { val builder = mutableMapOf() diff --git a/android/src/main/java/com/facebook/flipper/plugins/uidebugger/descriptors/FragmentFrameworkDescriptor.kt b/android/src/main/java/com/facebook/flipper/plugins/uidebugger/descriptors/FragmentFrameworkDescriptor.kt index 20469c319..4e05d9bb2 100644 --- a/android/src/main/java/com/facebook/flipper/plugins/uidebugger/descriptors/FragmentFrameworkDescriptor.kt +++ b/android/src/main/java/com/facebook/flipper/plugins/uidebugger/descriptors/FragmentFrameworkDescriptor.kt @@ -15,9 +15,8 @@ object FragmentFrameworkDescriptor : ChainedDescriptor() { return node.javaClass.simpleName } - override fun onGetChildren(node: android.app.Fragment, children: MutableList) { - node.view?.let { view -> children.add(view) } - } + override fun onGetChildren(node: android.app.Fragment): List = + node.view?.let { view -> listOf(view) } ?: listOf() override fun onGetData( node: android.app.Fragment, diff --git a/android/src/main/java/com/facebook/flipper/plugins/uidebugger/descriptors/FragmentSupportDescriptor.kt b/android/src/main/java/com/facebook/flipper/plugins/uidebugger/descriptors/FragmentSupportDescriptor.kt index 2ae61f604..0f3481558 100644 --- a/android/src/main/java/com/facebook/flipper/plugins/uidebugger/descriptors/FragmentSupportDescriptor.kt +++ b/android/src/main/java/com/facebook/flipper/plugins/uidebugger/descriptors/FragmentSupportDescriptor.kt @@ -15,9 +15,8 @@ object FragmentSupportDescriptor : ChainedDescriptor) { - node.view?.let { view -> children.add(view) } - } + override fun onGetChildren(node: androidx.fragment.app.Fragment): List = + node.view?.let { view -> listOf(view) } ?: listOf() override fun onGetData( node: androidx.fragment.app.Fragment, diff --git a/android/src/main/java/com/facebook/flipper/plugins/uidebugger/descriptors/ViewGroupDescriptor.kt b/android/src/main/java/com/facebook/flipper/plugins/uidebugger/descriptors/ViewGroupDescriptor.kt index dc2823e4b..8e2d6c92d 100644 --- a/android/src/main/java/com/facebook/flipper/plugins/uidebugger/descriptors/ViewGroupDescriptor.kt +++ b/android/src/main/java/com/facebook/flipper/plugins/uidebugger/descriptors/ViewGroupDescriptor.kt @@ -20,7 +20,9 @@ object ViewGroupDescriptor : ChainedDescriptor() { return node.javaClass.simpleName } - override fun onGetChildren(node: ViewGroup, children: MutableList) { + override fun onGetChildren(node: ViewGroup): List { + val children = mutableListOf() + val count = node.childCount - 1 for (i in 0..count) { val child: View = node.getChildAt(i) @@ -29,6 +31,8 @@ object ViewGroupDescriptor : ChainedDescriptor() { children.add(fragment) } else children.add(child) } + + return children } override fun onGetData( diff --git a/android/src/main/java/com/facebook/flipper/plugins/uidebugger/descriptors/WindowDescriptor.kt b/android/src/main/java/com/facebook/flipper/plugins/uidebugger/descriptors/WindowDescriptor.kt index 500722891..f6e126e7f 100644 --- a/android/src/main/java/com/facebook/flipper/plugins/uidebugger/descriptors/WindowDescriptor.kt +++ b/android/src/main/java/com/facebook/flipper/plugins/uidebugger/descriptors/WindowDescriptor.kt @@ -15,7 +15,5 @@ object WindowDescriptor : ChainedDescriptor() { return node.javaClass.simpleName } - override fun onGetChildren(node: Window, children: MutableList) { - children.add(node.decorView) - } + override fun onGetChildren(node: Window): List = listOf(node.decorView) }