Add qualified name to Node
Summary: Our descriptors currently have a method to return the name as it will be displayed on the elements hierarchy. However, it doesn't provide enough context if the name is to be used to discover the type in our code base. This change adds a qualified name method that can provide a more complete name which can indeed be used by the Open In IDE functionality, for example. Reviewed By: passy Differential Revision: D40936785 fbshipit-source-id: 790ae02b9ebf37501765c52a24307fcaaaf9c14d
This commit is contained in:
committed by
Facebook GitHub Bot
parent
51ca3a6cd7
commit
f33e3fc78b
@@ -18,9 +18,10 @@ import com.facebook.litho.DebugComponent
|
||||
class DebugComponentDescriptor(val register: DescriptorRegister) : NodeDescriptor<DebugComponent> {
|
||||
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<Any> {
|
||||
val result = mutableListOf<Any>()
|
||||
|
||||
@@ -34,6 +34,9 @@ object MountedObjectDescriptor : NodeDescriptor<MountedObject> {
|
||||
|
||||
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<Any> = node.descriptor.getChildren(node.obj)
|
||||
|
||||
override fun getActiveChild(node: MountedObject): Any? = node.descriptor.getActiveChild(node.obj)
|
||||
|
||||
@@ -49,6 +49,13 @@ abstract class ChainedDescriptor<T> : NodeDescriptor<T> {
|
||||
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<String> {
|
||||
val tags = onGetTags(node) ?: mSuper?.getTags(node)
|
||||
return tags ?: setOf()
|
||||
|
||||
@@ -42,6 +42,12 @@ interface NodeDescriptor<T> {
|
||||
*/
|
||||
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<Any>
|
||||
|
||||
|
||||
@@ -20,6 +20,10 @@ object ObjectDescriptor : NodeDescriptor<Any> {
|
||||
return node.javaClass.simpleName
|
||||
}
|
||||
|
||||
override fun getQualifiedName(node: Any): String {
|
||||
return node::class.qualifiedName ?: ""
|
||||
}
|
||||
|
||||
override fun getChildren(node: Any) = listOf<Any>()
|
||||
|
||||
override fun getData(node: Any) = mutableMapOf<MetadataId, InspectableObject>()
|
||||
|
||||
@@ -31,6 +31,9 @@ object OffsetChildDescriptor : NodeDescriptor<OffsetChild> {
|
||||
|
||||
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<Any> = node.descriptor.getChildren(node.child)
|
||||
|
||||
override fun getActiveChild(node: OffsetChild): Any? = node.descriptor.getActiveChild(node.child)
|
||||
|
||||
@@ -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<MetadataId, InspectableObject>,
|
||||
val bounds: Bounds?,
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user