Merge "Use ClockPickerConfig.isReactiveToTone everywhere it's required" into main
diff --git a/src/com/android/customization/module/CustomizationInjector.kt b/src/com/android/customization/module/CustomizationInjector.kt
index ca42ef3..19cac97 100644
--- a/src/com/android/customization/module/CustomizationInjector.kt
+++ b/src/com/android/customization/module/CustomizationInjector.kt
@@ -31,7 +31,7 @@
     fun getCustomizationPreferences(context: Context): CustomizationPreferences
 
     fun getKeyguardQuickAffordancePickerInteractor(
-        context: Context,
+        context: Context
     ): KeyguardQuickAffordancePickerInteractor
 
     fun getColorPickerViewModelFactory(context: Context): ColorPickerViewModel.Factory
@@ -47,6 +47,5 @@
     fun getClockSettingsViewModelFactory(
         context: Context,
         wallpaperColorsRepository: WallpaperColorsRepository,
-        clockViewFactory: ClockViewFactory,
     ): ClockSettingsViewModel.Factory
 }
diff --git a/src/com/android/customization/module/ThemePickerInjector.kt b/src/com/android/customization/module/ThemePickerInjector.kt
index ae412ed..b577e43 100644
--- a/src/com/android/customization/module/ThemePickerInjector.kt
+++ b/src/com/android/customization/module/ThemePickerInjector.kt
@@ -378,7 +378,6 @@
     override fun getClockSettingsViewModelFactory(
         context: Context,
         wallpaperColorsRepository: WallpaperColorsRepository,
-        clockViewFactory: ClockViewFactory,
     ): ClockSettingsViewModel.Factory {
         return clockSettingsViewModelFactory
             ?: ClockSettingsViewModel.Factory(
@@ -387,8 +386,7 @@
                     colorPickerInteractor.get(),
                     getUserEventLogger(),
                 ) { clockId ->
-                    clockId?.let { clockViewFactory.getController(clockId).config.isReactiveToTone }
-                        ?: false
+                    clockId?.let { clockPickerInteractor.get().isReactiveToTone(it) } ?: false
                 }
                 .also { clockSettingsViewModelFactory = it }
     }
diff --git a/src/com/android/customization/picker/clock/data/repository/ClockPickerRepository.kt b/src/com/android/customization/picker/clock/data/repository/ClockPickerRepository.kt
index 710a1da..9690880 100644
--- a/src/com/android/customization/picker/clock/data/repository/ClockPickerRepository.kt
+++ b/src/com/android/customization/picker/clock/data/repository/ClockPickerRepository.kt
@@ -21,6 +21,7 @@
 import com.android.customization.picker.clock.shared.ClockSize
 import com.android.customization.picker.clock.shared.model.ClockMetadataModel
 import com.android.systemui.plugins.clocks.ClockFontAxisSetting
