Loading libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/desktopmode/DesktopModeStatus.java +6 −3 Original line number Diff line number Diff line Loading @@ -133,9 +133,12 @@ public class DesktopModeStatus { * Return {@code true} if desktop mode is enabled and can be entered on the current device. */ public static boolean canEnterDesktopMode(@NonNull Context context) { return (isDeviceEligibleForDesktopMode(context) && DesktopModeFlags.ENABLE_DESKTOP_WINDOWING_MODE.isTrue()) || isDesktopModeEnabledByDevOption(context); boolean isEligibleForDesktopMode = isDeviceEligibleForDesktopMode(context) && ( DesktopExperienceFlags.ENABLE_PROJECTED_DISPLAY_DESKTOP_MODE.isTrue() || canInternalDisplayHostDesktops(context)); boolean desktopModeEnabled = isEligibleForDesktopMode && DesktopModeFlags.ENABLE_DESKTOP_WINDOWING_MODE.isTrue(); return desktopModeEnabled || isDesktopModeEnabledByDevOption(context); } /** Loading libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/desktopmode/DesktopStateImpl.kt +5 −1 Original line number Diff line number Diff line Loading @@ -64,8 +64,12 @@ class DesktopStateImpl(context: Context) : DesktopState { DesktopModeFlags.isDesktopModeForcedEnabled() && canShowDesktopModeDevOption override val canEnterDesktopMode: Boolean = run { val isEligibleForDesktopMode = isDeviceEligibleForDesktopMode && (DesktopExperienceFlags.ENABLE_PROJECTED_DISPLAY_DESKTOP_MODE.isTrue || canInternalDisplayHostDesktops) val desktopModeEnabled = isDeviceEligibleForDesktopMode && DesktopModeFlags.ENABLE_DESKTOP_WINDOWING_MODE.isTrue isEligibleForDesktopMode && DesktopModeFlags.ENABLE_DESKTOP_WINDOWING_MODE.isTrue desktopModeEnabled || isDesktopModeEnabledByDevOption } Loading libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/shared/desktopmode/DesktopModeStatusTest.kt +42 −2 Original line number Diff line number Diff line Loading @@ -54,10 +54,11 @@ class DesktopModeStatusTest : ShellTestCase() { @Before fun setUp() { doReturn(mockResources).whenever(mockContext).getResources() doReturn(false).whenever(mockResources).getBoolean(eq(R.bool.config_isDesktopModeSupported)) setDeviceEligibleForDesktopMode(false) doReturn(false).whenever(mockResources).getBoolean( eq(R.bool.config_isDesktopModeDevOptionSupported) ) setCanInternalDisplayHostDesktops(false) doReturn(context.contentResolver).whenever(mockContext).contentResolver resetDesktopModeFlagsCache() resetEnforceDeviceRestriction() Loading Loading @@ -85,6 +86,7 @@ class DesktopModeStatusTest : ShellTestCase() { @Test fun canEnterDesktopMode_DWFlagDisabled_deviceEligible_configDevOptionOn_returnsFalse() { setDeviceEligibleForDesktopMode(true) setCanInternalDisplayHostDesktops(true) doReturn(true).whenever(mockResources).getBoolean( eq(R.bool.config_isDesktopModeDevOptionSupported) ) Loading Loading @@ -131,15 +133,48 @@ class DesktopModeStatusTest : ShellTestCase() { assertThat(DesktopModeStatus.canEnterDesktopMode(mockContext)).isFalse() } @DisableFlags(Flags.FLAG_ENABLE_DESKTOP_MODE_THROUGH_DEV_OPTION) @DisableFlags( Flags.FLAG_ENABLE_DESKTOP_MODE_THROUGH_DEV_OPTION, Flags.FLAG_ENABLE_PROJECTED_DISPLAY_DESKTOP_MODE, ) @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE) @Test fun canEnterDesktopMode_DWFlagEnabled_deviceEligible_returnsTrue() { setDeviceEligibleForDesktopMode(true) setCanInternalDisplayHostDesktops(true) assertThat(DesktopModeStatus.canEnterDesktopMode(mockContext)).isTrue() } @DisableFlags( Flags.FLAG_ENABLE_DESKTOP_MODE_THROUGH_DEV_OPTION, Flags.FLAG_ENABLE_PROJECTED_DISPLAY_DESKTOP_MODE, ) @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE) @Test fun canEnterDesktopMode_DWFlagEnabled_deviceEligibleWithoutInternalDisplay_returnsFalse() { setDeviceEligibleForDesktopMode(true) setCanInternalDisplayHostDesktops(false) assertThat(DesktopModeStatus.canEnterDesktopMode(mockContext)).isFalse() } @DisableFlags( Flags.FLAG_ENABLE_DESKTOP_MODE_THROUGH_DEV_OPTION, ) @EnableFlags( Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE, Flags.FLAG_ENABLE_PROJECTED_DISPLAY_DESKTOP_MODE, ) @Test fun canEnterDesktopMode_DWAndProjectedFlagEnabled_eligibleWithoutInternalDisplay_returnsTrue() { setDeviceEligibleForDesktopMode(true) setCanInternalDisplayHostDesktops(false) assertThat(DesktopModeStatus.canEnterDesktopMode(mockContext)).isTrue() } @EnableFlags( Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE, Flags.FLAG_ENABLE_DESKTOP_MODE_THROUGH_DEV_OPTION Loading Loading @@ -281,6 +316,11 @@ class DesktopModeStatusTest : ShellTestCase() { .getBoolean(eq(R.bool.config_isDesktopModeSupported)) } private fun setCanInternalDisplayHostDesktops(eligible: Boolean) { doReturn(eligible).whenever(mockResources) .getBoolean(eq(R.bool.config_canInternalDisplayHostDesktops)) } private fun setIsVeiledResizeEnabled(enabled: Boolean) { val deviceRestrictions = DesktopModeStatus::class.java.getDeclaredField("IS_VEILED_RESIZE_ENABLED") Loading libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/shared/desktopmode/DesktopStateImplTest.kt +17 −1 Original line number Diff line number Diff line Loading @@ -194,7 +194,23 @@ class DesktopStateImplTest : ShellTestCase() { ) @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE) @Test fun canEnterDesktopMode_DWFlagEnabled_deviceEligibleWithoutInternalDisplay_returnsTrue() { fun canEnterDesktopMode_DWFlagEnabled_deviceEligibleWithoutInternalDisplay_returnsFalse() { setDeviceEligibleForDesktopMode(true) setCanInternalDisplayHostDesktops(false) val desktopState = DesktopStateImpl(context) assertThat(desktopState.canEnterDesktopMode).isFalse() } @DisableFlags( Flags.FLAG_ENABLE_DESKTOP_MODE_THROUGH_DEV_OPTION, ) @EnableFlags( Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE, Flags.FLAG_ENABLE_PROJECTED_DISPLAY_DESKTOP_MODE, ) @Test fun canEnterDesktopMode_DWAndProjectedFlagEnabled_eligibleWithoutInternalDisplay_returnsTrue() { setDeviceEligibleForDesktopMode(true) setCanInternalDisplayHostDesktops(false) val desktopState = DesktopStateImpl(context) Loading Loading
libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/desktopmode/DesktopModeStatus.java +6 −3 Original line number Diff line number Diff line Loading @@ -133,9 +133,12 @@ public class DesktopModeStatus { * Return {@code true} if desktop mode is enabled and can be entered on the current device. */ public static boolean canEnterDesktopMode(@NonNull Context context) { return (isDeviceEligibleForDesktopMode(context) && DesktopModeFlags.ENABLE_DESKTOP_WINDOWING_MODE.isTrue()) || isDesktopModeEnabledByDevOption(context); boolean isEligibleForDesktopMode = isDeviceEligibleForDesktopMode(context) && ( DesktopExperienceFlags.ENABLE_PROJECTED_DISPLAY_DESKTOP_MODE.isTrue() || canInternalDisplayHostDesktops(context)); boolean desktopModeEnabled = isEligibleForDesktopMode && DesktopModeFlags.ENABLE_DESKTOP_WINDOWING_MODE.isTrue(); return desktopModeEnabled || isDesktopModeEnabledByDevOption(context); } /** Loading
libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/desktopmode/DesktopStateImpl.kt +5 −1 Original line number Diff line number Diff line Loading @@ -64,8 +64,12 @@ class DesktopStateImpl(context: Context) : DesktopState { DesktopModeFlags.isDesktopModeForcedEnabled() && canShowDesktopModeDevOption override val canEnterDesktopMode: Boolean = run { val isEligibleForDesktopMode = isDeviceEligibleForDesktopMode && (DesktopExperienceFlags.ENABLE_PROJECTED_DISPLAY_DESKTOP_MODE.isTrue || canInternalDisplayHostDesktops) val desktopModeEnabled = isDeviceEligibleForDesktopMode && DesktopModeFlags.ENABLE_DESKTOP_WINDOWING_MODE.isTrue isEligibleForDesktopMode && DesktopModeFlags.ENABLE_DESKTOP_WINDOWING_MODE.isTrue desktopModeEnabled || isDesktopModeEnabledByDevOption } Loading
libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/shared/desktopmode/DesktopModeStatusTest.kt +42 −2 Original line number Diff line number Diff line Loading @@ -54,10 +54,11 @@ class DesktopModeStatusTest : ShellTestCase() { @Before fun setUp() { doReturn(mockResources).whenever(mockContext).getResources() doReturn(false).whenever(mockResources).getBoolean(eq(R.bool.config_isDesktopModeSupported)) setDeviceEligibleForDesktopMode(false) doReturn(false).whenever(mockResources).getBoolean( eq(R.bool.config_isDesktopModeDevOptionSupported) ) setCanInternalDisplayHostDesktops(false) doReturn(context.contentResolver).whenever(mockContext).contentResolver resetDesktopModeFlagsCache() resetEnforceDeviceRestriction() Loading Loading @@ -85,6 +86,7 @@ class DesktopModeStatusTest : ShellTestCase() { @Test fun canEnterDesktopMode_DWFlagDisabled_deviceEligible_configDevOptionOn_returnsFalse() { setDeviceEligibleForDesktopMode(true) setCanInternalDisplayHostDesktops(true) doReturn(true).whenever(mockResources).getBoolean( eq(R.bool.config_isDesktopModeDevOptionSupported) ) Loading Loading @@ -131,15 +133,48 @@ class DesktopModeStatusTest : ShellTestCase() { assertThat(DesktopModeStatus.canEnterDesktopMode(mockContext)).isFalse() } @DisableFlags(Flags.FLAG_ENABLE_DESKTOP_MODE_THROUGH_DEV_OPTION) @DisableFlags( Flags.FLAG_ENABLE_DESKTOP_MODE_THROUGH_DEV_OPTION, Flags.FLAG_ENABLE_PROJECTED_DISPLAY_DESKTOP_MODE, ) @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE) @Test fun canEnterDesktopMode_DWFlagEnabled_deviceEligible_returnsTrue() { setDeviceEligibleForDesktopMode(true) setCanInternalDisplayHostDesktops(true) assertThat(DesktopModeStatus.canEnterDesktopMode(mockContext)).isTrue() } @DisableFlags( Flags.FLAG_ENABLE_DESKTOP_MODE_THROUGH_DEV_OPTION, Flags.FLAG_ENABLE_PROJECTED_DISPLAY_DESKTOP_MODE, ) @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE) @Test fun canEnterDesktopMode_DWFlagEnabled_deviceEligibleWithoutInternalDisplay_returnsFalse() { setDeviceEligibleForDesktopMode(true) setCanInternalDisplayHostDesktops(false) assertThat(DesktopModeStatus.canEnterDesktopMode(mockContext)).isFalse() } @DisableFlags( Flags.FLAG_ENABLE_DESKTOP_MODE_THROUGH_DEV_OPTION, ) @EnableFlags( Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE, Flags.FLAG_ENABLE_PROJECTED_DISPLAY_DESKTOP_MODE, ) @Test fun canEnterDesktopMode_DWAndProjectedFlagEnabled_eligibleWithoutInternalDisplay_returnsTrue() { setDeviceEligibleForDesktopMode(true) setCanInternalDisplayHostDesktops(false) assertThat(DesktopModeStatus.canEnterDesktopMode(mockContext)).isTrue() } @EnableFlags( Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE, Flags.FLAG_ENABLE_DESKTOP_MODE_THROUGH_DEV_OPTION Loading Loading @@ -281,6 +316,11 @@ class DesktopModeStatusTest : ShellTestCase() { .getBoolean(eq(R.bool.config_isDesktopModeSupported)) } private fun setCanInternalDisplayHostDesktops(eligible: Boolean) { doReturn(eligible).whenever(mockResources) .getBoolean(eq(R.bool.config_canInternalDisplayHostDesktops)) } private fun setIsVeiledResizeEnabled(enabled: Boolean) { val deviceRestrictions = DesktopModeStatus::class.java.getDeclaredField("IS_VEILED_RESIZE_ENABLED") Loading
libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/shared/desktopmode/DesktopStateImplTest.kt +17 −1 Original line number Diff line number Diff line Loading @@ -194,7 +194,23 @@ class DesktopStateImplTest : ShellTestCase() { ) @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE) @Test fun canEnterDesktopMode_DWFlagEnabled_deviceEligibleWithoutInternalDisplay_returnsTrue() { fun canEnterDesktopMode_DWFlagEnabled_deviceEligibleWithoutInternalDisplay_returnsFalse() { setDeviceEligibleForDesktopMode(true) setCanInternalDisplayHostDesktops(false) val desktopState = DesktopStateImpl(context) assertThat(desktopState.canEnterDesktopMode).isFalse() } @DisableFlags( Flags.FLAG_ENABLE_DESKTOP_MODE_THROUGH_DEV_OPTION, ) @EnableFlags( Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE, Flags.FLAG_ENABLE_PROJECTED_DISPLAY_DESKTOP_MODE, ) @Test fun canEnterDesktopMode_DWAndProjectedFlagEnabled_eligibleWithoutInternalDisplay_returnsTrue() { setDeviceEligibleForDesktopMode(true) setCanInternalDisplayHostDesktops(false) val desktopState = DesktopStateImpl(context) Loading