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

Commit 255ea592 authored by Pierre Barbier de Reuille's avatar Pierre Barbier de Reuille
Browse files

Stop reading the sysprop on flag enum loading

Fix: 409620608
Bug: 408432634
Test: Manual
Test: atest DesktopExperienceFlagsTest
Flag: com.android.window.flags.show_desktop_experience_dev_option
Change-Id: Ifc117841c5d4b767ac54db64edf58e535bc1030c
parent 80a9d9d9
Loading
Loading
Loading
Loading
+1 −6
Original line number Diff line number Diff line
@@ -204,12 +204,7 @@ public enum DesktopExperienceFlags {

    private static boolean checkIfFlagShouldBeOverridden(@Nullable String flagName,
            boolean defaultValue) {
        if (!Flags.showDesktopWindowingDevOption()) return false;
        if (flagName == null || flagName.isEmpty()) return defaultValue;
        int lastDot = flagName.lastIndexOf('.');
        String baseName = lastDot >= 0 ? flagName.substring(lastDot + 1) : flagName;
        return SystemProperties.getBoolean(SYSTEM_PROPERTY_OVERRIDE_PREFIX + baseName,
                defaultValue);
        return defaultValue;
    }

    private static boolean getToggleOverride() {
+0 −74
Original line number Diff line number Diff line
@@ -142,80 +142,6 @@ public class DesktopExperienceFlagsTest {
        assertThat(mNotOverriddenLocalFlag.isTrue()).isFalse();
    }

    @Test
    public void isTrue_flagHasDotAndNotOverridden_withSysPropOverride_returnAsDevOptionEnabled()
            throws Exception {
        setSysProp(DesktopExperienceFlags.SYSTEM_PROPERTY_NAME, OVERRIDE_ON_SETTING);
        setSysProp(DesktopExperienceFlags.SYSTEM_PROPERTY_OVERRIDE_PREFIX + "baseName", "true");
        DesktopExperienceFlag flag = new DesktopExperienceFlag(() -> false, false,
                "test.flag.baseName");

        if (Flags.showDesktopExperienceDevOption()) {
            assertThat(flag.isTrue()).isTrue();
        } else {
            assertThat(flag.isTrue()).isFalse();
        }
    }

    @Test
    public void isTrue_flagHasNoDotAndNotOverridden_withSysPropOverride_returnAsDevOptionEnabled()
            throws Exception {
        setSysProp(DesktopExperienceFlags.SYSTEM_PROPERTY_NAME, OVERRIDE_ON_SETTING);
        setSysProp(DesktopExperienceFlags.SYSTEM_PROPERTY_OVERRIDE_PREFIX + "fullName", "true");
        DesktopExperienceFlag flag = new DesktopExperienceFlag(() -> false, false, "fullName");

        if (Flags.showDesktopExperienceDevOption()) {
            assertThat(flag.isTrue()).isTrue();
        } else {
            assertThat(flag.isTrue()).isFalse();
        }
    }

    @Test
    public void isTrue_flagHasNoNameAndNotOverridden_withSysPropOverride_returnAsDevOptionEnabled()
            throws Exception {
        setSysProp(DesktopExperienceFlags.SYSTEM_PROPERTY_NAME, OVERRIDE_ON_SETTING);
        setSysProp(DesktopExperienceFlags.SYSTEM_PROPERTY_OVERRIDE_PREFIX, "true");
        DesktopExperienceFlag flag = new DesktopExperienceFlag(() -> false, false, "");

        assertThat(flag.isTrue()).isFalse();
    }

    @Test
    public void isTrue_flagHasDot_devOptionEnabled_flagOverridden_withSysPropOverride_returnFalse()
            throws Exception {
        setSysProp(DesktopExperienceFlags.SYSTEM_PROPERTY_NAME, OVERRIDE_ON_SETTING);
        setSysProp(DesktopExperienceFlags.SYSTEM_PROPERTY_OVERRIDE_PREFIX + "baseName", "false");
        DesktopExperienceFlag flag = new DesktopExperienceFlag(() -> false, true,
                "test.flag.baseName");

        assertThat(flag.isTrue()).isFalse();
    }

    @Test
    public void isTrue_flagHasNoDot_devOptionEnabled_flagOverridden_withOverride_returnFalse()
            throws Exception {
        setSysProp(DesktopExperienceFlags.SYSTEM_PROPERTY_NAME, OVERRIDE_ON_SETTING);
        setSysProp(DesktopExperienceFlags.SYSTEM_PROPERTY_OVERRIDE_PREFIX + "fullName", "false");
        DesktopExperienceFlag flag = new DesktopExperienceFlag(() -> false, true, "fullName");

        assertThat(flag.isTrue()).isFalse();
    }

    @Test
    public void isTrue_flagHasNoName_devOptionEnabled_flagOverridden_withOverride()
            throws Exception {
        setSysProp(DesktopExperienceFlags.SYSTEM_PROPERTY_NAME, OVERRIDE_ON_SETTING);
        setSysProp(DesktopExperienceFlags.SYSTEM_PROPERTY_OVERRIDE_PREFIX, "false");
        DesktopExperienceFlag flag = new DesktopExperienceFlag(() -> false, true, "");

        if (Flags.showDesktopExperienceDevOption()) {
            assertThat(flag.isTrue()).isTrue();
        } else {
            assertThat(flag.isTrue()).isFalse();
        }
    }

    private void setSysProp(String name, String value) throws Exception {
        if (!mInitialSyspropValues.containsKey(name)) {
            String initialValue = mUiDevice.executeShellCommand("getprop " + name).trim();