Make `canEnterDesktopMode` static.

Bug: 335401172
Test: atest WmTests:DesktopModeLaunchParamsModifierTests
Change-Id: If3c85510f0d92310b8a38821287c65213667e514
diff --git a/services/core/java/com/android/server/wm/DesktopModeLaunchParamsModifier.java b/services/core/java/com/android/server/wm/DesktopModeLaunchParamsModifier.java
index f04b4af..8069a93 100644
--- a/services/core/java/com/android/server/wm/DesktopModeLaunchParamsModifier.java
+++ b/services/core/java/com/android/server/wm/DesktopModeLaunchParamsModifier.java
@@ -48,8 +48,15 @@
     /**
      * Flag to indicate whether to restrict desktop mode to supported devices.
      */
+    @VisibleForTesting
+    static final String ENFORCE_DEVICE_RESTRICTIONS_KEY =
+            "persist.wm.debug.desktop_mode_enforce_device_restrictions";
+
+    /**
+     * Flag to indicate whether to restrict desktop mode to supported devices.
+     */
     private static final boolean ENFORCE_DEVICE_RESTRICTIONS = SystemProperties.getBoolean(
-            "persist.wm.debug.desktop_mode_enforce_device_restrictions", true);
+            ENFORCE_DEVICE_RESTRICTIONS_KEY, true);
 
     private StringBuilder mLogBuilder;
 
@@ -178,24 +185,24 @@
      * Return {@code true} if desktop mode should be restricted to supported devices.
      */
     @VisibleForTesting
-    public boolean enforceDeviceRestrictions() {
+    static boolean enforceDeviceRestrictions() {
         return ENFORCE_DEVICE_RESTRICTIONS;
     }
 
     /**
      * Return {@code true} if the current device supports desktop mode.
      */
+    // TODO(b/337819319): use a companion object instead.
     @VisibleForTesting
-    public boolean isDesktopModeSupported(@NonNull Context context) {
+    static boolean isDesktopModeSupported(@NonNull Context context) {
         return context.getResources().getBoolean(R.bool.config_isDesktopModeSupported);
     }
 
     /**
      * Return {@code true} if desktop mode can be entered on the current device.
      */
-    boolean canEnterDesktopMode(@NonNull Context context) {
+    static boolean canEnterDesktopMode(@NonNull Context context) {
         return isDesktopModeEnabled()
                 && (!enforceDeviceRestrictions() || isDesktopModeSupported(context));
     }
-
 }
diff --git a/services/tests/wmtests/src/com/android/server/wm/DesktopModeLaunchParamsModifierTests.java b/services/tests/wmtests/src/com/android/server/wm/DesktopModeLaunchParamsModifierTests.java
index 353ba01..89ae802 100644
--- a/services/tests/wmtests/src/com/android/server/wm/DesktopModeLaunchParamsModifierTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/DesktopModeLaunchParamsModifierTests.java
@@ -22,6 +22,7 @@
 import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM;
 
 import static com.android.server.wm.DesktopModeLaunchParamsModifier.DESKTOP_MODE_INITIAL_BOUNDS_SCALE;
+import static com.android.server.wm.DesktopModeLaunchParamsModifier.ENFORCE_DEVICE_RESTRICTIONS_KEY;
 import static com.android.server.wm.LaunchParamsController.LaunchParamsModifier.PHASE_BOUNDS;
 import static com.android.server.wm.LaunchParamsController.LaunchParamsModifier.PHASE_DISPLAY;
 import static com.android.server.wm.LaunchParamsController.LaunchParamsModifier.RESULT_CONTINUE;
@@ -29,18 +30,21 @@
 import static com.android.server.wm.LaunchParamsController.LaunchParamsModifier.RESULT_SKIP;
 
 import static org.junit.Assert.assertEquals;
-import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.when;
 
+import android.content.res.Resources;
 import android.graphics.Rect;
+import android.os.SystemProperties;
 import android.platform.test.annotations.DisableFlags;
 import android.platform.test.annotations.EnableFlags;
 import android.platform.test.annotations.Presubmit;
 
 import androidx.test.filters.SmallTest;
 
+import com.android.internal.R;
 import com.android.server.wm.LaunchParamsController.LaunchParamsModifier.Result;
 import com.android.window.flags.Flags;
 
@@ -48,6 +52,7 @@
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
+import org.mockito.Mockito;
 
 /**
  * Tests for desktop mode task bounds.
@@ -71,8 +76,6 @@
     @Before
     public void setUp() throws Exception {
         mActivity = new ActivityBuilder(mAtm).build();
-        mTarget = spy(new DesktopModeLaunchParamsModifier(mContext));
-        doReturn(true).when(mTarget).isDesktopModeSupported(any());
         mCurrent = new LaunchParamsController.LaunchParams();
         mCurrent.reset();
         mResult = new LaunchParamsController.LaunchParams();
@@ -82,20 +85,26 @@
     @Test
     @DisableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE)
     public void testReturnsContinueIfDesktopWindowingIsDisabled() {
+        setupDesktopModeLaunchParamsModifier();
+
         assertEquals(RESULT_CONTINUE, new CalculateRequestBuilder().setTask(null).calculate());
     }
 
     @Test
     @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE)
     public void testReturnsContinueIfDesktopWindowingIsEnabledOnUnsupportedDevice() {
-        doReturn(false).when(mTarget).isDesktopModeSupported(any());
+        setupDesktopModeLaunchParamsModifier(/*isDesktopModeSupported=*/ false,
+                /*enforceDeviceRestrictions=*/ true);
+
         assertEquals(RESULT_CONTINUE, new CalculateRequestBuilder().setTask(null).calculate());
     }
 
     @Test
     @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE)
     public void testReturnsDoneIfDesktopWindowingIsEnabledAndUnsupportedDeviceOverridden() {
-        doReturn(false).when(mTarget).enforceDeviceRestrictions();
+        setupDesktopModeLaunchParamsModifier(/*isDesktopModeSupported=*/ true,
+                /*enforceDeviceRestrictions=*/ false);
+
         final Task task = new TaskBuilder(mSupervisor).build();
         assertEquals(RESULT_DONE, new CalculateRequestBuilder().setTask(task).calculate());
     }
