Update compose module with LifecycleRegistry

The compose module should now be using the
updated apis for LifecycleRegistry following
the kotlin conversion.

Test: ./gradlew checkApi
Bug: 240298691
Change-Id: Ia488c96e00888c9a36603722208436f270389a72
diff --git a/compose/runtime/runtime-livedata/build.gradle b/compose/runtime/runtime-livedata/build.gradle
index 8e02589..d9d8529 100644
--- a/compose/runtime/runtime-livedata/build.gradle
+++ b/compose/runtime/runtime-livedata/build.gradle
@@ -30,7 +30,7 @@
     implementation(libs.kotlinStdlib)
 
     api(project(":compose:runtime:runtime"))
-    api("androidx.lifecycle:lifecycle-livedata:2.2.0")
+    api(project(":lifecycle:lifecycle-livedata"))
     api(projectOrArtifact(":lifecycle:lifecycle-runtime"))
     implementation("androidx.compose.ui:ui:1.2.1")
 
diff --git a/compose/ui/ui-tooling/build.gradle b/compose/ui/ui-tooling/build.gradle
index ee89714d..80af0795 100644
--- a/compose/ui/ui-tooling/build.gradle
+++ b/compose/ui/ui-tooling/build.gradle
@@ -42,6 +42,7 @@
         implementation("androidx.savedstate:savedstate-ktx:1.2.0")
         implementation("androidx.compose.material:material:1.0.0")
         implementation(project(":activity:activity-compose"))
+        implementation(project(":lifecycle:lifecycle-common"))
 
         // kotlin-reflect and animation-tooling-internal are provided by Studio at runtime
         compileOnly(project(":compose:animation:animation-tooling-internal"))
@@ -89,6 +90,7 @@
 
                 implementation(project(":compose:material:material"))
                 implementation(project(":activity:activity-compose"))
+                implementation(project(":lifecycle:lifecycle-common"))
 
                 // kotlin-reflect and tooling-animation-internal are provided by Studio at runtime
                 compileOnly(project(":compose:animation:animation-tooling-internal"))
@@ -108,8 +110,8 @@
                 // Outside of androidx this is resolved via constraint added to lifecycle-common,
                 // but it doesn't work in androidx.
                 // See aosp/1804059
-                implementation("androidx.lifecycle:lifecycle-common-java8:2.5.1")
-                implementation("androidx.lifecycle:lifecycle-viewmodel-savedstate:2.5.1")
+                implementation(project(":lifecycle:lifecycle-common-java8"))
+                implementation(project(":lifecycle:lifecycle-viewmodel-savedstate"))
 
                 implementation(libs.junit)
                 implementation(libs.testRunner)
diff --git a/compose/ui/ui-tooling/src/androidMain/kotlin/androidx/compose/ui/tooling/ComposeViewAdapter.kt b/compose/ui/ui-tooling/src/androidMain/kotlin/androidx/compose/ui/tooling/ComposeViewAdapter.kt
index 7d12830..cfa0ef6 100644
--- a/compose/ui/ui-tooling/src/androidMain/kotlin/androidx/compose/ui/tooling/ComposeViewAdapter.kt
+++ b/compose/ui/ui-tooling/src/androidMain/kotlin/androidx/compose/ui/tooling/ComposeViewAdapter.kt
@@ -642,7 +642,8 @@
         override val savedStateRegistry: SavedStateRegistry
             get() = controller.savedStateRegistry
 
