Remove Node id default impl
Summary: This is never identity hash code for declarative framework so this default impl is just a source of bugs, including this one. Reviewed By: lblasa Differential Revision: D47754625 fbshipit-source-id: 470aab084c82fa847f25116342021a79d52b7c67
This commit is contained in:
committed by
Facebook GitHub Bot
parent
6b1da22a26
commit
60016e69f5
@@ -10,6 +10,7 @@ package com.facebook.flipper.plugins.jetpackcompose.descriptors
|
|||||||
import android.graphics.Bitmap
|
import android.graphics.Bitmap
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import com.facebook.flipper.plugins.jetpackcompose.model.ComposeInnerViewNode
|
import com.facebook.flipper.plugins.jetpackcompose.model.ComposeInnerViewNode
|
||||||
|
import com.facebook.flipper.plugins.uidebugger.descriptors.Id
|
||||||
import com.facebook.flipper.plugins.uidebugger.descriptors.NodeDescriptor
|
import com.facebook.flipper.plugins.uidebugger.descriptors.NodeDescriptor
|
||||||
import com.facebook.flipper.plugins.uidebugger.descriptors.ViewDescriptor
|
import com.facebook.flipper.plugins.uidebugger.descriptors.ViewDescriptor
|
||||||
import com.facebook.flipper.plugins.uidebugger.descriptors.ViewGroupDescriptor
|
import com.facebook.flipper.plugins.uidebugger.descriptors.ViewGroupDescriptor
|
||||||
@@ -17,9 +18,12 @@ import com.facebook.flipper.plugins.uidebugger.model.Bounds
|
|||||||
import com.facebook.flipper.plugins.uidebugger.model.InspectableObject
|
import com.facebook.flipper.plugins.uidebugger.model.InspectableObject
|
||||||
import com.facebook.flipper.plugins.uidebugger.model.MetadataId
|
import com.facebook.flipper.plugins.uidebugger.model.MetadataId
|
||||||
import com.facebook.flipper.plugins.uidebugger.util.MaybeDeferred
|
import com.facebook.flipper.plugins.uidebugger.util.MaybeDeferred
|
||||||
|
import java.lang.System
|
||||||
|
|
||||||
object ComposeInnerViewDescriptor : NodeDescriptor<ComposeInnerViewNode> {
|
object ComposeInnerViewDescriptor : NodeDescriptor<ComposeInnerViewNode> {
|
||||||
|
|
||||||
|
override fun getId(node: ComposeInnerViewNode): Id = System.identityHashCode(node.view)
|
||||||
|
|
||||||
override fun getBounds(node: ComposeInnerViewNode): Bounds {
|
override fun getBounds(node: ComposeInnerViewNode): Bounds {
|
||||||
return node.bounds
|
return node.bounds
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ package com.facebook.flipper.plugins.jetpackcompose.descriptors
|
|||||||
import android.graphics.Bitmap
|
import android.graphics.Bitmap
|
||||||
import com.facebook.flipper.plugins.jetpackcompose.model.ComposeNode
|
import com.facebook.flipper.plugins.jetpackcompose.model.ComposeNode
|
||||||
import com.facebook.flipper.plugins.uidebugger.descriptors.BaseTags
|
import com.facebook.flipper.plugins.uidebugger.descriptors.BaseTags
|
||||||
|
import com.facebook.flipper.plugins.uidebugger.descriptors.Id
|
||||||
import com.facebook.flipper.plugins.uidebugger.descriptors.MetadataRegister
|
import com.facebook.flipper.plugins.uidebugger.descriptors.MetadataRegister
|
||||||
import com.facebook.flipper.plugins.uidebugger.descriptors.NodeDescriptor
|
import com.facebook.flipper.plugins.uidebugger.descriptors.NodeDescriptor
|
||||||
import com.facebook.flipper.plugins.uidebugger.model.Bounds
|
import com.facebook.flipper.plugins.uidebugger.model.Bounds
|
||||||
@@ -134,4 +135,6 @@ object ComposeNodeDescriptor : NodeDescriptor<ComposeNode> {
|
|||||||
override fun getActiveChild(node: ComposeNode): Any? = null
|
override fun getActiveChild(node: ComposeNode): Any? = null
|
||||||
|
|
||||||
override fun getTags(node: ComposeNode): Set<String> = setOf(BaseTags.Android, "Compose")
|
override fun getTags(node: ComposeNode): Set<String> = setOf(BaseTags.Android, "Compose")
|
||||||
|
|
||||||
|
override fun getId(node: ComposeNode): Id = node.inspectorNode.id.toInt()
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,6 +26,8 @@ import com.facebook.flipper.plugins.uidebugger.util.MaybeDeferred
|
|||||||
abstract class ChainedDescriptor<T> : NodeDescriptor<T> {
|
abstract class ChainedDescriptor<T> : NodeDescriptor<T> {
|
||||||
private var mSuper: ChainedDescriptor<T>? = null
|
private var mSuper: ChainedDescriptor<T>? = null
|
||||||
|
|
||||||
|
override fun getId(node: T): Id = System.identityHashCode(node)
|
||||||
|
|
||||||
fun setSuper(superDescriptor: ChainedDescriptor<T>) {
|
fun setSuper(superDescriptor: ChainedDescriptor<T>) {
|
||||||
if (superDescriptor !== mSuper) {
|
if (superDescriptor !== mSuper) {
|
||||||
check(mSuper == null)
|
check(mSuper == null)
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ typealias Id = Int
|
|||||||
interface NodeDescriptor<T> {
|
interface NodeDescriptor<T> {
|
||||||
|
|
||||||
/** Used to detect the same node across traversals */
|
/** Used to detect the same node across traversals */
|
||||||
fun getId(node: T): Id = System.identityHashCode(node)
|
fun getId(node: T): Id
|
||||||
|
|
||||||
/** Should be w.r.t the direct parent */
|
/** Should be w.r.t the direct parent */
|
||||||
fun getBounds(node: T): Bounds
|
fun getBounds(node: T): Bounds
|
||||||
|
|||||||
@@ -15,6 +15,8 @@ import com.facebook.flipper.plugins.uidebugger.util.Immediate
|
|||||||
|
|
||||||
object ObjectDescriptor : NodeDescriptor<Any> {
|
object ObjectDescriptor : NodeDescriptor<Any> {
|
||||||
|
|
||||||
|
override fun getId(node: Any): Id = System.identityHashCode(node)
|
||||||
|
|
||||||
override fun getActiveChild(node: Any): Any? = null
|
override fun getActiveChild(node: Any): Any? = null
|
||||||
|
|
||||||
override fun getName(node: Any): String {
|
override fun getName(node: Any): String {
|
||||||
|
|||||||
Reference in New Issue
Block a user