Fixed
Status Update
Comments
il...@google.com <il...@google.com>
il...@google.com <il...@google.com>
ap...@google.com <ap...@google.com> #2
Project: platform/frameworks/support
Branch: androidx-main
commit b697d397d051f91a6f6ed95a55af421f048f3c89
Author: Sanura Njaka <sanura@google.com>
Date: Wed Aug 02 12:16:12 2023
Folding lifecycle-livedata-core-ktx back into main
module
Now that Lifecycle tests are written in kotlin, LiveDataTest
can be moved from lifecycle-livedata-core-ktx into LiveDataTest
within the main lifecycle-livedata-core module.
Test: ./gradlew bOS
Bug: 274800183
Change-Id: I98806ad751bd674a554de665e0e16bf05d67900d
D lifecycle/lifecycle-livedata-core-ktx/src/test/java/androidx/lifecycle/LiveDataTest.kt
M lifecycle/lifecycle-livedata-core/src/test/java/androidx/lifecycle/LiveDataTest.kt
https://android-review.googlesource.com/2690010
Branch: androidx-main
commit b697d397d051f91a6f6ed95a55af421f048f3c89
Author: Sanura Njaka <sanura@google.com>
Date: Wed Aug 02 12:16:12 2023
Folding lifecycle-livedata-core-ktx back into main
module
Now that Lifecycle tests are written in kotlin, LiveDataTest
can be moved from lifecycle-livedata-core-ktx into LiveDataTest
within the main lifecycle-livedata-core module.
Test: ./gradlew bOS
Bug: 274800183
Change-Id: I98806ad751bd674a554de665e0e16bf05d67900d
D lifecycle/lifecycle-livedata-core-ktx/src/test/java/androidx/lifecycle/LiveDataTest.kt
M lifecycle/lifecycle-livedata-core/src/test/java/androidx/lifecycle/LiveDataTest.kt
il...@google.com <il...@google.com> #3
Project: platform/frameworks/support
Branch: androidx-main
commit cd3c1d7751462b5e42ae54e2d68299f955dcb6c3
Author: Sanura Njaka <sanura@google.com>
Date: Mon Aug 07 07:34:20 2023
Folding lifecycle-livedata-ktx back into main
module
Now that Lifecycle tests are written in kotlin, all files in lifecycle-livedata-ktx can now be added into the main lifecycle-livedata module.
RelNote: "All files from the lifecycle-livedata-ktx modules have been moved into the main lifecycle-livedata module"
Test: ./gradlew bOS
Bug: 274800183
Change-Id: I10c6f70c82a64e80eec704f548911f42bdd0b56a
M lifecycle/lifecycle-livedata-ktx/api/current.ignore
M lifecycle/lifecycle-livedata-ktx/api/current.txt
M lifecycle/lifecycle-livedata-ktx/api/restricted_current.ignore
M lifecycle/lifecycle-livedata-ktx/api/restricted_current.txt
M lifecycle/lifecycle-livedata/api/current.txt
M lifecycle/lifecycle-livedata/api/restricted_current.txt
M lifecycle/lifecycle-livedata/build.gradle
M lifecycle/lifecycle-livedata/src/androidTest/java/androidx.lifecycle/FlowAsLiveDataIntegrationTest.kt
M lifecycle/lifecycle-livedata/src/main/java/androidx/lifecycle/CoroutineLiveData.kt
M lifecycle/lifecycle-livedata/src/main/java/androidx/lifecycle/FlowLiveData.kt
M lifecycle/lifecycle-livedata/src/test/java/androidx/lifecycle/BuildLiveDataTest.kt
M lifecycle/lifecycle-livedata/src/test/java/androidx/lifecycle/FlowAsLiveDataTest.kt
M lifecycle/lifecycle-livedata/src/test/java/androidx/lifecycle/LiveDataAsFlowTest.kt
M lifecycle/lifecycle-livedata/src/test/java/androidx/lifecycle/LiveDataFlowJavaTest.java
M lifecycle/lifecycle-livedata/src/test/java/androidx/lifecycle/ScopesRule.kt
https://android-review.googlesource.com/2695173
Branch: androidx-main
commit cd3c1d7751462b5e42ae54e2d68299f955dcb6c3
Author: Sanura Njaka <sanura@google.com>
Date: Mon Aug 07 07:34:20 2023
Folding lifecycle-livedata-ktx back into main
module
Now that Lifecycle tests are written in kotlin, all files in lifecycle-livedata-ktx can now be added into the main lifecycle-livedata module.
RelNote: "All files from the lifecycle-livedata-ktx modules have been moved into the main lifecycle-livedata module"
Test: ./gradlew bOS
Bug: 274800183
Change-Id: I10c6f70c82a64e80eec704f548911f42bdd0b56a
M lifecycle/lifecycle-livedata-ktx/api/current.ignore
M lifecycle/lifecycle-livedata-ktx/api/current.txt
M lifecycle/lifecycle-livedata-ktx/api/restricted_current.ignore
M lifecycle/lifecycle-livedata-ktx/api/restricted_current.txt
M lifecycle/lifecycle-livedata/api/current.txt
M lifecycle/lifecycle-livedata/api/restricted_current.txt
M lifecycle/lifecycle-livedata/build.gradle
M lifecycle/lifecycle-livedata/src/androidTest/java/androidx.lifecycle/FlowAsLiveDataIntegrationTest.kt
M lifecycle/lifecycle-livedata/src/main/java/androidx/lifecycle/CoroutineLiveData.kt
M lifecycle/lifecycle-livedata/src/main/java/androidx/lifecycle/FlowLiveData.kt
M lifecycle/lifecycle-livedata/src/test/java/androidx/lifecycle/BuildLiveDataTest.kt
M lifecycle/lifecycle-livedata/src/test/java/androidx/lifecycle/FlowAsLiveDataTest.kt
M lifecycle/lifecycle-livedata/src/test/java/androidx/lifecycle/LiveDataAsFlowTest.kt
M lifecycle/lifecycle-livedata/src/test/java/androidx/lifecycle/LiveDataFlowJavaTest.java
M lifecycle/lifecycle-livedata/src/test/java/androidx/lifecycle/ScopesRule.kt
ap...@google.com <ap...@google.com> #4
Project: platform/frameworks/support
Branch: androidx-main
commit 32c1896b0506529674f03076a1141daaa0749b28
Author: Sanura Njaka <sanura@google.com>
Date: Tue Aug 22 11:20:50 2023
Moving ScopesRule into util package
ScopesRule.kt will now be included in lifecycle-livedata's util package
Test: ./gradlew bOS
BUg: 274800183
Change-Id: I2df34eebffcdacc716ce0235e29601436918f955
M lifecycle/lifecycle-livedata/src/test/java/androidx/lifecycle/BuildLiveDataTest.kt
M lifecycle/lifecycle-livedata/src/test/java/androidx/lifecycle/FlowAsLiveDataTest.kt
M lifecycle/lifecycle-livedata/src/test/java/androidx/lifecycle/LiveDataAsFlowTest.kt
M lifecycle/lifecycle-livedata/src/test/java/androidx/lifecycle/util/ScopesRule.kt
https://android-review.googlesource.com/2721674
Branch: androidx-main
commit 32c1896b0506529674f03076a1141daaa0749b28
Author: Sanura Njaka <sanura@google.com>
Date: Tue Aug 22 11:20:50 2023
Moving ScopesRule into util package
ScopesRule.kt will now be included in lifecycle-livedata's util package
Test: ./gradlew bOS
BUg: 274800183
Change-Id: I2df34eebffcdacc716ce0235e29601436918f955
M lifecycle/lifecycle-livedata/src/test/java/androidx/lifecycle/BuildLiveDataTest.kt
M lifecycle/lifecycle-livedata/src/test/java/androidx/lifecycle/FlowAsLiveDataTest.kt
M lifecycle/lifecycle-livedata/src/test/java/androidx/lifecycle/LiveDataAsFlowTest.kt
M lifecycle/lifecycle-livedata/src/test/java/androidx/lifecycle/util/ScopesRule.kt
ap...@google.com <ap...@google.com> #5
Project: platform/frameworks/support
Branch: androidx-main
commit 4140c78328013f4fea4bd48f286c46a98c358270
Author: Marcello Galhardo <mgalhardo@google.com>
Date: Fri Jan 26 14:43:43 2024
Move `lifecycle-viewmodel-ktx` source to the base module
* Transferred source code from `lifecycle-viewmodel-ktx` to the main `lifecycle-viewmodel` module.
* Kotlin STD Lib is now a dependency in the base AndroidX Lifecycle artifacts, separate `-ktx` modules for Kotlin extensions are no longer needed.
* Renamed the file from `ViewModel` to `ViewModelCoroutineScope` to reflect the content: coroutines support. Use `file:JvmName("ViewModelKt")` to maintain source compatibility.
* Add a resolutionStrategy to `:playground` and `:presentation` in `:tv:integration-tests` to resolve "minifyReleaseWithR8 FAILED: Class is defined multiple times" issue caused by moving classes from `-ktx` to the base module.
RelNote: "The `lifecycle-viewmodel-ktx` kotlin extensions have now been moved to the base lifecycle module."
Bug: 274800183
Test: ViewModelCoroutinesTest
Change-Id: Id787b6db6817e69e4ec50748a07ccdbef074e99d
A lifecycle/lifecycle-viewmodel-ktx/api/current.ignore
M lifecycle/lifecycle-viewmodel-ktx/api/current.txt
A lifecycle/lifecycle-viewmodel-ktx/api/restricted_current.ignore
M lifecycle/lifecycle-viewmodel-ktx/api/restricted_current.txt
M lifecycle/lifecycle-viewmodel-ktx/build.gradle
M lifecycle/lifecycle-viewmodel/api/current.txt
M lifecycle/lifecycle-viewmodel/api/restricted_current.txt
M lifecycle/lifecycle-viewmodel/build.gradle
M lifecycle/lifecycle-viewmodel/src/androidTest/java/androidx/lifecycle/ViewModelCoroutineScopeTest.kt
M lifecycle/lifecycle-viewmodel/src/main/java/androidx/lifecycle/ViewModelCoroutineScope.kt
M tv/integration-tests/playground/build.gradle
M tv/integration-tests/presentation/build.gradle
https://android-review.googlesource.com/2930010
Branch: androidx-main
commit 4140c78328013f4fea4bd48f286c46a98c358270
Author: Marcello Galhardo <mgalhardo@google.com>
Date: Fri Jan 26 14:43:43 2024
Move `lifecycle-viewmodel-ktx` source to the base module
* Transferred source code from `lifecycle-viewmodel-ktx` to the main `lifecycle-viewmodel` module.
* Kotlin STD Lib is now a dependency in the base AndroidX Lifecycle artifacts, separate `-ktx` modules for Kotlin extensions are no longer needed.
* Renamed the file from `ViewModel` to `ViewModelCoroutineScope` to reflect the content: coroutines support. Use `file:JvmName("ViewModelKt")` to maintain source compatibility.
* Add a resolutionStrategy to `:playground` and `:presentation` in `:tv:integration-tests` to resolve "minifyReleaseWithR8 FAILED: Class is defined multiple times" issue caused by moving classes from `-ktx` to the base module.
RelNote: "The `lifecycle-viewmodel-ktx` kotlin extensions have now been moved to the base lifecycle module."
Bug: 274800183
Test: ViewModelCoroutinesTest
Change-Id: Id787b6db6817e69e4ec50748a07ccdbef074e99d
A lifecycle/lifecycle-viewmodel-ktx/api/current.ignore
M lifecycle/lifecycle-viewmodel-ktx/api/current.txt
A lifecycle/lifecycle-viewmodel-ktx/api/restricted_current.ignore
M lifecycle/lifecycle-viewmodel-ktx/api/restricted_current.txt
M lifecycle/lifecycle-viewmodel-ktx/build.gradle
M lifecycle/lifecycle-viewmodel/api/current.txt
M lifecycle/lifecycle-viewmodel/api/restricted_current.txt
M lifecycle/lifecycle-viewmodel/build.gradle
M lifecycle/lifecycle-viewmodel/src/androidTest/java/androidx/lifecycle/ViewModelCoroutineScopeTest.kt
M lifecycle/lifecycle-viewmodel/src/main/java/androidx/lifecycle/ViewModelCoroutineScope.kt
M tv/integration-tests/playground/build.gradle
M tv/integration-tests/presentation/build.gradle
Description
Version used: 1.2.4
Devices/Android versions reproduced on: any
Fragment.getDefaultViewModelProviderFactory() makes a call to requireActivity() in order to obtain an instance of Application. This will fail if the Fragment is hosted in a FragmentHostCallback that doesn't reference an Activity (i.e. its context is not an Activity). getDefaultViewModelProviderFactory() and onCreateContextMenu() (which doesn't make sense for non-Activity Fragments) are the only places requireActivity() is used. Everywhere else uses get/requireContext() or allows getActivity() to return null.
Because Fragments are so prevalent, this makes the entire HasDefaultViewModelProviderFactory interface untrustworthy in codebases that may have non-Activity Fragments.
A simple fix would be to return a NewInstanceFactory() if mFragmentManager is non-null but getActivity() is null. This wouldn't support AndroidViewModels, but other ViewModels would still be able to be instantiated. Expanding SavedStateViewModelFactory to not require an Application would also help since the SavedStateHandler infrastructure doesn't appear to require the Application for anything else. Ideally, the Application would be able to be obtained elsewhere for non-Activity Fragments, but not supporting AndroidViewModels would be an acceptable trade off if that's not possible.
A less ideal solution would be to add another constructor to AndroidViewModels that takes a Context for use when an Application is not available, but that would clutter the API and is probably not worth it.