package androidx.lifecycle; import android.os.Bundle; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.annotation.RestrictTo; import androidx.lifecycle.ViewModelProvider; import androidx.savedstate.SavedStateRegistry; import androidx.savedstate.SavedStateRegistryOwner; public abstract class AbstractSavedStateViewModelFactory extends ViewModelProvider.KeyedFactory { public static final String TAG_SAVED_STATE_HANDLE_CONTROLLER = "androidx.lifecycle.savedstate.vm.tag"; private final Bundle mDefaultArgs; private final Lifecycle mLifecycle; private final SavedStateRegistry mSavedStateRegistry; public AbstractSavedStateViewModelFactory(@NonNull SavedStateRegistryOwner savedStateRegistryOwner, @Nullable Bundle bundle) { this.mSavedStateRegistry = savedStateRegistryOwner.getSavedStateRegistry(); this.mLifecycle = savedStateRegistryOwner.getLifecycle(); this.mDefaultArgs = bundle; } @Override // androidx.lifecycle.ViewModelProvider.KeyedFactory, androidx.lifecycle.ViewModelProvider.Factory @NonNull public final T create(@NonNull Class cls) { String canonicalName = cls.getCanonicalName(); if (canonicalName != null) { return (T) create(canonicalName, cls); } throw new IllegalArgumentException("Local and anonymous classes can not be ViewModels"); } @Override // androidx.lifecycle.ViewModelProvider.KeyedFactory @NonNull @RestrictTo({RestrictTo.Scope.LIBRARY_GROUP}) public final T create(@NonNull String str, @NonNull Class cls) { SavedStateHandleController create = SavedStateHandleController.create(this.mSavedStateRegistry, this.mLifecycle, str, this.mDefaultArgs); T t = (T) create(str, cls, create.getHandle()); t.setTagIfAbsent("androidx.lifecycle.savedstate.vm.tag", create); return t; } @NonNull public abstract T create(@NonNull String str, @NonNull Class cls, @NonNull SavedStateHandle savedStateHandle); @Override // androidx.lifecycle.ViewModelProvider.OnRequeryFactory public void onRequery(@NonNull ViewModel viewModel) { SavedStateHandleController.attachHandleIfNeeded(viewModel, this.mSavedStateRegistry, this.mLifecycle); } }