diff --git a/android/plugins/litho/src/main/java/com/facebook/flipper/plugins/uidebugger/litho/descriptors/DebugComponentDescriptor.kt b/android/plugins/litho/src/main/java/com/facebook/flipper/plugins/uidebugger/litho/descriptors/DebugComponentDescriptor.kt index dc4bff5e5..a37bc858c 100644 --- a/android/plugins/litho/src/main/java/com/facebook/flipper/plugins/uidebugger/litho/descriptors/DebugComponentDescriptor.kt +++ b/android/plugins/litho/src/main/java/com/facebook/flipper/plugins/uidebugger/litho/descriptors/DebugComponentDescriptor.kt @@ -18,9 +18,10 @@ import com.facebook.litho.DebugComponent class DebugComponentDescriptor(val register: DescriptorRegister) : NodeDescriptor { private val NAMESPACE = "DebugComponent" - override fun getName(node: DebugComponent): String { - return node.component.simpleName - } + override fun getName(node: DebugComponent): String = node.component.simpleName + + override fun getQualifiedName(node: com.facebook.litho.DebugComponent): String = + node.component::class.qualifiedName ?: "" override fun getChildren(node: DebugComponent): List { val result = mutableListOf() diff --git a/android/plugins/litho/src/main/java/com/facebook/flipper/plugins/uidebugger/litho/descriptors/MountedDawable.kt b/android/plugins/litho/src/main/java/com/facebook/flipper/plugins/uidebugger/litho/descriptors/MountedDawable.kt index a1b10b7ff..e66895dcf 100644 --- a/android/plugins/litho/src/main/java/com/facebook/flipper/plugins/uidebugger/litho/descriptors/MountedDawable.kt +++ b/android/plugins/litho/src/main/java/com/facebook/flipper/plugins/uidebugger/litho/descriptors/MountedDawable.kt @@ -34,6 +34,9 @@ object MountedObjectDescriptor : NodeDescriptor { override fun getName(node: MountedObject): String = node.descriptor.getName(node.obj) + override fun getQualifiedName(node: MountedObject): String = + node.descriptor.getQualifiedName(node.obj) + override fun getChildren(node: MountedObject): List = node.descriptor.getChildren(node.obj) override fun getActiveChild(node: MountedObject): Any? = node.descriptor.getActiveChild(node.obj) 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 89626f800..6243759e6 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 @@ -49,6 +49,13 @@ abstract class ChainedDescriptor : NodeDescriptor { return onGetName(node) } + final override fun getQualifiedName(node: T): String { + node?.let { n -> + return n::class.qualifiedName ?: "" + } + return "" + } + final override fun getTags(node: T): Set { val tags = onGetTags(node) ?: mSuper?.getTags(node) return tags ?: setOf() diff --git a/android/src/main/java/com/facebook/flipper/plugins/uidebugger/descriptors/NodeDescriptor.kt b/android/src/main/java/com/facebook/flipper/plugins/uidebugger/descriptors/NodeDescriptor.kt index 35247fbb3..26514b68f 100644 --- a/android/src/main/java/com/facebook/flipper/plugins/uidebugger/descriptors/NodeDescriptor.kt +++ b/android/src/main/java/com/facebook/flipper/plugins/uidebugger/descriptors/NodeDescriptor.kt @@ -42,6 +42,12 @@ interface NodeDescriptor { */ fun getName(node: T): String + /** + * The qualified name used to identify this node in the inspector. Does not need to be unique. A + * good default is to use the class qualified name of the node. + */ + fun getQualifiedName(node: T): String + /** The children this node exposes in the inspector. */ fun getChildren(node: T): List diff --git a/android/src/main/java/com/facebook/flipper/plugins/uidebugger/descriptors/ObjectDescriptor.kt b/android/src/main/java/com/facebook/flipper/plugins/uidebugger/descriptors/ObjectDescriptor.kt index 9a03ce557..7dd61cf5f 100644 --- a/android/src/main/java/com/facebook/flipper/plugins/uidebugger/descriptors/ObjectDescriptor.kt +++ b/android/src/main/java/com/facebook/flipper/plugins/uidebugger/descriptors/ObjectDescriptor.kt @@ -20,6 +20,10 @@ object ObjectDescriptor : NodeDescriptor { return node.javaClass.simpleName } + override fun getQualifiedName(node: Any): String { + return node::class.qualifiedName ?: "" + } + override fun getChildren(node: Any) = listOf() override fun getData(node: Any) = mutableMapOf() diff --git a/android/src/main/java/com/facebook/flipper/plugins/uidebugger/descriptors/OffsetChildDescriptor.kt b/android/src/main/java/com/facebook/flipper/plugins/uidebugger/descriptors/OffsetChildDescriptor.kt index 7d074f52d..ef7aeb5cd 100644 --- a/android/src/main/java/com/facebook/flipper/plugins/uidebugger/descriptors/OffsetChildDescriptor.kt +++ b/android/src/main/java/com/facebook/flipper/plugins/uidebugger/descriptors/OffsetChildDescriptor.kt @@ -31,6 +31,9 @@ object OffsetChildDescriptor : NodeDescriptor { override fun getName(node: OffsetChild): String = node.descriptor.getName(node.child) + override fun getQualifiedName(node: OffsetChild): String = + node.descriptor.getQualifiedName(node.child) + override fun getChildren(node: OffsetChild): List = node.descriptor.getChildren(node.child) override fun getActiveChild(node: OffsetChild): Any? = node.descriptor.getActiveChild(node.child) diff --git a/android/src/main/java/com/facebook/flipper/plugins/uidebugger/model/Node.kt b/android/src/main/java/com/facebook/flipper/plugins/uidebugger/model/Node.kt index a067b4e2c..5530e83d5 100644 --- a/android/src/main/java/com/facebook/flipper/plugins/uidebugger/model/Node.kt +++ b/android/src/main/java/com/facebook/flipper/plugins/uidebugger/model/Node.kt @@ -12,6 +12,7 @@ import com.facebook.flipper.plugins.uidebugger.descriptors.Id @kotlinx.serialization.Serializable data class Node( val id: Id, + val qualifiedName: String, val name: String, val attributes: Map, val bounds: Bounds?, diff --git a/android/src/main/java/com/facebook/flipper/plugins/uidebugger/traversal/PartialLayoutTraversal.kt b/android/src/main/java/com/facebook/flipper/plugins/uidebugger/traversal/PartialLayoutTraversal.kt index 6bf42a909..e8d84f3c0 100644 --- a/android/src/main/java/com/facebook/flipper/plugins/uidebugger/traversal/PartialLayoutTraversal.kt +++ b/android/src/main/java/com/facebook/flipper/plugins/uidebugger/traversal/PartialLayoutTraversal.kt @@ -56,6 +56,7 @@ class PartialLayoutTraversal( visited.add( Node( node.nodeId(), + descriptor.getQualifiedName(node), descriptor.getName(node), emptyMap(), null, @@ -91,6 +92,7 @@ class PartialLayoutTraversal( visited.add( Node( node.nodeId(), + descriptor.getQualifiedName(node), descriptor.getName(node), attributes, bounds, diff --git a/desktop/plugins/public/ui-debugger/types.tsx b/desktop/plugins/public/ui-debugger/types.tsx index 4da4ded6c..9ceffc060 100644 --- a/desktop/plugins/public/ui-debugger/types.tsx +++ b/desktop/plugins/public/ui-debugger/types.tsx @@ -52,6 +52,7 @@ export type UpdateMetadataEvent = { export type UINode = { id: Id; + qualifiedName: string; name: string; attributes: Record; children: Id[]; @@ -112,7 +113,7 @@ export type Id = number | TreeItemIndex; export type MetadataId = number; export type TreeState = {expandedNodes: Id[]}; -export type Tag = 'Native' | 'Declarative' | 'Android' | 'Litho '; +export type Tag = 'Native' | 'Declarative' | 'Android' | 'Litho'; export type Inspectable = | InspectableObject