Merge changes from topic "kt-has" into androidx-main
* changes:
Update fragment module with HasDefaultViewModelProviderFactory
Update navigation module with HasDefaultViewModelProviderFactory
Convert HasDefaultViewModelProviderFactory to Kotlin
Rename HasDefaultViewModelProviderFactory.java to .kt
diff --git a/activity/activity-ktx/src/androidTest/java/androidx/activity/ActivityViewModelLazyTest.kt b/activity/activity-ktx/src/androidTest/java/androidx/activity/ActivityViewModelLazyTest.kt
index bfcd4e1..c3f7793 100644
--- a/activity/activity-ktx/src/androidTest/java/androidx/activity/ActivityViewModelLazyTest.kt
+++ b/activity/activity-ktx/src/androidTest/java/androidx/activity/ActivityViewModelLazyTest.kt
@@ -62,15 +62,15 @@
super.onCreate(savedInstanceState)
}
- override fun getDefaultViewModelProviderFactory(): ViewModelProvider.Factory {
- return SavedStateViewModelFactory()
- }
+ override val defaultViewModelProviderFactory
+ get() = SavedStateViewModelFactory()
- override fun getDefaultViewModelCreationExtras(): CreationExtras {
- val extras = MutableCreationExtras(super.getDefaultViewModelCreationExtras())
- extras[DEFAULT_ARGS_KEY] = bundleOf("test" to "value")
- return extras
- }
+ override val defaultViewModelCreationExtras: CreationExtras
+ get() {
+ val extras = MutableCreationExtras(super.defaultViewModelCreationExtras)
+ extras[DEFAULT_ARGS_KEY] = bundleOf("test" to "value")
+ return extras
+ }
}
class TestViewModel : ViewModel()
diff --git a/fragment/fragment-ktx/src/androidTest/java/androidx/fragment/app/FragmentViewModelLazyTest.kt b/fragment/fragment-ktx/src/androidTest/java/androidx/fragment/app/FragmentViewModelLazyTest.kt
index 5ab1dda..504a5af 100644
--- a/fragment/fragment-ktx/src/androidTest/java/androidx/fragment/app/FragmentViewModelLazyTest.kt
+++ b/fragment/fragment-ktx/src/androidTest/java/androidx/fragment/app/FragmentViewModelLazyTest.kt
@@ -99,18 +99,17 @@
enableSavedStateHandles()
}
- override fun getDefaultViewModelProviderFactory(): ViewModelProvider.Factory {
- return SavedStateViewModelFactory()
- }
+ override val defaultViewModelProviderFactory = SavedStateViewModelFactory()
- override fun getDefaultViewModelCreationExtras(): CreationExtras {
- val extras = MutableCreationExtras()
- extras[ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEY] = application
- extras[SAVED_STATE_REGISTRY_OWNER_KEY] = this
- extras[VIEW_MODEL_STORE_OWNER_KEY] = this
- extras[DEFAULT_ARGS_KEY] = bundleOf("test" to "value")
- return extras
- }
+ override val defaultViewModelCreationExtras: CreationExtras
+ get() {
+ val extras = MutableCreationExtras()
+ extras[ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEY] = application
+ extras[SAVED_STATE_REGISTRY_OWNER_KEY] = this
+ extras[VIEW_MODEL_STORE_OWNER_KEY] = this
+ extras[DEFAULT_ARGS_KEY] = bundleOf("test" to "value")
+ return extras
+ }
}
class TestViewModel : ViewModel()
diff --git a/fragment/fragment/src/androidTest/java/androidx/fragment/app/FragmentViewLifecycleOwnerTest.kt b/fragment/fragment/src/androidTest/java/androidx/fragment/app/FragmentViewLifecycleOwnerTest.kt
index c68e779..6a83cf8 100644
--- a/fragment/fragment/src/androidTest/java/androidx/fragment/app/FragmentViewLifecycleOwnerTest.kt
+++ b/fragment/fragment/src/androidTest/java/androidx/fragment/app/FragmentViewLifecycleOwnerTest.kt
@@ -183,7 +183,6 @@
}
public class FragmentWithFactoryOverride : StrictViewFragment() {
- public override fun getDefaultViewModelProviderFactory(): ViewModelProvider.Factory =
- FakeViewModelProviderFactory()
+ public override val defaultViewModelProviderFactory = FakeViewModelProviderFactory()
}
}
\ No newline at end of file
diff --git a/lifecycle/lifecycle-viewmodel-compose/src/androidTest/java/androidx/lifecycle/viewmodel/compose/ViewModelTest.kt b/lifecycle/lifecycle-viewmodel-compose/src/androidTest/java/androidx/lifecycle/viewmodel/compose/ViewModelTest.kt
index bc46abe..c067c51 100644
--- a/lifecycle/lifecycle-viewmodel-compose/src/androidTest/java/androidx/lifecycle/viewmodel/compose/ViewModelTest.kt
+++ b/lifecycle/lifecycle-viewmodel-compose/src/androidTest/java/androidx/lifecycle/viewmodel/compose/ViewModelTest.kt
@@ -271,5 +271,5 @@
val factory = FakeViewModelProviderFactory()
override fun getViewModelStore(): ViewModelStore = store
- override fun getDefaultViewModelProviderFactory(): ViewModelProvider.Factory = factory
+ override val defaultViewModelProviderFactory = factory
}
diff --git a/lifecycle/lifecycle-viewmodel-savedstate/src/androidTest/java/androidx/lifecycle/viewmodel/savedstate/ViewModelsWithStateTest.kt b/lifecycle/lifecycle-viewmodel-savedstate/src/androidTest/java/androidx/lifecycle/viewmodel/savedstate/ViewModelsWithStateTest.kt
index c9d5d4e..c139d47 100644
--- a/lifecycle/lifecycle-viewmodel-savedstate/src/androidTest/java/androidx/lifecycle/viewmodel/savedstate/ViewModelsWithStateTest.kt
+++ b/lifecycle/lifecycle-viewmodel-savedstate/src/androidTest/java/androidx/lifecycle/viewmodel/savedstate/ViewModelsWithStateTest.kt
@@ -251,14 +251,16 @@
SavedStateRegistryOwner by ssrOwner,
HasDefaultViewModelProviderFactory {
- override fun getDefaultViewModelProviderFactory(): Factory {
- throw UnsupportedOperationException()
- }
+ override val defaultViewModelProviderFactory: Factory
+ get() {
+ throw UnsupportedOperationException()
+ }
- override fun getDefaultViewModelCreationExtras(): CreationExtras {
- val extras = MutableCreationExtras()
- extras[SAVED_STATE_REGISTRY_OWNER_KEY] = this
- extras[VIEW_MODEL_STORE_OWNER_KEY] = this
- return extras
- }
+ override val defaultViewModelCreationExtras: CreationExtras
+ get() {
+ val extras = MutableCreationExtras()
+ extras[SAVED_STATE_REGISTRY_OWNER_KEY] = this
+ extras[VIEW_MODEL_STORE_OWNER_KEY] = this
+ return extras
+ }
}
\ No newline at end of file
diff --git a/lifecycle/lifecycle-viewmodel/api/current.txt b/lifecycle/lifecycle-viewmodel/api/current.txt
index e4f76f95..577a5be 100644
--- a/lifecycle/lifecycle-viewmodel/api/current.txt
+++ b/lifecycle/lifecycle-viewmodel/api/current.txt
@@ -9,6 +9,8 @@
public interface HasDefaultViewModelProviderFactory {
method public default androidx.lifecycle.viewmodel.CreationExtras getDefaultViewModelCreationExtras();
method public androidx.lifecycle.ViewModelProvider.Factory getDefaultViewModelProviderFactory();
+ property public default androidx.lifecycle.viewmodel.CreationExtras defaultViewModelCreationExtras;
+ property public abstract androidx.lifecycle.ViewModelProvider.Factory defaultViewModelProviderFactory;
}
public abstract class ViewModel {
diff --git a/lifecycle/lifecycle-viewmodel/api/public_plus_experimental_current.txt b/lifecycle/lifecycle-viewmodel/api/public_plus_experimental_current.txt
index e4f76f95..577a5be 100644
--- a/lifecycle/lifecycle-viewmodel/api/public_plus_experimental_current.txt
+++ b/lifecycle/lifecycle-viewmodel/api/public_plus_experimental_current.txt
@@ -9,6 +9,8 @@
public interface HasDefaultViewModelProviderFactory {
method public default androidx.lifecycle.viewmodel.CreationExtras getDefaultViewModelCreationExtras();
method public androidx.lifecycle.ViewModelProvider.Factory getDefaultViewModelProviderFactory();
+ property public default androidx.lifecycle.viewmodel.CreationExtras defaultViewModelCreationExtras;
+ property public abstract androidx.lifecycle.ViewModelProvider.Factory defaultViewModelProviderFactory;
}
public abstract class ViewModel {
diff --git a/lifecycle/lifecycle-viewmodel/api/restricted_current.txt b/lifecycle/lifecycle-viewmodel/api/restricted_current.txt
index e4f76f95..577a5be 100644
--- a/lifecycle/lifecycle-viewmodel/api/restricted_current.txt
+++ b/lifecycle/lifecycle-viewmodel/api/restricted_current.txt
@@ -9,6 +9,8 @@
public interface HasDefaultViewModelProviderFactory {
method public default androidx.lifecycle.viewmodel.CreationExtras getDefaultViewModelCreationExtras();
method public androidx.lifecycle.ViewModelProvider.Factory getDefaultViewModelProviderFactory();
+ property public default androidx.lifecycle.viewmodel.CreationExtras defaultViewModelCreationExtras;
+ property public abstract androidx.lifecycle.ViewModelProvider.Factory defaultViewModelProviderFactory;
}
public abstract class ViewModel {
diff --git a/lifecycle/lifecycle-viewmodel/src/main/java/androidx/lifecycle/HasDefaultViewModelProviderFactory.java b/lifecycle/lifecycle-viewmodel/src/main/java/androidx/lifecycle/HasDefaultViewModelProviderFactory.java
deleted file mode 100644
index ff7539a..0000000
--- a/lifecycle/lifecycle-viewmodel/src/main/java/androidx/lifecycle/HasDefaultViewModelProviderFactory.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Copyright 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package androidx.lifecycle;
-
-import androidx.annotation.NonNull;
-import androidx.lifecycle.viewmodel.CreationExtras;
-
-/**
- * Interface that marks a {@link ViewModelStoreOwner} as having a default
- * {@link androidx.lifecycle.ViewModelProvider.Factory} for use with
- * {@link androidx.lifecycle.ViewModelProvider#ViewModelProvider(ViewModelStoreOwner)}.
- */
-public interface HasDefaultViewModelProviderFactory {
- /**
- * Returns the default {@link androidx.lifecycle.ViewModelProvider.Factory} that should be
- * used when no custom {@code Factory} is provided to the
- * {@link androidx.lifecycle.ViewModelProvider} constructors.
- *
- * @return a {@code ViewModelProvider.Factory}
- */
- @NonNull
- ViewModelProvider.Factory getDefaultViewModelProviderFactory();
-
- /**
- * Returns the default {@link CreationExtras} that should be passed into the
- * {@link ViewModelProvider.Factory#create(Class, CreationExtras)} when no overriding
- * {@link CreationExtras} were passed to the
- * {@link androidx.lifecycle.ViewModelProvider} constructors.
- */
- @NonNull
- default CreationExtras getDefaultViewModelCreationExtras() {
- return CreationExtras.Empty.INSTANCE;
- }
-}
diff --git a/lifecycle/lifecycle-viewmodel/src/main/java/androidx/lifecycle/HasDefaultViewModelProviderFactory.kt b/lifecycle/lifecycle-viewmodel/src/main/java/androidx/lifecycle/HasDefaultViewModelProviderFactory.kt
new file mode 100644
index 0000000..3a896b1
--- /dev/null
+++ b/lifecycle/lifecycle-viewmodel/src/main/java/androidx/lifecycle/HasDefaultViewModelProviderFactory.kt
@@ -0,0 +1,39 @@
+/*
+ * Copyright 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package androidx.lifecycle
+
+import androidx.lifecycle.viewmodel.CreationExtras
+
+/**
+ * Interface that marks a [ViewModelStoreOwner] as having a default
+ * [ViewModelProvider.Factory] for use with [ViewModelProvider].
+ */
+interface HasDefaultViewModelProviderFactory {
+ /**
+ * Returns the default [ViewModelProvider.Factory] that should be
+ * used when no custom `Factory` is provided to the
+ * [ViewModelProvider] constructors.
+ */
+ val defaultViewModelProviderFactory: ViewModelProvider.Factory
+
+ /**
+ * Returns the default [CreationExtras] that should be passed into
+ * [ViewModelProvider.Factory.create] when no overriding
+ * [CreationExtras] were passed to the [ViewModelProvider] constructors.
+ */
+ val defaultViewModelCreationExtras: CreationExtras
+ get() = CreationExtras.Empty
+}
\ No newline at end of file
diff --git a/lifecycle/lifecycle-viewmodel/src/main/java/androidx/lifecycle/ViewModelProvider.kt b/lifecycle/lifecycle-viewmodel/src/main/java/androidx/lifecycle/ViewModelProvider.kt
index 06c9025..ba62b11 100644
--- a/lifecycle/lifecycle-viewmodel/src/main/java/androidx/lifecycle/ViewModelProvider.kt
+++ b/lifecycle/lifecycle-viewmodel/src/main/java/androidx/lifecycle/ViewModelProvider.kt
@@ -109,7 +109,7 @@
*
*
* This method will use the
- * [default factory][HasDefaultViewModelProviderFactory.getDefaultViewModelProviderFactory]
+ * [default factory][HasDefaultViewModelProviderFactory.defaultViewModelProviderFactory]
* if the owner implements [HasDefaultViewModelProviderFactory]. Otherwise, a
* [NewInstanceFactory] will be used.
*/
diff --git a/lifecycle/lifecycle-viewmodel/src/test/java/androidx/lifecycle/ViewModelProviderTest.kt b/lifecycle/lifecycle-viewmodel/src/test/java/androidx/lifecycle/ViewModelProviderTest.kt
index f4423a9..2536918 100644
--- a/lifecycle/lifecycle-viewmodel/src/test/java/androidx/lifecycle/ViewModelProviderTest.kt
+++ b/lifecycle/lifecycle-viewmodel/src/test/java/androidx/lifecycle/ViewModelProviderTest.kt
@@ -137,9 +137,7 @@
assertThat(wasCalled[0]).isTrue()
wasCalled[0] = false
ViewModelProvider(object : ViewModelStoreOwnerWithCreationExtras() {
- override fun getDefaultViewModelProviderFactory(): ViewModelProvider.Factory {
- return testFactory
- }
+ override val defaultViewModelProviderFactory = testFactory
})["customKey", ViewModel1::class.java]
assertThat(wasCalled[0]).isTrue()
}
@@ -165,9 +163,7 @@
assertThat(wasCalled[0]).isTrue()
wasCalled[0] = false
ViewModelProvider(object : ViewModelStoreOwnerWithCreationExtras() {
- override fun getDefaultViewModelProviderFactory(): ViewModelProvider.Factory {
- return testFactory
- }
+ override val defaultViewModelProviderFactory = testFactory
})["customKey", ViewModel1::class.java]
assertThat(wasCalled[0]).isTrue()
}
@@ -180,9 +176,7 @@
return mStore
}
- override fun getDefaultViewModelProviderFactory(): ViewModelProvider.Factory {
- return mFactory
- }
+ override val defaultViewModelProviderFactory = mFactory
}
open class ViewModel1 : ViewModel() {
@@ -204,15 +198,15 @@
internal open class ViewModelStoreOwnerWithCreationExtras : ViewModelStoreOwner,
HasDefaultViewModelProviderFactory {
private val viewModelStore = ViewModelStore()
- override fun getDefaultViewModelProviderFactory(): ViewModelProvider.Factory {
- throw UnsupportedOperationException()
- }
+ override val defaultViewModelProviderFactory: ViewModelProvider.Factory
+ get() = throw UnsupportedOperationException()
- override fun getDefaultViewModelCreationExtras(): CreationExtras {
- val extras = MutableCreationExtras()
- extras[TEST_KEY] = TEST_VALUE
- return extras
- }
+ override val defaultViewModelCreationExtras: CreationExtras
+ get() {
+ val extras = MutableCreationExtras()
+ extras[TEST_KEY] = TEST_VALUE
+ return extras
+ }
override fun getViewModelStore(): ViewModelStore {
return viewModelStore
diff --git a/navigation/navigation-common/api/current.txt b/navigation/navigation-common/api/current.txt
index 2133a87..869f652 100644
--- a/navigation/navigation-common/api/current.txt
+++ b/navigation/navigation-common/api/current.txt
@@ -123,6 +123,8 @@
method public androidx.savedstate.SavedStateRegistry getSavedStateRegistry();
method public androidx.lifecycle.ViewModelStore getViewModelStore();
property public final android.os.Bundle? arguments;
+ property public androidx.lifecycle.viewmodel.CreationExtras defaultViewModelCreationExtras;
+ property public androidx.lifecycle.ViewModelProvider.Factory defaultViewModelProviderFactory;
property public final androidx.navigation.NavDestination destination;
property public final String id;
property public final androidx.lifecycle.SavedStateHandle savedStateHandle;
diff --git a/navigation/navigation-common/api/public_plus_experimental_current.txt b/navigation/navigation-common/api/public_plus_experimental_current.txt
index 2133a87..869f652 100644
--- a/navigation/navigation-common/api/public_plus_experimental_current.txt
+++ b/navigation/navigation-common/api/public_plus_experimental_current.txt
@@ -123,6 +123,8 @@
method public androidx.savedstate.SavedStateRegistry getSavedStateRegistry();
method public androidx.lifecycle.ViewModelStore getViewModelStore();
property public final android.os.Bundle? arguments;
+ property public androidx.lifecycle.viewmodel.CreationExtras defaultViewModelCreationExtras;
+ property public androidx.lifecycle.ViewModelProvider.Factory defaultViewModelProviderFactory;
property public final androidx.navigation.NavDestination destination;
property public final String id;
property public final androidx.lifecycle.SavedStateHandle savedStateHandle;
diff --git a/navigation/navigation-common/api/restricted_current.txt b/navigation/navigation-common/api/restricted_current.txt
index 2133a87..869f652 100644
--- a/navigation/navigation-common/api/restricted_current.txt
+++ b/navigation/navigation-common/api/restricted_current.txt
@@ -123,6 +123,8 @@
method public androidx.savedstate.SavedStateRegistry getSavedStateRegistry();
method public androidx.lifecycle.ViewModelStore getViewModelStore();
property public final android.os.Bundle? arguments;
+ property public androidx.lifecycle.viewmodel.CreationExtras defaultViewModelCreationExtras;
+ property public androidx.lifecycle.ViewModelProvider.Factory defaultViewModelProviderFactory;
property public final androidx.navigation.NavDestination destination;
property public final String id;
property public final androidx.lifecycle.SavedStateHandle savedStateHandle;
diff --git a/navigation/navigation-common/src/main/java/androidx/navigation/NavBackStackEntry.kt b/navigation/navigation-common/src/main/java/androidx/navigation/NavBackStackEntry.kt
index a1fe535..3f0656e 100644
--- a/navigation/navigation-common/src/main/java/androidx/navigation/NavBackStackEntry.kt
+++ b/navigation/navigation-common/src/main/java/androidx/navigation/NavBackStackEntry.kt
@@ -221,22 +221,21 @@
return viewModelStoreProvider.getViewModelStore(id)
}
- public override fun getDefaultViewModelProviderFactory(): ViewModelProvider.Factory {
- return defaultFactory
- }
+ override val defaultViewModelProviderFactory: ViewModelProvider.Factory = defaultFactory
- override fun getDefaultViewModelCreationExtras(): CreationExtras {
- val extras = MutableCreationExtras()
- (context?.applicationContext as? Application)?.let { application ->
- extras[ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEY] = application
+ override val defaultViewModelCreationExtras: CreationExtras
+ get() {
+ val extras = MutableCreationExtras()
+ (context?.applicationContext as? Application)?.let { application ->
+ extras[ViewModelProvider.AndroidViewModelFactory.APPLICATION_KEY] = application
+ }
+ extras[SAVED_STATE_REGISTRY_OWNER_KEY] = this
+ extras[VIEW_MODEL_STORE_OWNER_KEY] = this
+ arguments?.let { args ->
+ extras[DEFAULT_ARGS_KEY] = args
+ }
+ return extras
}
- extras[SAVED_STATE_REGISTRY_OWNER_KEY] = this
- extras[VIEW_MODEL_STORE_OWNER_KEY] = this
- arguments?.let { args ->
- extras[DEFAULT_ARGS_KEY] = args
- }
- return extras
- }
override val savedStateRegistry: SavedStateRegistry
get() = savedStateRegistryController.savedStateRegistry
diff --git a/navigation/navigation-fragment/src/androidTest/java/androidx/navigation/fragment/NavGraphViewModelLazyTest.kt b/navigation/navigation-fragment/src/androidTest/java/androidx/navigation/fragment/NavGraphViewModelLazyTest.kt
index 07ce168..dbaab04 100644
--- a/navigation/navigation-fragment/src/androidTest/java/androidx/navigation/fragment/NavGraphViewModelLazyTest.kt
+++ b/navigation/navigation-fragment/src/androidTest/java/androidx/navigation/fragment/NavGraphViewModelLazyTest.kt
@@ -30,7 +30,6 @@
import androidx.lifecycle.SavedStateHandle
import androidx.lifecycle.SavedStateViewModelFactory
import androidx.lifecycle.ViewModel
-import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.ViewModelStore
import androidx.lifecycle.viewmodel.CreationExtras
import androidx.lifecycle.viewmodel.MutableCreationExtras
@@ -279,15 +278,14 @@
return View(activity)
}
- override fun getDefaultViewModelProviderFactory(): ViewModelProvider.Factory {
- return SavedStateViewModelFactory()
- }
+ override val defaultViewModelProviderFactory = SavedStateViewModelFactory()
- override fun getDefaultViewModelCreationExtras(): CreationExtras {
- val extras = MutableCreationExtras(super.getDefaultViewModelCreationExtras())
- extras[DEFAULT_ARGS_KEY] = bundleOf("test" to "value")
- return extras
- }
+ override val defaultViewModelCreationExtras: CreationExtras
+ get() {
+ val extras = MutableCreationExtras(super.defaultViewModelCreationExtras)
+ extras[DEFAULT_ARGS_KEY] = bundleOf("test" to "value")
+ return extras
+ }
}
class TestViewModel : ViewModel()