Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2e96ec4c authored by Dave Mankoff's avatar Dave Mankoff Committed by Android (Google) Code Review
Browse files

Merge "Remove ids from SystemUI Flagging System." into udc-qpr-dev

parents c7afd7e9 ca93c0a2
Loading
Loading
Loading
Loading
+55 −31
Original line number Diff line number Diff line
@@ -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)
+0 −12
Original line number Diff line number Diff line
@@ -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))
@@ -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"
    }
+0 −1
Original line number Diff line number Diff line
@@ -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)
+3 −9
Original line number Diff line number Diff line
@@ -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
    }
+3 −9
Original line number Diff line number Diff line
@@ -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
    }
Loading