Fix default app size for desktop proto 2

Make sure tasks launch in the default size for the prototype. And that
it does not use the default phone size.
In proto 2, we don't set the tasks to freeform at this stage yet. But
the task bounds do not take effect in fullscreen tasks. Use the desktop
mode bounds for all standard activity type tasks.

Bug: 269661358
Test: atest DesktopModeLaunchParamsModifierTests

Change-Id: I424dec21fb295300aefa6f74ee4ca70401529f69
This commit is contained in:
Ats Jenk
2023-03-09 13:34:40 -08:00
parent dccbda11b8
commit aebc0b181d
2 changed files with 15 additions and 13 deletions

View File

@@ -41,7 +41,8 @@ public class DesktopModeLaunchParamsModifier implements LaunchParamsModifier {
// Desktop mode feature flag.
static final boolean DESKTOP_MODE_SUPPORTED = SystemProperties.getBoolean(
"persist.wm.debug.desktop_mode", false);
"persist.wm.debug.desktop_mode", false) || SystemProperties.getBoolean(
"persist.wm.debug.desktop_mode_2", false);
// Override default freeform task width when desktop mode is enabled. In dips.
private static final int DESKTOP_MODE_DEFAULT_WIDTH_DP = SystemProperties.getInt(
"persist.wm.debug.desktop_mode.default_width", 840);
@@ -79,8 +80,8 @@ public class DesktopModeLaunchParamsModifier implements LaunchParamsModifier {
appendLog("not in bounds phase, skipping");
return RESULT_SKIP;
}
if (!task.inFreeformWindowingMode()) {
appendLog("not a freeform task, skipping");
if (!task.isActivityTypeStandard()) {
appendLog("not standard activity type, skipping");
return RESULT_SKIP;
}
if (!currentParams.mBounds.isEmpty()) {

View File

@@ -16,8 +16,9 @@
package com.android.server.wm;
import static android.app.WindowConfiguration.ACTIVITY_TYPE_ASSISTANT;
import static android.app.WindowConfiguration.ACTIVITY_TYPE_STANDARD;
import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM;
import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN;
import static android.util.DisplayMetrics.DENSITY_DEFAULT;
import static com.android.server.wm.LaunchParamsController.LaunchParamsModifier.PHASE_BOUNDS;
@@ -79,24 +80,24 @@ public class DesktopModeLaunchParamsModifierTests extends WindowTestsBase {
}
@Test
public void testReturnsSkipIfTaskNotInFreeform() {
final Task task = new TaskBuilder(mSupervisor).setWindowingMode(
WINDOWING_MODE_FULLSCREEN).build();
public void testReturnsSkipIfTaskNotUsingActivityTypeStandard() {
final Task task = new TaskBuilder(mSupervisor).setActivityType(
ACTIVITY_TYPE_ASSISTANT).build();
assertEquals(RESULT_SKIP, new CalculateRequestBuilder().setTask(task).calculate());
}
@Test
public void testReturnsSkipIfCurrentParamsHasBounds() {
final Task task = new TaskBuilder(mSupervisor).setWindowingMode(
WINDOWING_MODE_FREEFORM).build();
final Task task = new TaskBuilder(mSupervisor).setActivityType(
ACTIVITY_TYPE_STANDARD).build();
mCurrent.mBounds.set(/* left */ 0, /* top */ 0, /* right */ 100, /* bottom */ 100);
assertEquals(RESULT_SKIP, new CalculateRequestBuilder().setTask(task).calculate());
}
@Test
public void testUsesDefaultBounds() {
final Task task = new TaskBuilder(mSupervisor).setWindowingMode(
WINDOWING_MODE_FREEFORM).build();
final Task task = new TaskBuilder(mSupervisor).setActivityType(
ACTIVITY_TYPE_STANDARD).build();
assertEquals(RESULT_DONE, new CalculateRequestBuilder().setTask(task).calculate());
assertEquals(dpiToPx(task, 840), mResult.mBounds.width());
assertEquals(dpiToPx(task, 630), mResult.mBounds.height());
@@ -104,8 +105,8 @@ public class DesktopModeLaunchParamsModifierTests extends WindowTestsBase {
@Test
public void testUsesDisplayAreaAndWindowingModeFromSource() {
final Task task = new TaskBuilder(mSupervisor).setWindowingMode(
WINDOWING_MODE_FREEFORM).build();
final Task task = new TaskBuilder(mSupervisor).setActivityType(
ACTIVITY_TYPE_STANDARD).build();
TaskDisplayArea mockTaskDisplayArea = mock(TaskDisplayArea.class);
mCurrent.mPreferredTaskDisplayArea = mockTaskDisplayArea;
mCurrent.mWindowingMode = WINDOWING_MODE_FREEFORM;