Migrates Monet's Style Enum to @IntDef

This is part of the effort to move all Color System depenencies to
server. Enum are not allowerd there.

Bug: 335429258
Test: None
Flag: EXEMPT rearchitecture
Change-Id: I5a4e9e418886ebe55475833768ebece55f2f82f2
diff --git a/src/com/android/customization/model/color/ColorCustomizationManager.java b/src/com/android/customization/model/color/ColorCustomizationManager.java
index 9acbc4f..61a7967 100644
--- a/src/com/android/customization/model/color/ColorCustomizationManager.java
+++ b/src/com/android/customization/model/color/ColorCustomizationManager.java
@@ -48,6 +48,7 @@
 import com.android.customization.model.color.ColorOptionsProvider.ColorSource;
 import com.android.customization.model.theme.OverlayManagerCompat;
 import com.android.customization.module.logging.ThemesUserEventLogger;
+import com.android.systemui.monet.Style;
 import com.android.themepicker.R;
 
 import org.json.JSONArray;
@@ -164,7 +165,7 @@
                 overlaysJson.put(OVERLAY_COLOR_SOURCE, colorOption.getSource());
                 overlaysJson.put(OVERLAY_COLOR_INDEX, String.valueOf(colorOption.getIndex()));
                 overlaysJson.put(OVERLAY_THEME_STYLE,
-                        String.valueOf(colorOption.getStyle().toString()));
+                        String.valueOf(Style.toString(colorOption.getStyle())));
 
                 // OVERLAY_COLOR_BOTH is only for wallpaper color case, not preset.
                 if (!COLOR_SOURCE_PRESET.equals(colorOption.getSource())) {
diff --git a/src/com/android/customization/model/color/ColorOption.java b/src/com/android/customization/model/color/ColorOption.java
index 18414a4..a62756f 100644
--- a/src/com/android/customization/model/color/ColorOption.java
+++ b/src/com/android/customization/model/color/ColorOption.java
@@ -39,6 +39,7 @@
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.Map;
+import java.util.Objects;
 import java.util.Set;
 import java.util.stream.Collectors;
 
@@ -56,13 +57,14 @@
     protected final Map<String, String> mPackagesByCategory;
     private final String mTitle;
     private final boolean mIsDefault;
-    private final Style mStyle;
+    @Style.Type
+    private final Integer mStyle;
     private final int mIndex;
     private CharSequence mContentDescription;
     private final @ColorInt int mSeedColor;
 
     protected ColorOption(String title, Map<String, String> overlayPackages, boolean isDefault,
-            int seedColor, Style style, int index) {
+            int seedColor, @Style.Type Integer style, int index) {
         mTitle = title;
         mIsDefault = isDefault;
         mSeedColor = seedColor;
@@ -82,9 +84,9 @@
 
         String currentStyle = colorManager.getCurrentStyle();
         if (TextUtils.isEmpty(currentStyle)) {
-            currentStyle = Style.TONAL_SPOT.toString();
+            currentStyle = Style.toString(Style.TONAL_SPOT);
         }
-        boolean isCurrentStyle = TextUtils.equals(getStyle().toString(), currentStyle);
+        boolean isCurrentStyle = TextUtils.equals(Style.toString(getStyle()), currentStyle);
 
         if (mIsDefault) {
             String serializedOverlays = colorManager.getStoredOverlays();
@@ -116,7 +118,7 @@
         if (other == null) {
             return false;
         }
-        if (mStyle != other.getStyle()) {
+        if (!Objects.equals(mStyle, other.getStyle())) {
             return false;
         }
         String thisSerializedPackages = getSerializedPackages();
@@ -225,7 +227,8 @@
     /**
      * @return the style of this color option
      */
-    public Style getStyle() {
+    @Style.Type
+    public Integer getStyle() {
         return mStyle;
     }
 
diff --git a/src/com/android/customization/model/color/ColorOptionImpl.kt b/src/com/android/customization/model/color/ColorOptionImpl.kt
index 3b8fbc8..d8d562d 100644
--- a/src/com/android/customization/model/color/ColorOptionImpl.kt
+++ b/src/com/android/customization/model/color/ColorOptionImpl.kt
@@ -34,7 +34,7 @@
     isDefault: Boolean,
     private val source: String?,
     seedColor: Int,
-    style: Style,
+    @Style.Type style: Int,
     index: Int,
     private val previewInfo: PreviewInfo,
     val type: ColorType,
@@ -77,7 +77,7 @@
         }
     }
 
-    override fun getStyleForLogging(): Int = style.toString().hashCode()
+    override fun getStyleForLogging(): Int = Style.toString(style).hashCode()
 
     class Builder {
         var title: String? = null
@@ -89,7 +89,7 @@
         @ColorSource var source: String? = null
         var isDefault = false
         @ColorInt var seedColor = 0
-        var style = Style.TONAL_SPOT
+        @Style.Type var style = Style.TONAL_SPOT
         var index = 0
         var packages: MutableMap<String, String?> = HashMap()
         var type = ColorType.WALLPAPER_COLOR
diff --git a/src/com/android/customization/model/color/ColorProvider.kt b/src/com/android/customization/model/color/ColorProvider.kt
index fb9fcfc..74da5c2 100644
--- a/src/com/android/customization/model/color/ColorProvider.kt
+++ b/src/com/android/customization/model/color/ColorProvider.kt
@@ -67,6 +67,7 @@
     private var loaderJob: Job? = null
     private val monetEnabled = ColorUtils.isMonetEnabled(context)
     // TODO(b/202145216): Use style method to fetch the list of style.
+    @Style.Type
     private var styleList =
         if (themeStyleEnabled)
             arrayOf(Style.TONAL_SPOT, Style.SPRITZ, Style.VIBRANT, Style.EXPRESSIVE)
@@ -338,6 +339,7 @@
                         } catch (e: Resources.NotFoundException) {
                             null
                         }
+                    @Style.Type
                     val style =
                         try {
                             if (styleName != null) Style.valueOf(styleName) else Style.TONAL_SPOT
@@ -374,7 +376,7 @@
     private fun buildPreset(
         bundleName: String,
         index: Int,
-        style: Style? = null,
+        @Style.Type style: Int? = null,
         type: ColorType = ColorType.PRESET_COLOR,
     ): ColorOptionImpl {
         val builder = ColorOptionImpl.Builder()
diff --git a/src/com/android/customization/model/color/ThemedWallpaperColorResources.kt b/src/com/android/customization/model/color/ThemedWallpaperColorResources.kt
index c426f9d..ee0f619 100644
--- a/src/com/android/customization/model/color/ThemedWallpaperColorResources.kt
+++ b/src/com/android/customization/model/color/ThemedWallpaperColorResources.kt
@@ -38,11 +38,7 @@
     override suspend fun apply(context: Context, callback: () -> Unit) {
         withContext(Dispatchers.IO) {
             val wallpaperColorScheme =
-                ColorScheme(
-                    wallpaperColors,
-                    false,
-                    fetchThemeStyleFromSetting(),
-                )
+                ColorScheme(wallpaperColors, false, fetchThemeStyleFromSetting())
             with<ColorScheme, Unit>(wallpaperColorScheme) {
                 addOverlayColor(neutral1, R.color.system_neutral1_10)
                 addOverlayColor(neutral2, R.color.system_neutral2_10)
@@ -55,7 +51,8 @@
         }
     }
 
-    private suspend fun fetchThemeStyleFromSetting(): Style {
+    @Style.Type
+    private suspend fun fetchThemeStyleFromSetting(): Int {
         val overlayPackageJson =
             secureSettingsRepository.getString(Settings.Secure.THEME_CUSTOMIZATION_OVERLAY_PACKAGES)
         return if (!overlayPackageJson.isNullOrEmpty()) {
diff --git a/src/com/android/customization/picker/color/data/repository/FakeColorPickerRepository.kt b/src/com/android/customization/picker/color/data/repository/FakeColorPickerRepository.kt
index 3f120ce..b426516 100644
--- a/src/com/android/customization/picker/color/data/repository/FakeColorPickerRepository.kt
+++ b/src/com/android/customization/picker/color/data/repository/FakeColorPickerRepository.kt
@@ -161,7 +161,7 @@
         return builder.build()
     }
 
-    fun buildPresetOption(style: Style, seedColor: Int): ColorOptionImpl {
+    fun buildPresetOption(@Style.Type style: Int, seedColor: Int): ColorOptionImpl {
         val builder = ColorOptionImpl.Builder()
         builder.lightColors =
             intArrayOf(Color.TRANSPARENT, Color.TRANSPARENT, Color.TRANSPARENT, Color.TRANSPARENT)
@@ -197,7 +197,11 @@
         return builder.build()
     }
 
-    fun buildWallpaperOption(source: String, style: Style, seedColor: Int): ColorOptionImpl {
+    fun buildWallpaperOption(
+        source: String,
+        @Style.Type style: Int,
+        seedColor: Int,
+    ): ColorOptionImpl {
         val builder = ColorOptionImpl.Builder()
         builder.lightColors =
             intArrayOf(Color.TRANSPARENT, Color.TRANSPARENT, Color.TRANSPARENT, Color.TRANSPARENT)
diff --git a/src/com/android/customization/picker/color/data/util/MaterialColorsGenerator.kt b/src/com/android/customization/picker/color/data/util/MaterialColorsGenerator.kt
index a921365..a1cc8ff 100644
--- a/src/com/android/customization/picker/color/data/util/MaterialColorsGenerator.kt
+++ b/src/com/android/customization/picker/color/data/util/MaterialColorsGenerator.kt
@@ -70,7 +70,7 @@
      *
      * @return a list of color resource IDs and a corresponding list of their color values
      */
-    fun generate(colorSeed: Int, style: Style): Pair<IntArray, IntArray> {
+    fun generate(colorSeed: Int, @Style.Type style: Int): Pair<IntArray, IntArray> {
         val isDarkMode =
             (applicationContext.resources.configuration.uiMode and
                 Configuration.UI_MODE_NIGHT_MASK) == Configuration.UI_MODE_NIGHT_YES
@@ -94,7 +94,8 @@
         )
     }
 
-    private suspend fun fetchThemeStyleFromSetting(): Style {
+    @Style.Type
+    private suspend fun fetchThemeStyleFromSetting(): Int {
         val overlayPackageJson =
             secureSettingsRepository.getString(Settings.Secure.THEME_CUSTOMIZATION_OVERLAY_PACKAGES)
         return if (!overlayPackageJson.isNullOrEmpty()) {
diff --git a/tests/robotests/src/com/android/customization/model/color/ColorCustomizationManagerTest.kt b/tests/robotests/src/com/android/customization/model/color/ColorCustomizationManagerTest.kt
index 98a1973..13f58a5 100644
--- a/tests/robotests/src/com/android/customization/model/color/ColorCustomizationManagerTest.kt
+++ b/tests/robotests/src/com/android/customization/model/color/ColorCustomizationManagerTest.kt
@@ -71,7 +71,7 @@
     @Test
     fun testParseSettings() {
         val source = COLOR_SOURCE_HOME
-        val style = Style.SPRITZ
+        @Style.Type val style = Style.SPRITZ
         val someColor = "aabbcc"
         val someOtherColor = "bbccdd"
         val settings =
@@ -79,7 +79,7 @@
                 OVERLAY_CATEGORY_SYSTEM_PALETTE to someColor,
                 OVERLAY_CATEGORY_COLOR to someOtherColor,
                 OVERLAY_COLOR_SOURCE to source,
-                OVERLAY_THEME_STYLE to style.toString(),
+                OVERLAY_THEME_STYLE to Style.toString(style),
                 ColorOption.TIMESTAMP_FIELD to "12345",
             )
         val json = JSONObject(settings).toString()
@@ -87,7 +87,7 @@
         manager.parseSettings(json)
 
         assertThat(manager.currentColorSource).isEqualTo(source)
-        assertThat(manager.currentStyle).isEqualTo(style.toString())
+        assertThat(manager.currentStyle).isEqualTo(Style.toString(style))
         assertThat(manager.currentOverlays.size).isEqualTo(2)
         assertThat(manager.currentOverlays[OVERLAY_CATEGORY_COLOR]).isEqualTo(someOtherColor)
         assertThat(manager.currentOverlays[OVERLAY_CATEGORY_SYSTEM_PALETTE]).isEqualTo(someColor)
diff --git a/tests/robotests/src/com/android/customization/model/color/ColorOptionTest.kt b/tests/robotests/src/com/android/customization/model/color/ColorOptionTest.kt
index ed04d14..75d10ca 100644
--- a/tests/robotests/src/com/android/customization/model/color/ColorOptionTest.kt
+++ b/tests/robotests/src/com/android/customization/model/color/ColorOptionTest.kt
@@ -72,7 +72,7 @@
         testColorOptionStyle(Style.EXPRESSIVE)
     }
 
-    private fun testColorOptionStyle(style: Style) {
+    private fun testColorOptionStyle(@Style.Type style: Int) {
         val colorOption: ColorOption =
             ColorOptionImpl(
                 "fake color",
diff --git a/tests/robotests/src/com/android/customization/model/picker/color/ui/viewmodel/ColorPickerViewModelTest.kt b/tests/robotests/src/com/android/customization/model/picker/color/ui/viewmodel/ColorPickerViewModelTest.kt
index 50602ad..b39a564 100644
--- a/tests/robotests/src/com/android/customization/model/picker/color/ui/viewmodel/ColorPickerViewModelTest.kt
+++ b/tests/robotests/src/com/android/customization/model/picker/color/ui/viewmodel/ColorPickerViewModelTest.kt
@@ -147,7 +147,8 @@
 
             assertThat(logger.themeColorSource)
                 .isEqualTo(StyleEnums.COLOR_SOURCE_LOCK_SCREEN_WALLPAPER)
-            assertThat(logger.themeColorStyle).isEqualTo(Style.EXPRESSIVE.toString().hashCode())
+            assertThat(logger.themeColorStyle)
+                .isEqualTo(Style.toString(Style.EXPRESSIVE).hashCode())
             assertThat(logger.themeSeedColor).isEqualTo(121212)
         }
 
@@ -177,7 +178,8 @@
             advanceUntilIdle()
 
             assertThat(logger.themeColorSource).isEqualTo(StyleEnums.COLOR_SOURCE_PRESET_COLOR)
-            assertThat(logger.themeColorStyle).isEqualTo(Style.FRUIT_SALAD.toString().hashCode())
+            assertThat(logger.themeColorStyle)
+                .isEqualTo(Style.toString(Style.FRUIT_SALAD).hashCode())
             assertThat(logger.themeSeedColor).isEqualTo(-54321)
         }
 
diff --git a/tests/robotests/src/com/android/wallpaper/customization/ui/viewmodel/ColorPickerViewModel2Test.kt b/tests/robotests/src/com/android/wallpaper/customization/ui/viewmodel/ColorPickerViewModel2Test.kt
index e4a4884..2056b1e 100644
--- a/tests/robotests/src/com/android/wallpaper/customization/ui/viewmodel/ColorPickerViewModel2Test.kt
+++ b/tests/robotests/src/com/android/wallpaper/customization/ui/viewmodel/ColorPickerViewModel2Test.kt
@@ -145,7 +145,8 @@
 
             assertThat(logger.themeColorSource)
                 .isEqualTo(StyleEnums.COLOR_SOURCE_LOCK_SCREEN_WALLPAPER)
-            assertThat(logger.themeColorStyle).isEqualTo(Style.EXPRESSIVE.toString().hashCode())
+            assertThat(logger.themeColorStyle)
+                .isEqualTo(Style.toString(Style.EXPRESSIVE).hashCode())
             assertThat(logger.themeSeedColor).isEqualTo(121212)
         }
 
@@ -176,7 +177,8 @@
             applySelectedColorOption()
 
             assertThat(logger.themeColorSource).isEqualTo(StyleEnums.COLOR_SOURCE_PRESET_COLOR)
-            assertThat(logger.themeColorStyle).isEqualTo(Style.FRUIT_SALAD.toString().hashCode())
+            assertThat(logger.themeColorStyle)
+                .isEqualTo(Style.toString(Style.FRUIT_SALAD).hashCode())
             assertThat(logger.themeSeedColor).isEqualTo(-54321)
         }