Snap for 12304452 from 82821cb4447ec4f5ce161667e73536ada559bbd6 to 24Q4-release

Change-Id: Ibfae19b2c2069f549e52843bf1d09af3e2bd9c0b
diff --git a/src/com/android/wallpaper/customization/ui/binder/ClockFloatingSheetBinder.kt b/src/com/android/wallpaper/customization/ui/binder/ClockFloatingSheetBinder.kt
index 8c4442d..12733c5 100644
--- a/src/com/android/wallpaper/customization/ui/binder/ClockFloatingSheetBinder.kt
+++ b/src/com/android/wallpaper/customization/ui/binder/ClockFloatingSheetBinder.kt
@@ -39,11 +39,12 @@
 import com.android.customization.picker.color.ui.viewmodel.ColorOptionIconViewModel
 import com.android.customization.picker.common.ui.view.DoubleRowListItemSpacing
 import com.android.themepicker.R
+import com.android.wallpaper.customization.ui.util.ThemePickerCustomizationOptionUtil.ThemePickerLockCustomizationOption.CLOCK
 import com.android.wallpaper.customization.ui.viewmodel.ClockFloatingSheetHeightsViewModel
-import com.android.wallpaper.customization.ui.viewmodel.ClockPickerViewModel
 import com.android.wallpaper.customization.ui.viewmodel.ClockPickerViewModel.Tab.COLOR
 import com.android.wallpaper.customization.ui.viewmodel.ClockPickerViewModel.Tab.SIZE
 import com.android.wallpaper.customization.ui.viewmodel.ClockPickerViewModel.Tab.STYLE
+import com.android.wallpaper.customization.ui.viewmodel.ThemePickerCustomizationOptionsViewModel
 import com.android.wallpaper.picker.customization.ui.view.FloatingToolbar
 import com.android.wallpaper.picker.customization.ui.view.adapter.FloatingToolbarTabAdapter
 import com.android.wallpaper.picker.customization.ui.viewmodel.ColorUpdateViewModel
