Loading core/java/android/view/InsetsState.java +1 −1 Original line number Diff line number Diff line Loading @@ -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; } Loading core/java/android/view/ViewRootImpl.java +2 −2 Original line number Diff line number Diff line Loading @@ -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) { Loading core/java/android/window/flags/DesktopModeFlags.java +23 −5 Original line number Diff line number Diff line Loading @@ -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. Loading @@ -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 Loading Loading @@ -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; Loading @@ -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; Loading core/java/com/android/internal/policy/DecorView.java +2 −2 Original line number Diff line number Diff line Loading @@ -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; Loading core/tests/coretests/src/android/window/flags/DesktopModeFlagsTest.java +74 −50 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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 Loading @@ -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 Loading @@ -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 Loading @@ -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 Loading @@ -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 Loading @@ -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 Loading @@ -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 Loading @@ -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 Loading @@ -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 Loading
core/java/android/view/InsetsState.java +1 −1 Original line number Diff line number Diff line Loading @@ -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; } Loading
core/java/android/view/ViewRootImpl.java +2 −2 Original line number Diff line number Diff line Loading @@ -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) { Loading
core/java/android/window/flags/DesktopModeFlags.java +23 −5 Original line number Diff line number Diff line Loading @@ -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. Loading @@ -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 Loading Loading @@ -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; Loading @@ -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; Loading
core/java/com/android/internal/policy/DecorView.java +2 −2 Original line number Diff line number Diff line Loading @@ -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; Loading
core/tests/coretests/src/android/window/flags/DesktopModeFlagsTest.java +74 −50 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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 Loading @@ -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 Loading @@ -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 Loading @@ -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 Loading @@ -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 Loading @@ -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 Loading @@ -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 Loading @@ -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 Loading @@ -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