+import com.android.systemui.plugins.clocks.ClockId
 import kotlinx.coroutines.flow.Flow
 
 /**
@@ -52,4 +53,6 @@
     suspend fun setClockSize(size: ClockSize)
 
     suspend fun setClockFontAxes(axisSettings: List<ClockFontAxisSetting>)
+
+    fun isReactiveToTone(clockId: ClockId): Boolean?
 }
diff --git a/src/com/android/customization/picker/clock/data/repository/ClockPickerRepositoryImpl.kt b/src/com/android/customization/picker/clock/data/repository/ClockPickerRepositoryImpl.kt
index 90bb6e6..9508fa1 100644
--- a/src/com/android/customization/picker/clock/data/repository/ClockPickerRepositoryImpl.kt
+++ b/src/com/android/customization/picker/clock/data/repository/ClockPickerRepositoryImpl.kt
@@ -24,6 +24,7 @@
 import com.android.customization.picker.clock.shared.model.ClockMetadataModel
 import com.android.systemui.plugins.clocks.ClockFontAxis
 import com.android.systemui.plugins.clocks.ClockFontAxisSetting
+import com.android.systemui.plugins.clocks.ClockId
 import com.android.systemui.plugins.clocks.ClockMetadata
 import com.android.systemui.shared.clocks.ClockRegistry
 import com.android.systemui.shared.settings.data.repository.SecureSettingsRepository
@@ -195,6 +196,10 @@
         }
     }
 
+    override fun isReactiveToTone(clockId: ClockId): Boolean? {
+        return registry.getClockPickerConfig(clockId)?.isReactiveToTone
+    }
+
     private fun JSONObject.getSelectedColorId(): String? {
         return if (this.isNull(KEY_METADATA_SELECTED_COLOR_ID)) {
             null
diff --git a/src/com/android/customization/picker/clock/domain/interactor/ClockPickerInteractor.kt b/src/com/android/customization/picker/clock/domain/interactor/ClockPickerInteractor.kt
index 678de5e..7996055 100644
--- a/src/com/android/customization/picker/clock/domain/interactor/ClockPickerInteractor.kt
+++ b/src/com/android/customization/picker/clock/domain/interactor/ClockPickerInteractor.kt
@@ -63,6 +63,8 @@
 
     val selectedClockSize: Flow<ClockSize> = repository.selectedClockSize
 
+    fun isReactiveToTone(clockId: String) = repository.isReactiveToTone(clockId)
+
     suspend fun setSelectedClock(clockId: String) {
         // Use the [clockId] to override saved clock id, since it might not be updated in time
         setClockOption(ClockSnapshotModel(clockId = clockId))
diff --git a/src/com/android/customization/picker/clock/ui/fragment/ClockSettingsFragment.kt b/src/com/android/customization/picker/clock/ui/fragment/ClockSettingsFragment.kt
index b66150f..d4118c0 100644
--- a/src/com/android/customization/picker/clock/ui/fragment/ClockSettingsFragment.kt
+++ b/src/com/android/customization/picker/clock/ui/fragment/ClockSettingsFragment.kt
@@ -57,14 +57,9 @@
     override fun onCreateView(
         inflater: LayoutInflater,
         container: ViewGroup?,
-        savedInstanceState: Bundle?
+        savedInstanceState: Bundle?,
     ): View {
-        val view =
-            inflater.inflate(
-                R.layout.fragment_clock_settings,
-                container,
-                false,
-            )
+        val view = inflater.inflate(R.layout.fragment_clock_settings, container, false)
         ViewCompat.setOnApplyWindowInsetsListener(view) { v, windowInsets ->
             val insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars())
             v.updateLayoutParams<MarginLayoutParams> {
@@ -93,21 +88,18 @@
                             authority =
                                 resources.getString(
                                     com.android.wallpaper.R.string
-                                        .lock_screen_preview_provider_authority,
+                                        .lock_screen_preview_provider_authority
                                 ),
                         ),
                     wallpaperInfoProvider = { forceReload ->
                         suspendCancellableCoroutine { continuation ->
                             injector
                                 .getCurrentWallpaperInfoFactory(context)
-                                .createCurrentWallpaperInfos(
-                                    context,
-                                    forceReload,
-                                ) { homeWallpaper, lockWallpaper, _ ->
-                                    continuation.resume(
-                                        lockWallpaper ?: homeWallpaper,
-                                        null,
-                                    )
+                                .createCurrentWallpaperInfos(context, forceReload) {
+                                    homeWallpaper,
+                                    lockWallpaper,
+                                    _ ->
+                                    continuation.resume(lockWallpaper ?: homeWallpaper, null)
                                 }
                         }
                     },
@@ -118,10 +110,7 @@
                         Bundle().apply {
                             // Hide the clock from the system UI rendered preview so we can
                             // place the carousel on top of it.
-                            putBoolean(
-                                ClockPreviewConstants.KEY_HIDE_CLOCK,
-                                true,
-                            )
+                            putBoolean(ClockPreviewConstants.KEY_HIDE_CLOCK, true)
                         }
                     },
                     wallpaperInteractor = injector.getWallpaperInteractor(requireContext()),
@@ -139,7 +128,6 @@
                     injector.getClockSettingsViewModelFactory(
                         context,
                         injector.getWallpaperColorsRepository(),
-                        injector.getClockViewFactory(activity),
                     ),
                 )
                 .get(),
@@ -159,7 +147,7 @@
     override fun getToolbarTextColor(): Int {
         return ContextCompat.getColor(
             requireContext(),
-            com.android.wallpaper.R.color.system_on_surface
+            com.android.wallpaper.R.color.system_on_surface,
         )
     }
 }
diff --git a/tests/common/src/com/android/customization/testing/TestCustomizationInjector.kt b/tests/common/src/com/android/customization/testing/TestCustomizationInjector.kt
index 3d52f86..102d8ca 100644
--- a/tests/common/src/com/android/customization/testing/TestCustomizationInjector.kt
+++ b/tests/common/src/com/android/customization/testing/TestCustomizationInjector.kt
@@ -104,7 +104,6 @@
     override fun getClockSettingsViewModelFactory(
         context: Context,
         wallpaperColorsRepository: WallpaperColorsRepository,
-        clockViewFactory: ClockViewFactory,
     ): ClockSettingsViewModel.Factory {
         throw UnsupportedOperationException("not implemented")
     }
diff --git a/tests/robotests/src/com/android/customization/picker/clock/data/repository/FakeClockPickerRepository.kt b/tests/robotests/src/com/android/customization/picker/clock/data/repository/FakeClockPickerRepository.kt
index 0e5a88e..638aa7c 100644
--- a/tests/robotests/src/com/android/customization/picker/clock/data/repository/FakeClockPickerRepository.kt
+++ b/tests/robotests/src/com/android/customization/picker/clock/data/repository/FakeClockPickerRepository.kt
@@ -25,6 +25,7 @@
 import com.android.systemui.plugins.clocks.AxisType
 import com.android.systemui.plugins.clocks.ClockFontAxis
 import com.android.systemui.plugins.clocks.ClockFontAxisSetting
+import com.android.systemui.plugins.clocks.ClockId
 import kotlinx.coroutines.flow.Flow
 import kotlinx.coroutines.flow.MutableStateFlow
 import kotlinx.coroutines.flow.asStateFlow
@@ -88,6 +89,8 @@
         fontAxes.update { fontAxes -> ClockFontAxis.merge(fontAxes, axisSettings) }
     }
 
+    override fun isReactiveToTone(clockId: ClockId): Boolean? = true
+
     companion object {
         fun buildFakeAxis(i: Int): ClockFontAxis {
             return ClockFontAxis(