Merge "Revert "Fixed bug having to do with Row/Column not having the right intrinsic settings"" into androidx-main
diff --git a/compose/foundation/foundation-layout/src/androidInstrumentedTest/kotlin/androidx/compose/foundation/layout/RowColumnModifierTest.kt b/compose/foundation/foundation-layout/src/androidInstrumentedTest/kotlin/androidx/compose/foundation/layout/RowColumnModifierTest.kt
index 2a853de..e213172 100644
--- a/compose/foundation/foundation-layout/src/androidInstrumentedTest/kotlin/androidx/compose/foundation/layout/RowColumnModifierTest.kt
+++ b/compose/foundation/foundation-layout/src/androidInstrumentedTest/kotlin/androidx/compose/foundation/layout/RowColumnModifierTest.kt
@@ -16,33 +16,20 @@
 
 package androidx.compose.foundation.layout
 
-import androidx.compose.foundation.background
-import androidx.compose.runtime.Composable
 import androidx.compose.runtime.getValue
 import androidx.compose.runtime.mutableStateOf
 import androidx.compose.runtime.setValue
 import androidx.compose.ui.Alignment
 import androidx.compose.ui.Modifier
-import androidx.compose.ui.graphics.Color
-import androidx.compose.ui.layout.IntrinsicMeasurable
-import androidx.compose.ui.layout.IntrinsicMeasureScope
-import androidx.compose.ui.layout.Layout
-import androidx.compose.ui.layout.Measurable
-import androidx.compose.ui.layout.MeasurePolicy
-import androidx.compose.ui.layout.MeasureResult
-import androidx.compose.ui.layout.MeasureScope
 import androidx.compose.ui.layout.Measured
 import androidx.compose.ui.layout.onPlaced
 import androidx.compose.ui.layout.onSizeChanged
 import androidx.compose.ui.layout.positionInParent
 import androidx.compose.ui.platform.LocalDensity
 import androidx.compose.ui.test.junit4.createComposeRule
-import androidx.compose.ui.unit.Constraints
-import androidx.compose.ui.unit.dp
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.SmallTest
 import com.google.common.truth.Truth
-import kotlin.math.ceil
 import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
@@ -231,170 +218,6 @@
         }
     }
 