-        override fun getLifecycle(): Lifecycle = lifecycleRegistry
+        override val lifecycle: LifecycleRegistry
+            get() = lifecycleRegistry
     }
 
     private val FakeViewModelStoreOwner = object : ViewModelStoreOwner {
@@ -654,7 +655,8 @@
     private val FakeOnBackPressedDispatcherOwner = object : OnBackPressedDispatcherOwner {
         override val onBackPressedDispatcher = OnBackPressedDispatcher()
 
-        override fun getLifecycle() = FakeSavedStateRegistryOwner.lifecycleRegistry
+        override val lifecycle: LifecycleRegistry
+            get() = FakeSavedStateRegistryOwner.lifecycleRegistry
     }
 
     private val FakeActivityResultRegistryOwner = object : ActivityResultRegistryOwner {
diff --git a/compose/ui/ui/build.gradle b/compose/ui/ui/build.gradle
index f9d4bb9..91b0c291 100644
--- a/compose/ui/ui/build.gradle
+++ b/compose/ui/ui/build.gradle
@@ -168,6 +168,7 @@
                 implementation("androidx.autofill:autofill:1.0.0")
                 implementation(libs.kotlinCoroutinesAndroid)
 
+                implementation(project(":activity:activity"))
                 implementation("androidx.activity:activity-ktx:1.5.1")
                 implementation("androidx.core:core:1.9.0")
                 implementation('androidx.collection:collection:1.0.0')
@@ -243,6 +244,7 @@
                 implementation("androidx.recyclerview:recyclerview:1.3.0-alpha02")
                 implementation("androidx.core:core-ktx:1.2.0")
                 implementation("androidx.activity:activity-compose:1.5.1")
+                implementation(project(":lifecycle:lifecycle-common"))
             }
 
             desktopTest.dependencies {
diff --git a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/platform/DisposableSaveableStateRegistryTest.kt b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/platform/DisposableSaveableStateRegistryTest.kt
index 6d919b5..e6e19a8 100644
--- a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/platform/DisposableSaveableStateRegistryTest.kt
+++ b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/platform/DisposableSaveableStateRegistryTest.kt
@@ -25,7 +25,9 @@
 import android.util.SizeF
 import android.util.SparseArray
 import androidx.lifecycle.Lifecycle
+import androidx.lifecycle.LifecycleOwner
 import androidx.lifecycle.LifecycleRegistry
+import androidx.lifecycle.testing.TestLifecycleOwner
 import androidx.savedstate.SavedStateRegistry
 import androidx.savedstate.SavedStateRegistryController
 import androidx.savedstate.SavedStateRegistryOwner
@@ -252,19 +254,18 @@
 
 private class TestOwner(
     restoredBundle: Bundle? = null
-) : SavedStateRegistryOwner {
+) : SavedStateRegistryOwner, LifecycleOwner by TestLifecycleOwner(Lifecycle.State.INITIALIZED) {
 
-    private val lifecycle = LifecycleRegistry(this)
     private val controller = SavedStateRegistryController.create(this).apply {
         performRestore(restoredBundle ?: Bundle())
     }
+
     init {
-        lifecycle.currentState = Lifecycle.State.RESUMED
+        (lifecycle as LifecycleRegistry).currentState = Lifecycle.State.RESUMED
     }
 
     override val savedStateRegistry: SavedStateRegistry
         get() = controller.savedStateRegistry
-    override fun getLifecycle(): Lifecycle = lifecycle
 
     fun save() = Bundle().apply {
         controller.performSave(this)
diff --git a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/platform/WindowRecomposerTest.kt b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/platform/WindowRecomposerTest.kt
index 2ec7077..b4d9bbe 100644
--- a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/platform/WindowRecomposerTest.kt
+++ b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/platform/WindowRecomposerTest.kt
@@ -38,8 +38,7 @@
 import androidx.compose.ui.graphics.Color
 import androidx.core.view.get
 import androidx.lifecycle.Lifecycle
-import androidx.lifecycle.LifecycleOwner
-import androidx.lifecycle.LifecycleRegistry
+import androidx.lifecycle.testing.TestLifecycleOwner
 import androidx.test.core.app.ActivityScenario
 import androidx.test.ext.junit.runners.AndroidJUnit4
 import androidx.test.filters.LargeTest
@@ -226,13 +225,9 @@
     fun lifecycleAwareWindowRecomposerJoinsAfterDetach(): Unit = runBlocking {
         ActivityScenario.launch(ComponentActivity::class.java).use { scenario ->
             lateinit var recomposer: Recomposer
-            val lifecycleOwner = object : LifecycleOwner {
-                val lifecycle = LifecycleRegistry(this)
-                override fun getLifecycle(): Lifecycle = lifecycle
-            }
+            val lifecycleOwner = TestLifecycleOwner(Lifecycle.State.RESUMED)
             scenario.onActivity { activity ->
                 val view = View(activity)
-                lifecycleOwner.lifecycle.currentState = Lifecycle.State.RESUMED
                 recomposer = view.createLifecycleAwareWindowRecomposer(
                     lifecycle = lifecycleOwner.lifecycle
                 )
@@ -265,11 +260,7 @@
             lateinit var recomposer: Recomposer
             scenario.onActivity { activity ->
                 val view = View(activity)
-                val lifecycleOwner = object : LifecycleOwner {
-                    val lifecycle = LifecycleRegistry(this)
-                    override fun getLifecycle(): Lifecycle = lifecycle
-                }
-                lifecycleOwner.lifecycle.currentState = Lifecycle.State.RESUMED
+                val lifecycleOwner = TestLifecycleOwner(Lifecycle.State.RESUMED)
                 recomposer = view.createLifecycleAwareWindowRecomposer(
                     lifecycle = lifecycleOwner.lifecycle
                 )
diff --git a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/viewinterop/AndroidViewTest.kt b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/viewinterop/AndroidViewTest.kt
index 49fc678f..22b0751 100644
--- a/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/viewinterop/AndroidViewTest.kt
+++ b/compose/ui/ui/src/androidAndroidTest/kotlin/androidx/compose/ui/viewinterop/AndroidViewTest.kt
@@ -71,9 +71,9 @@
 import androidx.compose.ui.unit.IntSize
 import androidx.compose.ui.unit.LayoutDirection
 import androidx.compose.ui.unit.dp
-import androidx.lifecycle.Lifecycle
 import androidx.lifecycle.LifecycleOwner
 import androidx.lifecycle.findViewTreeLifecycleOwner
+import androidx.lifecycle.testing.TestLifecycleOwner
 import androidx.savedstate.SavedStateRegistry
 import androidx.savedstate.SavedStateRegistryOwner
 import androidx.savedstate.findViewTreeSavedStateRegistryOwner
@@ -458,8 +458,7 @@
     @Test
     fun androidView_propagatesLocalLifecycleOwnerAsViewTreeOwner() {
         lateinit var parentLifecycleOwner: LifecycleOwner
-        // We don't actually need to ever get the actual lifecycle.
-        val compositionLifecycleOwner = LifecycleOwner { throw UnsupportedOperationException() }
+        val compositionLifecycleOwner = TestLifecycleOwner()
         var childViewTreeLifecycleOwner: LifecycleOwner? = null
 
         rule.setContent {
@@ -492,13 +491,12 @@
     @Test
     fun androidView_propagatesLocalSavedStateRegistryOwnerAsViewTreeOwner() {
         lateinit var parentSavedStateRegistryOwner: SavedStateRegistryOwner
-        val compositionSavedStateRegistryOwner = object : SavedStateRegistryOwner {
-            // We don't actually need to ever get actual instances.
-            override fun getLifecycle(): Lifecycle = throw UnsupportedOperationException()
-
-            override val savedStateRegistry: SavedStateRegistry
-                get() = throw UnsupportedOperationException()
-        }
+        val compositionSavedStateRegistryOwner =
+            object : SavedStateRegistryOwner, LifecycleOwner by TestLifecycleOwner() {
+                // We don't actually need to ever get actual instance.
+                override val savedStateRegistry: SavedStateRegistry
+                    get() = throw UnsupportedOperationException()
+            }
         var childViewTreeSavedStateRegistryOwner: SavedStateRegistryOwner? = null
 
         rule.setContent {