Fixed
Status Update
Comments
ap...@google.com <ap...@google.com> #2
The first CL of this effort has been officially submitted in lifecycle-common
.
ap...@google.com <ap...@google.com> #3
Project: platform/frameworks/support
Branch: androidx-main
commit e4a654d863af22d2a4f486b90cf29c26c487cffb
Author: Ivan Matkov <ivan.matkov@jetbrains.com>
Date: Mon Jan 22 11:49:53 2024
Multiplatform support for lifecycle-runtime
This change introduces multiplatform support for the lifecycle-runtime module by exposing the `LifecycleRegistry` to common, ensuring compatibility with published versions on Android.
BUG: 317249252
Relnote: Added multiplatform support for `lifecycle-runtime`
Test: Run existing and newly added tests
Change-Id: I0c5acfde52bd6c4a3cf7f38193c235915b45d549
M lifecycle/lifecycle-runtime/build.gradle
M lifecycle/lifecycle-runtime/src/androidInstrumentedTest/kotlin/androidx/lifecycle/MissingClassTest.kt
M lifecycle/lifecycle-runtime/src/androidInstrumentedTest/kotlin/androidx/lifecycle/ViewTreeLifecycleOwnerTest.kt
M lifecycle/lifecycle-runtime/src/androidMain/baseline-prof.txt
M lifecycle/lifecycle-runtime/src/androidMain/java/androidx/lifecycle/LifecycleRegistryOwner.java
A lifecycle/lifecycle-runtime/src/androidMain/kotlin/androidx/lifecycle/LifecycleRegistry.android.kt
M lifecycle/lifecycle-runtime/src/androidMain/kotlin/androidx/lifecycle/ReportFragment.android.kt
M lifecycle/lifecycle-runtime/src/androidMain/kotlin/androidx/lifecycle/ViewTreeLifecycleOwner.android.kt
M lifecycle/lifecycle-runtime/src/androidMain/res/values/ids.xml
M lifecycle/lifecycle-runtime/src/androidUnitTest/kotlin/NoPackageObserver.kt
M lifecycle/lifecycle-runtime/src/androidUnitTest/kotlin/NoPackageTest.kt
M lifecycle/lifecycle-runtime/src/androidUnitTest/kotlin/androidx/lifecycle/LifecycleRegistryTest.java
A lifecycle/lifecycle-runtime/src/commonMain/kotlin/androidx/lifecycle/LifecycleRegistry.kt
A lifecycle/lifecycle-runtime/src/commonTest/kotlin/androidx/lifecycle/CommonLifecycleRegistryTest.kt
A lifecycle/lifecycle-runtime/src/commonTest/kotlin/androidx/lifecycle/TestObserver.kt
A lifecycle/lifecycle-runtime/src/desktopMain/kotlin/androidx/lifecycle/LifecycleRegistry.desktop.kt
M lifecycle/lifecycle-runtime/src/jvmMain/kotlin/androidx/lifecycle/LifecycleRegistry.jvm.kt
M lifecycle/lifecycle-runtime/src/nativeMain/kotlin/androidx/lifecycle/LifecycleRegistry.native.kt
A lifecycle/lifecycle-runtime/src/nativeTest/kotlin/androidx/lifecycle/NativeLifecycleRegistryTest.kt
M settings.gradle
https://android-review.googlesource.com/2927699
Branch: androidx-main
commit e4a654d863af22d2a4f486b90cf29c26c487cffb
Author: Ivan Matkov <ivan.matkov@jetbrains.com>
Date: Mon Jan 22 11:49:53 2024
Multiplatform support for lifecycle-runtime
This change introduces multiplatform support for the lifecycle-runtime module by exposing the `LifecycleRegistry` to common, ensuring compatibility with published versions on Android.
BUG: 317249252
Relnote: Added multiplatform support for `lifecycle-runtime`
Test: Run existing and newly added tests
Change-Id: I0c5acfde52bd6c4a3cf7f38193c235915b45d549
M lifecycle/lifecycle-runtime/build.gradle
M lifecycle/lifecycle-runtime/src/androidInstrumentedTest/kotlin/androidx/lifecycle/MissingClassTest.kt
M lifecycle/lifecycle-runtime/src/androidInstrumentedTest/kotlin/androidx/lifecycle/ViewTreeLifecycleOwnerTest.kt
M lifecycle/lifecycle-runtime/src/androidMain/baseline-prof.txt
M lifecycle/lifecycle-runtime/src/androidMain/java/androidx/lifecycle/LifecycleRegistryOwner.java
A lifecycle/lifecycle-runtime/src/androidMain/kotlin/androidx/lifecycle/LifecycleRegistry.android.kt
M lifecycle/lifecycle-runtime/src/androidMain/kotlin/androidx/lifecycle/ReportFragment.android.kt
M lifecycle/lifecycle-runtime/src/androidMain/kotlin/androidx/lifecycle/ViewTreeLifecycleOwner.android.kt
M lifecycle/lifecycle-runtime/src/androidMain/res/values/ids.xml
M lifecycle/lifecycle-runtime/src/androidUnitTest/kotlin/NoPackageObserver.kt
M lifecycle/lifecycle-runtime/src/androidUnitTest/kotlin/NoPackageTest.kt
M lifecycle/lifecycle-runtime/src/androidUnitTest/kotlin/androidx/lifecycle/LifecycleRegistryTest.java
A lifecycle/lifecycle-runtime/src/commonMain/kotlin/androidx/lifecycle/LifecycleRegistry.kt
A lifecycle/lifecycle-runtime/src/commonTest/kotlin/androidx/lifecycle/CommonLifecycleRegistryTest.kt
A lifecycle/lifecycle-runtime/src/commonTest/kotlin/androidx/lifecycle/TestObserver.kt
A lifecycle/lifecycle-runtime/src/desktopMain/kotlin/androidx/lifecycle/LifecycleRegistry.desktop.kt
M lifecycle/lifecycle-runtime/src/jvmMain/kotlin/androidx/lifecycle/LifecycleRegistry.jvm.kt
M lifecycle/lifecycle-runtime/src/nativeMain/kotlin/androidx/lifecycle/LifecycleRegistry.native.kt
A lifecycle/lifecycle-runtime/src/nativeTest/kotlin/androidx/lifecycle/NativeLifecycleRegistryTest.kt
M settings.gradle
ap...@google.com <ap...@google.com> #4
The second CL of this effort has been officially submitted in aosp/2927699, adding multiplatform support to lifecycle-runtime
.
ap...@google.com <ap...@google.com> #5
Project: platform/frameworks/support
Branch: androidx-main
commit 08f40110a0400fa434ed023e763152e6f4aa39af
Author: Ivan Matkov <ivan.matkov@jetbrains.com>
Date: Fri Jan 26 17:06:51 2024
Multiplatform support for lifecycle-runtime-ktx
BUG: 317249252
Relnote: Added multiplatform support for `lifecycle-runtime-ktx`
Test: Run existing tests
Change-Id: If445d68e7e85929839ad10347b31b9f11d61c00d
M lifecycle/lifecycle-runtime-ktx/build.gradle
M lifecycle/lifecycle-runtime-ktx/src/androidInstrumentedTest/kotlin/androidx/lifecycle/Expectations.kt
M lifecycle/lifecycle-runtime-ktx/src/androidInstrumentedTest/kotlin/androidx/lifecycle/FakeLifecycleOwner.kt
M lifecycle/lifecycle-runtime-ktx/src/androidInstrumentedTest/kotlin/androidx/lifecycle/FlowWithLifecycleTest.kt
M lifecycle/lifecycle-runtime-ktx/src/androidInstrumentedTest/kotlin/androidx/lifecycle/LaunchWhenTest.kt
M lifecycle/lifecycle-runtime-ktx/src/androidInstrumentedTest/kotlin/androidx/lifecycle/PausingDispatcherTest.kt
M lifecycle/lifecycle-runtime-ktx/src/androidInstrumentedTest/kotlin/androidx/lifecycle/RepeatOnLifecycleTest.kt
M lifecycle/lifecycle-runtime-ktx/src/androidInstrumentedTest/kotlin/androidx/lifecycle/TaskTracker.kt
M lifecycle/lifecycle-runtime-ktx/src/androidInstrumentedTest/kotlin/androidx/lifecycle/TrackedExecutor.kt
M lifecycle/lifecycle-runtime-ktx/src/androidInstrumentedTest/kotlin/androidx/lifecycle/ViewTreeLifecycleOwnerTest.kt
M lifecycle/lifecycle-runtime-ktx/src/androidInstrumentedTest/kotlin/androidx/lifecycle/WithLifecycleStateTest.kt
M lifecycle/lifecycle-runtime-ktx/src/androidMain/AndroidManifest.xml
M lifecycle/lifecycle-runtime-ktx/src/androidMain/kotlin/androidx/lifecycle/View.android.kt
M lifecycle/lifecycle-runtime-ktx/src/commonMain/kotlin/androidx/lifecycle/FlowExt.kt
M lifecycle/lifecycle-runtime-ktx/src/commonMain/kotlin/androidx/lifecycle/RepeatOnLifecycle.kt
M lifecycle/lifecycle-runtime-ktx/src/commonMain/kotlin/androidx/lifecycle/WithLifecycleState.kt
M settings.gradle
https://android-review.googlesource.com/2930012
Branch: androidx-main
commit 08f40110a0400fa434ed023e763152e6f4aa39af
Author: Ivan Matkov <ivan.matkov@jetbrains.com>
Date: Fri Jan 26 17:06:51 2024
Multiplatform support for lifecycle-runtime-ktx
BUG: 317249252
Relnote: Added multiplatform support for `lifecycle-runtime-ktx`
Test: Run existing tests
Change-Id: If445d68e7e85929839ad10347b31b9f11d61c00d
M lifecycle/lifecycle-runtime-ktx/build.gradle
M lifecycle/lifecycle-runtime-ktx/src/androidInstrumentedTest/kotlin/androidx/lifecycle/Expectations.kt
M lifecycle/lifecycle-runtime-ktx/src/androidInstrumentedTest/kotlin/androidx/lifecycle/FakeLifecycleOwner.kt
M lifecycle/lifecycle-runtime-ktx/src/androidInstrumentedTest/kotlin/androidx/lifecycle/FlowWithLifecycleTest.kt
M lifecycle/lifecycle-runtime-ktx/src/androidInstrumentedTest/kotlin/androidx/lifecycle/LaunchWhenTest.kt
M lifecycle/lifecycle-runtime-ktx/src/androidInstrumentedTest/kotlin/androidx/lifecycle/PausingDispatcherTest.kt
M lifecycle/lifecycle-runtime-ktx/src/androidInstrumentedTest/kotlin/androidx/lifecycle/RepeatOnLifecycleTest.kt
M lifecycle/lifecycle-runtime-ktx/src/androidInstrumentedTest/kotlin/androidx/lifecycle/TaskTracker.kt
M lifecycle/lifecycle-runtime-ktx/src/androidInstrumentedTest/kotlin/androidx/lifecycle/TrackedExecutor.kt
M lifecycle/lifecycle-runtime-ktx/src/androidInstrumentedTest/kotlin/androidx/lifecycle/ViewTreeLifecycleOwnerTest.kt
M lifecycle/lifecycle-runtime-ktx/src/androidInstrumentedTest/kotlin/androidx/lifecycle/WithLifecycleStateTest.kt
M lifecycle/lifecycle-runtime-ktx/src/androidMain/AndroidManifest.xml
M lifecycle/lifecycle-runtime-ktx/src/androidMain/kotlin/androidx/lifecycle/View.android.kt
M lifecycle/lifecycle-runtime-ktx/src/commonMain/kotlin/androidx/lifecycle/FlowExt.kt
M lifecycle/lifecycle-runtime-ktx/src/commonMain/kotlin/androidx/lifecycle/RepeatOnLifecycle.kt
M lifecycle/lifecycle-runtime-ktx/src/commonMain/kotlin/androidx/lifecycle/WithLifecycleState.kt
M settings.gradle
Description
Component used: Fragment
StrictMode
We should build the same type of infrastructure for Fragments so that developers can enable runtime checking for bad behaviors and validate that they (or libraries they depend on) aren't using deprecated APIs or known potential problematic behaviors.
Importantly, this should only be as a second line of defense behind deprecation warnings or Lint warnings to catch these issues at build time or to handle cases where third party libraries / dependencies are triggering these behaviors so that bugs can be filed against them.
We should support at least
penaltyLog()
,penaltyDeath()
, andpenaltyListener()
.Given that we should maintain behavior compatibility, we should not add any
enableDefaults()
ordetectAll()
methods and instead have developers opt into exactly thedetect***()
methods they want. This should also remove the need forpermit***()
methods since they'll all default to off.Ideally, this is something that developers can either:
Set globally via
FragmentStrictMode.setDefaultPolicy(FragmentStrictMode.Policy)
Set on a specific
FragmentManager
(and its childrenFragmentManager
s) viafragmentManager.setStrictModePolicy(FragmentStrictMode.Policy)
(this would override the default policy)This API shouldn't be made public until there is at least two
detect***()
calls added. These will be filed as separate issues.