Merge "Change version of Android after which platform haptics are called." into androidx-main
diff --git a/wear/compose/compose-foundation/src/main/java/androidx/wear/compose/foundation/rotary/Haptics.kt b/wear/compose/compose-foundation/src/main/java/androidx/wear/compose/foundation/rotary/Haptics.kt
index 28bce2c..96cac7a 100644
--- a/wear/compose/compose-foundation/src/main/java/androidx/wear/compose/foundation/rotary/Haptics.kt
+++ b/wear/compose/compose-foundation/src/main/java/androidx/wear/compose/foundation/rotary/Haptics.kt
@@ -62,7 +62,7 @@
     hapticsEnabled: Boolean
 ): RotaryHapticHandler =
     if (hapticsEnabled) {
-        if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.UPSIDE_DOWN_CAKE)
+        if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.VANILLA_ICE_CREAM)
             rememberCustomRotaryHapticHandler(scrollableState)
         else rememberPlatformRotaryHapticHandler(scrollableState)
     } else rememberDisabledRotaryHapticHandler()
@@ -171,7 +171,7 @@
  * @param hapticsChannel Channel to which haptic events will be sent
  * @param hapticsThresholdPx A scroll threshold after which haptic is produced.
  */
-private class CustomRotaryHapticHandler(
+internal class CustomRotaryHapticHandler(
     private val scrollableState: ScrollableState,
     private val hapticsChannel: Channel<RotaryHapticsType>,
     private val hapticsThresholdPx: Long = 50
diff --git a/wear/compose/compose-foundation/src/test/kotlin/androidx/wear/compose/foundation/rotary/HapticsTest.kt b/wear/compose/compose-foundation/src/test/kotlin/androidx/wear/compose/foundation/rotary/HapticsTest.kt
index ed52c17..2700d9d 100644
--- a/wear/compose/compose-foundation/src/test/kotlin/androidx/wear/compose/foundation/rotary/HapticsTest.kt
+++ b/wear/compose/compose-foundation/src/test/kotlin/androidx/wear/compose/foundation/rotary/HapticsTest.kt
@@ -18,8 +18,11 @@
 
 import android.R
 import android.app.Activity
+import android.os.Build
 import android.provider.Settings
 import android.view.View
+import androidx.compose.foundation.gestures.rememberScrollableState
+import androidx.compose.ui.test.junit4.createComposeRule
 import kotlinx.coroutines.channels.BufferOverflow
 import kotlinx.coroutines.channels.Channel
 import kotlinx.coroutines.delay
@@ -29,6 +32,7 @@
 import kotlinx.coroutines.test.runTest
 import org.junit.Assert.assertEquals
 import org.junit.Before
+import org.junit.Rule
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.junit.runners.JUnit4
@@ -127,6 +131,9 @@
 
 @RunWith(RobolectricTestRunner::class)
 class HapticsTest {
+
+    @get:Rule val rule = createComposeRule()
+
     @Test
     @Config(sdk = [33])
     fun testPixelWatch1Wear4() {
@@ -211,6 +218,17 @@
         assertEquals(HapticConstants.GalaxyWatchConstants, getHapticConstants())
     }
 
+    @Test
+    @Config(sdk = [Build.VERSION_CODES.VANILLA_ICE_CREAM, Build.VERSION_CODES.UPSIDE_DOWN_CAKE])
+    fun testCustomHapticsHandler() {
+        var rotaryHapticsHandler: RotaryHapticHandler? = null
+        rule.setContent {
+            val scrollableState = rememberScrollableState { 0f }
+            rotaryHapticsHandler = rememberRotaryHapticHandler(scrollableState, true)
+        }
+        assertEquals(rotaryHapticsHandler?.javaClass, CustomRotaryHapticHandler::class.java)
+    }
+
     private fun getHapticConstants(): HapticConstants {
         val activity = Robolectric.buildActivity(Activity::class.java).get()
         val view = activity.findViewById<View>(R.id.content)