@@ -103,12 +112,16 @@
     @Test
     @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE)
     public void testReturnsSkipIfTaskIsNull() {
+        setupDesktopModeLaunchParamsModifier();
+
         assertEquals(RESULT_SKIP, new CalculateRequestBuilder().setTask(null).calculate());
     }
 
     @Test
     @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE)
     public void testReturnsSkipIfNotBoundsPhase() {
+        setupDesktopModeLaunchParamsModifier();
+
         final Task task = new TaskBuilder(mSupervisor).build();
         assertEquals(RESULT_SKIP, new CalculateRequestBuilder().setTask(task).setPhase(
                 PHASE_DISPLAY).calculate());
@@ -117,6 +130,8 @@
     @Test
     @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE)
     public void testReturnsSkipIfTaskNotUsingActivityTypeStandardOrUndefined() {
+        setupDesktopModeLaunchParamsModifier();
+
         final Task task = new TaskBuilder(mSupervisor).setActivityType(
                 ACTIVITY_TYPE_ASSISTANT).build();
         assertEquals(RESULT_SKIP, new CalculateRequestBuilder().setTask(task).calculate());
@@ -125,6 +140,8 @@
     @Test
     @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE)
     public void testReturnsDoneIfTaskUsingActivityTypeStandard() {
+        setupDesktopModeLaunchParamsModifier();
+
         final Task task = new TaskBuilder(mSupervisor).setActivityType(
                 ACTIVITY_TYPE_STANDARD).build();
         assertEquals(RESULT_DONE, new CalculateRequestBuilder().setTask(task).calculate());
@@ -133,6 +150,8 @@
     @Test
     @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE)
     public void testReturnsDoneIfTaskUsingActivityTypeUndefined() {
+        setupDesktopModeLaunchParamsModifier();
+
         final Task task = new TaskBuilder(mSupervisor).setActivityType(
                 ACTIVITY_TYPE_UNDEFINED).build();
         assertEquals(RESULT_DONE, new CalculateRequestBuilder().setTask(task).calculate());
@@ -141,6 +160,8 @@
     @Test
     @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE)
     public void testReturnsSkipIfCurrentParamsHasBounds() {
+        setupDesktopModeLaunchParamsModifier();
+
         final Task task = new TaskBuilder(mSupervisor).setActivityType(
                 ACTIVITY_TYPE_STANDARD).build();
         mCurrent.mBounds.set(/* left */ 0, /* top */ 0, /* right */ 100, /* bottom */ 100);
@@ -150,6 +171,8 @@
     @Test
     @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE)
     public void testUsesDefaultBounds() {
+        setupDesktopModeLaunchParamsModifier();
+
         final Task task = new TaskBuilder(mSupervisor).setActivityType(
                 ACTIVITY_TYPE_STANDARD).build();
         final int displayHeight = 1600;
@@ -165,6 +188,8 @@
     @Test
     @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE)
     public void testUsesDisplayAreaAndWindowingModeFromSource() {
+        setupDesktopModeLaunchParamsModifier();
+
         final Task task = new TaskBuilder(mSupervisor).setActivityType(
                 ACTIVITY_TYPE_STANDARD).build();
         TaskDisplayArea mockTaskDisplayArea = mock(TaskDisplayArea.class);
@@ -176,6 +201,24 @@
         assertEquals(WINDOWING_MODE_FREEFORM, mResult.mWindowingMode);
     }
 
+    private void setupDesktopModeLaunchParamsModifier() {
+        setupDesktopModeLaunchParamsModifier(/*isDesktopModeSupported=*/ true,
+                /*enforceDeviceRestrictions=*/ true);
+    }
+
+    private void setupDesktopModeLaunchParamsModifier(boolean isDesktopModeSupported,
+            boolean enforceDeviceRestrictions) {
+        Resources mockResources = Mockito.mock(Resources.class);
+        when(mockResources.getBoolean(eq(R.bool.config_isDesktopModeSupported)))
+                .thenReturn(isDesktopModeSupported);
+        doReturn(mockResources).when(mContext).getResources();
+
+        SystemProperties.set(ENFORCE_DEVICE_RESTRICTIONS_KEY,
+                String.valueOf(enforceDeviceRestrictions));
+
+        mTarget = new DesktopModeLaunchParamsModifier(mContext);
+    }
+
     private class CalculateRequestBuilder {
         private Task mTask;
         private int mPhase = PHASE_BOUNDS;