diff options
author | 2023-08-07 21:15:01 +0000 | |
---|---|---|
committer | 2023-08-08 19:32:51 +0000 | |
commit | 7c86c78846a08e73b4d2fe70e0cad1c8f47209f1 (patch) | |
tree | 6fa095681e62a3d763e062e0ca6dc6b741f3fe35 | |
parent | 071eba94c2a4c840268159b469812db31e55cf8f (diff) |
Remove ids from SystemUI Flagging System.
Bug: 292511372
Fixes: 265188950
Test: manually built and run flag flipper
Change-Id: I3e8cd6a1f30d0b75b4e4ee5d870e5effac813c0a
16 files changed, 359 insertions, 444 deletions
diff --git a/packages/SystemUI/shared/src/com/android/systemui/flags/Flag.kt b/packages/SystemUI/shared/src/com/android/systemui/flags/Flag.kt index b6aae69ebad6..f1a40077f3f9 100644 --- a/packages/SystemUI/shared/src/com/android/systemui/flags/Flag.kt +++ b/packages/SystemUI/shared/src/com/android/systemui/flags/Flag.kt @@ -24,14 +24,12 @@ import android.os.Parcelable /** * Base interface for flags that can change value on a running device. - * @property id unique id to help identify this flag. Must be unique. This will be removed soon. * @property teamfood Set to true to include this flag as part of the teamfood flag. This will * be removed soon. * @property name Used for server-side flagging where appropriate. Also used for display. No spaces. * @property namespace The server-side namespace that this flag lives under. */ interface Flag<T> { - val id: Int val teamfood: Boolean val name: String val namespace: String @@ -58,7 +56,6 @@ interface SysPropFlag<T> : Flag<T> { */ // Consider using the "parcelize" kotlin library. abstract class BooleanFlag constructor( - override val id: Int, override val name: String, override val namespace: String, override val default: Boolean = false, @@ -74,8 +71,17 @@ abstract class BooleanFlag constructor( } } + private constructor( + id: Int, + name: String, + namespace: String, + default: Boolean, + teamfood: Boolean, + overridden: Boolean, + ) : this(name, namespace, default, teamfood, overridden) + private constructor(parcel: Parcel) : this( - id = parcel.readInt(), + parcel.readInt(), name = parcel.readString() ?: "", namespace = parcel.readString() ?: "", default = parcel.readBoolean(), @@ -84,7 +90,7 @@ abstract class BooleanFlag constructor( ) override fun writeToParcel(parcel: Parcel, flags: Int) { - parcel.writeInt(id) + parcel.writeInt(0) parcel.writeString(name) parcel.writeString(namespace) parcel.writeBoolean(default) @@ -99,12 +105,11 @@ abstract class BooleanFlag constructor( * It can be changed or overridden in debug builds but not in release builds. */ data class UnreleasedFlag constructor( - override val id: Int, override val name: String, override val namespace: String, override val teamfood: Boolean = false, override val overridden: Boolean = false -) : BooleanFlag(id, name, namespace, false, teamfood, overridden) +) : BooleanFlag(name, namespace, false, teamfood, overridden) /** * A Flag that is true by default. @@ -112,12 +117,11 @@ data class UnreleasedFlag constructor( * It can be changed or overridden in any build, meaning it can be turned off if needed. */ data class ReleasedFlag constructor( - override val id: Int, override val name: String, override val namespace: String, override val teamfood: Boolean = false, override val overridden: Boolean = false -) : BooleanFlag(id, name, namespace, true, teamfood, overridden) +) : BooleanFlag(name, namespace, true, teamfood, overridden) /** * A Flag that reads its default values from a resource overlay instead of code. @@ -125,7 +129,6 @@ data class ReleasedFlag constructor( * Prefer [UnreleasedFlag] and [ReleasedFlag]. */ data class ResourceBooleanFlag constructor( - override val id: Int, override val name: String, override val namespace: String, @BoolRes override val resourceId: Int, @@ -140,7 +143,6 @@ data class ResourceBooleanFlag constructor( * Prefer [UnreleasedFlag] and [ReleasedFlag]. */ data class SysPropBooleanFlag constructor( - override val id: Int, override val name: String, override val namespace: String, override val default: Boolean = false, @@ -150,7 +152,6 @@ data class SysPropBooleanFlag constructor( } data class StringFlag constructor( - override val id: Int, override val name: String, override val namespace: String, override val default: String = "", @@ -165,15 +166,21 @@ data class StringFlag constructor( } } + private constructor(id: Int, name: String, namespace: String, default: String) : this( + name, + namespace, + default + ) + private constructor(parcel: Parcel) : this( - id = parcel.readInt(), + parcel.readInt(), name = parcel.readString() ?: "", namespace = parcel.readString() ?: "", default = parcel.readString() ?: "" ) override fun writeToParcel(parcel: Parcel, flags: Int) { - parcel.writeInt(id) + parcel.writeInt(0) parcel.writeString(name) parcel.writeString(namespace) parcel.writeString(default) @@ -181,7 +188,6 @@ data class StringFlag constructor( } data class ResourceStringFlag constructor( - override val id: Int, override val name: String, override val namespace: String, @StringRes override val resourceId: Int, @@ -189,7 +195,6 @@ data class ResourceStringFlag constructor( ) : ResourceFlag<String> data class IntFlag constructor( - override val id: Int, override val name: String, override val namespace: String, override val default: Int = 0, @@ -205,15 +210,21 @@ data class IntFlag constructor( } } + private constructor(id: Int, name: String, namespace: String, default: Int) : this( + name, + namespace, + default + ) + private constructor(parcel: Parcel) : this( - id = parcel.readInt(), + parcel.readInt(), name = parcel.readString() ?: "", namespace = parcel.readString() ?: "", default = parcel.readInt() ) override fun writeToParcel(parcel: Parcel, flags: Int) { - parcel.writeInt(id) + parcel.writeInt(0) parcel.writeString(name) parcel.writeString(namespace) parcel.writeInt(default) @@ -221,7 +232,6 @@ data class IntFlag constructor( } data class ResourceIntFlag constructor( - override val id: Int, override val name: String, override val namespace: String, @IntegerRes override val resourceId: Int, @@ -229,11 +239,10 @@ data class ResourceIntFlag constructor( ) : ResourceFlag<Int> data class LongFlag constructor( - override val id: Int, - override val default: Long = 0, - override val teamfood: Boolean = false, override val name: String, override val namespace: String, + override val default: Long = 0, + override val teamfood: Boolean = false, override val overridden: Boolean = false ) : ParcelableFlag<Long> { @@ -245,15 +254,21 @@ data class LongFlag constructor( } } + private constructor(id: Int, name: String, namespace: String, default: Long) : this( + name, + namespace, + default + ) + private constructor(parcel: Parcel) : this( - id = parcel.readInt(), + parcel.readInt(), name = parcel.readString() ?: "", namespace = parcel.readString() ?: "", default = parcel.readLong() ) override fun writeToParcel(parcel: Parcel, flags: Int) { - parcel.writeInt(id) + parcel.writeInt(0) parcel.writeString(name) parcel.writeString(namespace) parcel.writeLong(default) @@ -261,7 +276,6 @@ data class LongFlag constructor( } data class FloatFlag constructor( - override val id: Int, override val name: String, override val namespace: String, override val default: Float = 0f, @@ -277,15 +291,21 @@ data class FloatFlag constructor( } } + private constructor(id: Int, name: String, namespace: String, default: Float) : this( + name, + namespace, + default + ) + private constructor(parcel: Parcel) : this( - id = parcel.readInt(), + parcel.readInt(), name = parcel.readString() ?: "", namespace = parcel.readString() ?: "", default = parcel.readFloat() ) override fun writeToParcel(parcel: Parcel, flags: Int) { - parcel.writeInt(id) + parcel.writeInt(0) parcel.writeString(name) parcel.writeString(namespace) parcel.writeFloat(default) @@ -293,7 +313,6 @@ data class FloatFlag constructor( } data class ResourceFloatFlag constructor( - override val id: Int, override val name: String, override val namespace: String, override val resourceId: Int, @@ -301,7 +320,6 @@ data class ResourceFloatFlag constructor( ) : ResourceFlag<Int> data class DoubleFlag constructor( - override val id: Int, override val name: String, override val namespace: String, override val default: Double = 0.0, @@ -317,15 +335,21 @@ data class DoubleFlag constructor( } } + private constructor(id: Int, name: String, namespace: String, default: Double) : this( + name, + namespace, + default + ) + private constructor(parcel: Parcel) : this( - id = parcel.readInt(), + parcel.readInt(), name = parcel.readString() ?: "", namespace = parcel.readString() ?: "", default = parcel.readDouble() ) override fun writeToParcel(parcel: Parcel, flags: Int) { - parcel.writeInt(id) + parcel.writeInt(0) parcel.writeString(name) parcel.writeString(namespace) parcel.writeDouble(default) diff --git a/packages/SystemUI/shared/src/com/android/systemui/flags/FlagManager.kt b/packages/SystemUI/shared/src/com/android/systemui/flags/FlagManager.kt index da1641c326de..1366226a4e24 100644 --- a/packages/SystemUI/shared/src/com/android/systemui/flags/FlagManager.kt +++ b/packages/SystemUI/shared/src/com/android/systemui/flags/FlagManager.kt @@ -116,13 +116,6 @@ class FlagManager constructor( } /** Returns the stored value or null if not set. */ - // TODO(b/265188950): Remove method this once ids are fully deprecated. - fun <T> readFlagValue(id: Int, serializer: FlagSerializer<T>): T? { - val data = settings.getStringFromSecure(idToSettingsKey(id)) - return serializer.fromSettingsData(data) - } - - /** Returns the stored value or null if not set. */ fun <T> readFlagValue(name: String, serializer: FlagSerializer<T>): T? { val data = settings.getString(nameToSettingsKey(name)) return serializer.fromSettingsData(data) @@ -158,11 +151,6 @@ class FlagManager constructor( return intent } - // TODO(b/265188950): Remove method this once ids are fully deprecated. - fun idToSettingsKey(id: Int): String { - return "$SETTINGS_PREFIX/$id" - } - fun nameToSettingsKey(name: String): String { return "$SETTINGS_PREFIX/$name" } diff --git a/packages/SystemUI/shared/src/com/android/systemui/flags/FlagSettingsHelper.kt b/packages/SystemUI/shared/src/com/android/systemui/flags/FlagSettingsHelper.kt index 6beb8518ab67..e0a7feaf671c 100644 --- a/packages/SystemUI/shared/src/com/android/systemui/flags/FlagSettingsHelper.kt +++ b/packages/SystemUI/shared/src/com/android/systemui/flags/FlagSettingsHelper.kt @@ -22,7 +22,6 @@ import android.provider.Settings class FlagSettingsHelper(private val contentResolver: ContentResolver) { - // TODO(b/265188950): Remove method this once ids are fully deprecated. fun getStringFromSecure(key: String): String? = Settings.Secure.getString(contentResolver, key) fun getString(key: String): String? = Settings.Global.getString(contentResolver, key) diff --git a/packages/SystemUI/src-debug/com/android/systemui/flags/FlagsFactory.kt b/packages/SystemUI/src-debug/com/android/systemui/flags/FlagsFactory.kt index c22d689338a8..3360c967a182 100644 --- a/packages/SystemUI/src-debug/com/android/systemui/flags/FlagsFactory.kt +++ b/packages/SystemUI/src-debug/com/android/systemui/flags/FlagsFactory.kt @@ -29,35 +29,31 @@ object FlagsFactory { } fun unreleasedFlag( - id: Int, name: String, namespace: String = "systemui", teamfood: Boolean = false ): UnreleasedFlag { - val flag = UnreleasedFlag(id = id, name = name, namespace = namespace, teamfood = teamfood) + val flag = UnreleasedFlag(name = name, namespace = namespace, teamfood = teamfood) checkForDupesAndAdd(flag) return flag } fun releasedFlag( - id: Int, name: String, namespace: String = "systemui", ): ReleasedFlag { - val flag = ReleasedFlag(id = id, name = name, namespace = namespace, teamfood = false) + val flag = ReleasedFlag(name = name, namespace = namespace, teamfood = false) checkForDupesAndAdd(flag) return flag } fun resourceBooleanFlag( - id: Int, @BoolRes resourceId: Int, name: String, namespace: String = "systemui", ): ResourceBooleanFlag { val flag = ResourceBooleanFlag( - id = id, name = name, namespace = namespace, resourceId = resourceId, @@ -68,13 +64,11 @@ object FlagsFactory { } fun sysPropBooleanFlag( - id: Int, name: String, namespace: String = "systemui", default: Boolean = false ): SysPropBooleanFlag { - val flag = - SysPropBooleanFlag(id = id, name = name, namespace = "systemui", default = default) + val flag = SysPropBooleanFlag(name = name, namespace = "systemui", default = default) checkForDupesAndAdd(flag) return flag } diff --git a/packages/SystemUI/src-release/com/android/systemui/flags/FlagsFactory.kt b/packages/SystemUI/src-release/com/android/systemui/flags/FlagsFactory.kt index 5502da146bba..75465c27724d 100644 --- a/packages/SystemUI/src-release/com/android/systemui/flags/FlagsFactory.kt +++ b/packages/SystemUI/src-release/com/android/systemui/flags/FlagsFactory.kt @@ -29,35 +29,31 @@ object FlagsFactory { } fun unreleasedFlag( - id: Int, name: String, namespace: String = "systemui", teamfood: Boolean = false ): UnreleasedFlag { // Unreleased flags are always false in this build. - val flag = UnreleasedFlag(id = id, name = "", namespace = "", teamfood = false) + val flag = UnreleasedFlag(name = name, namespace = namespace, teamfood = false) return flag } fun releasedFlag( - id: Int, name: String, namespace: String = "systemui", ): ReleasedFlag { - val flag = ReleasedFlag(id = id, name = name, namespace = namespace, teamfood = false) + val flag = ReleasedFlag(name = name, namespace = namespace, teamfood = false) flagMap[name] = flag return flag } fun resourceBooleanFlag( - id: Int, @BoolRes resourceId: Int, name: String, namespace: String = "systemui", ): ResourceBooleanFlag { val flag = ResourceBooleanFlag( - id = id, name = name, namespace = namespace, resourceId = resourceId, @@ -68,13 +64,11 @@ object FlagsFactory { } fun sysPropBooleanFlag( - id: Int, name: String, namespace: String = "systemui", default: Boolean = false ): SysPropBooleanFlag { - val flag = - SysPropBooleanFlag(id = id, name = name, namespace = namespace, default = default) + val flag = SysPropBooleanFlag(name = name, namespace = namespace, default = default) flagMap[name] = flag return flag } diff --git a/packages/SystemUI/src/com/android/systemui/flags/FeatureFlagsDebug.java b/packages/SystemUI/src/com/android/systemui/flags/FeatureFlagsDebug.java index 367a9b9bd4a0..4c78e4ce4fe4 100644 --- a/packages/SystemUI/src/com/android/systemui/flags/FeatureFlagsDebug.java +++ b/packages/SystemUI/src/com/android/systemui/flags/FeatureFlagsDebug.java @@ -93,8 +93,7 @@ public class FeatureFlagsDebug implements FeatureFlags { shouldRestart = true; } } else if (mStringFlagCache.containsKey(flag.getName())) { - String newValue = value == null ? "" : value; - if (mStringFlagCache.get(flag.getName()) != value) { + if (!mStringFlagCache.get(flag.getName()).equals(value)) { shouldRestart = true; } } else if (mIntFlagCache.containsKey(flag.getName())) { @@ -202,8 +201,7 @@ public class FeatureFlagsDebug implements FeatureFlags { String name = flag.getName(); if (!mStringFlagCache.containsKey(name)) { mStringFlagCache.put(name, - readFlagValueInternal( - flag.getId(), name, flag.getDefault(), StringFlagSerializer.INSTANCE)); + readFlagValueInternal(name, flag.getDefault(), StringFlagSerializer.INSTANCE)); } return mStringFlagCache.get(name); @@ -215,36 +213,30 @@ public class FeatureFlagsDebug implements FeatureFlags { String name = flag.getName(); if (!mStringFlagCache.containsKey(name)) { mStringFlagCache.put(name, - readFlagValueInternal( - flag.getId(), name, mResources.getString(flag.getResourceId()), + readFlagValueInternal(name, mResources.getString(flag.getResourceId()), StringFlagSerializer.INSTANCE)); } return mStringFlagCache.get(name); } - - @NonNull @Override public int getInt(@NonNull IntFlag flag) { String name = flag.getName(); if (!mIntFlagCache.containsKey(name)) { mIntFlagCache.put(name, - readFlagValueInternal( - flag.getId(), name, flag.getDefault(), IntFlagSerializer.INSTANCE)); + readFlagValueInternal(name, flag.getDefault(), IntFlagSerializer.INSTANCE)); } return mIntFlagCache.get(name); } - @NonNull @Override public int getInt(@NonNull ResourceIntFlag flag) { String name = flag.getName(); if (!mIntFlagCache.containsKey(name)) { mIntFlagCache.put(name, - readFlagValueInternal( - flag.getId(), name, mResources.getInteger(flag.getResourceId()), + readFlagValueInternal(name, mResources.getInteger(flag.getResourceId()), IntFlagSerializer.INSTANCE)); } @@ -254,13 +246,6 @@ public class FeatureFlagsDebug implements FeatureFlags { /** Specific override for Boolean flags that checks against the teamfood list.*/ private boolean readBooleanFlagInternal(Flag<Boolean> flag, boolean defaultValue) { Boolean result = readBooleanFlagOverride(flag.getName()); - if (result == null) { - result = readBooleanFlagOverride(flag.getId()); - if (result != null) { - // Move overrides from id to name - setFlagValueInternal(flag.getName(), result, BooleanFlagSerializer.INSTANCE); - } - } boolean hasServerOverride = mServerFlagReader.hasOverride( flag.getNamespace(), flag.getName()); @@ -278,45 +263,22 @@ public class FeatureFlagsDebug implements FeatureFlags { flag.getNamespace(), flag.getName(), defaultValue) : result; } - private Boolean readBooleanFlagOverride(int id) { - return readFlagValueInternal(id, BooleanFlagSerializer.INSTANCE); - } private Boolean readBooleanFlagOverride(String name) { return readFlagValueInternal(name, BooleanFlagSerializer.INSTANCE); } - // TODO(b/265188950): Remove id from this method once ids are fully deprecated. @NonNull private <T> T readFlagValueInternal( - int id, String name, @NonNull T defaultValue, FlagSerializer<T> serializer) { + String name, @NonNull T defaultValue, FlagSerializer<T> serializer) { requireNonNull(defaultValue, "defaultValue"); T resultForName = readFlagValueInternal(name, serializer); if (resultForName == null) { - T resultForId = readFlagValueInternal(id, serializer); - if (resultForId == null) { - return defaultValue; - } else { - setFlagValue(name, resultForId, serializer); - return resultForId; - } + return defaultValue; } return resultForName; } - - /** Returns the stored value or null if not set. */ - // TODO(b/265188950): Remove method this once ids are fully deprecated. - @Nullable - private <T> T readFlagValueInternal(int id, FlagSerializer<T> serializer) { - try { - return mFlagManager.readFlagValue(id, serializer); - } catch (Exception e) { - eraseInternal(id); - } - return null; - } - /** Returns the stored value or null if not set. */ @Nullable private <T> T readFlagValueInternal(String name, FlagSerializer<T> serializer) { @@ -384,15 +346,6 @@ public class FeatureFlagsDebug implements FeatureFlags { } /** Works just like {@link #eraseFlag(String)} except that it doesn't restart SystemUI. */ - // TODO(b/265188950): Remove method this once ids are fully deprecated. - private void eraseInternal(int id) { - // We can't actually "erase" things from settings, but we can set them to empty! - mGlobalSettings.putStringForUser(mFlagManager.idToSettingsKey(id), "", - UserHandle.USER_CURRENT); - Log.i(TAG, "Erase name " + id); - } - - /** Works just like {@link #eraseFlag(String)} except that it doesn't restart SystemUI. */ private void eraseInternal(String name) { // We can't actually "erase" things from settings, but we can set them to empty! mGlobalSettings.putStringForUser(mFlagManager.nameToSettingsKey(name), "", @@ -433,7 +386,7 @@ public class FeatureFlagsDebug implements FeatureFlags { setFlagValue(flag.getName(), value, BooleanFlagSerializer.INSTANCE); } else if (flag instanceof SysPropBooleanFlag) { // Store SysProp flags in SystemProperties where they can read by outside parties. - mSystemProperties.setBoolean(((SysPropBooleanFlag) flag).getName(), value); + mSystemProperties.setBoolean(flag.getName(), value); dispatchListenersAndMaybeRestart( flag.getName(), suppressRestart -> restartSystemUI( @@ -526,7 +479,7 @@ public class FeatureFlagsDebug implements FeatureFlags { } } catch (IllegalArgumentException e) { Log.w(TAG, - "Unable to set " + flag.getId() + " of type " + flag.getClass() + "Unable to set " + flag.getName() + " of type " + flag.getClass() + " to value of type " + (value == null ? null : value.getClass())); } } @@ -544,21 +497,18 @@ public class FeatureFlagsDebug implements FeatureFlags { if (f instanceof ReleasedFlag) { enabled = isEnabled((ReleasedFlag) f); - overridden = readBooleanFlagOverride(f.getName()) != null - || readBooleanFlagOverride(f.getId()) != null; + overridden = readBooleanFlagOverride(f.getName()) != null; } else if (f instanceof UnreleasedFlag) { enabled = isEnabled((UnreleasedFlag) f); - overridden = readBooleanFlagOverride(f.getName()) != null - || readBooleanFlagOverride(f.getId()) != null; + overridden = readBooleanFlagOverride(f.getName()) != null; } else if (f instanceof ResourceBooleanFlag) { enabled = isEnabled((ResourceBooleanFlag) f); - overridden = readBooleanFlagOverride(f.getName()) != null - || readBooleanFlagOverride(f.getId()) != null; + overridden = readBooleanFlagOverride(f.getName()) != null; } else if (f instanceof SysPropBooleanFlag) { // TODO(b/223379190): Teamfood not supported for sysprop flags yet. enabled = isEnabled((SysPropBooleanFlag) f); teamfood = false; - overridden = !mSystemProperties.get(((SysPropBooleanFlag) f).getName()).isEmpty(); + overridden = !mSystemProperties.get(f.getName()).isEmpty(); } else { // TODO: add support for other flag types. Log.w(TAG, "Unsupported Flag Type. Please file a bug."); @@ -566,11 +516,9 @@ public class FeatureFlagsDebug implements FeatureFlags { } if (enabled) { - return new ReleasedFlag( - f.getId(), f.getName(), f.getNamespace(), teamfood, overridden); + return new ReleasedFlag(f.getName(), f.getNamespace(), teamfood, overridden); } else { - return new UnreleasedFlag( - f.getId(), f.getName(), f.getNamespace(), teamfood, overridden); + return new UnreleasedFlag(f.getName(), f.getNamespace(), teamfood, overridden); } } }; diff --git a/packages/SystemUI/src/com/android/systemui/flags/FeatureFlagsRelease.java b/packages/SystemUI/src/com/android/systemui/flags/FeatureFlagsRelease.java index 9d19a7dc4604..e03b43873e05 100644 --- a/packages/SystemUI/src/com/android/systemui/flags/FeatureFlagsRelease.java +++ b/packages/SystemUI/src/com/android/systemui/flags/FeatureFlagsRelease.java @@ -67,7 +67,7 @@ public class FeatureFlagsRelease implements FeatureFlags { } } else if (mStringCache.containsKey(flag.getName())) { String newValue = value == null ? "" : value; - if (mStringCache.get(flag.getName()) != newValue) { + if (!mStringCache.get(flag.getName()).equals(newValue)) { shouldRestart = true; } } else if (mIntCache.containsKey(flag.getName())) { @@ -185,14 +185,12 @@ public class FeatureFlagsRelease implements FeatureFlags { return mStringCache.get(name); } - @NonNull @Override public int getInt(@NonNull IntFlag flag) { // Fill the cache. return getIntInternal(flag.getName(), flag.getDefault()); } - @NonNull @Override public int getInt(@NonNull ResourceIntFlag flag) { // Fill the cache. diff --git a/packages/SystemUI/src/com/android/systemui/flags/FlagCommand.java b/packages/SystemUI/src/com/android/systemui/flags/FlagCommand.java index daf9429344a7..bd0ed482c961 100644 --- a/packages/SystemUI/src/com/android/systemui/flags/FlagCommand.java +++ b/packages/SystemUI/src/com/android/systemui/flags/FlagCommand.java @@ -219,17 +219,6 @@ public class FlagCommand implements Command { return 0; } - private int flagNameToId(String flagName) { - Map<String, Flag<?>> flagFields = FlagsFactory.INSTANCE.getKnownFlags(); - for (String fieldName : flagFields.keySet()) { - if (flagName.equals(fieldName)) { - return flagFields.get(fieldName).getId(); - } - } - - return 0; - } - private void printKnownFlags(PrintWriter pw) { Map<String, Flag<?>> fields = FlagsFactory.INSTANCE.getKnownFlags(); diff --git a/packages/SystemUI/src/com/android/systemui/flags/Flags.kt b/packages/SystemUI/src/com/android/systemui/flags/Flags.kt index 6037bbd837f0..e77d355ac15f 100644 --- a/packages/SystemUI/src/com/android/systemui/flags/Flags.kt +++ b/packages/SystemUI/src/com/android/systemui/flags/Flags.kt @@ -36,30 +36,29 @@ import com.android.systemui.flags.FlagsFactory.unreleasedFlag * See [FeatureFlagsDebug] for instructions on flipping the flags via adb. */ object Flags { - @JvmField val TEAMFOOD = unreleasedFlag(1, "teamfood") + @JvmField val TEAMFOOD = unreleasedFlag("teamfood") // 100 - notification // TODO(b/254512751): Tracking Bug val NOTIFICATION_PIPELINE_DEVELOPER_LOGGING = - unreleasedFlag(103, "notification_pipeline_developer_logging") + unreleasedFlag("notification_pipeline_developer_logging") // TODO(b/254512732): Tracking Bug - @JvmField val NSSL_DEBUG_LINES = unreleasedFlag(105, "nssl_debug_lines") + @JvmField val NSSL_DEBUG_LINES = unreleasedFlag("nssl_debug_lines") // TODO(b/254512505): Tracking Bug - @JvmField val NSSL_DEBUG_REMOVE_ANIMATION = unreleasedFlag(106, "nssl_debug_remove_animation") + @JvmField val NSSL_DEBUG_REMOVE_ANIMATION = unreleasedFlag("nssl_debug_remove_animation") // TODO(b/254512624): Tracking Bug @JvmField val NOTIFICATION_DRAG_TO_CONTENTS = resourceBooleanFlag( - 108, R.bool.config_notificationToContents, "notification_drag_to_contents" ) // TODO(b/254512538): Tracking Bug - val INSTANT_VOICE_REPLY = unreleasedFlag(111, "instant_voice_reply") + val INSTANT_VOICE_REPLY = unreleasedFlag("instant_voice_reply") /** * This flag controls whether we register a listener for StatsD notification memory reports. @@ -67,48 +66,47 @@ object Flags { * enabled as well. */ val NOTIFICATION_MEMORY_LOGGING_ENABLED = - releasedFlag(119, "notification_memory_logging_enabled") + releasedFlag("notification_memory_logging_enabled") // TODO(b/260335638): Tracking Bug @JvmField val NOTIFICATION_INLINE_REPLY_ANIMATION = - unreleasedFlag(174148361, "notification_inline_reply_animation") + unreleasedFlag("notification_inline_reply_animation") /** Makes sure notification panel is updated before the user switch is complete. */ // TODO(b/278873737): Tracking Bug @JvmField val LOAD_NOTIFICATIONS_BEFORE_THE_USER_SWITCH_IS_COMPLETE = - releasedFlag(278873737, "load_notifications_before_the_user_switch_is_complete") + releasedFlag("load_notifications_before_the_user_switch_is_complete") // TODO(b/277338665): Tracking Bug @JvmField val NOTIFICATION_SHELF_REFACTOR = - unreleasedFlag(271161129, "notification_shelf_refactor", teamfood = true) + unreleasedFlag("notification_shelf_refactor", teamfood = true) // TODO(b/290787599): Tracking Bug @JvmField val NOTIFICATION_ICON_CONTAINER_REFACTOR = - unreleasedFlag(278765923, "notification_icon_container_refactor") + unreleasedFlag("notification_icon_container_refactor") // TODO(b/288326013): Tracking Bug @JvmField val NOTIFICATION_ASYNC_HYBRID_VIEW_INFLATION = - unreleasedFlag(288326013, "notification_async_hybrid_view_inflation", teamfood = false) + unreleasedFlag("notification_async_hybrid_view_inflation", teamfood = false) @JvmField val ANIMATED_NOTIFICATION_SHADE_INSETS = - releasedFlag(270682168, "animated_notification_shade_insets") + releasedFlag("animated_notification_shade_insets") // TODO(b/268005230): Tracking Bug @JvmField - val SENSITIVE_REVEAL_ANIM = unreleasedFlag(268005230, "sensitive_reveal_anim", teamfood = true) + val SENSITIVE_REVEAL_ANIM = unreleasedFlag("sensitive_reveal_anim", teamfood = true) // TODO(b/280783617): Tracking Bug @Keep @JvmField val BUILDER_EXTRAS_OVERRIDE = sysPropBooleanFlag( - 128, "persist.sysui.notification.builder_extras_override", default = true ) @@ -117,27 +115,26 @@ object Flags { // TODO(b/292213543): Tracking Bug @JvmField val NOTIFICATION_GROUP_EXPANSION_CHANGE = - unreleasedFlag(292213543, "notification_group_expansion_change", teamfood = false) + unreleasedFlag("notification_group_expansion_change", teamfood = false) // 200 - keyguard/lockscreen // ** Flag retired ** // public static final BooleanFlag KEYGUARD_LAYOUT = - // new BooleanFlag(200, true); + // new BooleanFlag(true); // TODO(b/254512750): Tracking Bug - val NEW_UNLOCK_SWIPE_ANIMATION = releasedFlag(202, "new_unlock_swipe_animation") - val CHARGING_RIPPLE = resourceBooleanFlag(203, R.bool.flag_charging_ripple, "charging_ripple") + val NEW_UNLOCK_SWIPE_ANIMATION = releasedFlag("new_unlock_swipe_animation") + val CHARGING_RIPPLE = resourceBooleanFlag(R.bool.flag_charging_ripple, "charging_ripple") // TODO(b/254512281): Tracking Bug @JvmField val BOUNCER_USER_SWITCHER = - resourceBooleanFlag(204, R.bool.config_enableBouncerUserSwitcher, "bouncer_user_switcher") + resourceBooleanFlag(R.bool.config_enableBouncerUserSwitcher, "bouncer_user_switcher") // TODO(b/254512676): Tracking Bug @JvmField val LOCKSCREEN_CUSTOM_CLOCKS = resourceBooleanFlag( - 207, R.bool.config_enableLockScreenCustomClocks, "lockscreen_custom_clocks" ) @@ -145,28 +142,28 @@ object Flags { // TODO(b/275694445): Tracking Bug @JvmField val LOCKSCREEN_WITHOUT_SECURE_LOCK_WHEN_DREAMING = - releasedFlag(208, "lockscreen_without_secure_lock_when_dreaming") + releasedFlag("lockscreen_without_secure_lock_when_dreaming") // TODO(b/286092087): Tracking Bug @JvmField - val ENABLE_SYSTEM_UI_DREAM_CONTROLLER = unreleasedFlag(301, "enable_system_ui_dream_controller") + val ENABLE_SYSTEM_UI_DREAM_CONTROLLER = unreleasedFlag("enable_system_ui_dream_controller") // TODO(b/288287730): Tracking Bug @JvmField - val ENABLE_SYSTEM_UI_DREAM_HOSTING = unreleasedFlag(302, "enable_system_ui_dream_hosting") + val ENABLE_SYSTEM_UI_DREAM_HOSTING = unreleasedFlag("enable_system_ui_dream_hosting") /** * Whether the clock on a wide lock screen should use the new "stepping" animation for moving * the digits when the clock moves. */ - @JvmField val STEP_CLOCK_ANIMATION = releasedFlag(212, "step_clock_animation") + @JvmField val STEP_CLOCK_ANIMATION = releasedFlag("step_clock_animation") /** * Migration from the legacy isDozing/dozeAmount paths to the new KeyguardTransitionRepository * will occur in stages. This is one stage of many to come. */ // TODO(b/255607168): Tracking Bug - @JvmField val DOZING_MIGRATION_1 = unreleasedFlag(213, "dozing_migration_1") + @JvmField val DOZING_MIGRATION_1 = unreleasedFlag("dozing_migration_1") /** * Migrates control of the LightRevealScrim's reveal effect and amount from legacy code to the @@ -174,73 +171,73 @@ object Flags { */ // TODO(b/281655028): Tracking bug @JvmField - val LIGHT_REVEAL_MIGRATION = unreleasedFlag(218, "light_reveal_migration", teamfood = false) + val LIGHT_REVEAL_MIGRATION = unreleasedFlag("light_reveal_migration", teamfood = false) /** Flag to control the migration of face auth to modern architecture. */ // TODO(b/262838215): Tracking bug - @JvmField val FACE_AUTH_REFACTOR = unreleasedFlag(220, "face_auth_refactor") + @JvmField val FACE_AUTH_REFACTOR = unreleasedFlag("face_auth_refactor") /** Flag to control the revamp of keyguard biometrics progress animation */ // TODO(b/244313043): Tracking bug - @JvmField val BIOMETRICS_ANIMATION_REVAMP = unreleasedFlag(221, "biometrics_animation_revamp") + @JvmField val BIOMETRICS_ANIMATION_REVAMP = unreleasedFlag("biometrics_animation_revamp") // TODO(b/262780002): Tracking Bug - @JvmField val REVAMPED_WALLPAPER_UI = releasedFlag(222, "revamped_wallpaper_ui") + @JvmField val REVAMPED_WALLPAPER_UI = releasedFlag("revamped_wallpaper_ui") // flag for controlling auto pin confirmation and material u shapes in bouncer @JvmField - val AUTO_PIN_CONFIRMATION = releasedFlag(224, "auto_pin_confirmation", "auto_pin_confirmation") + val AUTO_PIN_CONFIRMATION = releasedFlag("auto_pin_confirmation", "auto_pin_confirmation") // TODO(b/262859270): Tracking Bug - @JvmField val FALSING_OFF_FOR_UNFOLDED = releasedFlag(225, "falsing_off_for_unfolded") + @JvmField val FALSING_OFF_FOR_UNFOLDED = releasedFlag("falsing_off_for_unfolded") /** Enables code to show contextual loyalty cards in wallet entrypoints */ // TODO(b/294110497): Tracking Bug @JvmField val ENABLE_WALLET_CONTEXTUAL_LOYALTY_CARDS = - unreleasedFlag(226, "enable_wallet_contextual_loyalty_cards", teamfood = true) + unreleasedFlag("enable_wallet_contextual_loyalty_cards", teamfood = true) // TODO(b/242908637): Tracking Bug - @JvmField val WALLPAPER_FULLSCREEN_PREVIEW = releasedFlag(227, "wallpaper_fullscreen_preview") + @JvmField val WALLPAPER_FULLSCREEN_PREVIEW = releasedFlag("wallpaper_fullscreen_preview") /** Whether the long-press gesture to open wallpaper picker is enabled. */ // TODO(b/266242192): Tracking Bug @JvmField - val LOCK_SCREEN_LONG_PRESS_ENABLED = releasedFlag(228, "lock_screen_long_press_enabled") + val LOCK_SCREEN_LONG_PRESS_ENABLED = releasedFlag("lock_screen_long_press_enabled") /** Enables UI updates for AI wallpapers in the wallpaper picker. */ // TODO(b/267722622): Tracking Bug - @JvmField val WALLPAPER_PICKER_UI_FOR_AIWP = releasedFlag(229, "wallpaper_picker_ui_for_aiwp") + @JvmField val WALLPAPER_PICKER_UI_FOR_AIWP = releasedFlag("wallpaper_picker_ui_for_aiwp") /** Whether to use a new data source for intents to run on keyguard dismissal. */ // TODO(b/275069969): Tracking bug. @JvmField - val REFACTOR_KEYGUARD_DISMISS_INTENT = unreleasedFlag(231, "refactor_keyguard_dismiss_intent") + val REFACTOR_KEYGUARD_DISMISS_INTENT = unreleasedFlag("refactor_keyguard_dismiss_intent") /** Whether to allow long-press on the lock screen to directly open wallpaper picker. */ // TODO(b/277220285): Tracking bug. @JvmField val LOCK_SCREEN_LONG_PRESS_DIRECT_TO_WPP = - unreleasedFlag(232, "lock_screen_long_press_directly_opens_wallpaper_picker") + unreleasedFlag("lock_screen_long_press_directly_opens_wallpaper_picker") /** Whether page transition animations in the wallpaper picker are enabled */ // TODO(b/291710220): Tracking bug. @JvmField val WALLPAPER_PICKER_PAGE_TRANSITIONS = - unreleasedFlag(291710220, "wallpaper_picker_page_transitions") + unreleasedFlag("wallpaper_picker_page_transitions") /** Whether to run the new udfps keyguard refactor code. */ // TODO(b/279440316): Tracking bug. @JvmField - val REFACTOR_UDFPS_KEYGUARD_VIEWS = unreleasedFlag(233, "refactor_udfps_keyguard_views") + val REFACTOR_UDFPS_KEYGUARD_VIEWS = unreleasedFlag("refactor_udfps_keyguard_views") /** Provide new auth messages on the bouncer. */ // TODO(b/277961132): Tracking bug. - @JvmField val REVAMPED_BOUNCER_MESSAGES = unreleasedFlag(234, "revamped_bouncer_messages") + @JvmField val REVAMPED_BOUNCER_MESSAGES = unreleasedFlag("revamped_bouncer_messages") /** Whether to delay showing bouncer UI when face auth or active unlock are enrolled. */ // TODO(b/279794160): Tracking bug. - @JvmField val DELAY_BOUNCER = releasedFlag(235, "delay_bouncer") + @JvmField val DELAY_BOUNCER = releasedFlag("delay_bouncer") /** Keyguard Migration */ @@ -251,217 +248,213 @@ object Flags { // TODO(b/290652751): Tracking bug. @JvmField val MIGRATE_SPLIT_KEYGUARD_BOTTOM_AREA = - unreleasedFlag(290652751, "migrate_split_keyguard_bottom_area") + unreleasedFlag("migrate_split_keyguard_bottom_area") /** Whether to listen for fingerprint authentication over keyguard occluding activities. */ // TODO(b/283260512): Tracking bug. - @JvmField val FP_LISTEN_OCCLUDING_APPS = unreleasedFlag(237, "fp_listen_occluding_apps", + @JvmField val FP_LISTEN_OCCLUDING_APPS = unreleasedFlag("fp_listen_occluding_apps", teamfood = true) /** Flag meant to guard the talkback fix for the KeyguardIndicationTextView */ // TODO(b/286563884): Tracking bug - @JvmField val KEYGUARD_TALKBACK_FIX = releasedFlag(238, "keyguard_talkback_fix") + @JvmField val KEYGUARD_TALKBACK_FIX = releasedFlag("keyguard_talkback_fix") // TODO(b/287268101): Tracking bug. - @JvmField val TRANSIT_CLOCK = releasedFlag(239, "lockscreen_custom_transit_clock") + @JvmField val TRANSIT_CLOCK = releasedFlag("lockscreen_custom_transit_clock") /** Migrate the lock icon view to the new keyguard root view. */ // TODO(b/286552209): Tracking bug. - @JvmField val MIGRATE_LOCK_ICON = unreleasedFlag(240, "migrate_lock_icon") + @JvmField val MIGRATE_LOCK_ICON = unreleasedFlag("migrate_lock_icon") // TODO(b/288276738): Tracking bug. - @JvmField val WIDGET_ON_KEYGUARD = unreleasedFlag(241, "widget_on_keyguard") + @JvmField val WIDGET_ON_KEYGUARD = unreleasedFlag("widget_on_keyguard") /** Migrate the NSSL to the a sibling to both the panel and keyguard root view. */ // TODO(b/288074305): Tracking bug. - @JvmField val MIGRATE_NSSL = unreleasedFlag(242, "migrate_nssl") + @JvmField val MIGRATE_NSSL = unreleasedFlag("migrate_nssl") /** Migrate the status view from the notification panel to keyguard root view. */ // TODO(b/291767565): Tracking bug. - @JvmField val MIGRATE_KEYGUARD_STATUS_VIEW = unreleasedFlag(243, "migrate_keyguard_status_view") + @JvmField val MIGRATE_KEYGUARD_STATUS_VIEW = unreleasedFlag("migrate_keyguard_status_view") /** Enables preview loading animation in the wallpaper picker. */ // TODO(b/274443705): Tracking Bug @JvmField val WALLPAPER_PICKER_PREVIEW_ANIMATION = unreleasedFlag( - 244, "wallpaper_picker_preview_animation", teamfood = true ) /** Stop running face auth when the display state changes to OFF. */ // TODO(b/294221702): Tracking bug. - @JvmField val STOP_FACE_AUTH_ON_DISPLAY_OFF = resourceBooleanFlag(245, + @JvmField val STOP_FACE_AUTH_ON_DISPLAY_OFF = resourceBooleanFlag( R.bool.flag_stop_face_auth_on_display_off, "stop_face_auth_on_display_off") // 300 - power menu // TODO(b/254512600): Tracking Bug - @JvmField val POWER_MENU_LITE = releasedFlag(300, "power_menu_lite") + @JvmField val POWER_MENU_LITE = releasedFlag("power_menu_lite") // 400 - smartspace // TODO(b/254513100): Tracking Bug val SMARTSPACE_SHARED_ELEMENT_TRANSITION_ENABLED = - releasedFlag(401, "smartspace_shared_element_transition_enabled") + releasedFlag("smartspace_shared_element_transition_enabled") // TODO(b/258517050): Clean up after the feature is launched. @JvmField val SMARTSPACE_DATE_WEATHER_DECOUPLED = - sysPropBooleanFlag(403, "persist.sysui.ss.dw_decoupled", default = true) + sysPropBooleanFlag("persist.sysui.ss.dw_decoupled", default = true) // TODO(b/270223352): Tracking Bug @JvmField - val HIDE_SMARTSPACE_ON_DREAM_OVERLAY = releasedFlag(404, "hide_smartspace_on_dream_overlay") + val HIDE_SMARTSPACE_ON_DREAM_OVERLAY = releasedFlag("hide_smartspace_on_dream_overlay") // TODO(b/271460958): Tracking Bug @JvmField val SHOW_WEATHER_COMPLICATION_ON_DREAM_OVERLAY = - releasedFlag(405, "show_weather_complication_on_dream_overlay") + releasedFlag("show_weather_complication_on_dream_overlay") // 500 - quick settings - val PEOPLE_TILE = resourceBooleanFlag(502, R.bool.flag_conversations, "people_tile") + val PEOPLE_TILE = resourceBooleanFlag(R.bool.flag_conversations, "people_tile") @JvmField val QS_USER_DETAIL_SHORTCUT = resourceBooleanFlag( - 503, R.bool.flag_lockscreen_qs_user_detail_shortcut, "qs_user_detail_shortcut" ) @JvmField - val QS_PIPELINE_NEW_HOST = unreleasedFlag(504, "qs_pipeline_new_host", teamfood = true) + val QS_PIPELINE_NEW_HOST = unreleasedFlag("qs_pipeline_new_host", teamfood = true) // TODO(b/278068252): Tracking Bug @JvmField - val QS_PIPELINE_AUTO_ADD = unreleasedFlag(505, "qs_pipeline_auto_add", teamfood = false) + val QS_PIPELINE_AUTO_ADD = unreleasedFlag("qs_pipeline_auto_add", teamfood = false) // TODO(b/254512383): Tracking Bug @JvmField val FULL_SCREEN_USER_SWITCHER = resourceBooleanFlag( - 506, R.bool.config_enableFullscreenUserSwitcher, "full_screen_user_switcher" ) // TODO(b/244064524): Tracking Bug - @JvmField val QS_SECONDARY_DATA_SUB_INFO = releasedFlag(508, "qs_secondary_data_sub_info") + @JvmField val QS_SECONDARY_DATA_SUB_INFO = releasedFlag("qs_secondary_data_sub_info") /** Enables Font Scaling Quick Settings tile */ // TODO(b/269341316): Tracking Bug - @JvmField val ENABLE_FONT_SCALING_TILE = releasedFlag(509, "enable_font_scaling_tile") + @JvmField val ENABLE_FONT_SCALING_TILE = releasedFlag("enable_font_scaling_tile") /** Enables new QS Edit Mode visual refresh */ // TODO(b/269787742): Tracking Bug @JvmField - val ENABLE_NEW_QS_EDIT_MODE = unreleasedFlag(510, "enable_new_qs_edit_mode", teamfood = false) + val ENABLE_NEW_QS_EDIT_MODE = unreleasedFlag("enable_new_qs_edit_mode", teamfood = false) // 600- status bar // TODO(b/265892345): Tracking Bug - val PLUG_IN_STATUS_BAR_CHIP = releasedFlag(265892345, "plug_in_status_bar_chip") + val PLUG_IN_STATUS_BAR_CHIP = releasedFlag("plug_in_status_bar_chip") // TODO(b/280426085): Tracking Bug - @JvmField val NEW_BLUETOOTH_REPOSITORY = releasedFlag(612, "new_bluetooth_repository") + @JvmField val NEW_BLUETOOTH_REPOSITORY = releasedFlag("new_bluetooth_repository") // TODO(b/292533677): Tracking Bug val WIFI_TRACKER_LIB_FOR_WIFI_ICON = - unreleasedFlag(613, "wifi_tracker_lib_for_wifi_icon") + unreleasedFlag("wifi_tracker_lib_for_wifi_icon") // TODO(b/293863612): Tracking Bug @JvmField val INCOMPATIBLE_CHARGING_BATTERY_ICON = - unreleasedFlag(614, "incompatible_charging_battery_icon") + unreleasedFlag("incompatible_charging_battery_icon") // TODO(b/293585143): Tracking Bug - val INSTANT_TETHER = unreleasedFlag(615, "instant_tether") + val INSTANT_TETHER = unreleasedFlag("instant_tether") // 700 - dialer/calls // TODO(b/254512734): Tracking Bug - val ONGOING_CALL_STATUS_BAR_CHIP = releasedFlag(700, "ongoing_call_status_bar_chip") + val ONGOING_CALL_STATUS_BAR_CHIP = releasedFlag("ongoing_call_status_bar_chip") // TODO(b/254512681): Tracking Bug - val ONGOING_CALL_IN_IMMERSIVE = releasedFlag(701, "ongoing_call_in_immersive") + val ONGOING_CALL_IN_IMMERSIVE = releasedFlag("ongoing_call_in_immersive") // TODO(b/254512753): Tracking Bug - val ONGOING_CALL_IN_IMMERSIVE_CHIP_TAP = releasedFlag(702, "ongoing_call_in_immersive_chip_tap") + val ONGOING_CALL_IN_IMMERSIVE_CHIP_TAP = releasedFlag("ongoing_call_in_immersive_chip_tap") // 800 - general visual/theme - @JvmField val MONET = resourceBooleanFlag(800, R.bool.flag_monet, "monet") + @JvmField val MONET = resourceBooleanFlag(R.bool.flag_monet, "monet") // 801 - region sampling // TODO(b/254512848): Tracking Bug - val REGION_SAMPLING = unreleasedFlag(801, "region_sampling") + val REGION_SAMPLING = unreleasedFlag("region_sampling") // 803 - screen contents translation // TODO(b/254513187): Tracking Bug - val SCREEN_CONTENTS_TRANSLATION = unreleasedFlag(803, "screen_contents_translation") + val SCREEN_CONTENTS_TRANSLATION = unreleasedFlag("screen_contents_translation") // 804 - monochromatic themes - @JvmField val MONOCHROMATIC_THEME = releasedFlag(804, "monochromatic") + @JvmField val MONOCHROMATIC_THEME = releasedFlag("monochromatic") // TODO(b/293380347): Tracking Bug - @JvmField val COLOR_FIDELITY = unreleasedFlag(805, "color_fidelity") + @JvmField val COLOR_FIDELITY = unreleasedFlag("color_fidelity") // 900 - media // TODO(b/254512697): Tracking Bug - val MEDIA_TAP_TO_TRANSFER = releasedFlag(900, "media_tap_to_transfer") + val MEDIA_TAP_TO_TRANSFER = releasedFlag("media_tap_to_transfer") // TODO(b/254512502): Tracking Bug - val MEDIA_SESSION_ACTIONS = unreleasedFlag(901, "media_session_actions") + val MEDIA_SESSION_ACTIONS = unreleasedFlag("media_session_actions") // TODO(b/254512654): Tracking Bug - @JvmField val DREAM_MEDIA_COMPLICATION = unreleasedFlag(905, "dream_media_complication") + @JvmField val DREAM_MEDIA_COMPLICATION = unreleasedFlag("dream_media_complication") // TODO(b/254512673): Tracking Bug - @JvmField val DREAM_MEDIA_TAP_TO_OPEN = unreleasedFlag(906, "dream_media_tap_to_open") + @JvmField val DREAM_MEDIA_TAP_TO_OPEN = unreleasedFlag("dream_media_tap_to_open") // TODO(b/254513168): Tracking Bug - @JvmField val UMO_SURFACE_RIPPLE = releasedFlag(907, "umo_surface_ripple") + @JvmField val UMO_SURFACE_RIPPLE = releasedFlag("umo_surface_ripple") // TODO(b/261734857): Tracking Bug - @JvmField val UMO_TURBULENCE_NOISE = releasedFlag(909, "umo_turbulence_noise") + @JvmField val UMO_TURBULENCE_NOISE = releasedFlag("umo_turbulence_noise") // TODO(b/263272731): Tracking Bug - val MEDIA_TTT_RECEIVER_SUCCESS_RIPPLE = releasedFlag(910, "media_ttt_receiver_success_ripple") + val MEDIA_TTT_RECEIVER_SUCCESS_RIPPLE = releasedFlag("media_ttt_receiver_success_ripple") // TODO(b/266157412): Tracking Bug - val MEDIA_RETAIN_SESSIONS = unreleasedFlag(913, "media_retain_sessions") + val MEDIA_RETAIN_SESSIONS = unreleasedFlag("media_retain_sessions") // TODO(b/267007629): Tracking Bug - val MEDIA_RESUME_PROGRESS = releasedFlag(915, "media_resume_progress") + val MEDIA_RESUME_PROGRESS = releasedFlag("media_resume_progress") // TODO(b/267166152) : Tracking Bug - val MEDIA_RETAIN_RECOMMENDATIONS = unreleasedFlag(916, "media_retain_recommendations") + val MEDIA_RETAIN_RECOMMENDATIONS = unreleasedFlag("media_retain_recommendations") // TODO(b/270437894): Tracking Bug - val MEDIA_REMOTE_RESUME = unreleasedFlag(917, "media_remote_resume") + val MEDIA_REMOTE_RESUME = unreleasedFlag("media_remote_resume") // 1000 - dock - val SIMULATE_DOCK_THROUGH_CHARGING = releasedFlag(1000, "simulate_dock_through_charging") + val SIMULATE_DOCK_THROUGH_CHARGING = releasedFlag("simulate_dock_through_charging") // TODO(b/254512758): Tracking Bug - @JvmField val ROUNDED_BOX_RIPPLE = releasedFlag(1002, "rounded_box_ripple") + @JvmField val ROUNDED_BOX_RIPPLE = releasedFlag("rounded_box_ripple") // TODO(b/273509374): Tracking Bug @JvmField val ALWAYS_SHOW_HOME_CONTROLS_ON_DREAMS = - releasedFlag(1006, "always_show_home_controls_on_dreams") + releasedFlag("always_show_home_controls_on_dreams") // 1100 - windowing @Keep @JvmField val WM_ENABLE_SHELL_TRANSITIONS = - sysPropBooleanFlag(1100, "persist.wm.debug.shell_transit", default = true) + sysPropBooleanFlag("persist.wm.debug.shell_transit", default = true) // TODO(b/254513207): Tracking Bug @Keep @JvmField val WM_ENABLE_PARTIAL_SCREEN_SHARING = unreleasedFlag( - 1102, name = "record_task_content", namespace = DeviceConfig.NAMESPACE_WINDOW_MANAGER, teamfood = true @@ -471,50 +464,49 @@ object Flags { @Keep @JvmField val HIDE_NAVBAR_WINDOW = - sysPropBooleanFlag(1103, "persist.wm.debug.hide_navbar_window", default = false) + sysPropBooleanFlag("persist.wm.debug.hide_navbar_window", default = false) @Keep @JvmField val WM_DESKTOP_WINDOWING = - sysPropBooleanFlag(1104, "persist.wm.debug.desktop_mode", default = false) + sysPropBooleanFlag("persist.wm.debug.desktop_mode", default = false) @Keep @JvmField val WM_CAPTION_ON_SHELL = - sysPropBooleanFlag(1105, "persist.wm.debug.caption_on_shell", default = true) + sysPropBooleanFlag("persist.wm.debug.caption_on_shell", default = true) @Keep @JvmField val ENABLE_FLING_TO_DISMISS_BUBBLE = - sysPropBooleanFlag(1108, "persist.wm.debug.fling_to_dismiss_bubble", default = true) + sysPropBooleanFlag("persist.wm.debug.fling_to_dismiss_bubble", default = true) @Keep @JvmField val ENABLE_FLING_TO_DISMISS_PIP = - sysPropBooleanFlag(1109, "persist.wm.debug.fling_to_dismiss_pip", default = true) + sysPropBooleanFlag("persist.wm.debug.fling_to_dismiss_pip", default = true) @Keep @JvmField val ENABLE_PIP_KEEP_CLEAR_ALGORITHM = - sysPropBooleanFlag(1110, "persist.wm.debug.enable_pip_keep_clear_algorithm", default = true) + sysPropBooleanFlag("persist.wm.debug.enable_pip_keep_clear_algorithm", default = true) // TODO(b/256873975): Tracking Bug @JvmField @Keep - val WM_BUBBLE_BAR = sysPropBooleanFlag(1111, "persist.wm.debug.bubble_bar", default = false) + val WM_BUBBLE_BAR = sysPropBooleanFlag("persist.wm.debug.bubble_bar", default = false) // TODO(b/260271148): Tracking bug @Keep @JvmField val WM_DESKTOP_WINDOWING_2 = - sysPropBooleanFlag(1112, "persist.wm.debug.desktop_mode_2", default = false) + sysPropBooleanFlag("persist.wm.debug.desktop_mode_2", default = false) // TODO(b/254513207): Tracking Bug to delete @Keep @JvmField val WM_ENABLE_PARTIAL_SCREEN_SHARING_ENTERPRISE_POLICIES = unreleasedFlag( - 1113, name = "screen_record_enterprise_policies", namespace = DeviceConfig.NAMESPACE_WINDOW_MANAGER, teamfood = false @@ -524,238 +516,238 @@ object Flags { @Keep @JvmField val ENABLE_PIP_SIZE_LARGE_SCREEN = - sysPropBooleanFlag(1114, "persist.wm.debug.enable_pip_size_large_screen", default = true) + sysPropBooleanFlag("persist.wm.debug.enable_pip_size_large_screen", default = true) // TODO(b/265998256): Tracking bug @Keep @JvmField val ENABLE_PIP_APP_ICON_OVERLAY = - sysPropBooleanFlag(1115, "persist.wm.debug.enable_pip_app_icon_overlay", default = true) + sysPropBooleanFlag("persist.wm.debug.enable_pip_app_icon_overlay", default = true) // TODO(b/273443374): Tracking Bug @Keep @JvmField val LOCKSCREEN_LIVE_WALLPAPER = - sysPropBooleanFlag(1117, "persist.wm.debug.lockscreen_live_wallpaper", default = true) + sysPropBooleanFlag("persist.wm.debug.lockscreen_live_wallpaper", default = true) // TODO(b/281648899): Tracking bug @Keep @JvmField val WALLPAPER_MULTI_CROP = - sysPropBooleanFlag(1118, "persist.wm.debug.wallpaper_multi_crop", default = false) + sysPropBooleanFlag("persist.wm.debug.wallpaper_multi_crop", default = false) // TODO(b/290220798): Tracking Bug @Keep @JvmField val ENABLE_PIP2_IMPLEMENTATION = - sysPropBooleanFlag(1119, "persist.wm.debug.enable_pip2_implementation", default = false) + sysPropBooleanFlag("persist.wm.debug.enable_pip2_implementation", default = false) // 1200 - predictive back @Keep @JvmField val WM_ENABLE_PREDICTIVE_BACK = - sysPropBooleanFlag(1200, "persist.wm.debug.predictive_back", default = true) + sysPropBooleanFlag("persist.wm.debug.predictive_back", default = true) @Keep @JvmField val WM_ENABLE_PREDICTIVE_BACK_ANIM = - sysPropBooleanFlag(1201, "persist.wm.debug.predictive_back_anim", default = true) + sysPropBooleanFlag("persist.wm.debug.predictive_back_anim", default = true) @Keep @JvmField val WM_ALWAYS_ENFORCE_PREDICTIVE_BACK = - sysPropBooleanFlag(1202, "persist.wm.debug.predictive_back_always_enforce", default = false) + sysPropBooleanFlag("persist.wm.debug.predictive_back_always_enforce", default = false) // TODO(b/254512728): Tracking Bug - @JvmField val NEW_BACK_AFFORDANCE = releasedFlag(1203, "new_back_affordance") + @JvmField val NEW_BACK_AFFORDANCE = releasedFlag("new_back_affordance") // TODO(b/255854141): Tracking Bug @JvmField val WM_ENABLE_PREDICTIVE_BACK_SYSUI = - unreleasedFlag(1204, "persist.wm.debug.predictive_back_sysui_enable", teamfood = true) + unreleasedFlag("persist.wm.debug.predictive_back_sysui_enable", teamfood = true) // TODO(b/270987164): Tracking Bug - @JvmField val TRACKPAD_GESTURE_FEATURES = releasedFlag(1205, "trackpad_gesture_features") + @JvmField val TRACKPAD_GESTURE_FEATURES = releasedFlag("trackpad_gesture_features") // TODO(b/263826204): Tracking Bug @JvmField val WM_ENABLE_PREDICTIVE_BACK_BOUNCER_ANIM = - unreleasedFlag(1206, "persist.wm.debug.predictive_back_bouncer_anim", teamfood = true) + unreleasedFlag("persist.wm.debug.predictive_back_bouncer_anim", teamfood = true) // TODO(b/238475428): Tracking Bug @JvmField val WM_SHADE_ALLOW_BACK_GESTURE = - sysPropBooleanFlag(1207, "persist.wm.debug.shade_allow_back_gesture", default = false) + sysPropBooleanFlag("persist.wm.debug.shade_allow_back_gesture", default = false) // TODO(b/238475428): Tracking Bug @JvmField val WM_SHADE_ANIMATE_BACK_GESTURE = - unreleasedFlag(1208, "persist.wm.debug.shade_animate_back_gesture", teamfood = false) + unreleasedFlag("persist.wm.debug.shade_animate_back_gesture", teamfood = false) // TODO(b/265639042): Tracking Bug @JvmField val WM_ENABLE_PREDICTIVE_BACK_QS_DIALOG_ANIM = - unreleasedFlag(1209, "persist.wm.debug.predictive_back_qs_dialog_anim", teamfood = true) + unreleasedFlag("persist.wm.debug.predictive_back_qs_dialog_anim", teamfood = true) // TODO(b/273800936): Tracking Bug - @JvmField val TRACKPAD_GESTURE_COMMON = releasedFlag(1210, "trackpad_gesture_common") + @JvmField val TRACKPAD_GESTURE_COMMON = releasedFlag("trackpad_gesture_common") // 1300 - screenshots // TODO(b/264916608): Tracking Bug - @JvmField val SCREENSHOT_METADATA = unreleasedFlag(1302, "screenshot_metadata") + @JvmField val SCREENSHOT_METADATA = unreleasedFlag("screenshot_metadata") // TODO(b/266955521): Tracking bug - @JvmField val SCREENSHOT_DETECTION = releasedFlag(1303, "screenshot_detection") + @JvmField val SCREENSHOT_DETECTION = releasedFlag("screenshot_detection") // TODO(b/251205791): Tracking Bug - @JvmField val SCREENSHOT_APP_CLIPS = releasedFlag(1304, "screenshot_app_clips") + @JvmField val SCREENSHOT_APP_CLIPS = releasedFlag("screenshot_app_clips") // 1400 - columbus // TODO(b/254512756): Tracking Bug - val QUICK_TAP_IN_PCC = releasedFlag(1400, "quick_tap_in_pcc") + val QUICK_TAP_IN_PCC = releasedFlag("quick_tap_in_pcc") // TODO(b/261979569): Tracking Bug val QUICK_TAP_FLOW_FRAMEWORK = - unreleasedFlag(1401, "quick_tap_flow_framework", teamfood = false) + unreleasedFlag("quick_tap_flow_framework", teamfood = false) // 1500 - chooser aka sharesheet // 1700 - clipboard - @JvmField val CLIPBOARD_REMOTE_BEHAVIOR = releasedFlag(1701, "clipboard_remote_behavior") + @JvmField val CLIPBOARD_REMOTE_BEHAVIOR = releasedFlag("clipboard_remote_behavior") // TODO(b/278714186) Tracking Bug @JvmField - val CLIPBOARD_IMAGE_TIMEOUT = unreleasedFlag(1702, "clipboard_image_timeout", teamfood = true) + val CLIPBOARD_IMAGE_TIMEOUT = unreleasedFlag("clipboard_image_timeout", teamfood = true) // TODO(b/279405451): Tracking Bug @JvmField val CLIPBOARD_SHARED_TRANSITIONS = - unreleasedFlag(1703, "clipboard_shared_transitions", teamfood = true) + unreleasedFlag("clipboard_shared_transitions", teamfood = true) // TODO(b/283300105): Tracking Bug - @JvmField val SCENE_CONTAINER = unreleasedFlag(1802, "scene_container") + @JvmField val SCENE_CONTAINER = unreleasedFlag("scene_container") // 1900 - @JvmField val NOTE_TASKS = releasedFlag(1900, "keycode_flag") + @JvmField val NOTE_TASKS = releasedFlag("keycode_flag") // 2000 - device controls - @JvmField val APP_PANELS_ALL_APPS_ALLOWED = releasedFlag(2001, "app_panels_all_apps_allowed") + @JvmField val APP_PANELS_ALL_APPS_ALLOWED = releasedFlag("app_panels_all_apps_allowed") // 2200 - biometrics (udfps, sfps, BiometricPrompt, etc.) // TODO(b/259264861): Tracking Bug - @JvmField val UDFPS_NEW_TOUCH_DETECTION = releasedFlag(2200, "udfps_new_touch_detection") - @JvmField val UDFPS_ELLIPSE_DETECTION = releasedFlag(2201, "udfps_ellipse_detection") + @JvmField val UDFPS_NEW_TOUCH_DETECTION = releasedFlag("udfps_new_touch_detection") + @JvmField val UDFPS_ELLIPSE_DETECTION = releasedFlag("udfps_ellipse_detection") // TODO(b/278622168): Tracking Bug - @JvmField val BIOMETRIC_BP_STRONG = releasedFlag(2202, "biometric_bp_strong") + @JvmField val BIOMETRIC_BP_STRONG = releasedFlag("biometric_bp_strong") // 2300 - stylus - @JvmField val TRACK_STYLUS_EVER_USED = releasedFlag(2300, "track_stylus_ever_used") - @JvmField val ENABLE_STYLUS_CHARGING_UI = releasedFlag(2301, "enable_stylus_charging_ui") + @JvmField val TRACK_STYLUS_EVER_USED = releasedFlag("track_stylus_ever_used") + @JvmField val ENABLE_STYLUS_CHARGING_UI = releasedFlag("enable_stylus_charging_ui") @JvmField - val ENABLE_USI_BATTERY_NOTIFICATIONS = releasedFlag(2302, "enable_usi_battery_notifications") - @JvmField val ENABLE_STYLUS_EDUCATION = releasedFlag(2303, "enable_stylus_education") + val ENABLE_USI_BATTERY_NOTIFICATIONS = releasedFlag("enable_usi_battery_notifications") + @JvmField val ENABLE_STYLUS_EDUCATION = releasedFlag("enable_stylus_education") // 2400 - performance tools and debugging info // TODO(b/238923086): Tracking Bug @JvmField val WARN_ON_BLOCKING_BINDER_TRANSACTIONS = - unreleasedFlag(2400, "warn_on_blocking_binder_transactions") + unreleasedFlag("warn_on_blocking_binder_transactions") // TODO(b/283071711): Tracking bug @JvmField val TRIM_RESOURCES_WITH_BACKGROUND_TRIM_AT_LOCK = - unreleasedFlag(2401, "trim_resources_with_background_trim_on_lock") + unreleasedFlag("trim_resources_with_background_trim_on_lock") // TODO:(b/283203305): Tracking bug - @JvmField val TRIM_FONT_CACHES_AT_UNLOCK = unreleasedFlag(2402, "trim_font_caches_on_unlock") + @JvmField val TRIM_FONT_CACHES_AT_UNLOCK = unreleasedFlag("trim_font_caches_on_unlock") // 2700 - unfold transitions // TODO(b/265764985): Tracking Bug @Keep @JvmField val ENABLE_DARK_VIGNETTE_WHEN_FOLDING = - unreleasedFlag(2700, "enable_dark_vignette_when_folding") + unreleasedFlag("enable_dark_vignette_when_folding") // TODO(b/265764985): Tracking Bug @Keep @JvmField val ENABLE_UNFOLD_STATUS_BAR_ANIMATIONS = - unreleasedFlag(2701, "enable_unfold_status_bar_animations") + unreleasedFlag("enable_unfold_status_bar_animations") // TODO(b259590361): Tracking bug - val EXPERIMENTAL_FLAG = unreleasedFlag(2, "exp_flag_release") + val EXPERIMENTAL_FLAG = unreleasedFlag("exp_flag_release") // 2600 - keyboard // TODO(b/259352579): Tracking Bug - @JvmField val SHORTCUT_LIST_SEARCH_LAYOUT = releasedFlag(2600, "shortcut_list_search_layout") + @JvmField val SHORTCUT_LIST_SEARCH_LAYOUT = releasedFlag("shortcut_list_search_layout") // TODO(b/259428678): Tracking Bug - @JvmField val KEYBOARD_BACKLIGHT_INDICATOR = releasedFlag(2601, "keyboard_backlight_indicator") + @JvmField val KEYBOARD_BACKLIGHT_INDICATOR = releasedFlag("keyboard_backlight_indicator") // TODO(b/277192623): Tracking Bug - @JvmField val KEYBOARD_EDUCATION = unreleasedFlag(2603, "keyboard_education", teamfood = false) + @JvmField val KEYBOARD_EDUCATION = unreleasedFlag("keyboard_education", teamfood = false) // TODO(b/277201412): Tracking Bug @JvmField - val SPLIT_SHADE_SUBPIXEL_OPTIMIZATION = releasedFlag(2805, "split_shade_subpixel_optimization") + val SPLIT_SHADE_SUBPIXEL_OPTIMIZATION = releasedFlag("split_shade_subpixel_optimization") // TODO(b/288868056): Tracking Bug @JvmField - val PARTIAL_SCREEN_SHARING_TASK_SWITCHER = unreleasedFlag(288868056, "pss_task_switcher") + val PARTIAL_SCREEN_SHARING_TASK_SWITCHER = unreleasedFlag("pss_task_switcher") // TODO(b/278761837): Tracking Bug - @JvmField val USE_NEW_ACTIVITY_STARTER = releasedFlag(2801, name = "use_new_activity_starter") + @JvmField val USE_NEW_ACTIVITY_STARTER = releasedFlag(name = "use_new_activity_starter") // 2900 - Zero Jank fixes. Naming convention is: zj_<bug number>_<cuj name> // TODO:(b/285623104): Tracking bug @JvmField val ZJ_285570694_LOCKSCREEN_TRANSITION_FROM_AOD = - releasedFlag(2900, "zj_285570694_lockscreen_transition_from_aod") + releasedFlag("zj_285570694_lockscreen_transition_from_aod") // 3000 - dream // TODO(b/285059790) : Tracking Bug @JvmField val LOCKSCREEN_WALLPAPER_DREAM_ENABLED = - unreleasedFlag(3000, name = "enable_lockscreen_wallpaper_dream", teamfood = true) + unreleasedFlag(name = "enable_lockscreen_wallpaper_dream", teamfood = true) // TODO(b/283084712): Tracking Bug - @JvmField val IMPROVED_HUN_ANIMATIONS = unreleasedFlag(283084712, "improved_hun_animations") + @JvmField val IMPROVED_HUN_ANIMATIONS = unreleasedFlag("improved_hun_animations") // TODO(b/283447257): Tracking bug @JvmField val BIGPICTURE_NOTIFICATION_LAZY_LOADING = - unreleasedFlag(283447257, "bigpicture_notification_lazy_loading") + unreleasedFlag("bigpicture_notification_lazy_loading") // TODO(b/292062937): Tracking bug @JvmField val NOTIFICATION_CLEARABLE_REFACTOR = - unreleasedFlag(292062937, "notification_clearable_refactor") + unreleasedFlag("notification_clearable_refactor") // TODO(b/283740863): Tracking Bug @JvmField val ENABLE_NEW_PRIVACY_DIALOG = - unreleasedFlag(283740863, "enable_new_privacy_dialog", teamfood = true) + unreleasedFlag("enable_new_privacy_dialog", teamfood = true) // TODO(b/289573946): Tracking Bug - @JvmField val PRECOMPUTED_TEXT = unreleasedFlag(289573946, "precomputed_text") + @JvmField val PRECOMPUTED_TEXT = unreleasedFlag("precomputed_text") // 2900 - CentralSurfaces-related flags // TODO(b/285174336): Tracking Bug @JvmField val USE_REPOS_FOR_BOUNCER_SHOWING = - unreleasedFlag(2900, "use_repos_for_bouncer_showing", teamfood = true) + unreleasedFlag("use_repos_for_bouncer_showing", teamfood = true) // 3100 - Haptic interactions // TODO(b/290213663): Tracking Bug @JvmField - val ONE_WAY_HAPTICS_API_MIGRATION = unreleasedFlag(3100, "oneway_haptics_api_migration") + val ONE_WAY_HAPTICS_API_MIGRATION = unreleasedFlag("oneway_haptics_api_migration") /** Enable the Compose implementation of the PeopleSpaceActivity. */ @JvmField - val COMPOSE_PEOPLE_SPACE = unreleasedFlag(293570761, "compose_people_space") + val COMPOSE_PEOPLE_SPACE = unreleasedFlag("compose_people_space") /** Enable the Compose implementation of the Quick Settings footer actions. */ @JvmField - val COMPOSE_QS_FOOTER_ACTIONS = unreleasedFlag(293569320, "compose_qs_footer_actions") + val COMPOSE_QS_FOOTER_ACTIONS = unreleasedFlag("compose_qs_footer_actions") } diff --git a/packages/SystemUI/tests/src/com/android/systemui/flags/FakeFeatureFlagsTest.kt b/packages/SystemUI/tests/src/com/android/systemui/flags/FakeFeatureFlagsTest.kt index 35f0f6c68798..37c70d8f25e0 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/flags/FakeFeatureFlagsTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/flags/FakeFeatureFlagsTest.kt @@ -28,12 +28,12 @@ import org.junit.runner.RunWith @RunWith(AndroidTestingRunner::class) class FakeFeatureFlagsTest : SysuiTestCase() { - private val unreleasedFlag = UnreleasedFlag(-1000, "-1000", "test") - private val releasedFlag = ReleasedFlag(-1001, "-1001", "test") - private val stringFlag = StringFlag(-1002, "-1002", "test") - private val resourceBooleanFlag = ResourceBooleanFlag(-1003, "-1003", "test", resourceId = -1) - private val resourceStringFlag = ResourceStringFlag(-1004, "-1004", "test", resourceId = -1) - private val sysPropBooleanFlag = SysPropBooleanFlag(-1005, "test", "test") + private val unreleasedFlag = UnreleasedFlag("-1000", "test") + private val releasedFlag = ReleasedFlag("-1001", "test") + private val stringFlag = StringFlag("-1002", "test") + private val resourceBooleanFlag = ResourceBooleanFlag("-1003", "test", resourceId = -1) + private val resourceStringFlag = ResourceStringFlag("-1004", "test", resourceId = -1) + private val sysPropBooleanFlag = SysPropBooleanFlag("test", "test") /** * FakeFeatureFlags does not honor any default values. All flags which are accessed must be @@ -46,43 +46,43 @@ class FakeFeatureFlagsTest : SysuiTestCase() { assertThat(flags.isEnabled(Flags.TEAMFOOD)).isFalse() fail("Expected an exception when accessing an unspecified flag.") } catch (ex: IllegalStateException) { - assertThat(ex.message).contains("id=1") + assertThat(ex.message).contains("UNKNOWN(teamfood)") } try { assertThat(flags.isEnabled(unreleasedFlag)).isFalse() fail("Expected an exception when accessing an unspecified flag.") } catch (ex: IllegalStateException) { - assertThat(ex.message).contains("UNKNOWN(id=-1000)") + assertThat(ex.message).contains("UNKNOWN(-1000)") } try { assertThat(flags.isEnabled(releasedFlag)).isFalse() fail("Expected an exception when accessing an unspecified flag.") } catch (ex: IllegalStateException) { - assertThat(ex.message).contains("UNKNOWN(id=-1001)") + assertThat(ex.message).contains("UNKNOWN(-1001)") } try { assertThat(flags.isEnabled(resourceBooleanFlag)).isFalse() fail("Expected an exception when accessing an unspecified flag.") } catch (ex: IllegalStateException) { - assertThat(ex.message).contains("UNKNOWN(id=-1003)") + assertThat(ex.message).contains("UNKNOWN(-1003)") } try { assertThat(flags.isEnabled(sysPropBooleanFlag)).isFalse() fail("Expected an exception when accessing an unspecified flag.") } catch (ex: IllegalStateException) { - assertThat(ex.message).contains("UNKNOWN(id=-1005)") + assertThat(ex.message).contains("UNKNOWN(test)") } try { assertThat(flags.getString(stringFlag)).isEmpty() fail("Expected an exception when accessing an unspecified flag.") } catch (ex: IllegalStateException) { - assertThat(ex.message).contains("UNKNOWN(id=-1002)") + assertThat(ex.message).contains("UNKNOWN(-1002)") } try { assertThat(flags.getString(resourceStringFlag)).isEmpty() fail("Expected an exception when accessing an unspecified flag.") } catch (ex: IllegalStateException) { - assertThat(ex.message).contains("UNKNOWN(id=-1004)") + assertThat(ex.message).contains("UNKNOWN(-1004)") } } diff --git a/packages/SystemUI/tests/src/com/android/systemui/flags/FeatureFlagsDebugTest.kt b/packages/SystemUI/tests/src/com/android/systemui/flags/FeatureFlagsDebugTest.kt index 18f7db18b1f4..ff15cb39b640 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/flags/FeatureFlagsDebugTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/flags/FeatureFlagsDebugTest.kt @@ -74,10 +74,10 @@ class FeatureFlagsDebugTest : SysuiTestCase() { private val serverFlagReader = ServerFlagReaderFake() private val teamfoodableFlagA = UnreleasedFlag( - 500, name = "a", namespace = "test", teamfood = true + name = "a", namespace = "test", teamfood = true ) private val teamfoodableFlagB = ReleasedFlag( - 501, name = "b", namespace = "test", teamfood = true + name = "b", namespace = "test", teamfood = true ) @Before @@ -119,7 +119,6 @@ class FeatureFlagsDebugTest : SysuiTestCase() { assertThat( featureFlagsDebug.isEnabled( ReleasedFlag( - 2, name = "2", namespace = "test" ) @@ -128,7 +127,6 @@ class FeatureFlagsDebugTest : SysuiTestCase() { assertThat( featureFlagsDebug.isEnabled( UnreleasedFlag( - 3, name = "3", namespace = "test" ) @@ -137,7 +135,6 @@ class FeatureFlagsDebugTest : SysuiTestCase() { assertThat( featureFlagsDebug.isEnabled( ReleasedFlag( - 4, name = "4", namespace = "test" ) @@ -146,7 +143,6 @@ class FeatureFlagsDebugTest : SysuiTestCase() { assertThat( featureFlagsDebug.isEnabled( UnreleasedFlag( - 5, name = "5", namespace = "test" ) @@ -208,23 +204,22 @@ class FeatureFlagsDebugTest : SysuiTestCase() { assertThat( featureFlagsDebug.isEnabled( ResourceBooleanFlag( - 1, "1", "test", 1001 ) ) ).isFalse() - assertThat(featureFlagsDebug.isEnabled(ResourceBooleanFlag(2, "2", "test", 1002))).isTrue() - assertThat(featureFlagsDebug.isEnabled(ResourceBooleanFlag(3, "3", "test", 1003))).isTrue() + assertThat(featureFlagsDebug.isEnabled(ResourceBooleanFlag("2", "test", 1002))).isTrue() + assertThat(featureFlagsDebug.isEnabled(ResourceBooleanFlag("3", "test", 1003))).isTrue() Assert.assertThrows(NameNotFoundException::class.java) { - featureFlagsDebug.isEnabled(ResourceBooleanFlag(4, "4", "test", 1004)) + featureFlagsDebug.isEnabled(ResourceBooleanFlag("4", "test", 1004)) } // Test that resource is loaded (and validated) even when the setting is set. // This prevents developers from not noticing when they reference an invalid resource. Assert.assertThrows(NameNotFoundException::class.java) { - featureFlagsDebug.isEnabled(ResourceBooleanFlag(5, "5", "test", 1005)) + featureFlagsDebug.isEnabled(ResourceBooleanFlag("5", "test", 1005)) } } @@ -237,30 +232,29 @@ class FeatureFlagsDebugTest : SysuiTestCase() { return@thenAnswer it.getArgument(1) } - assertThat(featureFlagsDebug.isEnabled(SysPropBooleanFlag(1, "a", "test"))).isFalse() - assertThat(featureFlagsDebug.isEnabled(SysPropBooleanFlag(2, "b", "test"))).isTrue() - assertThat(featureFlagsDebug.isEnabled(SysPropBooleanFlag(3, "c", "test", true))).isTrue() + assertThat(featureFlagsDebug.isEnabled(SysPropBooleanFlag("a", "test"))).isFalse() + assertThat(featureFlagsDebug.isEnabled(SysPropBooleanFlag("b", "test"))).isTrue() + assertThat(featureFlagsDebug.isEnabled(SysPropBooleanFlag("c", "test", true))).isTrue() assertThat( featureFlagsDebug.isEnabled( SysPropBooleanFlag( - 4, "d", "test", false ) ) ).isFalse() - assertThat(featureFlagsDebug.isEnabled(SysPropBooleanFlag(5, "e", "test"))).isFalse() + assertThat(featureFlagsDebug.isEnabled(SysPropBooleanFlag("e", "test"))).isFalse() } @Test fun readStringFlag() { whenever(flagManager.readFlagValue<String>(eq("3"), any())).thenReturn("foo") whenever(flagManager.readFlagValue<String>(eq("4"), any())).thenReturn("bar") - assertThat(featureFlagsDebug.getString(StringFlag(1, "1", "test", "biz"))).isEqualTo("biz") - assertThat(featureFlagsDebug.getString(StringFlag(2, "2", "test", "baz"))).isEqualTo("baz") - assertThat(featureFlagsDebug.getString(StringFlag(3, "3", "test", "buz"))).isEqualTo("foo") - assertThat(featureFlagsDebug.getString(StringFlag(4, "4", "test", "buz"))).isEqualTo("bar") + assertThat(featureFlagsDebug.getString(StringFlag("1", "test", "biz"))).isEqualTo("biz") + assertThat(featureFlagsDebug.getString(StringFlag("2", "test", "baz"))).isEqualTo("baz") + assertThat(featureFlagsDebug.getString(StringFlag("3", "test", "buz"))).isEqualTo("foo") + assertThat(featureFlagsDebug.getString(StringFlag("4", "test", "buz"))).isEqualTo("bar") } @Test @@ -279,7 +273,6 @@ class FeatureFlagsDebugTest : SysuiTestCase() { assertThat( featureFlagsDebug.getString( ResourceStringFlag( - 1, "1", "test", 1001 @@ -289,7 +282,6 @@ class FeatureFlagsDebugTest : SysuiTestCase() { assertThat( featureFlagsDebug.getString( ResourceStringFlag( - 2, "2", "test", 1002 @@ -299,7 +291,6 @@ class FeatureFlagsDebugTest : SysuiTestCase() { assertThat( featureFlagsDebug.getString( ResourceStringFlag( - 3, "3", "test", 1003 @@ -308,15 +299,15 @@ class FeatureFlagsDebugTest : SysuiTestCase() { ).isEqualTo("override3") Assert.assertThrows(NullPointerException::class.java) { - featureFlagsDebug.getString(ResourceStringFlag(4, "4", "test", 1004)) + featureFlagsDebug.getString(ResourceStringFlag("4", "test", 1004)) } Assert.assertThrows(NameNotFoundException::class.java) { - featureFlagsDebug.getString(ResourceStringFlag(5, "5", "test", 1005)) + featureFlagsDebug.getString(ResourceStringFlag("5", "test", 1005)) } // Test that resource is loaded (and validated) even when the setting is set. // This prevents developers from not noticing when they reference an invalid resource. Assert.assertThrows(NameNotFoundException::class.java) { - featureFlagsDebug.getString(ResourceStringFlag(6, "6", "test", 1005)) + featureFlagsDebug.getString(ResourceStringFlag("6", "test", 1005)) } } @@ -324,10 +315,10 @@ class FeatureFlagsDebugTest : SysuiTestCase() { fun readIntFlag() { whenever(flagManager.readFlagValue<Int>(eq("3"), any())).thenReturn(22) whenever(flagManager.readFlagValue<Int>(eq("4"), any())).thenReturn(48) - assertThat(featureFlagsDebug.getInt(IntFlag(1, "1", "test", 12))).isEqualTo(12) - assertThat(featureFlagsDebug.getInt(IntFlag(2, "2", "test", 93))).isEqualTo(93) - assertThat(featureFlagsDebug.getInt(IntFlag(3, "3", "test", 8))).isEqualTo(22) - assertThat(featureFlagsDebug.getInt(IntFlag(4, "4", "test", 234))).isEqualTo(48) + assertThat(featureFlagsDebug.getInt(IntFlag("1", "test", 12))).isEqualTo(12) + assertThat(featureFlagsDebug.getInt(IntFlag("2", "test", 93))).isEqualTo(93) + assertThat(featureFlagsDebug.getInt(IntFlag("3", "test", 8))).isEqualTo(22) + assertThat(featureFlagsDebug.getInt(IntFlag("4", "test", 234))).isEqualTo(48) } @Test @@ -339,30 +330,30 @@ class FeatureFlagsDebugTest : SysuiTestCase() { whenever(resources.getInteger(1005)).thenThrow(NotFoundException("unknown resource")) whenever(resources.getInteger(1006)).thenThrow(NotFoundException("unknown resource")) - whenever(flagManager.readFlagValue<Int>(eq(3), any())).thenReturn(20) - whenever(flagManager.readFlagValue<Int>(eq(4), any())).thenReturn(500) - whenever(flagManager.readFlagValue<Int>(eq(5), any())).thenReturn(9519) + whenever(flagManager.readFlagValue<Int>(eq("3"), any())).thenReturn(20) + whenever(flagManager.readFlagValue<Int>(eq("4"), any())).thenReturn(500) + whenever(flagManager.readFlagValue<Int>(eq("5"), any())).thenReturn(9519) - assertThat(featureFlagsDebug.getInt(ResourceIntFlag(1, "1", "test", 1001))).isEqualTo(88) - assertThat(featureFlagsDebug.getInt(ResourceIntFlag(2, "2", "test", 1002))).isEqualTo(61) - assertThat(featureFlagsDebug.getInt(ResourceIntFlag(3, "3", "test", 1003))).isEqualTo(20) + assertThat(featureFlagsDebug.getInt(ResourceIntFlag("1", "test", 1001))).isEqualTo(88) + assertThat(featureFlagsDebug.getInt(ResourceIntFlag("2", "test", 1002))).isEqualTo(61) + assertThat(featureFlagsDebug.getInt(ResourceIntFlag("3", "test", 1003))).isEqualTo(20) Assert.assertThrows(NotFoundException::class.java) { - featureFlagsDebug.getInt(ResourceIntFlag(4, "4", "test", 1004)) + featureFlagsDebug.getInt(ResourceIntFlag("4", "test", 1004)) } // Test that resource is loaded (and validated) even when the setting is set. // This prevents developers from not noticing when they reference an invalid resource. Assert.assertThrows(NotFoundException::class.java) { - featureFlagsDebug.getInt(ResourceIntFlag(5, "5", "test", 1005)) + featureFlagsDebug.getInt(ResourceIntFlag("5", "test", 1005)) } } @Test fun broadcastReceiver_IgnoresInvalidData() { - addFlag(UnreleasedFlag(1, "1", "test")) - addFlag(ResourceBooleanFlag(2, "2", "test", 1002)) - addFlag(StringFlag(3, "3", "test", "flag3")) - addFlag(ResourceStringFlag(4, "4", "test", 1004)) + addFlag(UnreleasedFlag("1", "test")) + addFlag(ResourceBooleanFlag("2", "test", 1002)) + addFlag(StringFlag("3", "test", "flag3")) + addFlag(ResourceStringFlag("4", "test", 1004)) broadcastReceiver.onReceive(mockContext, null) broadcastReceiver.onReceive(mockContext, Intent()) @@ -378,7 +369,7 @@ class FeatureFlagsDebugTest : SysuiTestCase() { @Test fun intentWithId_NoValueKeyClears() { - addFlag(UnreleasedFlag(1, name = "1", namespace = "test")) + addFlag(UnreleasedFlag(name = "1", namespace = "test")) // trying to erase an id not in the map does nothing broadcastReceiver.onReceive( @@ -397,10 +388,10 @@ class FeatureFlagsDebugTest : SysuiTestCase() { @Test fun setBooleanFlag() { - addFlag(UnreleasedFlag(1, "1", "test")) - addFlag(UnreleasedFlag(2, "2", "test")) - addFlag(ResourceBooleanFlag(3, "3", "test", 1003)) - addFlag(ResourceBooleanFlag(4, "4", "test", 1004)) + addFlag(UnreleasedFlag("1", "test")) + addFlag(UnreleasedFlag("2", "test")) + addFlag(ResourceBooleanFlag("3", "test", 1003)) + addFlag(ResourceBooleanFlag("4", "test", 1004)) setByBroadcast("1", false) verifyPutData("1", "{\"type\":\"boolean\",\"value\":false}") @@ -417,8 +408,8 @@ class FeatureFlagsDebugTest : SysuiTestCase() { @Test fun setStringFlag() { - addFlag(StringFlag(1, "1", "1", "test")) - addFlag(ResourceStringFlag(2, "2", "test", 1002)) + addFlag(StringFlag("1", "1", "test")) + addFlag(ResourceStringFlag("2", "test", 1002)) setByBroadcast("1", "override1") verifyPutData("1", "{\"type\":\"string\",\"value\":\"override1\"}") @@ -429,7 +420,7 @@ class FeatureFlagsDebugTest : SysuiTestCase() { @Test fun setFlag_ClearsCache() { - val flag1 = addFlag(StringFlag(1, "1", "test", "flag1")) + val flag1 = addFlag(StringFlag("1", "test", "flag1")) whenever(flagManager.readFlagValue<String>(eq("1"), any())).thenReturn("original") // gets the flag & cache it @@ -451,7 +442,7 @@ class FeatureFlagsDebugTest : SysuiTestCase() { @Test fun serverSide_Overrides_MakesFalse() { - val flag = ReleasedFlag(100, "100", "test") + val flag = ReleasedFlag("100", "test") serverFlagReader.setFlagValue(flag.namespace, flag.name, false) @@ -460,7 +451,7 @@ class FeatureFlagsDebugTest : SysuiTestCase() { @Test fun serverSide_Overrides_MakesTrue() { - val flag = UnreleasedFlag(100, name = "100", namespace = "test") + val flag = UnreleasedFlag(name = "100", namespace = "test") serverFlagReader.setFlagValue(flag.namespace, flag.name, true) assertThat(featureFlagsDebug.isEnabled(flag)).isTrue() @@ -494,18 +485,18 @@ class FeatureFlagsDebugTest : SysuiTestCase() { @Test fun dumpFormat() { - val flag1 = ReleasedFlag(1, "1", "test") - val flag2 = ResourceBooleanFlag(2, "2", "test", 1002) - val flag3 = UnreleasedFlag(3, "3", "test") - val flag4 = StringFlag(4, "4", "test", "") - val flag5 = StringFlag(5, "5", "test", "flag5default") - val flag6 = ResourceStringFlag(6, "6", "test", 1006) - val flag7 = ResourceStringFlag(7, "7", "test", 1007) + val flag1 = ReleasedFlag("1", "test") + val flag2 = ResourceBooleanFlag("2", "test", 1002) + val flag3 = UnreleasedFlag("3", "test") + val flag4 = StringFlag("4", "test", "") + val flag5 = StringFlag("5", "test", "flag5default") + val flag6 = ResourceStringFlag("6", "test", 1006) + val flag7 = ResourceStringFlag("7", "test", 1007) whenever(resources.getBoolean(1002)).thenReturn(true) whenever(resources.getString(1006)).thenReturn("resource1006") whenever(resources.getString(1007)).thenReturn("resource1007") - whenever(flagManager.readFlagValue(eq(7), eq(StringFlagSerializer))) + whenever(flagManager.readFlagValue(eq("7"), eq(StringFlagSerializer))) .thenReturn("override7") // WHEN the flags have been accessed diff --git a/packages/SystemUI/tests/src/com/android/systemui/flags/FeatureFlagsReleaseTest.kt b/packages/SystemUI/tests/src/com/android/systemui/flags/FeatureFlagsReleaseTest.kt index 917147b17517..16b459556cb9 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/flags/FeatureFlagsReleaseTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/flags/FeatureFlagsReleaseTest.kt @@ -44,7 +44,7 @@ class FeatureFlagsReleaseTest : SysuiTestCase() { private val serverFlagReader = ServerFlagReaderFake() - private val flagA = ReleasedFlag(501, name = "a", namespace = "test") + private val flagA = ReleasedFlag(name = "a", namespace = "test") @Before fun setup() { @@ -62,11 +62,10 @@ class FeatureFlagsReleaseTest : SysuiTestCase() { @Test fun testBooleanResourceFlag() { - val flagId = 213 val flagResourceId = 3 val flagName = "213" val flagNamespace = "test" - val flag = ResourceBooleanFlag(flagId, flagName, flagNamespace, flagResourceId) + val flag = ResourceBooleanFlag(flagName, flagNamespace, flagResourceId) whenever(mResources.getBoolean(flagResourceId)).thenReturn(true) assertThat(featureFlagsRelease.isEnabled(flag)).isTrue() } @@ -79,33 +78,32 @@ class FeatureFlagsReleaseTest : SysuiTestCase() { whenever(mResources.getString(1004)).thenAnswer { throw NameNotFoundException() } assertThat(featureFlagsRelease.getString( - ResourceStringFlag(1, "1", "test", 1001))).isEqualTo("") + ResourceStringFlag("1", "test", 1001))).isEqualTo("") assertThat(featureFlagsRelease.getString( - ResourceStringFlag(2, "2", "test", 1002))).isEqualTo("res2") + ResourceStringFlag("2", "test", 1002))).isEqualTo("res2") assertThrows(NullPointerException::class.java) { - featureFlagsRelease.getString(ResourceStringFlag(3, "3", "test", 1003)) + featureFlagsRelease.getString(ResourceStringFlag("3", "test", 1003)) } assertThrows(NameNotFoundException::class.java) { - featureFlagsRelease.getString(ResourceStringFlag(4, "4", "test", 1004)) + featureFlagsRelease.getString(ResourceStringFlag("4", "test", 1004)) } } @Test fun testSysPropBooleanFlag() { - val flagId = 213 val flagName = "sys_prop_flag" val flagNamespace = "test" val flagDefault = true - val flag = SysPropBooleanFlag(flagId, flagName, flagNamespace, flagDefault) + val flag = SysPropBooleanFlag(flagName, flagNamespace, flagDefault) whenever(mSystemProperties.getBoolean(flagName, flagDefault)).thenReturn(flagDefault) assertThat(featureFlagsRelease.isEnabled(flag)).isEqualTo(flagDefault) } @Test fun serverSide_OverridesReleased_MakesFalse() { - val flag = ReleasedFlag(100, "100", "test") + val flag = ReleasedFlag("100", "test") serverFlagReader.setFlagValue(flag.namespace, flag.name, false) @@ -114,7 +112,7 @@ class FeatureFlagsReleaseTest : SysuiTestCase() { @Test fun serverSide_OverridesUnreleased_Ignored() { - val flag = UnreleasedFlag(100, "100", "test") + val flag = UnreleasedFlag("100", "test") serverFlagReader.setFlagValue(flag.namespace, flag.name, true) diff --git a/packages/SystemUI/tests/src/com/android/systemui/flags/FlagCommandTest.kt b/packages/SystemUI/tests/src/com/android/systemui/flags/FlagCommandTest.kt index 28131b50f04c..b02baa7fd1b5 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/flags/FlagCommandTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/flags/FlagCommandTest.kt @@ -33,10 +33,10 @@ class FlagCommandTest : SysuiTestCase() { @Mock private lateinit var featureFlags: FeatureFlagsDebug @Mock private lateinit var pw: PrintWriter private val flagMap = mutableMapOf<String, Flag<*>>() - private val flagA = UnreleasedFlag(500, "500", "test") - private val flagB = ReleasedFlag(501, "501", "test") - private val stringFlag = StringFlag(502, "502", "test", "abracadabra") - private val intFlag = IntFlag(503, "503", "test", 12) + private val flagA = UnreleasedFlag("500", "test") + private val flagB = ReleasedFlag("501", "test") + private val stringFlag = StringFlag("502", "test", "abracadabra") + private val intFlag = IntFlag("503", "test", 12) private lateinit var cmd: FlagCommand diff --git a/packages/SystemUI/tests/src/com/android/systemui/flags/FlagManagerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/flags/FlagManagerTest.kt index e679d47537b5..303aaa128378 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/flags/FlagManagerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/flags/FlagManagerTest.kt @@ -64,14 +64,14 @@ class FlagManagerTest : SysuiTestCase() { verifyNoMoreInteractions(mFlagSettingsHelper) // adding the first listener registers the observer - mFlagManager.addListener(ReleasedFlag(1, "1", "test"), listener1) + mFlagManager.addListener(ReleasedFlag("1", "test"), listener1) val observer = withArgCaptor<ContentObserver> { verify(mFlagSettingsHelper).registerContentObserver(any(), any(), capture()) } verifyNoMoreInteractions(mFlagSettingsHelper) // adding another listener does nothing - mFlagManager.addListener(ReleasedFlag(2, "2", "test"), listener2) + mFlagManager.addListener(ReleasedFlag("2", "test"), listener2) verifyNoMoreInteractions(mFlagSettingsHelper) // removing the original listener does nothing with second one still present @@ -89,7 +89,7 @@ class FlagManagerTest : SysuiTestCase() { val listener = mock<FlagListenable.Listener>() val clearCacheAction = mock<Consumer<String>>() mFlagManager.clearCacheAction = clearCacheAction - mFlagManager.addListener(ReleasedFlag(1, "1", "test"), listener) + mFlagManager.addListener(ReleasedFlag("1", "test"), listener) val observer = withArgCaptor<ContentObserver> { verify(mFlagSettingsHelper).registerContentObserver(any(), any(), capture()) } @@ -101,8 +101,8 @@ class FlagManagerTest : SysuiTestCase() { fun testObserverInvokesListeners() { val listener1 = mock<FlagListenable.Listener>() val listener10 = mock<FlagListenable.Listener>() - mFlagManager.addListener(ReleasedFlag(1, "1", "test"), listener1) - mFlagManager.addListener(ReleasedFlag(10, "10", "test"), listener10) + mFlagManager.addListener(ReleasedFlag("1", "test"), listener1) + mFlagManager.addListener(ReleasedFlag("10", "test"), listener10) val observer = withArgCaptor<ContentObserver> { verify(mFlagSettingsHelper).registerContentObserver(any(), any(), capture()) } @@ -127,8 +127,8 @@ class FlagManagerTest : SysuiTestCase() { fun testOnlySpecificFlagListenerIsInvoked() { val listener1 = mock<FlagListenable.Listener>() val listener10 = mock<FlagListenable.Listener>() - mFlagManager.addListener(ReleasedFlag(1, "1", "test"), listener1) - mFlagManager.addListener(ReleasedFlag(10, "10", "test"), listener10) + mFlagManager.addListener(ReleasedFlag("1", "test"), listener1) + mFlagManager.addListener(ReleasedFlag("10", "test"), listener10) mFlagManager.dispatchListenersAndMaybeRestart("1", null) val flagEvent1 = withArgCaptor<FlagListenable.FlagEvent> { @@ -148,8 +148,8 @@ class FlagManagerTest : SysuiTestCase() { @Test fun testSameListenerCanBeUsedForMultipleFlags() { val listener = mock<FlagListenable.Listener>() - mFlagManager.addListener(ReleasedFlag(1, "1", "test"), listener) - mFlagManager.addListener(ReleasedFlag(10, "10", "test"), listener) + mFlagManager.addListener(ReleasedFlag("1", "test"), listener) + mFlagManager.addListener(ReleasedFlag("10", "test"), listener) mFlagManager.dispatchListenersAndMaybeRestart("1", null) val flagEvent1 = withArgCaptor<FlagListenable.FlagEvent> { @@ -177,7 +177,7 @@ class FlagManagerTest : SysuiTestCase() { @Test fun testListenerCanSuppressRestart() { val restartAction = mock<Consumer<Boolean>>() - mFlagManager.addListener(ReleasedFlag(1, "1", "test")) { event -> + mFlagManager.addListener(ReleasedFlag("1", "test")) { event -> event.requestNoRestart() } mFlagManager.dispatchListenersAndMaybeRestart("1", restartAction) @@ -188,7 +188,7 @@ class FlagManagerTest : SysuiTestCase() { @Test fun testListenerOnlySuppressesRestartForOwnFlag() { val restartAction = mock<Consumer<Boolean>>() - mFlagManager.addListener(ReleasedFlag(10, "10", "test")) { event -> + mFlagManager.addListener(ReleasedFlag("10", "test")) { event -> event.requestNoRestart() } mFlagManager.dispatchListenersAndMaybeRestart("1", restartAction) @@ -199,10 +199,10 @@ class FlagManagerTest : SysuiTestCase() { @Test fun testRestartWhenNotAllListenersRequestSuppress() { val restartAction = mock<Consumer<Boolean>>() - mFlagManager.addListener(ReleasedFlag(10, "10", "test")) { event -> + mFlagManager.addListener(ReleasedFlag("10", "test")) { event -> event.requestNoRestart() } - mFlagManager.addListener(ReleasedFlag(10, "10", "test")) { + mFlagManager.addListener(ReleasedFlag("10", "test")) { // do not request } mFlagManager.dispatchListenersAndMaybeRestart("1", restartAction) diff --git a/packages/SystemUI/tests/src/com/android/systemui/flags/ServerFlagReaderImplTest.kt b/packages/SystemUI/tests/src/com/android/systemui/flags/ServerFlagReaderImplTest.kt index 953b7fb32d56..1d1949d12479 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/flags/ServerFlagReaderImplTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/flags/ServerFlagReaderImplTest.kt @@ -53,7 +53,7 @@ class ServerFlagReaderImplTest : SysuiTestCase() { @Test fun testChange_alertsListener() { - val flag = ReleasedFlag(1, "flag_1", "test") + val flag = ReleasedFlag("flag_1", "test") serverFlagReader.listenForChanges(listOf(flag), changeListener) deviceConfig.setProperty(NAMESPACE, "flag_1", "1", false) @@ -65,7 +65,7 @@ class ServerFlagReaderImplTest : SysuiTestCase() { @Test fun testChange_ignoresListenersDuringTest() { val serverFlagReader = ServerFlagReaderImpl(NAMESPACE, deviceConfig, executor, true) - val flag = ReleasedFlag(1, "1", " test") + val flag = ReleasedFlag("1", " test") serverFlagReader.listenForChanges(listOf(flag), changeListener) deviceConfig.setProperty(NAMESPACE, "flag_override_1", "1", false) diff --git a/packages/SystemUI/tests/utils/src/com/android/systemui/flags/FakeFeatureFlags.kt b/packages/SystemUI/tests/utils/src/com/android/systemui/flags/FakeFeatureFlags.kt index 36fa7e65d8ec..013dbb458c22 100644 --- a/packages/SystemUI/tests/utils/src/com/android/systemui/flags/FakeFeatureFlags.kt +++ b/packages/SystemUI/tests/utils/src/com/android/systemui/flags/FakeFeatureFlags.kt @@ -19,45 +19,45 @@ package com.android.systemui.flags import java.io.PrintWriter class FakeFeatureFlags : FeatureFlags { - private val booleanFlags = mutableMapOf<Int, Boolean>() - private val stringFlags = mutableMapOf<Int, String>() - private val intFlags = mutableMapOf<Int, Int>() - private val knownFlagNames = mutableMapOf<Int, String>() - private val flagListeners = mutableMapOf<Int, MutableSet<FlagListenable.Listener>>() - private val listenerFlagIds = mutableMapOf<FlagListenable.Listener, MutableSet<Int>>() + private val booleanFlags = mutableMapOf<String, Boolean>() + private val stringFlags = mutableMapOf<String, String>() + private val intFlags = mutableMapOf<String, Int>() + private val knownFlagNames = mutableMapOf<String, String>() + private val flagListeners = mutableMapOf<String, MutableSet<FlagListenable.Listener>>() + private val listenerflagNames = mutableMapOf<FlagListenable.Listener, MutableSet<String>>() init { FlagsFactory.knownFlags.forEach { entry: Map.Entry<String, Flag<*>> -> - knownFlagNames[entry.value.id] = entry.key + knownFlagNames[entry.value.name] = entry.key } } fun set(flag: BooleanFlag, value: Boolean) { - if (booleanFlags.put(flag.id, value)?.let { value != it } != false) { + if (booleanFlags.put(flag.name, value)?.let { value != it } != false) { notifyFlagChanged(flag) } } fun set(flag: ResourceBooleanFlag, value: Boolean) { - if (booleanFlags.put(flag.id, value)?.let { value != it } != false) { + if (booleanFlags.put(flag.name, value)?.let { value != it } != false) { notifyFlagChanged(flag) } } fun set(flag: SysPropBooleanFlag, value: Boolean) { - if (booleanFlags.put(flag.id, value)?.let { value != it } != false) { + if (booleanFlags.put(flag.name, value)?.let { value != it } != false) { notifyFlagChanged(flag) } } fun set(flag: StringFlag, value: String) { - if (stringFlags.put(flag.id, value)?.let { value != it } == null) { + if (stringFlags.put(flag.name, value)?.let { value != it } == null) { notifyFlagChanged(flag) } } fun set(flag: ResourceStringFlag, value: String) { - if (stringFlags.put(flag.id, value)?.let { value != it } == null) { + if (stringFlags.put(flag.name, value)?.let { value != it } == null) { notifyFlagChanged(flag) } } @@ -73,7 +73,7 @@ class FakeFeatureFlags : FeatureFlags { * and the flag value *does* matter, you'll notice when the flag is flipped and tests * start failing. */ - fun setDefault(flag: BooleanFlag) = booleanFlags.putIfAbsent(flag.id, flag.default) + fun setDefault(flag: BooleanFlag) = booleanFlags.putIfAbsent(flag.name, flag.default) /** * Set the given flag's default value if no other value has been set. @@ -86,10 +86,10 @@ class FakeFeatureFlags : FeatureFlags { * and the flag value *does* matter, you'll notice when the flag is flipped and tests * start failing. */ - fun setDefault(flag: SysPropBooleanFlag) = booleanFlags.putIfAbsent(flag.id, flag.default) + fun setDefault(flag: SysPropBooleanFlag) = booleanFlags.putIfAbsent(flag.name, flag.default) private fun notifyFlagChanged(flag: Flag<*>) { - flagListeners[flag.id]?.let { listeners -> + flagListeners[flag.name]?.let { listeners -> listeners.forEach { listener -> listener.onFlagChanged( object : FlagListenable.FlagEvent { @@ -101,30 +101,30 @@ class FakeFeatureFlags : FeatureFlags { } } - override fun isEnabled(flag: UnreleasedFlag): Boolean = requireBooleanValue(flag.id) + override fun isEnabled(flag: UnreleasedFlag): Boolean = requireBooleanValue(flag.name) - override fun isEnabled(flag: ReleasedFlag): Boolean = requireBooleanValue(flag.id) + override fun isEnabled(flag: ReleasedFlag): Boolean = requireBooleanValue(flag.name) - override fun isEnabled(flag: ResourceBooleanFlag): Boolean = requireBooleanValue(flag.id) + override fun isEnabled(flag: ResourceBooleanFlag): Boolean = requireBooleanValue(flag.name) - override fun isEnabled(flag: SysPropBooleanFlag): Boolean = requireBooleanValue(flag.id) + override fun isEnabled(flag: SysPropBooleanFlag): Boolean = requireBooleanValue(flag.name) - override fun getString(flag: StringFlag): String = requireStringValue(flag.id) + override fun getString(flag: StringFlag): String = requireStringValue(flag.name) - override fun getString(flag: ResourceStringFlag): String = requireStringValue(flag.id) + override fun getString(flag: ResourceStringFlag): String = requireStringValue(flag.name) - override fun getInt(flag: IntFlag): Int = requireIntValue(flag.id) + override fun getInt(flag: IntFlag): Int = requireIntValue(flag.name) - override fun getInt(flag: ResourceIntFlag): Int = requireIntValue(flag.id) + override fun getInt(flag: ResourceIntFlag): Int = requireIntValue(flag.name) override fun addListener(flag: Flag<*>, listener: FlagListenable.Listener) { - flagListeners.getOrPut(flag.id) { mutableSetOf() }.add(listener) - listenerFlagIds.getOrPut(listener) { mutableSetOf() }.add(flag.id) + flagListeners.getOrPut(flag.name) { mutableSetOf() }.add(listener) + listenerflagNames.getOrPut(listener) { mutableSetOf() }.add(flag.name) } override fun removeListener(listener: FlagListenable.Listener) { - listenerFlagIds.remove(listener)?.let { - flagIds -> flagIds.forEach { + listenerflagNames.remove(listener)?.let { + flagNames -> flagNames.forEach { id -> flagListeners[id]?.remove(listener) } } @@ -134,22 +134,22 @@ class FakeFeatureFlags : FeatureFlags { // no-op } - private fun flagName(flagId: Int): String { - return knownFlagNames[flagId] ?: "UNKNOWN(id=$flagId)" + private fun flagName(flagName: String): String { + return knownFlagNames[flagName] ?: "UNKNOWN($flagName)" } - private fun requireBooleanValue(flagId: Int): Boolean { - return booleanFlags[flagId] - ?: error("Flag ${flagName(flagId)} was accessed as boolean but not specified.") + private fun requireBooleanValue(flagName: String): Boolean { + return booleanFlags[flagName] + ?: error("Flag ${flagName(flagName)} was accessed as boolean but not specified.") } - private fun requireStringValue(flagId: Int): String { - return stringFlags[flagId] - ?: error("Flag ${flagName(flagId)} was accessed as string but not specified.") + private fun requireStringValue(flagName: String): String { + return stringFlags[flagName] + ?: error("Flag ${flagName(flagName)} was accessed as string but not specified.") } - private fun requireIntValue(flagId: Int): Int { - return intFlags[flagId] - ?: error("Flag ${flagName(flagId)} was accessed as int but not specified.") + private fun requireIntValue(flagName: String): Int { + return intFlags[flagName] + ?: error("Flag ${flagName(flagName)} was accessed as int but not specified.") } } |