Status Update
Comments
th...@gmail.com <th...@gmail.com> #2
Branch: androidx-master-dev
commit b90079595f33f58fece04026a97faa0d243acdb1
Author: Yuichi Araki <yaraki@google.com>
Date: Wed Sep 18 16:55:49 2019
Change the way to detect mismatch between POJO and query
This fixes cursor mismatch warnings with expandProjection.
Bug: 140759491
Test: QueryMethodProcessorTest
Change-Id: I7659002e5e0d1ef60fc1af2a625c0c36da0664d8
M room/compiler/src/main/kotlin/androidx/room/processor/QueryMethodProcessor.kt
M room/compiler/src/main/kotlin/androidx/room/solver/TypeAdapterStore.kt
M room/compiler/src/main/kotlin/androidx/room/solver/query/result/PojoRowAdapter.kt
M room/compiler/src/test/kotlin/androidx/room/processor/QueryMethodProcessorTest.kt
M room/compiler/src/test/kotlin/androidx/room/testing/TestProcessor.kt
il...@google.com <il...@google.com>
ap...@google.com <ap...@google.com> #3
ap...@google.com <ap...@google.com> #4
Branch: androidx-master-dev
commit bdde5a1a970ddc9007b28de4aa29d60ffa588f08
Author: Yigit Boyar <yboyar@google.com>
Date: Thu Apr 16 16:47:05 2020
Re-factor how errors are dismissed when query is re-written
This CL changes how we handle errors/warnings if query is
re-written.
There was a bug in expandProjection where we would report warnings
for things that Room already fixes automatically (
The solution to that problem (I7659002e5e0d1ef60fc1af2a625c0c36da0664d8)
solved it by deferring validating of columns until after re-write
decision is made. Unfortunately, this required changing PojoRowAdapter
to have a dummy mapping until it is validating, make it hard to use
as it does have a non-null mapping which is not useful.
This CL partially reverts that change and instead rely on the log
deferring logic we have in Context. This way, we don't need to break
the stability of PojoRowAdapter while still having the ability to
drop warnings that room fixes. This will also play nicer when we
have different query re-writing options that can use more information
about the query results.
Bug: 153387066
Bug: 140759491
Test: existing tests pass
Change-Id: I2ec967c763d33d7a3ff02c1a13c6953b460d1e5f
M room/compiler/src/main/kotlin/androidx/room/log/RLog.kt
M room/compiler/src/main/kotlin/androidx/room/processor/QueryMethodProcessor.kt
M room/compiler/src/main/kotlin/androidx/room/solver/TypeAdapterStore.kt
M room/compiler/src/main/kotlin/androidx/room/solver/query/result/PojoRowAdapter.kt
ap...@google.com <ap...@google.com> #5
Branch: androidx-main
commit 326c13fc1898318463f41acf070d4f6e78e9f694
Author: Marcello Galhardo <mgalhardo@google.com>
Date: Tue Feb 13 14:56:57 2024
Use `AutoCloseable` in `ViewModel`
* Replace `Closeable` by `AutoCloseable`.
* Kotlin Multiplatform does not support `Closeable`, only `AutoCloseable`. The change is required to migrate `lifecycle-viewmodel` to Multiplatform.
* Keep previous stable constructor as `Deprecated(level = DeprecationLevel.HIDDEN)` to not break backward compatibility.
* Set `bagOfTags` and `closeables` to `nullable` to remove redundant `@Suppress("RedundantNullableReturnType")` on each `null` check.
* Add KDoc to `bagOfTags` to better explain the expected behaviour, and compatibility considerations.
RelNote: "`ViewModel` now uses `AutoCloseable` instead of `Closeable`. That is a backward compatible change, introduced to allow `lifecycle-viewmodel` to migrate to Kotlin Multiplatform."
Bug: 214568825
Test: ./gradlew :lifecycle:lifecycle-viewmodel:checkApi
Test: ./gradlew :lifecycle:lifecycle-viewmodel:connectedDebugAndroidTest
Test: ./gradlew :lifecycle:lifecycle-viewmodel:testDebugUnitTest
Change-Id: I27f8e7c85e59aae7c268d66d98f70d717d6f3c83
M lifecycle/lifecycle-viewmodel/api/current.txt
M lifecycle/lifecycle-viewmodel/api/restricted_current.txt
M lifecycle/lifecycle-viewmodel/src/androidMain/kotlin/androidx/lifecycle/ViewModel.kt
mg...@google.com <mg...@google.com>
ap...@google.com <ap...@google.com> #6
Branch: androidx-main
commit ee7828cd1baf3375fee05b3b17b4cb39706576ac
Author: Marcello Galhardo <mgalhardo@google.com>
Date: Thu Feb 15 15:56:08 2024
Move `ViewModel` files without deps to `commonMain`
* Move all source files that does not have a dependency with `ViewModelProvider` from `androidMain` to `commonMain`
Bug: 214568825
Test: ./gradlew :lifecycle:lifecycle-viewmodel:checkApi
Test: ./gradlew :lifecycle:lifecycle-viewmodel:connectedDebugAndroidTest
Test: ./gradlew :lifecycle:lifecycle-viewmodel:testDebugUnitTest
Test: ./gradlew :lifecycle:lifecycle-viewmodel:validateMultiplatformSourceSetNaming
Change-Id: I9f81b600ae052ca979b3aae6c3b2b3954efb9e3a
M lifecycle/lifecycle-viewmodel/src/commonMain/kotlin/androidx/lifecycle/ViewModelStore.kt
M lifecycle/lifecycle-viewmodel/src/commonMain/kotlin/androidx/lifecycle/ViewModelStoreOwner.kt
M lifecycle/lifecycle-viewmodel/src/commonMain/kotlin/androidx/lifecycle/viewmodel/CreationExtras.kt
ap...@google.com <ap...@google.com> #7
Branch: androidx-main
commit 965e5b9bfa6b9074903a5ca737af623e4313272c
Author: Marcello Galhardo <mgalhardo@google.com>
Date: Thu Feb 15 11:07:57 2024
Set-up common dependencies for ViewModel KMP
* Includes all multiplatform version from `androidMain.dependencies`.
Bug: 214568825
Test: manual (project builds)
Change-Id: I55538f4640072bca8ac9305fe0562a5e0a55a20c
M lifecycle/lifecycle-viewmodel/build.gradle
ap...@google.com <ap...@google.com> #8
Branch: androidx-main
commit 5c19d5033cbfe2c9be61522f6d56e947fcf0ee0e
Author: Marcello Galhardo <mgalhardo@google.com>
Date: Thu Feb 15 11:49:48 2024
Migrate `ViewModel` class to KMP
* Includes `atomicfu` as a dependency. We need access to `kotlinx.atomicfu.locks.synchronized` for converting the internal `ViewModel` synchronization logic to multiplatform.
Bug: 214568825
Test: ./gradlew :lifecycle:lifecycle-viewmodel:checkApi
Test: ./gradlew :lifecycle:lifecycle-viewmodel:connectedDebugAndroidTest
Test: ./gradlew :lifecycle:lifecycle-viewmodel:testDebugUnitTest
Change-Id: I18fc338a41c9d032163f686892e04212a881face
M lifecycle/lifecycle-viewmodel/build.gradle
D lifecycle/lifecycle-viewmodel/src/androidMain/kotlin/androidx/lifecycle/ViewModel.android.kt
A lifecycle/lifecycle-viewmodel/src/commonMain/kotlin/androidx/lifecycle/ViewModel.kt
A lifecycle/lifecycle-viewmodel/src/commonMain/kotlin/androidx/lifecycle/viewmodel/internal/ViewModelImpl.kt
A lifecycle/lifecycle-viewmodel/src/jvmMain/kotlin/androidx/lifecycle/ViewModel.jvm.kt
A lifecycle/lifecycle-viewmodel/src/nativeMain/kotlin/androidx/lifecycle/ViewModel.native.kt
ap...@google.com <ap...@google.com> #9
Branch: androidx-main
commit 0e3cb6e4730e0bdfc6005b0806e4df757c2a449c
Author: Marcello Galhardo <mgalhardo@google.com>
Date: Fri Feb 16 16:37:08 2024
Migrate `ViewModelProviderGet` class to KMP
Bug: 214568825
Test: ./gradlew :lifecycle:lifecycle-viewmodel:checkApi
Test: ./gradlew :lifecycle:lifecycle-viewmodel:connectedDebugAndroidTest
Test: ./gradlew :lifecycle:lifecycle-viewmodel:testDebugUnitTest
Change-Id: I953a052cb891ff9813daa67e12dff4ff19a7167d
M lifecycle/lifecycle-viewmodel/src/commonMain/kotlin/androidx/lifecycle/ViewModelProviderGet.kt
ap...@google.com <ap...@google.com> #10
Branch: androidx-main
commit d05b9d6dd4daa1442f014e21a062300b5790e441
Author: Marcello Galhardo <mgalhardo@google.com>
Date: Thu Feb 15 19:42:27 2024
Migrate `ViewModelProvider` class to KMP
* `ViewModelProvider`, all nested types and classes with cyclic dependency have been converted to Kotlin Multiplatform.
* All methods that expects a `java.lang.Class<T>` have been converted to `expect`/`actual`, and received a new `KClass<T>` overload.
* A new constructor for `ViewModelProvider` has been added to avoid breaking binary compatibility with the Android source: the original Android source would generate overloaded constructors and a public synthetic constructor with last parameter as `DefaultConstructorMarker`, but when combining `JvmOverloads` with `expect`/`actual`, the synthetic constructor has not been generated. That is a binary compatibility.
* The `@JvmOverload` constructor has been left as an Android-only API for now.
* Kotlin Multiplatform does not support expect class with default implementation yet. Hence, the common logic has been extracted to an internal `ViewModelProviderImpl` (for stateful logic) and `ViewModelProviders` (for stateless logic).
RelNote: "`ViewModelProvider` is now Kotlin Multiplatform. To accommodate this change, compatibility methods have been added for handling `java.lang.Class<T>` and `kotlin.reflect.KClass<T>`."
Bug: 214568825
Test: ./gradlew :lifecycle:lifecycle-viewmodel:checkApi
Test: ./gradlew :lifecycle:lifecycle-viewmodel:connectedDebugAndroidTest
Test: ./gradlew :lifecycle:lifecycle-viewmodel:testDebugUnitTest
Change-Id: I898c8d73432c41045ef5e330741b0c724f92ee1f
M lifecycle/lifecycle-viewmodel/api/api_lint.ignore
M lifecycle/lifecycle-viewmodel/api/current.txt
M lifecycle/lifecycle-viewmodel/api/restricted_current.txt
M lifecycle/lifecycle-viewmodel/src/androidMain/kotlin/androidx/lifecycle/ViewModelProvider.android.kt
M lifecycle/lifecycle-viewmodel/src/androidMain/kotlin/androidx/lifecycle/viewmodel/InitializerViewModelFactory.android.kt
M lifecycle/lifecycle-viewmodel/src/commonMain/kotlin/androidx/lifecycle/HasDefaultViewModelProviderFactory.android.kt
A lifecycle/lifecycle-viewmodel/src/commonMain/kotlin/androidx/lifecycle/ViewModelProvider.kt
A lifecycle/lifecycle-viewmodel/src/commonMain/kotlin/androidx/lifecycle/viewmodel/InitializerViewModelFactory.kt
A lifecycle/lifecycle-viewmodel/src/commonMain/kotlin/androidx/lifecycle/viewmodel/internal/DefaultViewModelProviderFactory.kt
A lifecycle/lifecycle-viewmodel/src/commonMain/kotlin/androidx/lifecycle/viewmodel/internal/ViewModelProviderImpl.kt
A lifecycle/lifecycle-viewmodel/src/commonMain/kotlin/androidx/lifecycle/viewmodel/internal/ViewModelProviders.kt
A lifecycle/lifecycle-viewmodel/src/desktopMain/kotlin/androidx/lifecycle/ViewModelProvider.desktop.kt
A lifecycle/lifecycle-viewmodel/src/desktopMain/kotlin/androidx/lifecycle/viewmodel/InitializerViewModelFactory.desktop.kt
A lifecycle/lifecycle-viewmodel/src/jvmMain/kotlin/androidx/lifecycle/viewmodel/internal/DefaultViewModelProviderFactory.jvm.kt
A lifecycle/lifecycle-viewmodel/src/jvmMain/kotlin/androidx/lifecycle/viewmodel/internal/JvmViewModelProviders.kt
A lifecycle/lifecycle-viewmodel/src/nativeMain/kotlin/androidx/lifecycle/ViewModelProvider.native.kt
A lifecycle/lifecycle-viewmodel/src/nativeMain/kotlin/androidx/lifecycle/viewmodel/InitializerViewModelFactory.native.kt
A lifecycle/lifecycle-viewmodel/src/nativeMain/kotlin/androidx/lifecycle/viewmodel/internal/DefaultViewModelProviderFactory.native.kt
ap...@google.com <ap...@google.com> #11
Branch: androidx-main
commit d209cc4713f19ec534bd94c91276443ac05edf99
Author: Marcello Galhardo <mgalhardo@google.com>
Date: Fri Feb 16 16:39:17 2024
Migrate `ViewModelLazy` class to KMP
Bug: 214568825
Test: ./gradlew :lifecycle:lifecycle-viewmodel:checkApi
Test: ./gradlew :lifecycle:lifecycle-viewmodel:connectedDebugAndroidTest
Test: ./gradlew :lifecycle:lifecycle-viewmodel:testDebugUnitTest
Change-Id: I6485752da173356ea4fef4505d9ec53c1145e91a
M lifecycle/lifecycle-viewmodel/src/commonMain/kotlin/androidx/lifecycle/ViewModelLazy.kt
ap...@google.com <ap...@google.com> #12
Branch: androidx-main
commit 2b0f90508a5821c82e9b2e73a9d44ae3753a3b06
Author: Marcello Galhardo <mgalhardo@google.com>
Date: Thu Feb 15 15:40:43 2024
Add `android` suffix to all `ViewModel.androidMain` files
* Required to comply with `:lifecycle:lifecycle-viewmodel:validateMultiplatformSourceSetNaming` task.
Bug: 214568825
Test: ./gradlew :lifecycle:lifecycle-viewmodel:checkApi
Test: ./gradlew :lifecycle:lifecycle-viewmodel:connectedDebugAndroidTest
Test: ./gradlew :lifecycle:lifecycle-viewmodel:testDebugUnitTest
Test: ./gradlew :lifecycle:lifecycle-viewmodel:validateMultiplatformSourceSetNaming
Change-Id: I41235a51bb943cf26e23f27d50dcad97ec588290
M lifecycle/lifecycle-viewmodel/src/androidMain/kotlin/androidx/lifecycle/AndroidViewModel.android.kt
M lifecycle/lifecycle-viewmodel/src/androidMain/kotlin/androidx/lifecycle/HasDefaultViewModelProviderFactory.android.kt
M lifecycle/lifecycle-viewmodel/src/androidMain/kotlin/androidx/lifecycle/ViewModel.android.kt
M lifecycle/lifecycle-viewmodel/src/androidMain/kotlin/androidx/lifecycle/ViewModelLazy.android.kt
M lifecycle/lifecycle-viewmodel/src/androidMain/kotlin/androidx/lifecycle/ViewModelProvider.android.kt
A lifecycle/lifecycle-viewmodel/src/androidMain/kotlin/androidx/lifecycle/ViewModelProviderGet.android.kt
M lifecycle/lifecycle-viewmodel/src/androidMain/kotlin/androidx/lifecycle/ViewModelStore.android.kt
M lifecycle/lifecycle-viewmodel/src/androidMain/kotlin/androidx/lifecycle/ViewModelStoreOwner.android.kt
M lifecycle/lifecycle-viewmodel/src/androidMain/kotlin/androidx/lifecycle/ViewTreeViewModel.android.kt
M lifecycle/lifecycle-viewmodel/src/androidMain/kotlin/androidx/lifecycle/ViewTreeViewModelStoreOwner.android.kt
M lifecycle/lifecycle-viewmodel/src/androidMain/kotlin/androidx/lifecycle/viewmodel/CreationExtras.android.kt
M lifecycle/lifecycle-viewmodel/src/androidMain/kotlin/androidx/lifecycle/viewmodel/InitializerViewModelFactory.android.kt
ap...@google.com <ap...@google.com> #13
Branch: androidx-main
commit e7aad89323a8f7be4593b6b459e6c08696211e39
Author: Marcello Galhardo <mgalhardo@google.com>
Date: Wed Feb 21 18:03:35 2024
Move `ViewModel` tests to `commonTest`
* Migrate all tests, except `ViewModelProviderTest` to `commonTest`.
* Replace `truth` usage for `kruth`.
* Tests dependencies are shared between `androidUnitTest` and `androidInstrumentedTest` by using a `jvmTest` common ancestor.
Bug: 214568825
Test: ./gradlew :lifecycle:lifecycle-viewmodel:testDebugUnitTest
Test: ./gradlew :lifecycle:lifecycle-viewmodel:macosArm64Test
Change-Id: I1c55193640ceb92839c79363637fbed08b020d9a
M lifecycle/lifecycle-viewmodel/build.gradle
M lifecycle/lifecycle-viewmodel/src/androidInstrumentedTest/kotlin/androidx/lifecycle/AndroidViewModelFactoryTest.kt
M lifecycle/lifecycle-viewmodel/src/androidInstrumentedTest/kotlin/androidx/lifecycle/CreationExtrasTest.kt
M lifecycle/lifecycle-viewmodel/src/androidInstrumentedTest/kotlin/androidx/lifecycle/ViewModelScopeTest.kt
M lifecycle/lifecycle-viewmodel/src/androidInstrumentedTest/kotlin/androidx/lifecycle/ViewTreeViewModelStoreOwnerTest.kt
A lifecycle/lifecycle-viewmodel/src/androidUnitTest/kotlin/androidx/lifecycle/MockViewModelStoreTest.kt
A lifecycle/lifecycle-viewmodel/src/androidUnitTest/kotlin/androidx/lifecycle/MockViewModelTest.kt
D lifecycle/lifecycle-viewmodel/src/androidUnitTest/kotlin/androidx/lifecycle/ViewModelLazyTest.kt
D lifecycle/lifecycle-viewmodel/src/androidUnitTest/kotlin/androidx/lifecycle/ViewModelProviderReifiedTest.kt
M lifecycle/lifecycle-viewmodel/src/androidUnitTest/kotlin/androidx/lifecycle/ViewModelProviderTest.kt
D lifecycle/lifecycle-viewmodel/src/androidUnitTest/kotlin/androidx/lifecycle/ViewModelStoreTest.kt
D lifecycle/lifecycle-viewmodel/src/androidUnitTest/kotlin/androidx/lifecycle/ViewModelTest.kt
A lifecycle/lifecycle-viewmodel/src/commonTest/kotlin/androidx/lifecycle/ViewModelLazyTest.kt
A lifecycle/lifecycle-viewmodel/src/commonTest/kotlin/androidx/lifecycle/ViewModelProviderGetTest.kt
A lifecycle/lifecycle-viewmodel/src/commonTest/kotlin/androidx/lifecycle/ViewModelStoreTest.kt
A lifecycle/lifecycle-viewmodel/src/commonTest/kotlin/androidx/lifecycle/ViewModelTest.kt
M lifecycle/lifecycle-viewmodel/src/commonTest/kotlin/androidx/lifecycle/viewmodel/ViewModelInitializerTest.kt
ap...@google.com <ap...@google.com> #14
Branch: androidx-main
commit a9db8a527af2df6402d9ffd2358e983360eacf5e
Author: Marcello Galhardo <mgalhardo@google.com>
Date: Fri Feb 23 10:33:42 2024
Add tests for `NewInstanceFactory`
* Adds new tests for `NewInstanceFactoryTest`. Previously, it was tested in `ViewModelProviderTest` but that is not possible anymore - as `NewInstanceFactory` is Android-only and `ViewModelProviderTest` is in common.
Bug: 214568825
Test: ./gradlew :lifecycle:lifecycle-viewmodel:testDebugUnitTest
Test: ./gradlew :lifecycle:lifecycle-viewmodel:macosArm64Test
Change-Id: Ie3d33f8c46b46c0f7be595f430618cb7d8ec77e8
A lifecycle/lifecycle-viewmodel/src/androidUnitTest/kotlin/androidx/lifecycle/NewInstanceFactoryTest.kt
ap...@google.com <ap...@google.com> #15
Branch: androidx-main
commit 084be9db68c065e7a1d3cdd6394728b38fdb5b93
Author: Marcello Galhardo <mgalhardo@google.com>
Date: Fri Feb 23 10:32:35 2024
Add tests for `DefaultViewModelProviderFactory`
* Adds tests for `DefaultViewModelProviderFactory` for both Native and JVM targets.
* Native and Jvm targets have different implementations, as we can't instantiate a `ViewModel` using the no-args constructor without including `kotlin-reflect-full` on native.
Bug: 214568825
Test: ./gradlew :lifecycle:lifecycle-viewmodel:testDebugUnitTest
Test: ./gradlew :lifecycle:lifecycle-viewmodel:macosArm64Test
Change-Id: I178188c783bd1df20decda867373bffa574e53f5
A lifecycle/lifecycle-viewmodel/src/jvmTest/kotlin/androidx/lifecycle/viewmodel/internal/DefaultViewModelProviderFactoryTest.kt
A lifecycle/lifecycle-viewmodel/src/nativeTest/kotlin/androidx/lifecycle/viewmodel/internal/DefaultViewModelProviderFactoryTest.kt
ap...@google.com <ap...@google.com> #16
Branch: androidx-main
commit 82839d3c84556c50c102615688aa1416570339a3
Author: Marcello Galhardo <mgalhardo@google.com>
Date: Fri Feb 23 10:31:16 2024
Add tests for `getDefaultFactory` and `getDefaultExtras`
* Adds tests for common functions `ViewModelProviders.getDefaultFactory` and `ViewModelProviders.getDefaultExtras`, as those default parameters are not called in the `ViewModelProviderTest`.
Bug: 214568825
Test: ./gradlew :lifecycle:lifecycle-viewmodel:testDebugUnitTest
Test: ./gradlew :lifecycle:lifecycle-viewmodel:macosArm64Test
Change-Id: I6157cb514fd6c72e5c17d4f506a1e70a9aab0d2a
A lifecycle/lifecycle-viewmodel/src/commonTest/kotlin/androidx/lifecycle/viewmodel/internal/ViewModelProvidersTest.kt
ap...@google.com <ap...@google.com> #17
Branch: androidx-main
commit 0cbcf323605e7cd63a4fd92fb61f579be4f36e3b
Author: Marcello Galhardo <mgalhardo@google.com>
Date: Thu Feb 22 15:30:28 2024
Move `ViewModelProvider` tests to `commonTest`
* Migrates `ViewModelProviderTest` to `commonTest`.
Bug: 214568825
Test: ./gradlew :lifecycle:lifecycle-viewmodel:testDebugUnitTest
Test: ./gradlew :lifecycle:lifecycle-viewmodel:macosArm64Test
Change-Id: Ieb45f565ff79c133fb1f614a7f9a5c3b4d1705e0
D lifecycle/lifecycle-viewmodel/src/androidUnitTest/kotlin/androidx/lifecycle/ViewModelProviderTest.kt
A lifecycle/lifecycle-viewmodel/src/commonTest/kotlin/androidx/lifecycle/ViewModelProviderTest.kt
ap...@google.com <ap...@google.com> #18
Branch: androidx-main
commit 6c9d9f858cf59ddecf53027c80a36e180006c3b8
Author: Marcello Galhardo <mgalhardo@google.com>
Date: Mon Feb 26 10:33:05 2024
Set native `ViewModelProvider.Factory` to throw `UnsupportedOperationException`
* `ViewModelProvider.Factory.create` has a default implementation to maintain compatibility with the Android target; but should be directly implemented by any caller.
* Invoking `ViewModelProvider.Factory.create` now throws an exception from all platforms.
Bug: 214568825
Test: ./gradlew :lifecycle:lifecycle-viewmodel:checkApi
Test: ./gradlew :lifecycle:lifecycle-viewmodel:connectedDebugAndroidTest
Test: ./gradlew :lifecycle:lifecycle-viewmodel:testDebugUnitTest
Change-Id: I6fcd5ee66184d74bd885a6618d3ceacbd7b7da2f
M lifecycle/lifecycle-viewmodel/src/commonMain/kotlin/androidx/lifecycle/ViewModelProvider.kt
M lifecycle/lifecycle-viewmodel/src/commonMain/kotlin/androidx/lifecycle/viewmodel/internal/ViewModelProviderImpl.kt
M lifecycle/lifecycle-viewmodel/src/commonMain/kotlin/androidx/lifecycle/viewmodel/internal/ViewModelProviders.kt
M lifecycle/lifecycle-viewmodel/src/nativeMain/kotlin/androidx/lifecycle/ViewModelProvider.native.kt
M lifecycle/lifecycle-viewmodel/src/nativeTest/kotlin/androidx/lifecycle/viewmodel/internal/DefaultViewModelProviderFactoryTest.kt
ap...@google.com <ap...@google.com> #19
Branch: androidx-main
commit 9e09262d2635d2dcc6b64c2b531230e5c5627561
Author: Marcello Galhardo <mgalhardo@google.com>
Date: Mon Feb 26 11:39:32 2024
Remove `atomicfu` from `viewmodel`
* JVM targets will use the default JVM `synchronized`, while native will fallback to `atomicfu` implementation.
* See [here](
Bug: 214568825
Test: ./gradlew :lifecycle:lifecycle-viewmodel:checkApi
Test: ./gradlew :lifecycle:lifecycle-viewmodel:connectedDebugAndroidTest
Test: ./gradlew :lifecycle:lifecycle-viewmodel:testDebugUnitTest
Change-Id: I091c74361c13f434ffaaa6d124a7f972ced38bed
M lifecycle/lifecycle-viewmodel/build.gradle
A lifecycle/lifecycle-viewmodel/src/commonMain/kotlin/androidx/lifecycle/viewmodel/internal/Lock.kt
M lifecycle/lifecycle-viewmodel/src/commonMain/kotlin/androidx/lifecycle/viewmodel/internal/ViewModelImpl.kt
A lifecycle/lifecycle-viewmodel/src/darwinMain/kotlin/androidx/lifecycle/viewmodel/internal/Lock.native.darwin.kt
A lifecycle/lifecycle-viewmodel/src/jvmMain/kotlin/androidx/lifecycle/viewmodel/internal/Lock.jvm.kt
A lifecycle/lifecycle-viewmodel/src/linuxMain/kotlin/androidx/lifecycle/viewmodel/internal/Lock.native.linux.kt
A lifecycle/lifecycle-viewmodel/src/nativeMain/kotlin/androidx/lifecycle/viewmodel/internal/Lock.native.kt
ap...@google.com <ap...@google.com> #20
Branch: androidx-main
commit 1eebb19e3f060d9f76522923adc019701858d371
Author: Marcello Galhardo <mgalhardo@google.com>
Date: Mon Feb 26 11:04:19 2024
Add a public `VIEW_MODEL_KEY` to `ViewModelProvider`
RelNote: "Expose `VIEW_MODEL_KEY` as a public property. `VIEW_MODEL_KEY` will be used by other platforms to integrate with `lifecycle-viewmodel` artifact."
Bug: 214568825
Test: ./gradlew :lifecycle:lifecycle-viewmodel:checkApi
Test: ./gradlew :lifecycle:lifecycle-viewmodel:connectedDebugAndroidTest
Test: ./gradlew :lifecycle:lifecycle-viewmodel:testDebugUnitTest
Change-Id: I8143b0d63c8d7efb16b4ec2d71e66754908d9545
M lifecycle/lifecycle-viewmodel/api/current.txt
M lifecycle/lifecycle-viewmodel/api/restricted_current.txt
M lifecycle/lifecycle-viewmodel/src/androidMain/kotlin/androidx/lifecycle/ViewModelProvider.android.kt
M lifecycle/lifecycle-viewmodel/src/commonMain/kotlin/androidx/lifecycle/ViewModelProvider.kt
M lifecycle/lifecycle-viewmodel/src/desktopMain/kotlin/androidx/lifecycle/ViewModelProvider.desktop.kt
M lifecycle/lifecycle-viewmodel/src/nativeMain/kotlin/androidx/lifecycle/ViewModelProvider.native.kt
ap...@google.com <ap...@google.com> #21
Branch: androidx-main
commit b7639a1c78da27755a2f7c05e16039a25689da05
Author: Ivan Matkov <ivan.matkov@jetbrains.com>
Date: Fri Feb 23 12:42:55 2024
Align source sets in lifecycle-viewmodel with JetBrains fork
- Move shared code into `nonJvmMain` (a common source set for native and web targets)
- Use expect/actual for `qualifiedName`
- Remove `macEnabled`/`linuxEnabled` conditions as it's enabled by default now
Bug: 214568825
Test: N/A
Change-Id: I3623f265fed7bd2db3c934a48c7dbbc865d94f22
M lifecycle/lifecycle-viewmodel/build.gradle
M lifecycle/lifecycle-viewmodel/src/commonMain/kotlin/androidx/lifecycle/viewmodel/internal/ViewModelProviders.kt
M lifecycle/lifecycle-viewmodel/src/darwinMain/kotlin/androidx/lifecycle/viewmodel/internal/Lock.darwin.kt
A lifecycle/lifecycle-viewmodel/src/jvmMain/kotlin/androidx/lifecycle/viewmodel/internal/ViewModelProviders.jvm.kt
M lifecycle/lifecycle-viewmodel/src/linuxMain/kotlin/androidx/lifecycle/viewmodel/internal/Lock.linux.kt
A lifecycle/lifecycle-viewmodel/src/nativeMain/kotlin/androidx/lifecycle/viewmodel/internal/ViewModelProviders.native.kt
M lifecycle/lifecycle-viewmodel/src/nonJvmMain/kotlin/androidx/lifecycle/ViewModel.nonJvm.kt
M lifecycle/lifecycle-viewmodel/src/nonJvmMain/kotlin/androidx/lifecycle/ViewModelProvider.nonJvm.kt
M lifecycle/lifecycle-viewmodel/src/nonJvmMain/kotlin/androidx/lifecycle/viewmodel/InitializerViewModelFactory.nonJvm.kt
M lifecycle/lifecycle-viewmodel/src/nonJvmMain/kotlin/androidx/lifecycle/viewmodel/internal/DefaultViewModelProviderFactory.nonJvm.kt
eg...@gmail.com <eg...@gmail.com> #22
Hello, is it possible to make clear
method not internal?
A lot of kmp libraries creates own version ViewModel due to this method is not accessible outside.
mg...@google.com <mg...@google.com> #23
mg...@google.com <mg...@google.com> #24
Hey
mg...@google.com <mg...@google.com>
pr...@google.com <pr...@google.com> #25
The following release(s) address this bug.It is possible this bug has only been partially addressed:
androidx.lifecycle:lifecycle-viewmodel:2.8.0-alpha03
androidx.lifecycle:lifecycle-viewmodel-android:2.8.0-alpha03
ap...@google.com <ap...@google.com> #26
Branch: androidx-main
commit 338c9cb8cd7027d77e2686832bebd157604c0718
Author: Marcello Galhardo <mgalhardo@google.com>
Date: Thu Mar 28 16:08:13 2024
Use `canonicalName` for `InitializerViewModelFactoryBuilder`
Test: `lifecycle-viewmodel` tests
Bug: 214568825
Change-Id: I9dc55b018de39b8c766d4f9bd7bb9c45212076c7
M lifecycle/lifecycle-viewmodel/src/commonMain/kotlin/androidx/lifecycle/viewmodel/InitializerViewModelFactory.kt
ap...@google.com <ap...@google.com> #27
Branch: androidx-main
commit bfa95f2a028916a70b45114cc3c32b42da8b9a7e
Author: Marcello Galhardo <mgalhardo@google.com>
Date: Thu Mar 28 15:18:59 2024
Align multiplatform `lock` with `synchronized` semantics in `viewmodel`
* Replaces `Lock` usage in `viewmodel` with `synchronized` semantics to reduce confusion with `ReentrantLock` and provide a more intuitive behaviour.
* Adopts the structure of `SynchronizedObject`, `synchronized`, and `synchronizedImpl` from `kotlin.coroutines.internal` to maintain consistency.
* Implements a workaround for the Kotlin issue KT-29963 (
Test: `lifecycle-viewmodel` tests
Bug: 214568825
Change-Id: I43c7a0dd4d6b5eac0e273f62b6d462188f96a0c2
M lifecycle/lifecycle-viewmodel/build.gradle
M lifecycle/lifecycle-viewmodel/src/commonMain/kotlin/androidx/lifecycle/ViewModel.kt
D lifecycle/lifecycle-viewmodel/src/commonMain/kotlin/androidx/lifecycle/viewmodel/internal/Lock.kt
A lifecycle/lifecycle-viewmodel/src/commonMain/kotlin/androidx/lifecycle/viewmodel/internal/SynchronizedObject.kt
M lifecycle/lifecycle-viewmodel/src/commonMain/kotlin/androidx/lifecycle/viewmodel/internal/ViewModelImpl.kt
M lifecycle/lifecycle-viewmodel/src/jvmMain/kotlin/androidx/lifecycle/viewmodel/internal/SynchronizedObject.jvm.kt
M lifecycle/lifecycle-viewmodel/src/nativeMain/kotlin/androidx/lifecycle/viewmodel/internal/SynchronizedObject.native.kt
na...@google.com <na...@google.com> #28
The following release(s) address this bug.It is possible this bug has only been partially addressed:
androidx.lifecycle:lifecycle-viewmodel:2.8.0-beta01
androidx.lifecycle:lifecycle-viewmodel-android:2.8.0-beta01
androidx.lifecycle:lifecycle-viewmodel-desktop:2.8.0-beta01
androidx.lifecycle:lifecycle-viewmodel-iosarm64:2.8.0-beta01
androidx.lifecycle:lifecycle-viewmodel-iossimulatorarm64:2.8.0-beta01
androidx.lifecycle:lifecycle-viewmodel-iosx64:2.8.0-beta01
androidx.lifecycle:lifecycle-viewmodel-linuxx64:2.8.0-beta01
androidx.lifecycle:lifecycle-viewmodel-macosarm64:2.8.0-beta01
androidx.lifecycle:lifecycle-viewmodel-macosx64:2.8.0-beta01
pa...@gmail.com <pa...@gmail.com> #29
I couldn't find if there is a separate issue for this, but we should probably also port lifecycle-viewmodel-kts
to KMP.
In the current 2.8.0-beta01
, it's still defined only as an android library only:
Let me know if we need a new issue ticket for this piece of work :)
il...@google.com <il...@google.com> #30
Re -ktx
modules are empty. You should just use the base artifacts.
Description
I am using compose-jb to make my app multiplatform, but I can't use ViewModel in my desktop app, I am trying to keep the same code for both platforms, but ViewModel is not available.
Going through the code, most of the classes can be easily made multiplatform.
ViewModelStore and ViewModel can be used very easy in desktop+android because of JVM.
Right now I have to create my own library that uses expect in the common module and copy paste the code from the source file to actual JVM implementation.