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

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

Merge "Don't cache simple BooleanFlags." into tm-dev

parents ba88e170 f7581b74
Loading
Loading
Loading
Loading
+20 −5
Original line number Diff line number Diff line
@@ -31,6 +31,7 @@ import com.android.systemui.dump.DumpManager;

import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.Map;

import javax.inject.Inject;

@@ -65,7 +66,7 @@ public class FeatureFlagsRelease implements FeatureFlags, Dumpable {

    @Override
    public boolean isEnabled(BooleanFlag flag) {
        return isEnabled(flag.getId(), flag.getDefault());
        return flag.getDefault();
    }

    @Override
@@ -120,10 +121,24 @@ public class FeatureFlagsRelease implements FeatureFlags, Dumpable {
    @Override
    public void dump(@NonNull FileDescriptor fd, @NonNull PrintWriter pw, @NonNull String[] args) {
        pw.println("can override: false");
        int numBooleans = mBooleanCache.size();
        pw.println("booleans: " + numBooleans);
        for (int i = 0; i < numBooleans; i++) {
            pw.println("  sysui_flag_" + mBooleanCache.keyAt(i) + ": " + mBooleanCache.valueAt(i));
        Map<Integer, Flag<?>> knownFlags = Flags.collectFlags();
        for (Map.Entry<Integer, Flag<?>> idToFlag : knownFlags.entrySet()) {
            int id = idToFlag.getKey();
            Flag<?> flag = idToFlag.getValue();
            boolean def = false;
            if (mBooleanCache.indexOfKey(flag.getId()) < 0) {
                if (flag instanceof SysPropBooleanFlag) {
                    SysPropBooleanFlag f = (SysPropBooleanFlag) flag;
                    def = mSystemProperties.getBoolean(f.getName(), f.getDefault());
                } else if (flag instanceof ResourceBooleanFlag) {
                    ResourceBooleanFlag f = (ResourceBooleanFlag) flag;
                    def = mResources.getBoolean(f.getResourceId());
                } else if (flag instanceof BooleanFlag) {
                    BooleanFlag f = (BooleanFlag) flag;
                    def = f.getDefault();
                }
            }
            pw.println("  sysui_flag_" + id + ": " + (mBooleanCache.get(id, def)));
        }
        int numStrings = mStringCache.size();
        pw.println("Strings: " + numStrings);
+0 −42
Original line number Diff line number Diff line
@@ -21,7 +21,6 @@ import android.test.suitebuilder.annotation.SmallTest
import com.android.systemui.SysuiTestCase
import com.android.systemui.dump.DumpManager
import com.android.systemui.util.mockito.any
import com.android.systemui.util.mockito.mock
import com.google.common.truth.Truth.assertThat
import org.junit.After
import org.junit.Assert.assertThrows
@@ -31,8 +30,6 @@ import org.mockito.Mock
import org.mockito.Mockito.verify
import org.mockito.Mockito.verifyNoMoreInteractions
import org.mockito.MockitoAnnotations
import java.io.PrintWriter
import java.io.StringWriter
import org.mockito.Mockito.`when` as whenever

/**
@@ -97,43 +94,4 @@ class FeatureFlagsReleaseTest : SysuiTestCase() {
        whenever(mSystemProperties.getBoolean(flagName, flagDefault)).thenReturn(flagDefault)
        assertThat(mFeatureFlagsRelease.isEnabled(flag)).isEqualTo(flagDefault)
    }

    @Test
    fun testDump() {
        val flag1 = BooleanFlag(1, true)
        val flag2 = ResourceBooleanFlag(2, 1002)
        val flag3 = BooleanFlag(3, false)
        val flag4 = StringFlag(4, "")
        val flag5 = StringFlag(5, "flag5default")
        val flag6 = ResourceStringFlag(6, 1006)

        whenever(mResources.getBoolean(1002)).thenReturn(true)
        whenever(mResources.getString(1006)).thenReturn("resource1006")
        whenever(mResources.getString(1007)).thenReturn("resource1007")

        // WHEN the flags have been accessed
        assertThat(mFeatureFlagsRelease.isEnabled(flag1)).isTrue()
        assertThat(mFeatureFlagsRelease.isEnabled(flag2)).isTrue()
        assertThat(mFeatureFlagsRelease.isEnabled(flag3)).isFalse()
        assertThat(mFeatureFlagsRelease.getString(flag4)).isEmpty()
        assertThat(mFeatureFlagsRelease.getString(flag5)).isEqualTo("flag5default")
        assertThat(mFeatureFlagsRelease.getString(flag6)).isEqualTo("resource1006")

        // THEN the dump contains the flags and the default values
        val dump = dumpToString()
        assertThat(dump).contains(" sysui_flag_1: true\n")
        assertThat(dump).contains(" sysui_flag_2: true\n")
        assertThat(dump).contains(" sysui_flag_3: false\n")
        assertThat(dump).contains(" sysui_flag_4: [length=0] \"\"\n")
        assertThat(dump).contains(" sysui_flag_5: [length=12] \"flag5default\"\n")
        assertThat(dump).contains(" sysui_flag_6: [length=12] \"resource1006\"\n")
    }

    private fun dumpToString(): String {
        val sw = StringWriter()
        val pw = PrintWriter(sw)
        mFeatureFlagsRelease.dump(mock(), pw, emptyArray())
        pw.flush()
        return sw.toString()
    }
}
 No newline at end of file