Fix mistake in location in aosp/1672411
The location was mistakenly computed from the AndroidComposeView
instead of the intended DecorView.
Bug: 184979097
Test: Unit tests updated
Change-Id: I4ac98f32e938b431d498141a2ce4d359099f7c59
diff --git a/compose/ui/ui-inspection/src/androidTest/java/androidx/compose/ui/inspection/inspector/LayoutInspectorTreeTest.kt b/compose/ui/ui-inspection/src/androidTest/java/androidx/compose/ui/inspection/inspector/LayoutInspectorTreeTest.kt
index b40bfcc..9ee4cb27 100644
--- a/compose/ui/ui-inspection/src/androidTest/java/androidx/compose/ui/inspection/inspector/LayoutInspectorTreeTest.kt
+++ b/compose/ui/ui-inspection/src/androidTest/java/androidx/compose/ui/inspection/inspector/LayoutInspectorTreeTest.kt
@@ -46,6 +46,8 @@
import androidx.compose.ui.R
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.graphicsLayer
+import androidx.compose.ui.inspection.framework.ancestors
+import androidx.compose.ui.inspection.framework.isRoot
import androidx.compose.ui.inspection.rules.show
import androidx.compose.ui.inspection.testdata.TestActivity
import androidx.compose.ui.layout.GraphicLayerInfo
@@ -629,7 +631,8 @@
private fun findTopPosition(view: View): Dp {
val location = IntArray(2)
- view.getLocationOnScreen(location)
+ val decorView = view.ancestors().first { it.isRoot() }
+ decorView.getLocationOnScreen(location)
return with(density) { location[1].toDp() }
}
diff --git a/compose/ui/ui-inspection/src/main/java/androidx/compose/ui/inspection/inspector/LayoutInspectorTree.kt b/compose/ui/ui-inspection/src/main/java/androidx/compose/ui/inspection/inspector/LayoutInspectorTree.kt
index 68a2185..60bc092 100644
--- a/compose/ui/ui-inspection/src/main/java/androidx/compose/ui/inspection/inspector/LayoutInspectorTree.kt
+++ b/compose/ui/ui-inspection/src/main/java/androidx/compose/ui/inspection/inspector/LayoutInspectorTree.kt
@@ -22,6 +22,8 @@
import androidx.compose.ui.ExperimentalComposeUiApi
import androidx.compose.ui.R
import androidx.compose.ui.geometry.Offset
+import androidx.compose.ui.inspection.framework.ancestors
+import androidx.compose.ui.inspection.framework.isRoot
import androidx.compose.ui.layout.GraphicLayerInfo
import androidx.compose.ui.layout.LayoutInfo
import androidx.compose.ui.node.RootForTest
@@ -206,7 +208,8 @@
@OptIn(InternalComposeApi::class)
private fun convert(tables: Set<CompositionData>, view: View): List<InspectorNode> {
- view.getLocationOnScreen(rootLocation)
+ val decorView = view.ancestors().first { it.isRoot() }
+ decorView.getLocationOnScreen(rootLocation)
val trees = tables.mapNotNull { convert(it, view) }
return when (trees.size) {
0 -> listOf()