From 1398e2aa8a97296ed7fae7a814f0446c1815ef47 Mon Sep 17 00:00:00 2001 From: Luke De Feo Date: Mon, 14 Nov 2022 07:05:58 -0800 Subject: [PATCH] Make node bounds mandatory in protocol Summary: This makes life on the desktop easier as 99% of the time bounds were there but we were dealing with non sensical non null branches. Reviewed By: lblasa Differential Revision: D41218325 fbshipit-source-id: e490d3775720c1c55dcb8f4a2a85520294f5e2a9 --- .../litho/descriptors/MountedDawable.kt | 51 ------------------- .../descriptors/ChainedDescriptor.kt | 5 +- .../uidebugger/descriptors/NodeDescriptor.kt | 2 +- .../descriptors/ObjectDescriptor.kt | 2 +- .../descriptors/OffsetChildDescriptor.kt | 7 +-- .../flipper/plugins/uidebugger/model/Node.kt | 2 +- .../traversal/PartialLayoutTraversal.kt | 2 +- 7 files changed, 9 insertions(+), 62 deletions(-) delete mode 100644 android/plugins/litho/src/main/java/com/facebook/flipper/plugins/uidebugger/litho/descriptors/MountedDawable.kt 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 deleted file mode 100644 index e66895dcf..000000000 --- a/android/plugins/litho/src/main/java/com/facebook/flipper/plugins/uidebugger/litho/descriptors/MountedDawable.kt +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright (c) Meta Platforms, Inc. and affiliates. - * - * This source code is licensed under the MIT license found in the - * LICENSE file in the root directory of this source tree. - */ - -package com.facebook.flipper.plugins.uidebugger.litho.descriptors - -import android.graphics.Bitmap -import com.facebook.flipper.plugins.uidebugger.descriptors.* -import com.facebook.flipper.plugins.uidebugger.model.Bounds -import com.facebook.flipper.plugins.uidebugger.model.InspectableObject -import com.facebook.flipper.plugins.uidebugger.model.MetadataId - -/** a drawable or view that is mounted, along with the correct descriptor */ -class MountedObject(val obj: Any, val descriptor: NodeDescriptor) - -object MountedObjectDescriptor : NodeDescriptor { - - override fun getBounds(node: MountedObject): Bounds? { - val bounds = node.descriptor.getBounds(node.obj) - bounds?.let { b -> - /** - * When we ask android for the bounds the x,y offset is w.r.t to the nearest android parent - * view group. From UI debuggers perspective using the raw android offset will double the - * total offset of this native view as the offset is included by the litho components between - * the mounted view and its native parent - */ - return Bounds(0, 0, b.width, b.height) - } - return null - } - - 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) - - override fun getData(node: MountedObject): Map = - node.descriptor.getData(node.obj) - - override fun getTags(node: MountedObject): Set = node.descriptor.getTags(node.obj) - - override fun getSnapshot(node: MountedObject, bitmap: Bitmap?): Bitmap? = - node.descriptor.getSnapshot(node.obj, bitmap) -} 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 6243759e6..164b4b686 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 @@ -67,8 +67,9 @@ abstract class ChainedDescriptor : NodeDescriptor { abstract fun onGetName(node: T): String - final override fun getBounds(node: T): Bounds? { - return onGetBounds(node) ?: mSuper?.getBounds(node) + final override fun getBounds(node: T): Bounds { + val bounds = onGetBounds(node) ?: mSuper?.getBounds(node) + return bounds ?: Bounds(0, 0, 0, 0) } open fun onGetBounds(node: T): Bounds? = null 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 26514b68f..1fda161ee 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 @@ -34,7 +34,7 @@ object BaseTags { interface NodeDescriptor { /** Should be w.r.t the direct parent */ - fun getBounds(node: T): Bounds? + fun getBounds(node: T): Bounds /** * The name used to identify this node in the inspector. Does not need to be unique. A good 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 7dd61cf5f..a909a4c1e 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 @@ -28,7 +28,7 @@ object ObjectDescriptor : NodeDescriptor { override fun getData(node: Any) = mutableMapOf() - override fun getBounds(node: Any): Bounds? = null + override fun getBounds(node: Any): Bounds = Bounds(0, 0, 0, 0) override fun getTags(node: Any): Set = setOf(BaseTags.Unknown) 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 ef7aeb5cd..a606787b5 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 @@ -21,12 +21,9 @@ class OffsetChild(val child: Any, val descriptor: NodeDescriptor, val x: In object OffsetChildDescriptor : NodeDescriptor { - override fun getBounds(node: OffsetChild): Bounds? { + override fun getBounds(node: OffsetChild): Bounds { val bounds = node.descriptor.getBounds(node.child) - bounds?.let { b -> - return Bounds(node.x, node.y, b.width, b.height) - } - return null + return Bounds(node.x, node.y, bounds.width, bounds.height) } override fun getName(node: OffsetChild): String = node.descriptor.getName(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 5530e83d5..ed44d3936 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 @@ -15,7 +15,7 @@ data class Node( val qualifiedName: String, val name: String, val attributes: Map, - val bounds: Bounds?, + val bounds: Bounds, val tags: Set, val children: List, val activeChild: Id?, 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 e8d84f3c0..3626c4d12 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 @@ -59,7 +59,7 @@ class PartialLayoutTraversal( descriptor.getQualifiedName(node), descriptor.getName(node), emptyMap(), - null, + descriptor.getBounds(node), emptySet(), emptyList(), null))