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

Commit fd3c3488 authored by Jeff DeCew's avatar Jeff DeCew
Browse files

Classic feature flags cleanup & use EnableFlags annotations for tests

Fixes: 314856480
Test: atest FeatureFlagsClassicDebugTest
Flag: NA
Change-Id: Id8be7021effc24e876447bea65663e310110ccad
parent 4f4f6dbd
Loading
Loading
Loading
Loading
+3 −4
Original line number Diff line number Diff line
@@ -119,9 +119,8 @@ data class UnreleasedFlag constructor(
data class ReleasedFlag constructor(
    override val name: String,
    override val namespace: String,
    override val teamfood: Boolean = false,
    override val overridden: Boolean = false
) : BooleanFlag(name, namespace, true, teamfood, overridden)
) : BooleanFlag(name, namespace, true, teamfood = false, overridden)

/**
 * A Flag that reads its default values from a resource overlay instead of code.
@@ -132,8 +131,9 @@ data class ResourceBooleanFlag constructor(
    override val name: String,
    override val namespace: String,
    @BoolRes override val resourceId: Int,
) : ResourceFlag<Boolean> {
    override val teamfood: Boolean = false
) : ResourceFlag<Boolean>
}

/**
 * A Flag that can reads its overrides from System Properties.
@@ -147,7 +147,6 @@ data class SysPropBooleanFlag constructor(
    override val namespace: String,
    override val default: Boolean = false,
) : SysPropFlag<Boolean> {
    // TODO(b/268520433): Teamfood not supported for sysprop flags yet.
    override val teamfood: Boolean = false
}

+1 −2
Original line number Diff line number Diff line
@@ -42,7 +42,7 @@ object FlagsFactory {
        name: String,
        namespace: String = "systemui",
    ): ReleasedFlag {
        val flag = ReleasedFlag(name = name, namespace = namespace, teamfood = false)
        val flag = ReleasedFlag(name = name, namespace = namespace)
        checkForDupesAndAdd(flag)
        return flag
    }
@@ -57,7 +57,6 @@ object FlagsFactory {
                name = name,
                namespace = namespace,
                resourceId = resourceId,
                teamfood = false,
            )
        checkForDupesAndAdd(flag)
        return flag
+1 −2
Original line number Diff line number Diff line
@@ -42,7 +42,7 @@ object FlagsFactory {
        name: String,
        namespace: String = "systemui",
    ): ReleasedFlag {
        val flag = ReleasedFlag(name = name, namespace = namespace, teamfood = false)
        val flag = ReleasedFlag(name = name, namespace = namespace)
        flagMap[name] = flag
        return flag
    }
@@ -57,7 +57,6 @@ object FlagsFactory {
                name = name,
                namespace = namespace,
                resourceId = resourceId,
                teamfood = false,
            )
        flagMap[name] = flag
        return flag
+1 −4
Original line number Diff line number Diff line
@@ -25,7 +25,6 @@ import static com.android.systemui.flags.FlagManager.EXTRA_NAME;
import static com.android.systemui.flags.FlagManager.EXTRA_VALUE;
import static com.android.systemui.flags.FlagsCommonModule.ALL_FLAGS;
import static com.android.systemui.shared.Flags.exampleSharedFlag;

import static java.util.Objects.requireNonNull;

import android.content.BroadcastReceiver;
@@ -508,9 +507,7 @@ public class FeatureFlagsClassicDebug implements FeatureFlagsClassic {
                enabled = isEnabled((ResourceBooleanFlag) f);
                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(f.getName()).isEmpty();
            } else {
                // TODO: add support for other flag types.
@@ -519,7 +516,7 @@ public class FeatureFlagsClassicDebug implements FeatureFlagsClassic {
            }

            if (enabled) {
                return new ReleasedFlag(f.getName(), f.getNamespace(), teamfood, overridden);
                return new ReleasedFlag(f.getName(), f.getNamespace(), overridden);
            } else {
                return new UnreleasedFlag(f.getName(), f.getNamespace(), teamfood, overridden);
            }
+14 −10
Original line number Diff line number Diff line
@@ -21,6 +21,8 @@ import android.content.Intent
import android.content.pm.PackageManager.NameNotFoundException
import android.content.res.Resources
import android.content.res.Resources.NotFoundException
import android.platform.test.annotations.DisableFlags
import android.platform.test.annotations.EnableFlags
import android.test.suitebuilder.annotation.SmallTest
import com.android.systemui.Flags.FLAG_SYSUI_TEAMFOOD
import com.android.systemui.SysuiTestCase
@@ -68,15 +70,14 @@ class FeatureFlagsClassicDebugTest : SysuiTestCase() {
    private val serverFlagReader = ServerFlagReaderFake()

    private val teamfoodableFlagA = UnreleasedFlag(name = "a", namespace = "test", teamfood = true)
    private val teamfoodableFlagB = ReleasedFlag(name = "b", namespace = "test", teamfood = true)
    private val releasedFlagB = ReleasedFlag(name = "b", namespace = "test")

    @Before
    fun setup() {
        MockitoAnnotations.initMocks(this)
        mSetFlagsRule.disableFlags(FLAG_SYSUI_TEAMFOOD)

        flagMap.put(teamfoodableFlagA.name, teamfoodableFlagA)
        flagMap.put(teamfoodableFlagB.name, teamfoodableFlagB)
        flagMap.put(releasedFlagB.name, releasedFlagB)
        mFeatureFlagsClassicDebug =
            FeatureFlagsClassicDebug(
                flagManager,
@@ -99,7 +100,6 @@ class FeatureFlagsClassicDebugTest : SysuiTestCase() {

    @Test
    fun readBooleanFlag() {
        // Remember that the TEAMFOOD flag is id#1 and has special behavior.
        whenever(flagManager.readFlagValue<Boolean>(eq("3"), any())).thenReturn(true)
        whenever(flagManager.readFlagValue<Boolean>(eq("4"), any())).thenReturn(false)

@@ -122,9 +122,10 @@ class FeatureFlagsClassicDebugTest : SysuiTestCase() {
    }

    @Test
    @DisableFlags(FLAG_SYSUI_TEAMFOOD)
    fun teamFoodFlag_False() {
        assertThat(mFeatureFlagsClassicDebug.isEnabled(teamfoodableFlagA)).isFalse()
        assertThat(mFeatureFlagsClassicDebug.isEnabled(teamfoodableFlagB)).isTrue()
        assertThat(mFeatureFlagsClassicDebug.isEnabled(releasedFlagB)).isTrue()

        // Regular boolean flags should still test the same.
        // Only our teamfoodableFlag should change.
@@ -132,10 +133,10 @@ class FeatureFlagsClassicDebugTest : SysuiTestCase() {
    }

    @Test
    @EnableFlags(FLAG_SYSUI_TEAMFOOD)
    fun teamFoodFlag_True() {
        mSetFlagsRule.enableFlags(FLAG_SYSUI_TEAMFOOD)
        assertThat(mFeatureFlagsClassicDebug.isEnabled(teamfoodableFlagA)).isTrue()
        assertThat(mFeatureFlagsClassicDebug.isEnabled(teamfoodableFlagB)).isTrue()
        assertThat(mFeatureFlagsClassicDebug.isEnabled(releasedFlagB)).isTrue()

        // Regular boolean flags should still test the same.
        // Only our teamfoodableFlag should change.
@@ -143,14 +144,14 @@ class FeatureFlagsClassicDebugTest : SysuiTestCase() {
    }

    @Test
    @EnableFlags(FLAG_SYSUI_TEAMFOOD)
    fun teamFoodFlag_Overridden() {
        whenever(flagManager.readFlagValue<Boolean>(eq(teamfoodableFlagA.name), any()))
            .thenReturn(true)
        whenever(flagManager.readFlagValue<Boolean>(eq(teamfoodableFlagB.name), any()))
        whenever(flagManager.readFlagValue<Boolean>(eq(releasedFlagB.name), any()))
            .thenReturn(false)
        mSetFlagsRule.enableFlags(FLAG_SYSUI_TEAMFOOD)
        assertThat(mFeatureFlagsClassicDebug.isEnabled(teamfoodableFlagA)).isTrue()
        assertThat(mFeatureFlagsClassicDebug.isEnabled(teamfoodableFlagB)).isFalse()
        assertThat(mFeatureFlagsClassicDebug.isEnabled(releasedFlagB)).isFalse()

        // Regular boolean flags should still test the same.
        // Only our teamfoodableFlag should change.
@@ -400,6 +401,7 @@ class FeatureFlagsClassicDebugTest : SysuiTestCase() {
    }

    @Test
    @DisableFlags(FLAG_SYSUI_TEAMFOOD)
    fun serverSide_OverrideUncached_NoRestart() {
        // No one has read the flag, so it's not in the cache.
        serverFlagReader.setFlagValue(
@@ -411,6 +413,7 @@ class FeatureFlagsClassicDebugTest : SysuiTestCase() {
    }

    @Test
    @DisableFlags(FLAG_SYSUI_TEAMFOOD)
    fun serverSide_Override_Restarts() {
        // Read it to put it in the cache.
        mFeatureFlagsClassicDebug.isEnabled(teamfoodableFlagA)
@@ -423,6 +426,7 @@ class FeatureFlagsClassicDebugTest : SysuiTestCase() {
    }

    @Test
    @DisableFlags(FLAG_SYSUI_TEAMFOOD)
    fun serverSide_RedundantOverride_NoRestart() {
        // Read it to put it in the cache.
        mFeatureFlagsClassicDebug.isEnabled(teamfoodableFlagA)