Loading packages/SystemUI/shared/src/com/android/systemui/flags/Flag.kt +55 −31 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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, Loading @@ -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(), Loading @@ -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) Loading @@ -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. Loading @@ -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. Loading @@ -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, Loading @@ -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, Loading @@ -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 = "", Loading @@ -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) Loading @@ -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, Loading @@ -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, Loading @@ -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) Loading @@ -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, Loading @@ -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> { Loading @@ -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) Loading @@ -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, Loading @@ -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) Loading @@ -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, Loading @@ -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, Loading @@ -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) Loading packages/SystemUI/shared/src/com/android/systemui/flags/FlagManager.kt +0 −12 Original line number Diff line number Diff line Loading @@ -115,13 +115,6 @@ class FlagManager constructor( context.sendBroadcast(intent) } /** 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)) Loading Loading @@ -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" } Loading packages/SystemUI/shared/src/com/android/systemui/flags/FlagSettingsHelper.kt +0 −1 Original line number Diff line number Diff line Loading @@ -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) Loading packages/SystemUI/src-debug/com/android/systemui/flags/FlagsFactory.kt +3 −9 Original line number Diff line number Diff line Loading @@ -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, Loading @@ -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 } Loading packages/SystemUI/src-release/com/android/systemui/flags/FlagsFactory.kt +3 −9 Original line number Diff line number Diff line Loading @@ -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, Loading @@ -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 } Loading Loading
packages/SystemUI/shared/src/com/android/systemui/flags/Flag.kt +55 −31 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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, Loading @@ -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(), Loading @@ -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) Loading @@ -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. Loading @@ -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. Loading @@ -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, Loading @@ -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, Loading @@ -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 = "", Loading @@ -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) Loading @@ -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, Loading @@ -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, Loading @@ -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) Loading @@ -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, Loading @@ -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> { Loading @@ -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) Loading @@ -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, Loading @@ -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) Loading @@ -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, Loading @@ -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, Loading @@ -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) Loading
packages/SystemUI/shared/src/com/android/systemui/flags/FlagManager.kt +0 −12 Original line number Diff line number Diff line Loading @@ -115,13 +115,6 @@ class FlagManager constructor( context.sendBroadcast(intent) } /** 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)) Loading Loading @@ -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" } Loading
packages/SystemUI/shared/src/com/android/systemui/flags/FlagSettingsHelper.kt +0 −1 Original line number Diff line number Diff line Loading @@ -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) Loading
packages/SystemUI/src-debug/com/android/systemui/flags/FlagsFactory.kt +3 −9 Original line number Diff line number Diff line Loading @@ -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, Loading @@ -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 } Loading
packages/SystemUI/src-release/com/android/systemui/flags/FlagsFactory.kt +3 −9 Original line number Diff line number Diff line Loading @@ -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, Loading @@ -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 } Loading