Loading libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/desktopmode/DesktopModeStatus.java +1 −1 Original line number Diff line number Diff line Loading @@ -232,7 +232,7 @@ public class DesktopModeStatus { * Return {@code true} if desktop mode dev option should be shown on current device */ public static boolean canShowDesktopExperienceDevOption(@NonNull Context context) { return Flags.showDesktopExperienceDevOption(); return Flags.showDesktopExperienceDevOption() && isDeviceEligibleForDesktopMode(context); } /** Returns if desktop mode dev option should be enabled if there is no user override. */ Loading libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/shared/desktopmode/DesktopModeStatusTest.kt +38 −25 Original line number Diff line number Diff line Loading @@ -56,6 +56,7 @@ class DesktopModeStatusTest : ShellTestCase() { doReturn(false).whenever(mockResources).getBoolean( eq(R.bool.config_isDesktopModeDevOptionSupported) ) setDeviceEligibleForDesktopMode(false) doReturn(context.contentResolver).whenever(mockContext).contentResolver resetDesktopModeFlagsCache() resetEnforceDeviceRestriction() Loading @@ -74,7 +75,7 @@ class DesktopModeStatusTest : ShellTestCase() { Flags.FLAG_ENABLE_DESKTOP_MODE_THROUGH_DEV_OPTION ) @Test fun canEnterDesktopMode_DWFlagDisabled_configsOff_returnsFalse() { fun canEnterDesktopMode_DWFlagDisabled_deviceNotEligible_returnsFalse() { assertThat(DesktopModeStatus.canEnterDesktopMode(mockContext)).isFalse() } Loading @@ -83,8 +84,8 @@ class DesktopModeStatusTest : ShellTestCase() { Flags.FLAG_ENABLE_DESKTOP_MODE_THROUGH_DEV_OPTION ) @Test fun canEnterDesktopMode_DWFlagDisabled_configsOn_disableDeviceRestrictions_returnsFalse() { doReturn(true).whenever(mockResources).getBoolean(eq(R.bool.config_isDesktopModeSupported)) fun canEnterDesktopMode_DWFlagDisabled_deviceEligible_configDevOptionOn_returnsFalse() { setDeviceEligibleForDesktopMode(true) doReturn(true).whenever(mockResources).getBoolean( eq(R.bool.config_isDesktopModeDevOptionSupported) ) Loading @@ -98,7 +99,7 @@ class DesktopModeStatusTest : ShellTestCase() { Flags.FLAG_ENABLE_DESKTOP_MODE_THROUGH_DEV_OPTION ) @Test fun canEnterDesktopMode_DWFlagDisabled_configDevOptionOn_returnsFalse() { fun canEnterDesktopMode_DWFlagDisabled_deviceNotEligible_configDevOptionOn_returnsFalse() { doReturn(true).whenever(mockResources).getBoolean( eq(R.bool.config_isDesktopModeDevOptionSupported) ) Loading @@ -111,7 +112,7 @@ class DesktopModeStatusTest : ShellTestCase() { Flags.FLAG_ENABLE_DESKTOP_MODE_THROUGH_DEV_OPTION ) @Test fun canEnterDesktopMode_DWFlagDisabled_configDevOptionOn_flagOverrideOn_returnsTrue() { fun canEnterDesktopMode_DWFlagDisabled_deviceNotEligible_forceUsingDevOption_returnsTrue() { doReturn(true).whenever(mockResources).getBoolean( eq(R.bool.config_isDesktopModeDevOptionSupported) ) Loading @@ -123,14 +124,7 @@ class DesktopModeStatusTest : ShellTestCase() { @DisableFlags(Flags.FLAG_ENABLE_DESKTOP_MODE_THROUGH_DEV_OPTION) @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE) @Test fun canEnterDesktopMode_DWFlagEnabled_configsOff_returnsFalse() { assertThat(DesktopModeStatus.canEnterDesktopMode(mockContext)).isFalse() } @DisableFlags(Flags.FLAG_ENABLE_DESKTOP_MODE_THROUGH_DEV_OPTION) @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE) @Test fun canEnterDesktopMode_DWFlagEnabled_configDesktopModeOff_returnsFalse() { fun canEnterDesktopMode_DWFlagEnabled_deviceNotEligible_returnsFalse() { doReturn(true).whenever(mockResources).getBoolean( eq(R.bool.config_isDesktopModeDevOptionSupported) ) Loading @@ -141,8 +135,8 @@ class DesktopModeStatusTest : ShellTestCase() { @DisableFlags(Flags.FLAG_ENABLE_DESKTOP_MODE_THROUGH_DEV_OPTION) @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE) @Test fun canEnterDesktopMode_DWFlagEnabled_configDesktopModeOn_returnsTrue() { doReturn(true).whenever(mockResources).getBoolean(eq(R.bool.config_isDesktopModeSupported)) fun canEnterDesktopMode_DWFlagEnabled_deviceEligible_returnsTrue() { setDeviceEligibleForDesktopMode(true) assertThat(DesktopModeStatus.canEnterDesktopMode(mockContext)).isTrue() } Loading @@ -150,16 +144,7 @@ class DesktopModeStatusTest : ShellTestCase() { @DisableFlags(Flags.FLAG_ENABLE_DESKTOP_MODE_THROUGH_DEV_OPTION) @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE) @Test fun canEnterDesktopMode_DWFlagEnabled_configsOff_disableDeviceRestrictions_returnsTrue() { disableEnforceDeviceRestriction() assertThat(DesktopModeStatus.canEnterDesktopMode(mockContext)).isTrue() } @DisableFlags(Flags.FLAG_ENABLE_DESKTOP_MODE_THROUGH_DEV_OPTION) @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE) @Test fun canEnterDesktopMode_DWFlagEnabled_configDevOptionOn_flagOverrideOn_returnsTrue() { fun canEnterDesktopMode_DWFlagEnabled_deviceNotEligible_forceUsingDevOption_returnsTrue() { doReturn(true).whenever(mockResources).getBoolean( eq(R.bool.config_isDesktopModeDevOptionSupported) ) Loading Loading @@ -198,6 +183,28 @@ class DesktopModeStatusTest : ShellTestCase() { assertThat(DesktopModeStatus.isDeviceEligibleForDesktopMode(mockContext)).isTrue() } @DisableFlags(Flags.FLAG_SHOW_DESKTOP_EXPERIENCE_DEV_OPTION) @Test fun canShowDesktopExperienceDevOption_flagDisabled_returnsFalse() { setDeviceEligibleForDesktopMode(true) assertThat(DesktopModeStatus.canShowDesktopExperienceDevOption(mockContext)).isFalse() } @EnableFlags(Flags.FLAG_SHOW_DESKTOP_EXPERIENCE_DEV_OPTION) @Test fun canShowDesktopExperienceDevOption_flagEnabled_deviceNotEligible_returnsFalse() { assertThat(DesktopModeStatus.canShowDesktopExperienceDevOption(mockContext)).isFalse() } @EnableFlags(Flags.FLAG_SHOW_DESKTOP_EXPERIENCE_DEV_OPTION) @Test fun canShowDesktopExperienceDevOption_flagEnabled_deviceEligible_returnsTrue() { setDeviceEligibleForDesktopMode(true) assertThat(DesktopModeStatus.canShowDesktopExperienceDevOption(mockContext)).isTrue() } private fun resetEnforceDeviceRestriction() { setEnforceDeviceRestriction(true) } Loading Loading @@ -232,4 +239,10 @@ class DesktopModeStatusTest : ShellTestCase() { DEVELOPMENT_OVERRIDE_DESKTOP_MODE_FEATURES, override.setting ) } private fun setDeviceEligibleForDesktopMode(eligible: Boolean) { val deviceRestrictions = DesktopModeStatus::class.java.getDeclaredField("ENFORCE_DEVICE_RESTRICTIONS") deviceRestrictions.isAccessible = true deviceRestrictions.setBoolean(/* obj= */ null, /* z= */ !eligible) } } Loading
libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/desktopmode/DesktopModeStatus.java +1 −1 Original line number Diff line number Diff line Loading @@ -232,7 +232,7 @@ public class DesktopModeStatus { * Return {@code true} if desktop mode dev option should be shown on current device */ public static boolean canShowDesktopExperienceDevOption(@NonNull Context context) { return Flags.showDesktopExperienceDevOption(); return Flags.showDesktopExperienceDevOption() && isDeviceEligibleForDesktopMode(context); } /** Returns if desktop mode dev option should be enabled if there is no user override. */ Loading
libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/shared/desktopmode/DesktopModeStatusTest.kt +38 −25 Original line number Diff line number Diff line Loading @@ -56,6 +56,7 @@ class DesktopModeStatusTest : ShellTestCase() { doReturn(false).whenever(mockResources).getBoolean( eq(R.bool.config_isDesktopModeDevOptionSupported) ) setDeviceEligibleForDesktopMode(false) doReturn(context.contentResolver).whenever(mockContext).contentResolver resetDesktopModeFlagsCache() resetEnforceDeviceRestriction() Loading @@ -74,7 +75,7 @@ class DesktopModeStatusTest : ShellTestCase() { Flags.FLAG_ENABLE_DESKTOP_MODE_THROUGH_DEV_OPTION ) @Test fun canEnterDesktopMode_DWFlagDisabled_configsOff_returnsFalse() { fun canEnterDesktopMode_DWFlagDisabled_deviceNotEligible_returnsFalse() { assertThat(DesktopModeStatus.canEnterDesktopMode(mockContext)).isFalse() } Loading @@ -83,8 +84,8 @@ class DesktopModeStatusTest : ShellTestCase() { Flags.FLAG_ENABLE_DESKTOP_MODE_THROUGH_DEV_OPTION ) @Test fun canEnterDesktopMode_DWFlagDisabled_configsOn_disableDeviceRestrictions_returnsFalse() { doReturn(true).whenever(mockResources).getBoolean(eq(R.bool.config_isDesktopModeSupported)) fun canEnterDesktopMode_DWFlagDisabled_deviceEligible_configDevOptionOn_returnsFalse() { setDeviceEligibleForDesktopMode(true) doReturn(true).whenever(mockResources).getBoolean( eq(R.bool.config_isDesktopModeDevOptionSupported) ) Loading @@ -98,7 +99,7 @@ class DesktopModeStatusTest : ShellTestCase() { Flags.FLAG_ENABLE_DESKTOP_MODE_THROUGH_DEV_OPTION ) @Test fun canEnterDesktopMode_DWFlagDisabled_configDevOptionOn_returnsFalse() { fun canEnterDesktopMode_DWFlagDisabled_deviceNotEligible_configDevOptionOn_returnsFalse() { doReturn(true).whenever(mockResources).getBoolean( eq(R.bool.config_isDesktopModeDevOptionSupported) ) Loading @@ -111,7 +112,7 @@ class DesktopModeStatusTest : ShellTestCase() { Flags.FLAG_ENABLE_DESKTOP_MODE_THROUGH_DEV_OPTION ) @Test fun canEnterDesktopMode_DWFlagDisabled_configDevOptionOn_flagOverrideOn_returnsTrue() { fun canEnterDesktopMode_DWFlagDisabled_deviceNotEligible_forceUsingDevOption_returnsTrue() { doReturn(true).whenever(mockResources).getBoolean( eq(R.bool.config_isDesktopModeDevOptionSupported) ) Loading @@ -123,14 +124,7 @@ class DesktopModeStatusTest : ShellTestCase() { @DisableFlags(Flags.FLAG_ENABLE_DESKTOP_MODE_THROUGH_DEV_OPTION) @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE) @Test fun canEnterDesktopMode_DWFlagEnabled_configsOff_returnsFalse() { assertThat(DesktopModeStatus.canEnterDesktopMode(mockContext)).isFalse() } @DisableFlags(Flags.FLAG_ENABLE_DESKTOP_MODE_THROUGH_DEV_OPTION) @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE) @Test fun canEnterDesktopMode_DWFlagEnabled_configDesktopModeOff_returnsFalse() { fun canEnterDesktopMode_DWFlagEnabled_deviceNotEligible_returnsFalse() { doReturn(true).whenever(mockResources).getBoolean( eq(R.bool.config_isDesktopModeDevOptionSupported) ) Loading @@ -141,8 +135,8 @@ class DesktopModeStatusTest : ShellTestCase() { @DisableFlags(Flags.FLAG_ENABLE_DESKTOP_MODE_THROUGH_DEV_OPTION) @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE) @Test fun canEnterDesktopMode_DWFlagEnabled_configDesktopModeOn_returnsTrue() { doReturn(true).whenever(mockResources).getBoolean(eq(R.bool.config_isDesktopModeSupported)) fun canEnterDesktopMode_DWFlagEnabled_deviceEligible_returnsTrue() { setDeviceEligibleForDesktopMode(true) assertThat(DesktopModeStatus.canEnterDesktopMode(mockContext)).isTrue() } Loading @@ -150,16 +144,7 @@ class DesktopModeStatusTest : ShellTestCase() { @DisableFlags(Flags.FLAG_ENABLE_DESKTOP_MODE_THROUGH_DEV_OPTION) @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE) @Test fun canEnterDesktopMode_DWFlagEnabled_configsOff_disableDeviceRestrictions_returnsTrue() { disableEnforceDeviceRestriction() assertThat(DesktopModeStatus.canEnterDesktopMode(mockContext)).isTrue() } @DisableFlags(Flags.FLAG_ENABLE_DESKTOP_MODE_THROUGH_DEV_OPTION) @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE) @Test fun canEnterDesktopMode_DWFlagEnabled_configDevOptionOn_flagOverrideOn_returnsTrue() { fun canEnterDesktopMode_DWFlagEnabled_deviceNotEligible_forceUsingDevOption_returnsTrue() { doReturn(true).whenever(mockResources).getBoolean( eq(R.bool.config_isDesktopModeDevOptionSupported) ) Loading Loading @@ -198,6 +183,28 @@ class DesktopModeStatusTest : ShellTestCase() { assertThat(DesktopModeStatus.isDeviceEligibleForDesktopMode(mockContext)).isTrue() } @DisableFlags(Flags.FLAG_SHOW_DESKTOP_EXPERIENCE_DEV_OPTION) @Test fun canShowDesktopExperienceDevOption_flagDisabled_returnsFalse() { setDeviceEligibleForDesktopMode(true) assertThat(DesktopModeStatus.canShowDesktopExperienceDevOption(mockContext)).isFalse() } @EnableFlags(Flags.FLAG_SHOW_DESKTOP_EXPERIENCE_DEV_OPTION) @Test fun canShowDesktopExperienceDevOption_flagEnabled_deviceNotEligible_returnsFalse() { assertThat(DesktopModeStatus.canShowDesktopExperienceDevOption(mockContext)).isFalse() } @EnableFlags(Flags.FLAG_SHOW_DESKTOP_EXPERIENCE_DEV_OPTION) @Test fun canShowDesktopExperienceDevOption_flagEnabled_deviceEligible_returnsTrue() { setDeviceEligibleForDesktopMode(true) assertThat(DesktopModeStatus.canShowDesktopExperienceDevOption(mockContext)).isTrue() } private fun resetEnforceDeviceRestriction() { setEnforceDeviceRestriction(true) } Loading Loading @@ -232,4 +239,10 @@ class DesktopModeStatusTest : ShellTestCase() { DEVELOPMENT_OVERRIDE_DESKTOP_MODE_FEATURES, override.setting ) } private fun setDeviceEligibleForDesktopMode(eligible: Boolean) { val deviceRestrictions = DesktopModeStatus::class.java.getDeclaredField("ENFORCE_DEVICE_RESTRICTIONS") deviceRestrictions.isAccessible = true deviceRestrictions.setBoolean(/* obj= */ null, /* z= */ !eligible) } }