@@ -67,17 +68,21 @@
 
     fun bind(
         view: View,
-        viewModel: ClockPickerViewModel,
+        optionsViewModel: ThemePickerCustomizationOptionsViewModel,
         colorUpdateViewModel: ColorUpdateViewModel,
         lifecycleOwner: LifecycleOwner,
     ) {
+        val viewModel = optionsViewModel.clockPickerViewModel
+
         val appContext = view.context.applicationContext
 
         val tabs = view.requireViewById<FloatingToolbar>(R.id.floating_toolbar)
         val tabAdapter =
-            FloatingToolbarTabAdapter(WeakReference(colorUpdateViewModel)).also {
-                tabs.setAdapter(it)
-            }
+            FloatingToolbarTabAdapter(
+                    colorUpdateViewModel = WeakReference(colorUpdateViewModel),
+                    shouldAnimateColor = { optionsViewModel.selectedOption.value == CLOCK },
+                )
+                .also { tabs.setAdapter(it) }
 
         val floatingSheetContainer =
             view.requireViewById<ViewGroup>(R.id.clock_floating_sheet_content_container)
diff --git a/src/com/android/wallpaper/customization/ui/binder/ColorsFloatingSheetBinder.kt b/src/com/android/wallpaper/customization/ui/binder/ColorsFloatingSheetBinder.kt
index c48538a..b06748a 100644
--- a/src/com/android/wallpaper/customization/ui/binder/ColorsFloatingSheetBinder.kt
+++ b/src/com/android/wallpaper/customization/ui/binder/ColorsFloatingSheetBinder.kt
@@ -33,7 +33,8 @@
 import com.android.customization.picker.color.ui.viewmodel.ColorOptionIconViewModel
 import com.android.customization.picker.common.ui.view.DoubleRowListItemSpacing
 import com.android.themepicker.R
-import com.android.wallpaper.customization.ui.viewmodel.ColorPickerViewModel2
+import com.android.wallpaper.customization.ui.util.ThemePickerCustomizationOptionUtil.ThemePickerHomeCustomizationOption.COLORS
+import com.android.wallpaper.customization.ui.viewmodel.ThemePickerCustomizationOptionsViewModel
 import com.android.wallpaper.picker.customization.ui.view.FloatingToolbar
 import com.android.wallpaper.picker.customization.ui.view.adapter.FloatingToolbarTabAdapter
 import com.android.wallpaper.picker.customization.ui.viewmodel.ColorUpdateViewModel
@@ -45,10 +46,12 @@
 
     fun bind(
         view: View,
-        viewModel: ColorPickerViewModel2,
+        optionsViewModel: ThemePickerCustomizationOptionsViewModel,
         colorUpdateViewModel: ColorUpdateViewModel,
         lifecycleOwner: LifecycleOwner,
     ) {
+        val viewModel = optionsViewModel.colorPickerViewModel2
+
         val subhead = view.requireViewById<TextView>(R.id.color_type_tab_subhead)
 
         val colorsAdapter =
@@ -60,9 +63,11 @@
 
         val tabs = view.requireViewById<FloatingToolbar>(R.id.floating_toolbar)
         val tabAdapter =
-            FloatingToolbarTabAdapter(WeakReference(colorUpdateViewModel)).also {
-                tabs.setAdapter(it)
-            }
+            FloatingToolbarTabAdapter(
+                    colorUpdateViewModel = WeakReference(colorUpdateViewModel),
+                    shouldAnimateColor = { optionsViewModel.selectedOption.value == COLORS }
+                )
+                .also { tabs.setAdapter(it) }
 
         lifecycleOwner.lifecycleScope.launch {
             lifecycleOwner.repeatOnLifecycle(Lifecycle.State.STARTED) {
diff --git a/src/com/android/wallpaper/customization/ui/binder/ShortcutFloatingSheetBinder.kt b/src/com/android/wallpaper/customization/ui/binder/ShortcutFloatingSheetBinder.kt
index e07fef8..bc8ff96 100644
--- a/src/com/android/wallpaper/customization/ui/binder/ShortcutFloatingSheetBinder.kt
+++ b/src/com/android/wallpaper/customization/ui/binder/ShortcutFloatingSheetBinder.kt
@@ -28,7 +28,8 @@
 import androidx.recyclerview.widget.RecyclerView
 import com.android.customization.picker.common.ui.view.DoubleRowListItemSpacing
 import com.android.themepicker.R
-import com.android.wallpaper.customization.ui.viewmodel.KeyguardQuickAffordancePickerViewModel2
+import com.android.wallpaper.customization.ui.util.ThemePickerCustomizationOptionUtil.ThemePickerLockCustomizationOption.SHORTCUTS
+import com.android.wallpaper.customization.ui.viewmodel.ThemePickerCustomizationOptionsViewModel
 import com.android.wallpaper.picker.common.dialog.ui.viewbinder.DialogViewBinder
 import com.android.wallpaper.picker.common.dialog.ui.viewmodel.DialogViewModel
 import com.android.wallpaper.picker.common.icon.ui.viewbinder.IconViewBinder
@@ -50,10 +51,12 @@
 
     fun bind(
         view: View,
-        viewModel: KeyguardQuickAffordancePickerViewModel2,
+        optionsViewModel: ThemePickerCustomizationOptionsViewModel,
         colorUpdateViewModel: ColorUpdateViewModel,
         lifecycleOwner: LifecycleOwner,
     ) {
+        val viewModel = optionsViewModel.keyguardQuickAffordancePickerViewModel2
+
         val quickAffordanceAdapter = createOptionItemAdapter(lifecycleOwner)
         val quickAffordanceList =
             view.requireViewById<RecyclerView>(R.id.quick_affordance_horizontal_list).also {
@@ -62,9 +65,11 @@
 
         val tabs = view.requireViewById<FloatingToolbar>(R.id.floating_toolbar)
         val tabAdapter =
-            FloatingToolbarTabAdapter(WeakReference(colorUpdateViewModel)).also {
-                tabs.setAdapter(it)
-            }
+            FloatingToolbarTabAdapter(
+                    colorUpdateViewModel = WeakReference(colorUpdateViewModel),
+                    shouldAnimateColor = { optionsViewModel.selectedOption.value == SHORTCUTS }
+                )
+                .also { tabs.setAdapter(it) }
 
         var dialog: Dialog? = null
 
diff --git a/src/com/android/wallpaper/customization/ui/binder/ThemePickerCustomizationOptionBinder.kt b/src/com/android/wallpaper/customization/ui/binder/ThemePickerCustomizationOptionBinder.kt
index e09a619..02bcc03 100644
--- a/src/com/android/wallpaper/customization/ui/binder/ThemePickerCustomizationOptionBinder.kt
+++ b/src/com/android/wallpaper/customization/ui/binder/ThemePickerCustomizationOptionBinder.kt
@@ -34,7 +34,7 @@
 import com.android.wallpaper.picker.customization.ui.binder.DefaultCustomizationOptionsBinder
 import com.android.wallpaper.picker.customization.ui.util.CustomizationOptionUtil.CustomizationOption
 import com.android.wallpaper.picker.customization.ui.viewmodel.ColorUpdateViewModel
-import com.android.wallpaper.picker.customization.ui.viewmodel.CustomizationOptionsViewModel
+import com.android.wallpaper.picker.customization.ui.viewmodel.CustomizationPickerViewModel2
 import javax.inject.Inject
 import javax.inject.Singleton
 import kotlinx.coroutines.launch
@@ -50,7 +50,7 @@
         lockScreenCustomizationOptionEntries: List<Pair<CustomizationOption, View>>,
         homeScreenCustomizationOptionEntries: List<Pair<CustomizationOption, View>>,
         customizationOptionFloatingSheetViewMap: Map<CustomizationOption, View>?,
-        viewModel: CustomizationOptionsViewModel,
+        viewModel: CustomizationPickerViewModel2,
         colorUpdateViewModel: ColorUpdateViewModel,
         lifecycleOwner: LifecycleOwner,
     ) {
@@ -91,23 +91,25 @@
                 .find { it.first == ThemePickerHomeCustomizationOption.COLORS }
                 ?.second
 
-        viewModel as ThemePickerCustomizationOptionsViewModel
+        val optionsViewModel =
+            viewModel.customizationOptionsViewModel as ThemePickerCustomizationOptionsViewModel
         lifecycleOwner.lifecycleScope.launch {
             lifecycleOwner.repeatOnLifecycle(Lifecycle.State.STARTED) {
                 launch {
-                    viewModel.onCustomizeClockClicked.collect {
+                    optionsViewModel.onCustomizeClockClicked.collect {
                         optionClock?.setOnClickListener { _ -> it?.invoke() }
                     }
                 }
 
                 launch {
-                    viewModel.onCustomizeShortcutClicked.collect {
+                    optionsViewModel.onCustomizeShortcutClicked.collect {
                         optionShortcut?.setOnClickListener { _ -> it?.invoke() }
                     }
                 }
 
                 launch {
-                    viewModel.keyguardQuickAffordancePickerViewModel2.summary.collect { summary ->
+                    optionsViewModel.keyguardQuickAffordancePickerViewModel2.summary.collect {
+                        summary ->
                         optionShortcutDescription?.let {
                             TextViewBinder.bind(
                                 view = it,
@@ -137,7 +139,7 @@
                 }
 
                 launch {
-                    viewModel.onCustomizeColorsClicked.collect {
+                    optionsViewModel.onCustomizeColorsClicked.collect {
                         optionColors?.setOnClickListener { _ -> it?.invoke() }
                     }
                 }
@@ -149,7 +151,7 @@
             ?.let {
                 ClockFloatingSheetBinder.bind(
                     it,
-                    viewModel.clockPickerViewModel,
+                    optionsViewModel,
                     colorUpdateViewModel,
                     lifecycleOwner,
                 )
@@ -160,7 +162,7 @@
             ?.let {
                 ShortcutFloatingSheetBinder.bind(
                     it,
-                    viewModel.keyguardQuickAffordancePickerViewModel2,
+                    optionsViewModel,
                     colorUpdateViewModel,
                     lifecycleOwner,
                 )
@@ -171,7 +173,7 @@
             ?.let {
                 ColorsFloatingSheetBinder.bind(
                     it,
-                    viewModel.colorPickerViewModel2,
+                    optionsViewModel,
                     colorUpdateViewModel,
                     lifecycleOwner,
                 )
diff --git a/tests/Android.bp b/tests/Android.bp
index 5b12a4a..a311e5a 100644
--- a/tests/Android.bp
+++ b/tests/Android.bp
@@ -65,9 +65,9 @@
         "flag-junit",
     ],
     libs: [
-        "android.test.runner",
-        "android.test.base",
-        "android.test.mock",
+        "android.test.runner.stubs.system",
+        "android.test.base.stubs.system",
+        "android.test.mock.stubs.system",
     ],
 
     kotlincflags: ["-Xjvm-default=all"],