Fix renderring of the content that is smaller than the screen.

Test: Added new tests.
Bug: 374758615
Change-Id: I6c3e1df767684c2cd65c5633bd4f1be2827f0522
diff --git a/wear/compose/compose-foundation/src/androidTest/kotlin/androidx/wear/compose/foundation/lazy/TransformingLazyColumnContentPaddingMeasurementStrategyTest.kt b/wear/compose/compose-foundation/src/androidTest/kotlin/androidx/wear/compose/foundation/lazy/TransformingLazyColumnContentPaddingMeasurementStrategyTest.kt
index ee6664e..ff4156e 100644
--- a/wear/compose/compose-foundation/src/androidTest/kotlin/androidx/wear/compose/foundation/lazy/TransformingLazyColumnContentPaddingMeasurementStrategyTest.kt
+++ b/wear/compose/compose-foundation/src/androidTest/kotlin/androidx/wear/compose/foundation/lazy/TransformingLazyColumnContentPaddingMeasurementStrategyTest.kt
@@ -283,6 +283,8 @@
                 transformedHeight = { measuredHeight, _ -> measuredHeight / 2 }
             )
 
+        assertThat(result.canScrollForward).isFalse()
+        assertThat(result.canScrollBackward).isFalse()
         assertThat(result.visibleItems.size).isEqualTo(1)
         assertThat(result.visibleItems.first().offset).isEqualTo(0)
         assertThat(result.visibleItems.first().measuredHeight).isEqualTo(screenHeight)
@@ -290,6 +292,73 @@
     }
 
     @Test
+    fun renderContentSmallerThanTheScreen_hasNoScrolling() {
+        val strategy =
+            TransformingLazyColumnContentPaddingMeasurementStrategy(
+                PaddingValues(0.dp),
+                measureScope
+            )
+        val result =
+            strategy.measure(
+                listOf(
+                    // Centered item.
+                    screenHeight / 5,
+                    screenHeight / 5,
+                    screenHeight / 5,
+                )
+            )
+
+        assertThat(result.canScrollForward).isFalse()
+        assertThat(result.canScrollBackward).isFalse()
+        assertThat(result.visibleItems.size).isEqualTo(3)
+    }
+
+    @Test
+    fun renderContentOnTopOfList_hasNoBackwardScrolling() {
+        val strategy =
+            TransformingLazyColumnContentPaddingMeasurementStrategy(
+                PaddingValues(0.dp),
+                measureScope
+            )
+        val result =
+            strategy.measure(
+                listOf(
+                    // Centered item.
+                    screenHeight / 2,
+                    screenHeight / 2,
+                    screenHeight / 2,
+                )
+            )
+
+        assertThat(result.canScrollForward).isTrue()
+        assertThat(result.canScrollBackward).isFalse()
+        assertThat(result.visibleItems.size).isEqualTo(2)
+    }
+
+    @Test
+    fun renderContentOnBottomOfList_hasNoForwardScrolling() {
+        val strategy =
+            TransformingLazyColumnContentPaddingMeasurementStrategy(
+                PaddingValues(0.dp),
+                measureScope
+            )
+        val result =
+            strategy.measure(
+                listOf(
+                    screenHeight / 2,
+                    screenHeight / 2,
+                    // Centered item.
+                    screenHeight / 2,
+                ),
+                anchorItemIndex = 2
+            )
+
+        assertThat(result.canScrollForward).isFalse()
+        assertThat(result.canScrollBackward).isTrue()
+        assertThat(result.visibleItems.size).isEqualTo(2)
+    }
+
+    @Test
     fun dynamicHeightItems_measuredWithCorrectOffsets() {
         val strategy = TransformingLazyColumnCenterBoundsMeasurementStrategy()
         val result =
diff --git a/wear/compose/compose-foundation/src/main/java/androidx/wear/compose/foundation/lazy/TransformingLazyColumnContentPaddingMeasurementStrategy.kt b/wear/compose/compose-foundation/src/main/java/androidx/wear/compose/foundation/lazy/TransformingLazyColumnContentPaddingMeasurementStrategy.kt
index be60fced..914a09d 100644
--- a/wear/compose/compose-foundation/src/main/java/androidx/wear/compose/foundation/lazy/TransformingLazyColumnContentPaddingMeasurementStrategy.kt
+++ b/wear/compose/compose-foundation/src/main/java/androidx/wear/compose/foundation/lazy/TransformingLazyColumnContentPaddingMeasurementStrategy.kt
@@ -120,8 +120,16 @@
         }
 
         val totalHeight =
-            visibleItems.sumOf { it.transformedHeight } + itemSpacing * (itemsCount - 1)
-        if (totalHeight < containerConstraints.maxHeight) {
+            visibleItems.sumOf { it.transformedHeight } +
+                itemSpacing * (itemsCount - 1) +
+                beforeContentPadding +
+                afterContentPadding
+
+        if (
+            totalHeight < containerConstraints.maxHeight &&
+                visibleItems.first().index == 0 &&
+                visibleItems.last().index == itemsCount - 1
+        ) {
             restoreLayoutTopToBottom(visibleItems, itemSpacing, containerConstraints)
             canScrollBackward = false
             canScrollForward = false