Fixes crash when returning to lock screen tab (1/2).

Moves to the proven Factory inner class method.

Fix: 265708431
Test: manually verified that the crash no longer occurs.
Change-Id: I3b5b0ab321fc42b150b1d729e475c63c37a43cfd
diff --git a/src/com/android/customization/module/DefaultCustomizationSections.java b/src/com/android/customization/module/DefaultCustomizationSections.java
index 49062d1..46f0334 100644
--- a/src/com/android/customization/module/DefaultCustomizationSections.java
+++ b/src/com/android/customization/module/DefaultCustomizationSections.java
@@ -4,7 +4,6 @@
 
 import androidx.annotation.Nullable;
 import androidx.fragment.app.FragmentActivity;
-import androidx.lifecycle.AbstractSavedStateViewModelFactory;
 import androidx.lifecycle.LifecycleOwner;
 import androidx.lifecycle.ViewModelProvider;
 
@@ -43,13 +42,13 @@
     private final KeyguardQuickAffordancePickerInteractor mKeyguardQuickAffordancePickerInteractor;
     private final KeyguardQuickAffordancePickerViewModel.Factory
             mKeyguardQuickAffordancePickerViewModelFactory;
-    private final AbstractSavedStateViewModelFactory mNotificationSectionViewModelFactory;
+    private final NotificationSectionViewModel.Factory mNotificationSectionViewModelFactory;
 
     public DefaultCustomizationSections(
             KeyguardQuickAffordancePickerInteractor keyguardQuickAffordancePickerInteractor,
             KeyguardQuickAffordancePickerViewModel.Factory
                     keyguardQuickAffordancePickerViewModelFactory,
-            AbstractSavedStateViewModelFactory notificationSectionViewModelFactory) {
+            NotificationSectionViewModel.Factory notificationSectionViewModelFactory) {
         mKeyguardQuickAffordancePickerInteractor = keyguardQuickAffordancePickerInteractor;
         mKeyguardQuickAffordancePickerViewModelFactory =
                 keyguardQuickAffordancePickerViewModelFactory;
diff --git a/src/com/android/customization/module/ThemePickerInjector.kt b/src/com/android/customization/module/ThemePickerInjector.kt
index 3de1b43..b448283 100644
--- a/src/com/android/customization/module/ThemePickerInjector.kt
+++ b/src/com/android/customization/module/ThemePickerInjector.kt
@@ -81,15 +81,14 @@
     private var clockRegistry: ClockRegistry? = null
     private var pluginManager: PluginManager? = null
     private var notificationsInteractor: NotificationsInteractor? = null
+    private var notificationSectionViewModelFactory: NotificationSectionViewModel.Factory? = null
 
     override fun getCustomizationSections(activity: ComponentActivity): CustomizationSections {
         return customizationSections
             ?: DefaultCustomizationSections(
                     getKeyguardQuickAffordancePickerInteractor(activity),
                     getKeyguardQuickAffordancePickerViewModelFactory(activity),
-                    NotificationSectionViewModel.newFactory(
-                        owner = activity,
-                        defaultArgs = null,
+                    NotificationSectionViewModel.Factory(
                         interactor = getNotificationsInteractor(activity),
                     ),
                 )
@@ -191,6 +190,16 @@
                 .also { keyguardQuickAffordancePickerViewModelFactory = it }
     }
 
+    fun getNotificationSectionViewModelFactory(
+        context: Context,
+    ): NotificationSectionViewModel.Factory {
+        return notificationSectionViewModelFactory
+            ?: NotificationSectionViewModel.Factory(
+                    interactor = getNotificationsInteractor(context),
+                )
+                .also { notificationSectionViewModelFactory = it }
+    }
+
     private fun getKeyguardQuickAffordancePickerInteractorImpl(
         context: Context
     ): KeyguardQuickAffordancePickerInteractor {
diff --git a/src/com/android/customization/picker/notifications/ui/viewmodel/NotificationSectionViewModel.kt b/src/com/android/customization/picker/notifications/ui/viewmodel/NotificationSectionViewModel.kt
index f33b10b..97b0448 100644
--- a/src/com/android/customization/picker/notifications/ui/viewmodel/NotificationSectionViewModel.kt
+++ b/src/com/android/customization/picker/notifications/ui/viewmodel/NotificationSectionViewModel.kt
@@ -17,14 +17,11 @@
 
 package com.android.customization.picker.notifications.ui.viewmodel
 
-import android.os.Bundle
 import androidx.annotation.StringRes
 import androidx.annotation.VisibleForTesting
-import androidx.lifecycle.AbstractSavedStateViewModelFactory
-import androidx.lifecycle.SavedStateHandle
 import androidx.lifecycle.ViewModel
+import androidx.lifecycle.ViewModelProvider
 import androidx.lifecycle.viewModelScope
-import androidx.savedstate.SavedStateRegistryOwner
 import com.android.customization.picker.notifications.domain.interactor.NotificationsInteractor
 import com.android.wallpaper.R
 import kotlinx.coroutines.flow.Flow
@@ -57,25 +54,15 @@
         viewModelScope.launch { interactor.toggleShowNotificationsOnLockScreenEnabled() }
     }
 
-    companion object {
-        @JvmStatic
-        fun newFactory(
-            owner: SavedStateRegistryOwner,
-            defaultArgs: Bundle? = null,
-            interactor: NotificationsInteractor,
-        ): AbstractSavedStateViewModelFactory =
-            object : AbstractSavedStateViewModelFactory(owner, defaultArgs) {
-                @Suppress("UNCHECKED_CAST")
-                override fun <T : ViewModel> create(
-                    key: String,
-                    modelClass: Class<T>,
-                    handle: SavedStateHandle,
-                ): T {
-                    return NotificationSectionViewModel(
-                        interactor = interactor,
-                    )
-                        as T
-                }
-            }
+    class Factory(
+        private val interactor: NotificationsInteractor,
+    ) : ViewModelProvider.Factory {
+        @Suppress("UNCHECKED_CAST")
+        override fun <T : ViewModel> create(modelClass: Class<T>): T {
+            return NotificationSectionViewModel(
+                interactor = interactor,
+            )
+                as T
+        }
     }
 }