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

Commit eff4dad4 authored by Alina Zaidi's avatar Alina Zaidi Committed by Android (Google) Code Review
Browse files

Merge "[dev_option] Remove DesktopModeFlags from Shell" into main

parents 97344c76 6ebd76f3
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -146,7 +146,7 @@ public class InsetsState implements Parcelable {
                forceConsumingTypes |= type;
            }

            if (ENABLE_CAPTION_COMPAT_INSET_FORCE_CONSUMPTION_ALWAYS.isEnabled()
            if (ENABLE_CAPTION_COMPAT_INSET_FORCE_CONSUMPTION_ALWAYS.isTrue()
                    && (flags & FLAG_FORCE_CONSUMING_OPAQUE_CAPTION_BAR) != 0) {
                forceConsumingOpaqueCaptionBar = true;
            }
+2 −2
Original line number Diff line number Diff line
@@ -3214,10 +3214,10 @@ public final class ViewRootImpl implements ViewParent,
            typesToShow |= Type.navigationBars();
        }
        if (captionIsHiddenByFlags && !captionWasHiddenByFlags
                && ENABLE_CAPTION_COMPAT_INSET_FORCE_CONSUMPTION.isEnabled()) {
                && ENABLE_CAPTION_COMPAT_INSET_FORCE_CONSUMPTION.isTrue()) {
            typesToHide |= Type.captionBar();
        } else if (!captionIsHiddenByFlags && captionWasHiddenByFlags
                && ENABLE_CAPTION_COMPAT_INSET_FORCE_CONSUMPTION.isEnabled()) {
                && ENABLE_CAPTION_COMPAT_INSET_FORCE_CONSUMPTION.isTrue()) {
            typesToShow |= Type.captionBar();
        }
        if (typesToHide != 0) {
+23 −5
Original line number Diff line number Diff line
@@ -47,7 +47,23 @@ public enum DesktopModeFlags {
    ENABLE_CAPTION_COMPAT_INSET_FORCE_CONSUMPTION(
            Flags::enableCaptionCompatInsetForceConsumption, true),
    ENABLE_CAPTION_COMPAT_INSET_FORCE_CONSUMPTION_ALWAYS(
            Flags::enableCaptionCompatInsetForceConsumptionAlways, true);
            Flags::enableCaptionCompatInsetForceConsumptionAlways, true),
    ENABLE_CASCADING_WINDOWS(Flags::enableCascadingWindows, true),
    ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY(
            Flags::enableDesktopWindowingWallpaperActivity, true),
    ENABLE_DESKTOP_WINDOWING_MODALS_POLICY(Flags::enableDesktopWindowingModalsPolicy, true),
    ENABLE_THEMED_APP_HEADERS(Flags::enableThemedAppHeaders, true),
    ENABLE_DESKTOP_WINDOWING_QUICK_SWITCH(Flags::enableDesktopWindowingQuickSwitch, true),
    ENABLE_APP_HEADER_WITH_TASK_DENSITY(Flags::enableAppHeaderWithTaskDensity, true),
    ENABLE_TASK_STACK_OBSERVER_IN_SHELL(Flags::enableTaskStackObserverInShell, true),
    ENABLE_DESKTOP_WINDOWING_SIZE_CONSTRAINTS(Flags::enableDesktopWindowingSizeConstraints, true),
    DISABLE_NON_RESIZABLE_APP_SNAP_RESIZE(Flags::disableNonResizableAppSnapResizing, true),
    ENABLE_WINDOWING_SCALED_RESIZING(Flags::enableWindowingScaledResizing, false),
    ENABLE_DESKTOP_WINDOWING_TASK_LIMIT(Flags::enableDesktopWindowingTaskLimit, true),
    ENABLE_DESKTOP_WINDOWING_BACK_NAVIGATION(Flags::enableDesktopWindowingBackNavigation, true),
    ENABLE_WINDOWING_EDGE_DRAG_RESIZE(Flags::enableWindowingEdgeDragResize, true),
    ENABLE_DESKTOP_WINDOWING_TASKBAR_RUNNING_APPS(
            Flags::enableDesktopWindowingTaskbarRunningApps, true);

    private static final String TAG = "DesktopModeFlagsUtil";
    // Function called to obtain aconfig flag value.
@@ -68,7 +84,7 @@ public enum DesktopModeFlags {
     * Determines state of flag based on the actual flag and desktop mode developer option
     * overrides.
     */
    public boolean isEnabled() {
    public boolean isTrue() {
        Application application = ActivityThread.currentApplication();
        if (!Flags.showDesktopWindowingDevOption()
                || !mShouldOverrideByDevOption
@@ -112,12 +128,13 @@ public enum DesktopModeFlags {
    }

    /** Override state of desktop mode developer option toggle. */
    private enum ToggleOverride {
    public enum ToggleOverride {
        OVERRIDE_UNSET,
        OVERRIDE_OFF,
        OVERRIDE_ON;

        int getSetting() {
        /** Returns the integer representation of this {@code ToggleOverride}. */
        public int getSetting() {
            return switch (this) {
                case OVERRIDE_ON -> 1;
                case OVERRIDE_OFF -> 0;
@@ -125,7 +142,8 @@ public enum DesktopModeFlags {
            };
        }

        static ToggleOverride fromSetting(int setting, @Nullable ToggleOverride fallback) {
        /** Returns the {@code ToggleOverride} corresponding to a given integer setting. */
        public static ToggleOverride fromSetting(int setting, @Nullable ToggleOverride fallback) {
            return switch (setting) {
                case 1 -> OVERRIDE_ON;
                case 0 -> OVERRIDE_OFF;
+2 −2
Original line number Diff line number Diff line
@@ -1219,14 +1219,14 @@ public class DecorView extends FrameLayout implements RootViewSurfaceTaker, Wind
        final boolean hideCaptionBar = fullscreen
                || (requestedVisibleTypes & WindowInsets.Type.captionBar()) == 0;
        final boolean consumingCaptionBar =
                ENABLE_CAPTION_COMPAT_INSET_FORCE_CONSUMPTION.isEnabled()
                ENABLE_CAPTION_COMPAT_INSET_FORCE_CONSUMPTION.isTrue()
                        && ((mLastForceConsumingTypes & WindowInsets.Type.captionBar()) != 0
                        && hideCaptionBar);

        final boolean isOpaqueCaptionBar = customizableWindowHeaders()
                && (appearance & APPEARANCE_TRANSPARENT_CAPTION_BAR_BACKGROUND) == 0;
        final boolean consumingOpaqueCaptionBar =
                ENABLE_CAPTION_COMPAT_INSET_FORCE_CONSUMPTION_ALWAYS.isEnabled()
                ENABLE_CAPTION_COMPAT_INSET_FORCE_CONSUMPTION_ALWAYS.isTrue()
                        && mLastForceConsumingOpaqueCaptionBar
                        && isOpaqueCaptionBar;

+74 −50
Original line number Diff line number Diff line
@@ -17,6 +17,10 @@
package android.window.flags;

import static android.window.flags.DesktopModeFlags.ENABLE_DESKTOP_WINDOWING_MODE;
import static android.window.flags.DesktopModeFlags.ToggleOverride.OVERRIDE_OFF;
import static android.window.flags.DesktopModeFlags.ToggleOverride.OVERRIDE_ON;
import static android.window.flags.DesktopModeFlags.ToggleOverride.OVERRIDE_UNSET;
import static android.window.flags.DesktopModeFlags.ToggleOverride.fromSetting;

import static com.android.window.flags.Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE;
import static com.android.window.flags.Flags.FLAG_ENABLE_WINDOWING_DYNAMIC_INITIAL_BOUNDS;
@@ -72,143 +76,143 @@ public class DesktopModeFlagsTest {
    @Test
    @DisableFlags(FLAG_SHOW_DESKTOP_WINDOWING_DEV_OPTION)
    @EnableFlags(FLAG_ENABLE_DESKTOP_WINDOWING_MODE)
    public void isEnabled_devOptionFlagDisabled_overrideOff_featureFlagOn_returnsTrue() {
    public void isTrue_devOptionFlagDisabled_overrideOff_featureFlagOn_returnsTrue() {
        setOverride(OVERRIDE_OFF_SETTING);
        // In absence of dev options, follow flag
        assertThat(ENABLE_DESKTOP_WINDOWING_MODE.isEnabled()).isTrue();
        assertThat(ENABLE_DESKTOP_WINDOWING_MODE.isTrue()).isTrue();
    }


    @Test
    @DisableFlags({FLAG_SHOW_DESKTOP_WINDOWING_DEV_OPTION, FLAG_ENABLE_DESKTOP_WINDOWING_MODE})
    public void isEnabled_devOptionFlagDisabled_overrideOn_featureFlagOff_returnsFalse() {
    public void isTrue_devOptionFlagDisabled_overrideOn_featureFlagOff_returnsFalse() {
        setOverride(OVERRIDE_ON_SETTING);

        assertThat(ENABLE_DESKTOP_WINDOWING_MODE.isEnabled()).isFalse();
        assertThat(ENABLE_DESKTOP_WINDOWING_MODE.isTrue()).isFalse();
    }

    @Test
    @EnableFlags({FLAG_SHOW_DESKTOP_WINDOWING_DEV_OPTION, FLAG_ENABLE_DESKTOP_WINDOWING_MODE})
    public void isEnabled_overrideUnset_featureFlagOn_returnsTrue() {
    public void isTrue_overrideUnset_featureFlagOn_returnsTrue() {
        setOverride(OVERRIDE_UNSET_SETTING);

        // For overridableFlag, for unset overrides, follow flag
        assertThat(ENABLE_DESKTOP_WINDOWING_MODE.isEnabled()).isTrue();
        assertThat(ENABLE_DESKTOP_WINDOWING_MODE.isTrue()).isTrue();
    }

    @Test
    @EnableFlags(FLAG_SHOW_DESKTOP_WINDOWING_DEV_OPTION)
    @DisableFlags(FLAG_ENABLE_DESKTOP_WINDOWING_MODE)
    public void isEnabled_overrideUnset_featureFlagOff_returnsFalse() {
    public void isTrue_overrideUnset_featureFlagOff_returnsFalse() {
        setOverride(OVERRIDE_UNSET_SETTING);

        // For overridableFlag, for unset overrides, follow flag
        assertThat(ENABLE_DESKTOP_WINDOWING_MODE.isEnabled()).isFalse();
        assertThat(ENABLE_DESKTOP_WINDOWING_MODE.isTrue()).isFalse();
    }

    @Test
    @EnableFlags({FLAG_SHOW_DESKTOP_WINDOWING_DEV_OPTION, FLAG_ENABLE_DESKTOP_WINDOWING_MODE})
    public void isEnabled_noOverride_featureFlagOn_returnsTrue() {
    public void isTrue_noOverride_featureFlagOn_returnsTrue() {
        setOverride(null);

        // For overridableFlag, in absence of overrides, follow flag
        assertThat(ENABLE_DESKTOP_WINDOWING_MODE.isEnabled()).isTrue();
        assertThat(ENABLE_DESKTOP_WINDOWING_MODE.isTrue()).isTrue();
    }

    @Test
    @EnableFlags(FLAG_SHOW_DESKTOP_WINDOWING_DEV_OPTION)
    @DisableFlags(FLAG_ENABLE_DESKTOP_WINDOWING_MODE)
    public void isEnabled_noOverride_featureFlagOff_returnsFalse() {
    public void isTrue_noOverride_featureFlagOff_returnsFalse() {
        setOverride(null);

        // For overridableFlag, in absence of overrides, follow flag
        assertThat(ENABLE_DESKTOP_WINDOWING_MODE.isEnabled()).isFalse();
        assertThat(ENABLE_DESKTOP_WINDOWING_MODE.isTrue()).isFalse();
    }

    @Test
    @EnableFlags({FLAG_SHOW_DESKTOP_WINDOWING_DEV_OPTION, FLAG_ENABLE_DESKTOP_WINDOWING_MODE})
    public void isEnabled_unrecognizableOverride_featureFlagOn_returnsTrue() {
    public void isTrue_unrecognizableOverride_featureFlagOn_returnsTrue() {
        setOverride(-2);

        // For overridableFlag, for unrecognized overrides, follow flag
        assertThat(ENABLE_DESKTOP_WINDOWING_MODE.isEnabled()).isTrue();
        assertThat(ENABLE_DESKTOP_WINDOWING_MODE.isTrue()).isTrue();
    }

    @Test
    @EnableFlags(FLAG_SHOW_DESKTOP_WINDOWING_DEV_OPTION)
    @DisableFlags(FLAG_ENABLE_DESKTOP_WINDOWING_MODE)
    public void isEnabled_unrecognizableOverride_featureFlagOff_returnsFalse() {
    public void isTrue_unrecognizableOverride_featureFlagOff_returnsFalse() {
        setOverride(-2);

        // For overridableFlag, for unrecognizable overrides, follow flag
        assertThat(ENABLE_DESKTOP_WINDOWING_MODE.isEnabled()).isFalse();
        assertThat(ENABLE_DESKTOP_WINDOWING_MODE.isTrue()).isFalse();
    }

    @Test
    @EnableFlags({FLAG_SHOW_DESKTOP_WINDOWING_DEV_OPTION, FLAG_ENABLE_DESKTOP_WINDOWING_MODE})
    public void isEnabled_overrideOff_featureFlagOn_returnsFalse() {
    public void isTrue_overrideOff_featureFlagOn_returnsFalse() {
        setOverride(OVERRIDE_OFF_SETTING);

        // For overridableFlag, follow override if they exist
        assertThat(ENABLE_DESKTOP_WINDOWING_MODE.isEnabled()).isFalse();
        assertThat(ENABLE_DESKTOP_WINDOWING_MODE.isTrue()).isFalse();
    }

    @Test
    @EnableFlags(FLAG_SHOW_DESKTOP_WINDOWING_DEV_OPTION)
    @DisableFlags(FLAG_ENABLE_DESKTOP_WINDOWING_MODE)
    public void isEnabled_overrideOn_featureFlagOff_returnsTrue() {
    public void isTrue_overrideOn_featureFlagOff_returnsTrue() {
        setOverride(OVERRIDE_ON_SETTING);

        // For overridableFlag, follow override if they exist
        assertThat(ENABLE_DESKTOP_WINDOWING_MODE.isEnabled()).isTrue();
        assertThat(ENABLE_DESKTOP_WINDOWING_MODE.isTrue()).isTrue();
    }

    @Test
    @EnableFlags({FLAG_SHOW_DESKTOP_WINDOWING_DEV_OPTION, FLAG_ENABLE_DESKTOP_WINDOWING_MODE})
    public void isEnabled_overrideOffThenOn_featureFlagOn_returnsFalseAndFalse() {
    public void isTrue_overrideOffThenOn_featureFlagOn_returnsFalseAndFalse() {
        setOverride(OVERRIDE_OFF_SETTING);

        // For overridableFlag, follow override if they exist
        assertThat(ENABLE_DESKTOP_WINDOWING_MODE.isEnabled()).isFalse();
        assertThat(ENABLE_DESKTOP_WINDOWING_MODE.isTrue()).isFalse();

        setOverride(OVERRIDE_ON_SETTING);

        // Keep overrides constant through the process
        assertThat(ENABLE_DESKTOP_WINDOWING_MODE.isEnabled()).isFalse();
        assertThat(ENABLE_DESKTOP_WINDOWING_MODE.isTrue()).isFalse();
    }

    @Test
    @EnableFlags(FLAG_SHOW_DESKTOP_WINDOWING_DEV_OPTION)
    @DisableFlags(FLAG_ENABLE_DESKTOP_WINDOWING_MODE)
    public void isEnabled_overrideOnThenOff_featureFlagOff_returnsTrueAndTrue() {
    public void isTrue_overrideOnThenOff_featureFlagOff_returnsTrueAndTrue() {
        setOverride(OVERRIDE_ON_SETTING);

        // For overridableFlag, follow override if they exist
        assertThat(ENABLE_DESKTOP_WINDOWING_MODE.isEnabled()).isTrue();
        assertThat(ENABLE_DESKTOP_WINDOWING_MODE.isTrue()).isTrue();

        setOverride(OVERRIDE_OFF_SETTING);

        // Keep overrides constant through the process
        assertThat(ENABLE_DESKTOP_WINDOWING_MODE.isEnabled()).isTrue();
        assertThat(ENABLE_DESKTOP_WINDOWING_MODE.isTrue()).isTrue();
    }

    @Test
    @EnableFlags({FLAG_SHOW_DESKTOP_WINDOWING_DEV_OPTION, FLAG_ENABLE_DESKTOP_WINDOWING_MODE,
            FLAG_ENABLE_WINDOWING_DYNAMIC_INITIAL_BOUNDS})
    public void isEnabled_dwFlagOn_overrideUnset_featureFlagOn_returnsTrue() {
    public void isTrue_dwFlagOn_overrideUnset_featureFlagOn_returnsTrue() {
        setOverride(OVERRIDE_UNSET_SETTING);

        // For unset overrides, follow flag
        assertThat(DesktopModeFlags.ENABLE_WINDOWING_DYNAMIC_INITIAL_BOUNDS.isEnabled()).isTrue();
        assertThat(DesktopModeFlags.ENABLE_WINDOWING_DYNAMIC_INITIAL_BOUNDS.isTrue()).isTrue();
    }

    @Test
    @EnableFlags({FLAG_SHOW_DESKTOP_WINDOWING_DEV_OPTION, FLAG_ENABLE_DESKTOP_WINDOWING_MODE})
    @DisableFlags(FLAG_ENABLE_WINDOWING_DYNAMIC_INITIAL_BOUNDS)
    public void isEnabled_dwFlagOn_overrideUnset_featureFlagOff_returnsFalse() {
    public void isTrue_dwFlagOn_overrideUnset_featureFlagOff_returnsFalse() {
        setOverride(OVERRIDE_UNSET_SETTING);
        // For unset overrides, follow flag
        assertThat(DesktopModeFlags.ENABLE_WINDOWING_DYNAMIC_INITIAL_BOUNDS.isEnabled()).isFalse();
        assertThat(DesktopModeFlags.ENABLE_WINDOWING_DYNAMIC_INITIAL_BOUNDS.isTrue()).isFalse();
    }

    @Test
@@ -217,21 +221,21 @@ public class DesktopModeFlagsTest {
            FLAG_ENABLE_DESKTOP_WINDOWING_MODE,
            FLAG_ENABLE_WINDOWING_DYNAMIC_INITIAL_BOUNDS
    })
    public void isEnabled_dwFlagOn_overrideOn_featureFlagOn_returnsTrue() {
    public void isTrue_dwFlagOn_overrideOn_featureFlagOn_returnsTrue() {
        setOverride(OVERRIDE_ON_SETTING);

        // When toggle override matches its default state (dw flag), don't override flags
        assertThat(DesktopModeFlags.ENABLE_WINDOWING_DYNAMIC_INITIAL_BOUNDS.isEnabled()).isTrue();
        assertThat(DesktopModeFlags.ENABLE_WINDOWING_DYNAMIC_INITIAL_BOUNDS.isTrue()).isTrue();
    }

    @Test
    @EnableFlags({FLAG_SHOW_DESKTOP_WINDOWING_DEV_OPTION, FLAG_ENABLE_DESKTOP_WINDOWING_MODE})
    @DisableFlags(FLAG_ENABLE_WINDOWING_DYNAMIC_INITIAL_BOUNDS)
    public void isEnabled_dwFlagOn_overrideOn_featureFlagOff_returnsFalse() {
    public void isTrue_dwFlagOn_overrideOn_featureFlagOff_returnsFalse() {
        setOverride(OVERRIDE_ON_SETTING);

        // When toggle override matches its default state (dw flag), don't override flags
        assertThat(DesktopModeFlags.ENABLE_WINDOWING_DYNAMIC_INITIAL_BOUNDS.isEnabled()).isFalse();
        assertThat(DesktopModeFlags.ENABLE_WINDOWING_DYNAMIC_INITIAL_BOUNDS.isTrue()).isFalse();
    }

    @Test
@@ -240,21 +244,21 @@ public class DesktopModeFlagsTest {
            FLAG_ENABLE_DESKTOP_WINDOWING_MODE,
            FLAG_ENABLE_WINDOWING_DYNAMIC_INITIAL_BOUNDS
    })
    public void isEnabled_dwFlagOn_overrideOff_featureFlagOn_returnsTrue() {
    public void isTrue_dwFlagOn_overrideOff_featureFlagOn_returnsTrue() {
        setOverride(OVERRIDE_OFF_SETTING);

        // Follow override if they exist, and is not equal to default toggle state (dw flag)
        assertThat(DesktopModeFlags.ENABLE_WINDOWING_DYNAMIC_INITIAL_BOUNDS.isEnabled()).isTrue();
        assertThat(DesktopModeFlags.ENABLE_WINDOWING_DYNAMIC_INITIAL_BOUNDS.isTrue()).isTrue();
    }

    @Test
    @EnableFlags({FLAG_SHOW_DESKTOP_WINDOWING_DEV_OPTION, FLAG_ENABLE_DESKTOP_WINDOWING_MODE})
    @DisableFlags(FLAG_ENABLE_WINDOWING_DYNAMIC_INITIAL_BOUNDS)
    public void isEnabled_dwFlagOn_overrideOff_featureFlagOff_returnsFalse() {
    public void isTrue_dwFlagOn_overrideOff_featureFlagOff_returnsFalse() {
        setOverride(OVERRIDE_OFF_SETTING);

        // Follow override if they exist, and is not equal to default toggle state (dw flag)
        assertThat(DesktopModeFlags.ENABLE_WINDOWING_DYNAMIC_INITIAL_BOUNDS.isEnabled()).isFalse();
        assertThat(DesktopModeFlags.ENABLE_WINDOWING_DYNAMIC_INITIAL_BOUNDS.isTrue()).isFalse();
    }

    @Test
@@ -263,11 +267,11 @@ public class DesktopModeFlagsTest {
            FLAG_ENABLE_WINDOWING_DYNAMIC_INITIAL_BOUNDS
    })
    @DisableFlags(FLAG_ENABLE_DESKTOP_WINDOWING_MODE)
    public void isEnabled_dwFlagOff_overrideUnset_featureFlagOn_returnsTrue() {
    public void isTrue_dwFlagOff_overrideUnset_featureFlagOn_returnsTrue() {
        setOverride(OVERRIDE_UNSET_SETTING);

        // For unset overrides, follow flag
        assertThat(DesktopModeFlags.ENABLE_WINDOWING_DYNAMIC_INITIAL_BOUNDS.isEnabled()).isTrue();
        assertThat(DesktopModeFlags.ENABLE_WINDOWING_DYNAMIC_INITIAL_BOUNDS.isTrue()).isTrue();
    }

    @Test
@@ -276,11 +280,11 @@ public class DesktopModeFlagsTest {
            FLAG_ENABLE_DESKTOP_WINDOWING_MODE,
            FLAG_ENABLE_WINDOWING_DYNAMIC_INITIAL_BOUNDS
    })
    public void isEnabled_dwFlagOff_overrideUnset_featureFlagOff_returnsFalse() {
    public void isTrue_dwFlagOff_overrideUnset_featureFlagOff_returnsFalse() {
        setOverride(OVERRIDE_UNSET_SETTING);

        // For unset overrides, follow flag
        assertThat(DesktopModeFlags.ENABLE_WINDOWING_DYNAMIC_INITIAL_BOUNDS.isEnabled()).isFalse();
        assertThat(DesktopModeFlags.ENABLE_WINDOWING_DYNAMIC_INITIAL_BOUNDS.isTrue()).isFalse();
    }

    @Test
@@ -289,11 +293,11 @@ public class DesktopModeFlagsTest {
            FLAG_ENABLE_WINDOWING_DYNAMIC_INITIAL_BOUNDS
    })
    @DisableFlags(FLAG_ENABLE_DESKTOP_WINDOWING_MODE)
    public void isEnabled_dwFlagOff_overrideOn_featureFlagOn_returnsTrue() {
    public void isTrue_dwFlagOff_overrideOn_featureFlagOn_returnsTrue() {
        setOverride(OVERRIDE_ON_SETTING);

        // Follow override if they exist, and is not equal to default toggle state (dw flag)
        assertThat(DesktopModeFlags.ENABLE_WINDOWING_DYNAMIC_INITIAL_BOUNDS.isEnabled()).isTrue();
        assertThat(DesktopModeFlags.ENABLE_WINDOWING_DYNAMIC_INITIAL_BOUNDS.isTrue()).isTrue();
    }

    @Test
@@ -302,11 +306,11 @@ public class DesktopModeFlagsTest {
            FLAG_ENABLE_DESKTOP_WINDOWING_MODE,
            FLAG_ENABLE_WINDOWING_DYNAMIC_INITIAL_BOUNDS
    })
    public void isEnabled_dwFlagOff_overrideOn_featureFlagOff_returnFalse() {
    public void isTrue_dwFlagOff_overrideOn_featureFlagOff_returnFalse() {
        setOverride(OVERRIDE_ON_SETTING);

        // Follow override if they exist, and is not equal to default toggle state (dw flag)
        assertThat(DesktopModeFlags.ENABLE_WINDOWING_DYNAMIC_INITIAL_BOUNDS.isEnabled()).isFalse();
        assertThat(DesktopModeFlags.ENABLE_WINDOWING_DYNAMIC_INITIAL_BOUNDS.isTrue()).isFalse();
    }

    @Test
@@ -315,11 +319,11 @@ public class DesktopModeFlagsTest {
            FLAG_ENABLE_WINDOWING_DYNAMIC_INITIAL_BOUNDS
    })
    @DisableFlags(FLAG_ENABLE_DESKTOP_WINDOWING_MODE)
    public void isEnabled_dwFlagOff_overrideOff_featureFlagOn_returnsTrue() {
    public void isTrue_dwFlagOff_overrideOff_featureFlagOn_returnsTrue() {
        setOverride(OVERRIDE_OFF_SETTING);

        // When toggle override matches its default state (dw flag), don't override flags
        assertThat(DesktopModeFlags.ENABLE_WINDOWING_DYNAMIC_INITIAL_BOUNDS.isEnabled()).isTrue();
        assertThat(DesktopModeFlags.ENABLE_WINDOWING_DYNAMIC_INITIAL_BOUNDS.isTrue()).isTrue();
    }

    @Test
@@ -328,11 +332,31 @@ public class DesktopModeFlagsTest {
            FLAG_ENABLE_DESKTOP_WINDOWING_MODE,
            FLAG_ENABLE_WINDOWING_DYNAMIC_INITIAL_BOUNDS
    })
    public void isEnabled_dwFlagOff_overrideOff_featureFlagOff_returnsFalse() {
    public void isTrue_dwFlagOff_overrideOff_featureFlagOff_returnsFalse() {
        setOverride(OVERRIDE_OFF_SETTING);

        // When toggle override matches its default state (dw flag), don't override flags
        assertThat(DesktopModeFlags.ENABLE_WINDOWING_DYNAMIC_INITIAL_BOUNDS.isEnabled()).isFalse();
        assertThat(DesktopModeFlags.ENABLE_WINDOWING_DYNAMIC_INITIAL_BOUNDS.isTrue()).isFalse();
    }

    @Test
    public void fromSetting_validInt_returnsToggleOverride() {
        assertThat(fromSetting(0, OVERRIDE_UNSET)).isEqualTo(OVERRIDE_OFF);
        assertThat(fromSetting(1, OVERRIDE_UNSET)).isEqualTo(OVERRIDE_ON);
        assertThat(fromSetting(-1, OVERRIDE_ON)).isEqualTo(OVERRIDE_UNSET);
    }

    @Test
    public void fromSetting_invalidInt_returnsFallback() {
        assertThat(fromSetting(2, OVERRIDE_ON)).isEqualTo(OVERRIDE_ON);
        assertThat(fromSetting(-2, OVERRIDE_UNSET)).isEqualTo(OVERRIDE_UNSET);
    }

    @Test
    public void getSetting_returnsToggleOverrideInteger() {
        assertThat(OVERRIDE_OFF.getSetting()).isEqualTo(0);
        assertThat(OVERRIDE_ON.getSetting()).isEqualTo(1);
        assertThat(OVERRIDE_UNSET.getSetting()).isEqualTo(-1);
    }

    private void setOverride(Integer setting) {
Loading