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 {