-    @OptIn(ExperimentalLayoutApi::class)
-    @Test
-    fun testRow_correctlyCalculatesIntrinsicCrossAxis() {
-        var totalFakeTextPlaced = 0
-
-        rule.setContent {
-            Row(Modifier.width(200.dp).background(Color.Green).height(IntrinsicSize.Max)) {
-                Box(modifier = Modifier.size(24.dp).background(Color.Blue))
-
-                Column(Modifier.wrapContentHeight()) {
-                    FakeText(modifier = Modifier.onPlaced { totalFakeTextPlaced++ }, text = "Text")
-                    FlowRow(Modifier) {
-                        FakeText(
-                            modifier = Modifier.onPlaced { totalFakeTextPlaced++ },
-                            text = "Really long text 1"
-                        )
-                        FakeText(
-                            modifier = Modifier.onPlaced { totalFakeTextPlaced++ },
-                            text = "Really long text 2"
-                        )
-                    }
-                }
-
-                Box(modifier = Modifier.width(120.dp).height(60.dp).background(Color.Red))
-            }
-        }
-
-        rule.runOnIdle { Truth.assertThat(totalFakeTextPlaced).isEqualTo(3) }
-    }
-
-    @OptIn(ExperimentalLayoutApi::class)
-    @Test
-    fun testColumn_correctlyCalculatesIntrinsicCrossAxis() {
-        var totalFakeTextPlaced = 0
-        val forRow = false
-        rule.setContent {
-            Column(Modifier.height(176.dp).background(Color.Green).width(IntrinsicSize.Max)) {
-                Row(Modifier.wrapContentWidth()) {
-                    FakeText(
-                        modifier = Modifier.onPlaced { totalFakeTextPlaced++ },
-                        text = "Text",
-                        forRow
-                    )
-                    FlowColumn(Modifier) {
-                        FakeText(
-                            modifier = Modifier.onPlaced { totalFakeTextPlaced++ },
-                            text = "Really long text 1",
-                            forRow
-                        )
-                        FakeText(
-                            modifier = Modifier.onPlaced { totalFakeTextPlaced++ },
-                            text = "Really long text 2",
-                            forRow
-                        )
-                    }
-                }
-
-                Box(modifier = Modifier.width(60.dp).height(120.dp).background(Color.Red))
-            }
-        }
-
-        rule.runOnIdle { Truth.assertThat(totalFakeTextPlaced).isEqualTo(3) }
-    }
-
-    /**
-     * @param forRow creates the bug setting for row. Otherwise, make it work for Column by laying
-     *   out the text top to bottom.
-     */
-    @Composable
-    fun FakeText(modifier: Modifier = Modifier, text: String, forRow: Boolean = true) {
-        val characterSizeMainAxis = 8.dp
-        val textCrossAxisSize = 30.dp
-
-        val maxIntrinsicMainAxisSize = (characterSizeMainAxis * text.length)
-        val orientation = if (forRow) LayoutOrientation.Horizontal else LayoutOrientation.Vertical
-        Layout(
-            content = {},
-            modifier = modifier,
-            measurePolicy =
-                object : MeasurePolicy {
-                    override fun MeasureScope.measure(
-                        measurables: List<Measurable>,
-                        constraints: Constraints
-                    ): MeasureResult {
-                        val constraintsIndependent =
-                            OrientationIndependentConstraints(constraints, orientation)
-                        val maxMainAxis = constraintsIndependent.mainAxisMax
-                        val lengthNeeded = text.length * characterSizeMainAxis.roundToPx()
-                        val crossAxis = getCrossAxisNeeded(maxMainAxis)
-                        val mainAxis = lengthNeeded.coerceAtMost(maxMainAxis)
-
-                        var width: Int
-                        var height: Int
-                        if (forRow) {
-                            width = mainAxis
-                            height = crossAxis
-                        } else {
-                            width = crossAxis
-                            height = mainAxis
-                        }
-
-                        return layout(width, height) {
-                            measurables.forEach { measurable ->
-                                val placeable = measurable.measure(constraints)
-                                placeable.place(0, 0)
-                            }
-                        }
-                    }
-
-                    override fun IntrinsicMeasureScope.maxIntrinsicHeight(
-                        measurables: List<IntrinsicMeasurable>,
-                        width: Int
-                    ): Int {
-                        return if (forRow) {
-                            getCrossAxisNeeded(width)
-                        } else {
-                            maxIntrinsicMainAxisSize.roundToPx()
-                        }
-                    }
-
-                    override fun IntrinsicMeasureScope.maxIntrinsicWidth(
-                        measurables: List<IntrinsicMeasurable>,
-                        height: Int
-                    ): Int {
-                        return if (forRow) {
-                            maxIntrinsicMainAxisSize.roundToPx()
-                        } else {
-                            getCrossAxisNeeded(height)
-                        }
-                    }
-
-                    override fun IntrinsicMeasureScope.minIntrinsicHeight(
-                        measurables: List<IntrinsicMeasurable>,
-                        width: Int
-                    ): Int {
-                        return if (forRow) {
-                            getCrossAxisNeeded(width)
-                        } else {
-                            characterSizeMainAxis.roundToPx()
-                        }
-                    }
-
-                    override fun IntrinsicMeasureScope.minIntrinsicWidth(
-                        measurables: List<IntrinsicMeasurable>,
-                        height: Int
-                    ): Int {
-                        return if (forRow) {
-                            characterSizeMainAxis.roundToPx()
-                        } else {
-                            getCrossAxisNeeded(height)
-                        }
-                    }
-
-                    private fun IntrinsicMeasureScope.getCrossAxisNeeded(mainAxisSize: Int): Int {
-                        val lengthNeeded = text.length * characterSizeMainAxis.roundToPx()
-                        val noOfLines =
-                            if (mainAxisSize == Constraints.Infinity) 1
-                            else ceil((lengthNeeded.toFloat() / mainAxisSize).toDouble()).toInt()
-                        return (textCrossAxisSize.roundToPx() * noOfLines)
-                    }
-                }
-        )
-    }
-
     @Test
     fun testColumn_updatesOnAlignmentChange() {
         var positionInParentX = 0f
diff --git a/compose/foundation/foundation-layout/src/commonMain/kotlin/androidx/compose/foundation/layout/RowColumnImpl.kt b/compose/foundation/foundation-layout/src/commonMain/kotlin/androidx/compose/foundation/layout/RowColumnImpl.kt
index 64c786f..5f82c58 100644
--- a/compose/foundation/foundation-layout/src/commonMain/kotlin/androidx/compose/foundation/layout/RowColumnImpl.kt
+++ b/compose/foundation/foundation-layout/src/commonMain/kotlin/androidx/compose/foundation/layout/RowColumnImpl.kt
@@ -376,7 +376,7 @@
     ): Int {
         return intrinsicCrossAxisSize(
             measurables,
-            { w -> minIntrinsicHeight(w) },
+            { w -> maxIntrinsicHeight(w) },
             { h -> maxIntrinsicWidth(h) },
             availableHeight,
             mainAxisSpacing,
@@ -390,7 +390,7 @@
     ): Int {
         return intrinsicCrossAxisSize(
             measurables,
-            { h -> minIntrinsicWidth(h) },
+            { h -> maxIntrinsicWidth(h) },
             { w -> maxIntrinsicHeight(w) },
             availableWidth,
             mainAxisSpacing,