Migrate enum possible values to metadata
Summary: Before this change, possible values for an enumeration were embedded within the attribute value itself. After this change, possible values are located within the attribute metadata. Reviewed By: LukeDefeo Differential Revision: D41337003 fbshipit-source-id: cef5654a679e9b961e82993abb201b518fcbcd00
This commit is contained in:
committed by
Facebook GitHub Bot
parent
0ebedc9c49
commit
0ac8c2a6b3
@@ -33,10 +33,39 @@ open class EnumMapping<T>(private val mapping: Map<String, T>) {
|
||||
"Could not convert string $key to enum value, possible values ${mapping.entries} ")
|
||||
}
|
||||
|
||||
fun getInspectableValues(): Set<InspectableValue> {
|
||||
val set: MutableSet<InspectableValue> = mutableSetOf()
|
||||
mapping.entries.forEach { set.add(InspectableValue.Text(it.key)) }
|
||||
return set
|
||||
}
|
||||
|
||||
fun toInspectable(value: T): InspectableValue.Enum {
|
||||
return InspectableValue.Enum(Enumeration(mapping.keys, getStringRepresentation(value)))
|
||||
return InspectableValue.Enum(Enumeration(getStringRepresentation(value)))
|
||||
}
|
||||
companion object {
|
||||
const val NoMapping = "__UNKNOWN_ENUM_VALUE__"
|
||||
}
|
||||
}
|
||||
|
||||
inline fun <reified T : Enum<T>> enumerator(): Iterator<T> = enumValues<T>().iterator()
|
||||
|
||||
inline fun <reified T : Enum<T>> enumToSet(): Set<String> {
|
||||
val set = mutableSetOf<String>()
|
||||
val values = enumerator<T>()
|
||||
values.forEach { set.add(it.name) }
|
||||
return set
|
||||
}
|
||||
|
||||
inline fun <reified T : Enum<T>> enumToInspectableSet(): Set<InspectableValue> {
|
||||
val set = mutableSetOf<InspectableValue>()
|
||||
val values = enumerator<T>()
|
||||
values.forEach { set.add(InspectableValue.Text(it.name)) }
|
||||
return set
|
||||
}
|
||||
|
||||
inline fun <reified T : Enum<T>> enumMapping(): EnumMapping<T> {
|
||||
val map = mutableMapOf<String, T>()
|
||||
val values = enumerator<T>()
|
||||
values.forEach { map[it.name] = it }
|
||||
return EnumMapping<T>(map)
|
||||
}
|
||||
|
||||
@@ -10,6 +10,8 @@ package com.facebook.flipper.plugins.uidebugger.descriptors
|
||||
import android.widget.ImageView
|
||||
import android.widget.ImageView.ScaleType
|
||||
import com.facebook.flipper.plugins.uidebugger.common.EnumMapping
|
||||
import com.facebook.flipper.plugins.uidebugger.common.enumMapping
|
||||
import com.facebook.flipper.plugins.uidebugger.common.enumToInspectableSet
|
||||
import com.facebook.flipper.plugins.uidebugger.model.Inspectable
|
||||
import com.facebook.flipper.plugins.uidebugger.model.InspectableObject
|
||||
import com.facebook.flipper.plugins.uidebugger.model.MetadataId
|
||||
@@ -21,7 +23,12 @@ object ImageViewDescriptor : ChainedDescriptor<ImageView>() {
|
||||
private var SectionId =
|
||||
MetadataRegister.register(MetadataRegister.TYPE_ATTRIBUTE, NAMESPACE, NAMESPACE)
|
||||
private var ScaleTypeAttributeId =
|
||||
MetadataRegister.register(MetadataRegister.TYPE_ATTRIBUTE, NAMESPACE, "scaleType")
|
||||
MetadataRegister.register(
|
||||
MetadataRegister.TYPE_ATTRIBUTE,
|
||||
NAMESPACE,
|
||||
"scaleType",
|
||||
false,
|
||||
enumToInspectableSet<ScaleType>())
|
||||
|
||||
override fun onGetName(node: ImageView): String = node.javaClass.simpleName
|
||||
|
||||
@@ -35,17 +42,5 @@ object ImageViewDescriptor : ChainedDescriptor<ImageView>() {
|
||||
attributeSections[SectionId] = InspectableObject(props)
|
||||
}
|
||||
|
||||
private val scaleTypeMapping: EnumMapping<ScaleType> =
|
||||
object :
|
||||
EnumMapping<ScaleType>(
|
||||
mapOf(
|
||||
"CENTER" to ScaleType.CENTER,
|
||||
"CENTER_CROP" to ScaleType.CENTER_CROP,
|
||||
"CENTER_INSIDE" to ScaleType.CENTER_INSIDE,
|
||||
"FIT_CENTER" to ScaleType.FIT_CENTER,
|
||||
"FIT_END" to ScaleType.FIT_END,
|
||||
"FIT_START" to ScaleType.FIT_START,
|
||||
"FIT_XY" to ScaleType.FIT_XY,
|
||||
"MATRIX" to ScaleType.MATRIX,
|
||||
)) {}
|
||||
private val scaleTypeMapping: EnumMapping<ScaleType> = enumMapping<ScaleType>()
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
|
||||
package com.facebook.flipper.plugins.uidebugger.descriptors
|
||||
|
||||
import com.facebook.flipper.plugins.uidebugger.model.InspectableValue
|
||||
import com.facebook.flipper.plugins.uidebugger.model.Metadata
|
||||
import com.facebook.flipper.plugins.uidebugger.model.MetadataId
|
||||
|
||||
@@ -34,7 +35,8 @@ object MetadataRegister {
|
||||
type: String,
|
||||
namespace: String,
|
||||
name: String,
|
||||
mutable: Boolean
|
||||
mutable: Boolean,
|
||||
possibleValues: Set<InspectableValue>?
|
||||
): MetadataId {
|
||||
val key = key(namespace, name)
|
||||
metadata[key]?.let { m ->
|
||||
@@ -42,7 +44,7 @@ object MetadataRegister {
|
||||
}
|
||||
|
||||
val identifier = ++generator
|
||||
metadata[key] = Metadata(identifier, type, namespace, name, mutable)
|
||||
metadata[key] = Metadata(identifier, type, namespace, name, mutable, possibleValues)
|
||||
return identifier
|
||||
}
|
||||
|
||||
@@ -50,18 +52,20 @@ object MetadataRegister {
|
||||
type: String,
|
||||
namespace: String,
|
||||
name: String,
|
||||
mutable: Boolean = false
|
||||
mutable: Boolean = false,
|
||||
possibleValues: Set<InspectableValue>? = emptySet()
|
||||
): MetadataId {
|
||||
return register(staticMetadata, type, namespace, name, mutable)
|
||||
return register(staticMetadata, type, namespace, name, mutable, possibleValues)
|
||||
}
|
||||
|
||||
fun registerDynamic(
|
||||
type: String,
|
||||
namespace: String,
|
||||
name: String,
|
||||
mutable: Boolean = false
|
||||
mutable: Boolean = false,
|
||||
possibleValues: Set<InspectableValue>? = emptySet()
|
||||
): MetadataId {
|
||||
return register(dynamicMetadata, type, namespace, name, mutable)
|
||||
return register(dynamicMetadata, type, namespace, name, mutable, possibleValues)
|
||||
}
|
||||
|
||||
fun get(namespace: String, name: String): Metadata? {
|
||||
|
||||
@@ -29,6 +29,111 @@ import java.lang.reflect.Field
|
||||
|
||||
object ViewDescriptor : ChainedDescriptor<View>() {
|
||||
|
||||
private val LayoutParamsMapping: EnumMapping<Int> =
|
||||
object :
|
||||
EnumMapping<Int>(
|
||||
mapOf(
|
||||
"WRAP_CONTENT" to ViewGroup.LayoutParams.WRAP_CONTENT,
|
||||
"MATCH_PARENT" to ViewGroup.LayoutParams.MATCH_PARENT,
|
||||
"FILL_PARENT" to ViewGroup.LayoutParams.FILL_PARENT,
|
||||
)) {}
|
||||
|
||||
private val VisibilityMapping: EnumMapping<Int> =
|
||||
object :
|
||||
EnumMapping<Int>(
|
||||
mapOf(
|
||||
"VISIBLE" to View.VISIBLE,
|
||||
"INVISIBLE" to View.INVISIBLE,
|
||||
"GONE" to View.GONE,
|
||||
)) {}
|
||||
|
||||
private val LayoutDirectionMapping: EnumMapping<Int> =
|
||||
when {
|
||||
Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1 -> {
|
||||
object :
|
||||
EnumMapping<Int>(
|
||||
mapOf(
|
||||
"LAYOUT_DIRECTION_INHERIT" to View.LAYOUT_DIRECTION_INHERIT,
|
||||
"LAYOUT_DIRECTION_LOCALE" to View.LAYOUT_DIRECTION_LOCALE,
|
||||
"LAYOUT_DIRECTION_LTR" to View.LAYOUT_DIRECTION_LTR,
|
||||
"LAYOUT_DIRECTION_RTL" to View.LAYOUT_DIRECTION_RTL,
|
||||
)) {}
|
||||
}
|
||||
else -> {
|
||||
object : EnumMapping<Int>(emptyMap()) {}
|
||||
}
|
||||
}
|
||||
|
||||
private val TextDirectionMapping: EnumMapping<Int> =
|
||||
when {
|
||||
Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1 -> {
|
||||
object :
|
||||
EnumMapping<Int>(
|
||||
mapOf(
|
||||
"TEXT_DIRECTION_INHERIT" to View.TEXT_DIRECTION_INHERIT,
|
||||
"TEXT_DIRECTION_FIRST_STRONG" to View.TEXT_DIRECTION_FIRST_STRONG,
|
||||
"TEXT_DIRECTION_ANY_RTL" to View.TEXT_DIRECTION_ANY_RTL,
|
||||
"TEXT_DIRECTION_LTR" to View.TEXT_DIRECTION_LTR,
|
||||
"TEXT_DIRECTION_RTL" to View.TEXT_DIRECTION_RTL,
|
||||
"TEXT_DIRECTION_LOCALE" to View.TEXT_DIRECTION_LOCALE,
|
||||
)) {}
|
||||
}
|
||||
Build.VERSION.SDK_INT >= Build.VERSION_CODES.M -> {
|
||||
object :
|
||||
EnumMapping<Int>(
|
||||
mapOf(
|
||||
"TEXT_DIRECTION_INHERIT" to View.TEXT_DIRECTION_INHERIT,
|
||||
"TEXT_DIRECTION_FIRST_STRONG" to View.TEXT_DIRECTION_FIRST_STRONG,
|
||||
"TEXT_DIRECTION_ANY_RTL" to View.TEXT_DIRECTION_ANY_RTL,
|
||||
"TEXT_DIRECTION_LTR" to View.TEXT_DIRECTION_LTR,
|
||||
"TEXT_DIRECTION_RTL" to View.TEXT_DIRECTION_RTL,
|
||||
"TEXT_DIRECTION_LOCALE" to View.TEXT_DIRECTION_LOCALE,
|
||||
"TEXT_DIRECTION_FIRST_STRONG_LTR" to View.TEXT_DIRECTION_FIRST_STRONG_LTR,
|
||||
"TEXT_DIRECTION_FIRST_STRONG_RTL" to View.TEXT_DIRECTION_FIRST_STRONG_RTL,
|
||||
)) {}
|
||||
}
|
||||
else -> {
|
||||
object : EnumMapping<Int>(emptyMap()) {}
|
||||
}
|
||||
}
|
||||
|
||||
private val TextAlignmentMapping: EnumMapping<Int> =
|
||||
when {
|
||||
Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1 -> {
|
||||
object :
|
||||
EnumMapping<Int>(
|
||||
mapOf(
|
||||
"TEXT_ALIGNMENT_INHERIT" to View.TEXT_ALIGNMENT_INHERIT,
|
||||
"TEXT_ALIGNMENT_GRAVITY" to View.TEXT_ALIGNMENT_GRAVITY,
|
||||
"TEXT_ALIGNMENT_TEXT_START" to View.TEXT_ALIGNMENT_TEXT_START,
|
||||
"TEXT_ALIGNMENT_TEXT_END" to View.TEXT_ALIGNMENT_TEXT_END,
|
||||
"TEXT_ALIGNMENT_CENTER" to View.TEXT_ALIGNMENT_CENTER,
|
||||
"TEXT_ALIGNMENT_VIEW_START" to View.TEXT_ALIGNMENT_VIEW_START,
|
||||
"TEXT_ALIGNMENT_VIEW_END" to View.TEXT_ALIGNMENT_VIEW_END,
|
||||
)) {}
|
||||
}
|
||||
else -> {
|
||||
object : EnumMapping<Int>(emptyMap()) {}
|
||||
}
|
||||
}
|
||||
|
||||
private val GravityMapping =
|
||||
object :
|
||||
EnumMapping<Int>(
|
||||
mapOf(
|
||||
"NONE" to -1,
|
||||
"NO_GRAVITY" to Gravity.NO_GRAVITY,
|
||||
"LEFT" to Gravity.LEFT,
|
||||
"TOP" to Gravity.TOP,
|
||||
"RIGHT" to Gravity.RIGHT,
|
||||
"BOTTOM" to Gravity.BOTTOM,
|
||||
"CENTER" to Gravity.CENTER,
|
||||
"CENTER_VERTICAL" to Gravity.CENTER_VERTICAL,
|
||||
"FILL_VERTICAL" to Gravity.FILL_VERTICAL,
|
||||
"CENTER_HORIZONTAL" to Gravity.CENTER_HORIZONTAL,
|
||||
"FILL_HORIZONTAL" to Gravity.FILL_HORIZONTAL,
|
||||
)) {}
|
||||
|
||||
private const val NAMESPACE = "View"
|
||||
|
||||
private var SectionId =
|
||||
@@ -54,13 +159,23 @@ object ViewDescriptor : ChainedDescriptor<View>() {
|
||||
private val LayoutParamsAttributeId =
|
||||
MetadataRegister.register(MetadataRegister.TYPE_LAYOUT, NAMESPACE, "layoutParams")
|
||||
private val LayoutDirectionAttributeId =
|
||||
MetadataRegister.register(MetadataRegister.TYPE_LAYOUT, NAMESPACE, "layoutDirection")
|
||||
MetadataRegister.register(
|
||||
MetadataRegister.TYPE_LAYOUT,
|
||||
NAMESPACE,
|
||||
"layoutDirection",
|
||||
false,
|
||||
LayoutDirectionMapping.getInspectableValues())
|
||||
private val TranslationAttributeId =
|
||||
MetadataRegister.register(MetadataRegister.TYPE_LAYOUT, NAMESPACE, "translation")
|
||||
private val ElevationAttributeId =
|
||||
MetadataRegister.register(MetadataRegister.TYPE_LAYOUT, NAMESPACE, "elevation")
|
||||
private val VisibilityAttributeId =
|
||||
MetadataRegister.register(MetadataRegister.TYPE_ATTRIBUTE, NAMESPACE, "visibility")
|
||||
MetadataRegister.register(
|
||||
MetadataRegister.TYPE_ATTRIBUTE,
|
||||
NAMESPACE,
|
||||
"visibility",
|
||||
false,
|
||||
VisibilityMapping.getInspectableValues())
|
||||
|
||||
private val BackgroundAttributeId =
|
||||
MetadataRegister.register(MetadataRegister.TYPE_ATTRIBUTE, NAMESPACE, "background")
|
||||
@@ -82,9 +197,19 @@ object ViewDescriptor : ChainedDescriptor<View>() {
|
||||
MetadataRegister.register(MetadataRegister.TYPE_ATTRIBUTE, NAMESPACE, "selected")
|
||||
|
||||
private val TextDirectionAttributeId =
|
||||
MetadataRegister.register(MetadataRegister.TYPE_ATTRIBUTE, NAMESPACE, "textDirection")
|
||||
MetadataRegister.register(
|
||||
MetadataRegister.TYPE_ATTRIBUTE,
|
||||
NAMESPACE,
|
||||
"textDirection",
|
||||
false,
|
||||
TextDirectionMapping.getInspectableValues())
|
||||
private val TextAlignmentAttributeId =
|
||||
MetadataRegister.register(MetadataRegister.TYPE_ATTRIBUTE, NAMESPACE, "textAlignment")
|
||||
MetadataRegister.register(
|
||||
MetadataRegister.TYPE_ATTRIBUTE,
|
||||
NAMESPACE,
|
||||
"textAlignment",
|
||||
false,
|
||||
TextAlignmentMapping.getInspectableValues())
|
||||
|
||||
private val TagAttributeId =
|
||||
MetadataRegister.register(MetadataRegister.TYPE_ATTRIBUTE, NAMESPACE, "tag")
|
||||
@@ -92,16 +217,31 @@ object ViewDescriptor : ChainedDescriptor<View>() {
|
||||
MetadataRegister.register(MetadataRegister.TYPE_ATTRIBUTE, NAMESPACE, "keyedTags")
|
||||
|
||||
private val WidthAttributeId =
|
||||
MetadataRegister.register(MetadataRegister.TYPE_LAYOUT, NAMESPACE, "width")
|
||||
MetadataRegister.register(
|
||||
MetadataRegister.TYPE_LAYOUT,
|
||||
NAMESPACE,
|
||||
"width",
|
||||
false,
|
||||
LayoutParamsMapping.getInspectableValues())
|
||||
private val HeightAttributeId =
|
||||
MetadataRegister.register(MetadataRegister.TYPE_LAYOUT, NAMESPACE, "height")
|
||||
MetadataRegister.register(
|
||||
MetadataRegister.TYPE_LAYOUT,
|
||||
NAMESPACE,
|
||||
"height",
|
||||
false,
|
||||
LayoutParamsMapping.getInspectableValues())
|
||||
|
||||
private val MarginAttributeId =
|
||||
MetadataRegister.register(MetadataRegister.TYPE_LAYOUT, NAMESPACE, "margin")
|
||||
private val WeightAttributeId =
|
||||
MetadataRegister.register(MetadataRegister.TYPE_LAYOUT, NAMESPACE, "weight")
|
||||
private val GravityAttributeId =
|
||||
MetadataRegister.register(MetadataRegister.TYPE_LAYOUT, NAMESPACE, "gravity")
|
||||
MetadataRegister.register(
|
||||
MetadataRegister.TYPE_LAYOUT,
|
||||
NAMESPACE,
|
||||
"gravity",
|
||||
false,
|
||||
GravityMapping.getInspectableValues())
|
||||
|
||||
override fun onGetName(node: View): String = node.javaClass.simpleName
|
||||
|
||||
@@ -310,111 +450,6 @@ object ViewDescriptor : ChainedDescriptor<View>() {
|
||||
return tags
|
||||
}
|
||||
|
||||
private val LayoutParamsMapping: EnumMapping<Int> =
|
||||
object :
|
||||
EnumMapping<Int>(
|
||||
mapOf(
|
||||
"WRAP_CONTENT" to ViewGroup.LayoutParams.WRAP_CONTENT,
|
||||
"MATCH_PARENT" to ViewGroup.LayoutParams.MATCH_PARENT,
|
||||
"FILL_PARENT" to ViewGroup.LayoutParams.FILL_PARENT,
|
||||
)) {}
|
||||
|
||||
private val VisibilityMapping: EnumMapping<Int> =
|
||||
object :
|
||||
EnumMapping<Int>(
|
||||
mapOf(
|
||||
"VISIBLE" to View.VISIBLE,
|
||||
"INVISIBLE" to View.INVISIBLE,
|
||||
"GONE" to View.GONE,
|
||||
)) {}
|
||||
|
||||
private val LayoutDirectionMapping: EnumMapping<Int> =
|
||||
when {
|
||||
Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1 -> {
|
||||
object :
|
||||
EnumMapping<Int>(
|
||||
mapOf(
|
||||
"LAYOUT_DIRECTION_INHERIT" to View.LAYOUT_DIRECTION_INHERIT,
|
||||
"LAYOUT_DIRECTION_LOCALE" to View.LAYOUT_DIRECTION_LOCALE,
|
||||
"LAYOUT_DIRECTION_LTR" to View.LAYOUT_DIRECTION_LTR,
|
||||
"LAYOUT_DIRECTION_RTL" to View.LAYOUT_DIRECTION_RTL,
|
||||
)) {}
|
||||
}
|
||||
else -> {
|
||||
object : EnumMapping<Int>(emptyMap()) {}
|
||||
}
|
||||
}
|
||||
|
||||
private val TextDirectionMapping: EnumMapping<Int> =
|
||||
when {
|
||||
Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1 -> {
|
||||
object :
|
||||
EnumMapping<Int>(
|
||||
mapOf(
|
||||
"TEXT_DIRECTION_INHERIT" to View.TEXT_DIRECTION_INHERIT,
|
||||
"TEXT_DIRECTION_FIRST_STRONG" to View.TEXT_DIRECTION_FIRST_STRONG,
|
||||
"TEXT_DIRECTION_ANY_RTL" to View.TEXT_DIRECTION_ANY_RTL,
|
||||
"TEXT_DIRECTION_LTR" to View.TEXT_DIRECTION_LTR,
|
||||
"TEXT_DIRECTION_RTL" to View.TEXT_DIRECTION_RTL,
|
||||
"TEXT_DIRECTION_LOCALE" to View.TEXT_DIRECTION_LOCALE,
|
||||
)) {}
|
||||
}
|
||||
Build.VERSION.SDK_INT >= Build.VERSION_CODES.M -> {
|
||||
object :
|
||||
EnumMapping<Int>(
|
||||
mapOf(
|
||||
"TEXT_DIRECTION_INHERIT" to View.TEXT_DIRECTION_INHERIT,
|
||||
"TEXT_DIRECTION_FIRST_STRONG" to View.TEXT_DIRECTION_FIRST_STRONG,
|
||||
"TEXT_DIRECTION_ANY_RTL" to View.TEXT_DIRECTION_ANY_RTL,
|
||||
"TEXT_DIRECTION_LTR" to View.TEXT_DIRECTION_LTR,
|
||||
"TEXT_DIRECTION_RTL" to View.TEXT_DIRECTION_RTL,
|
||||
"TEXT_DIRECTION_LOCALE" to View.TEXT_DIRECTION_LOCALE,
|
||||
"TEXT_DIRECTION_FIRST_STRONG_LTR" to View.TEXT_DIRECTION_FIRST_STRONG_LTR,
|
||||
"TEXT_DIRECTION_FIRST_STRONG_RTL" to View.TEXT_DIRECTION_FIRST_STRONG_RTL,
|
||||
)) {}
|
||||
}
|
||||
else -> {
|
||||
object : EnumMapping<Int>(emptyMap()) {}
|
||||
}
|
||||
}
|
||||
|
||||
private val TextAlignmentMapping: EnumMapping<Int> =
|
||||
when {
|
||||
Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1 -> {
|
||||
object :
|
||||
EnumMapping<Int>(
|
||||
mapOf(
|
||||
"TEXT_ALIGNMENT_INHERIT" to View.TEXT_ALIGNMENT_INHERIT,
|
||||
"TEXT_ALIGNMENT_GRAVITY" to View.TEXT_ALIGNMENT_GRAVITY,
|
||||
"TEXT_ALIGNMENT_TEXT_START" to View.TEXT_ALIGNMENT_TEXT_START,
|
||||
"TEXT_ALIGNMENT_TEXT_END" to View.TEXT_ALIGNMENT_TEXT_END,
|
||||
"TEXT_ALIGNMENT_CENTER" to View.TEXT_ALIGNMENT_CENTER,
|
||||
"TEXT_ALIGNMENT_VIEW_START" to View.TEXT_ALIGNMENT_VIEW_START,
|
||||
"TEXT_ALIGNMENT_VIEW_END" to View.TEXT_ALIGNMENT_VIEW_END,
|
||||
)) {}
|
||||
}
|
||||
else -> {
|
||||
object : EnumMapping<Int>(emptyMap()) {}
|
||||
}
|
||||
}
|
||||
|
||||
private val GravityMapping =
|
||||
object :
|
||||
EnumMapping<Int>(
|
||||
mapOf(
|
||||
"NONE" to -1,
|
||||
"NO_GRAVITY" to Gravity.NO_GRAVITY,
|
||||
"LEFT" to Gravity.LEFT,
|
||||
"TOP" to Gravity.TOP,
|
||||
"RIGHT" to Gravity.RIGHT,
|
||||
"BOTTOM" to Gravity.BOTTOM,
|
||||
"CENTER" to Gravity.CENTER,
|
||||
"CENTER_VERTICAL" to Gravity.CENTER_VERTICAL,
|
||||
"FILL_VERTICAL" to Gravity.FILL_VERTICAL,
|
||||
"CENTER_HORIZONTAL" to Gravity.CENTER_HORIZONTAL,
|
||||
"FILL_HORIZONTAL" to Gravity.FILL_HORIZONTAL,
|
||||
)) {}
|
||||
|
||||
private var KeyedTagsField: Field? = null
|
||||
private var ListenerInfoField: Field? = null
|
||||
private var OnClickListenerField: Field? = null
|
||||
|
||||
@@ -17,6 +17,14 @@ import com.facebook.flipper.plugins.uidebugger.model.*
|
||||
|
||||
object ViewGroupDescriptor : ChainedDescriptor<ViewGroup>() {
|
||||
|
||||
private val LayoutModeMapping: EnumMapping<Int> =
|
||||
object :
|
||||
EnumMapping<Int>(
|
||||
mapOf(
|
||||
"LAYOUT_MODE_CLIP_BOUNDS" to ViewGroupCompat.LAYOUT_MODE_CLIP_BOUNDS,
|
||||
"LAYOUT_MODE_OPTICAL_BOUNDS" to ViewGroupCompat.LAYOUT_MODE_OPTICAL_BOUNDS,
|
||||
)) {}
|
||||
|
||||
private const val NAMESPACE = "ViewGroup"
|
||||
private var SectionId =
|
||||
MetadataRegister.register(MetadataRegister.TYPE_ATTRIBUTE, NAMESPACE, NAMESPACE)
|
||||
@@ -41,9 +49,14 @@ object ViewGroupDescriptor : ChainedDescriptor<ViewGroup>() {
|
||||
}
|
||||
|
||||
private val LayoutModeAttributeId =
|
||||
MetadataRegister.register(MetadataRegister.TYPE_LAYOUT, NAMESPACE, "layoutMode")
|
||||
MetadataRegister.register(
|
||||
MetadataRegister.TYPE_LAYOUT,
|
||||
NAMESPACE,
|
||||
"layoutMode",
|
||||
false,
|
||||
LayoutModeMapping.getInspectableValues())
|
||||
private val ClipChildrenAttributeId =
|
||||
MetadataRegister.register(MetadataRegister.TYPE_LAYOUT, NAMESPACE, "layoutMode")
|
||||
MetadataRegister.register(MetadataRegister.TYPE_LAYOUT, NAMESPACE, "clipChildren")
|
||||
private val ClipToPaddingAttributeId =
|
||||
MetadataRegister.register(MetadataRegister.TYPE_LAYOUT, NAMESPACE, "clipToPadding")
|
||||
|
||||
@@ -63,12 +76,4 @@ object ViewGroupDescriptor : ChainedDescriptor<ViewGroup>() {
|
||||
|
||||
attributeSections[SectionId] = InspectableObject(props)
|
||||
}
|
||||
|
||||
private val LayoutModeMapping: EnumMapping<Int> =
|
||||
object :
|
||||
EnumMapping<Int>(
|
||||
mapOf(
|
||||
"LAYOUT_MODE_CLIP_BOUNDS" to ViewGroupCompat.LAYOUT_MODE_CLIP_BOUNDS,
|
||||
"LAYOUT_MODE_OPTICAL_BOUNDS" to ViewGroupCompat.LAYOUT_MODE_OPTICAL_BOUNDS,
|
||||
)) {}
|
||||
}
|
||||
|
||||
@@ -21,5 +21,6 @@ data class Metadata(
|
||||
val namespace: String,
|
||||
val name: String,
|
||||
val mutable: kotlin.Boolean,
|
||||
val possibleValues: Set<InspectableValue>? = emptySet(),
|
||||
val tags: List<String>? = emptyList()
|
||||
) {}
|
||||
|
||||
@@ -63,5 +63,4 @@ data class Size(
|
||||
@Serializable(with = NumberSerializer::class) val height: Number
|
||||
) {}
|
||||
|
||||
@kotlinx.serialization.Serializable
|
||||
data class Enumeration(val values: Set<String>, val value: String?)
|
||||
@kotlinx.serialization.Serializable data class Enumeration(val value: String?)
|
||||
|
||||
@@ -39,7 +39,6 @@ class EnumMappingTest {
|
||||
@Test
|
||||
fun testTurnsIntoEnumInspectable() {
|
||||
assertThat(
|
||||
visibility.toInspectable(View.GONE),
|
||||
equalTo(InspectableValue.Enum(Enumeration(setOf("VISIBLE", "INVISIBLE", "GONE"), "GONE"))))
|
||||
visibility.toInspectable(View.GONE), equalTo(InspectableValue.Enum(Enumeration("GONE"))))
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user